Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyLEV-0002q1-Vb for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Mar 2018 17:39:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1eyLEU-0002vt-KD for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Mar 2018 17:39:34 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyLET-0002vf-Jo for pgsql-hackers@lists.postgresql.org; Tue, 20 Mar 2018 17:39:34 +0000 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1eyLEQ-0004Ct-3W for pgsql-hackers@postgresql.org; Tue, 20 Mar 2018 17:39:32 +0000 Received: by mail-wr0-x242.google.com with SMTP id f14so2575389wre.8 for ; Tue, 20 Mar 2018 10:39:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=q0jsLpUI+/SohtbCsiBn6W82gh8/EY70Yqx0aWjJtAI=; b=eaJCy+IcHCYah0EOHVYGBBcbXCZn5fUMtwttfzVPw8pRY7nZu7syZJRotjurVB65ob 2H9S07BGtWvSHPnmLlaW4bG/3UAaYPz+DIfxD3FH/0o/cW48h3xTWZeT6Z+fscCilmuA nm0ndpH+eogC221Q+CzG1XdnhrnyLlT73Vf6yexUyr9GBmG1k8fEJhCgIUDVU5atBzEx t+N3Wmx65dX3XLCiPjqVcDDthvMZYF10JoEPI9mSFzUbTVHU5JahPtbCmTEdzctyuuRC pBsFzN0wJoeZwbNy3fZyRvF9fCJcZXSA6SyvsW4fS7I57IJsxYkUWioUhbYRPUxr7xpE C1lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=q0jsLpUI+/SohtbCsiBn6W82gh8/EY70Yqx0aWjJtAI=; b=StnWgCChvGAAl86X/aJZ424Qa3i/d4uzPRuL9180sj5Eo8jOGSBZJbQrLeWfydGRVr okDUCFQhvD8I66s/8RB1J0EuzJTO3FLHY1q83tOtXif1Bc43nPl3CoS1jbs3h8/eJcGp x6xu5pDYunn+2rgA5Tgnpe0t6Jsbis0YBnDyDw4lZG6y8NM3SrHl6fGX5epArEIuBJeF sUOofr8sPJ+rU57bdkpyRthO1Xb2FwowMETVax1JqvqjbwcOfcMsrIMeYFz6e46pusGg UuQbVWmGGCzYIaxHzjN9UFRV8XDIghplQpysNfnIBP8agyEddPj7UbAUX/Ecao6ipYkz 5FuQ== X-Gm-Message-State: AElRT7GAQy7B1T/Mf8bV+Pcmc2UX0/YmUQrignTHe5hLd6l0Sy/40Xpr Co9npXpHZYpLDHwVBJCJA3p1exnjcBW3b7neHp4= X-Google-Smtp-Source: AG47ELvxrvxaRB5LgkAnX4epkJ845kixImnQPsgFQ0mhdiN50ASm1qtWLklwpSgaoR8Ckbiz/7ikPjSWnOnjTV56IjU= X-Received: by 10.223.157.21 with SMTP id k21mr14557164wre.273.1521567568216; Tue, 20 Mar 2018 10:39:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.166.197 with HTTP; Tue, 20 Mar 2018 10:38:47 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: Pavel Stehule Date: Tue, 20 Mar 2018 18:38:47 +0100 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Pavel Luzanov Cc: "David G. Johnston" , Pavel Golub , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="f40304388e6468033a0567db8e4d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --f40304388e6468033a0567db8e4d Content-Type: multipart/alternative; boundary="f40304388e646803360567db8e4b" --f40304388e646803360567db8e4b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGkNCg0KSSBhbSBzZW5kaW5nIG5ldyB1cGRhdGUuIFRoZSBjb2RlIGlzIGxlc3MgdWdseSwgYW5k IHRoZSBjdXJyZW50DQpmdW5jdGlvbmFsaXR5IGlzICsvLSBmaW5hbCBmb3IgZmlyc3Qgc3RhZ2Uu IEl0IHNob3VsZCBiZSBnb29kIGVub3VnaCBmb3INCnBsYXlpbmcgYW5kIHRlc3RpbmcgdGhpcyBj b25jZXB0Lg0KDQpXaGF0IGlzIHN1cHBvcnRlZDoNCg0KMS4gc2NhbGFyLCBjb21wb3NpdGUgYW5k IGFycmF5IHZhcmlhYmxlcw0KMi4gY29tcG9zaXRlIGNhbiBiZSBkZWZpbmVkIG9uIHBsYWNlIG9y IHNvbWUgY29tcG9zaXRlIHR5cGUgY2FuIGJlIHVzZWQNCjMuIHZhcmlhYmxlLCBvciBhbnkgZmll bGQgb2YgdmFyaWFibGUsIGNhbiBoYXZlIGRlZmluZWQgZGVmYXVsdCB2YWx1ZQ0KNC4gdmFyaWFi bGUgaXMgZGF0YWJhc2Ugb2JqZWN0IC0gdGhlIGFjY2VzcyByaWdodHMgYXJlIHJlcXVpcmVkDQo1 LiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYmluYXJ5IGZvcm0gd2l0aCBkZWZpbmVkIHR5cG1v ZA0KDQpBbiB1c2FnZSBpcyB2ZXJ5IHNpbXBsZToNCg0KcG9zdGdyZXM9IyBjcmVhdGUgdmFyaWFi bGUgZm9vIGFzIG51bWVyaWMgZGVmYXVsdCAwOw0KQ1JFQVRFIFZBUklBQkxFDQpwb3N0Z3Jlcz0j IHNlbGVjdCBmb287DQrilIzilIDilIDilIDilIDilIDilJANCuKUgiBmb28g4pSCDQrilZ7ilZDi lZDilZDilZDilZDilaENCuKUgiAgIDAg4pSCDQrilJTilIDilIDilIDilIDilIDilJgNCigxIHJv dykNCg0KcG9zdGdyZXM9IyBsZXQgZm9vID0gcGkoKTsNCkxFVA0KcG9zdGdyZXM9IyBzZWxlY3Qg Zm9vOw0K4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSQDQrilIIgICAgICAgZm9vICAgICAgICDilIINCuKVnuKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoQ0K4pSCIDMuMTQxNTkyNjUz NTg5Nzkg4pSCDQrilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJgNCigxIHJvdykNCg0KcG9zdGdyZXM9IyBjcmVhdGUgdmFyaWFibGUgYm9v IGFzICh4IG51bWVyaWMgZGVmYXVsdCAwLCB5IG51bWVyaWMgZGVmYXVsdA0KMCk7DQpDUkVBVEUg VkFSSUFCTEUNCnBvc3RncmVzPSMgbGV0IGJvby54ID0gMTAwOw0KTEVUDQpwb3N0Z3Jlcz0jIHNl bGVjdCBib287DQrilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCuKUgiAgIGJvbyAg IOKUgg0K4pWe4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWhDQrilIIgKDEwMCwwKSDilIIN CuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KKDEgcm93KQ0KDQpwb3N0Z3Jlcz0j IHNlbGVjdCBib28ueDsNCuKUjOKUgOKUgOKUgOKUgOKUgOKUkA0K4pSCICB4ICDilIINCuKVnuKV kOKVkOKVkOKVkOKVkOKVoQ0K4pSCIDEwMCDilIINCuKUlOKUgOKUgOKUgOKUgOKUgOKUmA0KKDEg cm93KQ0KDQpQbGVhc2UgdHJ5IGl0Lg0KDQpSZWdhcmRzDQoNClBhdmVsDQo= --f40304388e646803360567db8e4b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj5IaTxicj48 YnI+PC9kaXY+SSBhbSBzZW5kaW5nIG5ldyB1cGRhdGUuIFRoZSBjb2RlIGlzIGxlc3MgdWdseSwg YW5kIHRoZSBjdXJyZW50IGZ1bmN0aW9uYWxpdHkgaXMgKy8tIGZpbmFsIGZvciBmaXJzdCBzdGFn ZS4gSXQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciBwbGF5aW5nIGFuZCB0ZXN0aW5nIHRoaXMg Y29uY2VwdC4gPGJyPjxicj48L2Rpdj5XaGF0IGlzIHN1cHBvcnRlZDo8YnI+PGJyPjwvZGl2PjEu IHNjYWxhciwgY29tcG9zaXRlIGFuZCBhcnJheSB2YXJpYWJsZXM8YnI+PC9kaXY+Mi4gY29tcG9z aXRlIGNhbiBiZSBkZWZpbmVkIG9uIHBsYWNlIG9yIHNvbWUgY29tcG9zaXRlIHR5cGUgY2FuIGJl IHVzZWQ8YnI+PC9kaXY+My4gdmFyaWFibGUsIG9yIGFueSBmaWVsZCBvZiB2YXJpYWJsZSwgY2Fu IGhhdmUgZGVmaW5lZCBkZWZhdWx0IHZhbHVlPGJyPjwvZGl2PjQuIHZhcmlhYmxlIGlzIGRhdGFi YXNlIG9iamVjdCAtIHRoZSBhY2Nlc3MgcmlnaHRzIGFyZSByZXF1aXJlZDxicj48L2Rpdj48ZGl2 PjUuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBiaW5hcnkgZm9ybSB3aXRoIGRlZmluZWQgdHlw bW9kPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PkFuIHVzYWdlIGlzIHZlcnkgc2ltcGxlOjxicj48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZSI+PGJyPnBvc3RncmVz PSMgY3JlYXRlIHZhcmlhYmxlIGZvbyBhcyBudW1lcmljIGRlZmF1bHQgMDs8YnI+Q1JFQVRFIFZB UklBQkxFPGJyPnBvc3RncmVzPSMgc2VsZWN0IGZvbzs8YnI+4pSM4pSA4pSA4pSA4pSA4pSA4pSQ PGJyPuKUgiBmb28g4pSCPGJyPuKVnuKVkOKVkOKVkOKVkOKVkOKVoTxicj7ilILCoMKgIDAg4pSC PGJyPuKUlOKUgOKUgOKUgOKUgOKUgOKUmDxicj4oMSByb3cpPGJyPjxicj5wb3N0Z3Jlcz0jIGxl dCBmb28gPSBwaSgpOzxicj5MRVQgPGJyPnBvc3RncmVzPSMgc2VsZWN0IGZvbzs8YnI+4pSM4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQPGJy PuKUgsKgwqDCoMKgwqDCoCBmb2/CoMKgwqDCoMKgwqDCoCDilII8YnI+4pWe4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWhPGJyPuKUgiAzLjE0 MTU5MjY1MzU4OTc5IOKUgjxicj7ilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJg8YnI+KDEgcm93KTwvc3Bhbj48YnI+PGJyPjxzcGFuIHN0 eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlIj5wb3N0Z3Jlcz0jIGNyZWF0ZSB2 YXJpYWJsZSBib28gYXMgKHggbnVtZXJpYyBkZWZhdWx0IDAsIHkgbnVtZXJpYyBkZWZhdWx0IDAp Ozxicj5DUkVBVEUgVkFSSUFCTEU8YnI+cG9zdGdyZXM9IyBsZXQgYm9vLnggPSAxMDA7PGJyPkxF VCA8YnI+cG9zdGdyZXM9IyBzZWxlY3QgYm9vOzxicj7ilIzilIDilIDilIDilIDilIDilIDilIDi lIDilIDilJA8YnI+4pSCwqDCoCBib2/CoMKgIOKUgjxicj7ilZ7ilZDilZDilZDilZDilZDilZDi lZDilZDilZDilaE8YnI+4pSCICgxMDAsMCkg4pSCPGJyPuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUmDxicj4oMSByb3cpPGJyPjxicj5wb3N0Z3Jlcz0jIHNlbGVjdCBib28ueDs8YnI+ 4pSM4pSA4pSA4pSA4pSA4pSA4pSQPGJyPuKUgsKgIHjCoCDilII8YnI+4pWe4pWQ4pWQ4pWQ4pWQ 4pWQ4pWhPGJyPuKUgiAxMDAg4pSCPGJyPuKUlOKUgOKUgOKUgOKUgOKUgOKUmDxicj4oMSByb3cp PC9zcGFuPjxicj48YnI+PGRpdj48ZGl2PjxkaXY+UGxlYXNlIHRyeSBpdC4gPGJyPjxicj48L2Rp dj48ZGl2PlJlZ2FyZHM8YnI+PGJyPjwvZGl2PjxkaXY+UGF2ZWw8YnI+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+DQo= --f40304388e646803360567db8e4b-- --f40304388e6468033a0567db8e4d Content-Type: application/octet-stream; name=schema-variables-poc-180320-01-diff Content-Disposition: attachment; filename=schema-variables-poc-180320-01-diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_jezxzkjs0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMzBlNjc0MTMwNS4uNGY0MTdmMTkxYSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDJmNTlhZjI1YTYuLjI4OThjMTM1NzMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU4MTIsNiArMTU4MTIsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9 ImZ1bmN0aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2Vz cyB0byBzY2hlbWEgdmFyaWFibGVzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PkZ1bmN0aW9uPC9lbnRyeT4KKyAgICAg IDxlbnRyeT5Bcmd1bWVudCBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5SZXR1cm4gVHlwZTwv ZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD48ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJh bWV0ZXI+LCA8cGFyYW1ldGVyPmV4cGVjdGVkIHR5cGU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0 eXBlPmFueWVsZW1lbnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hbnllbGVt ZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgUmV0dXJucyB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUgY29udmVydGVkIHRvIGV4cGVjdGVkIHR5cGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxm dW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlKDxwYXJhbWV0ZXI+dmFyaWFibGU8L3BhcmFtZXRl cj4sIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT52b2lkPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgU2V0cyB0aGUgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxl IHRvIHZhbHVlLCBhZnRlciBjb252ZXJ0aW5nIHRoZSBpbnB1dCB0byB0aGUgY29ycmVjdCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3Jv dXA+CisgIDwvdGFibGU+CisgIDxwYXJhPgorICBBbiBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlv bnMtaW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDIyZTY4OTMyMTEuLjFkMzRmNzJiZGQgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVU eXBlICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVz ZXIgICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNl ck1hcHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNy ZWF0ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZ IGNyZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkg ZGVhbGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRl Y2xhcmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcg QEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUu c2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dt bCI+CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVO VElUWSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYg KzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjA1 ZTQzNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZh cmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0 ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJsZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNyZWF0 ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2FsYXIg dHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhpc3Qg d2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFuZD5H UkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNzaW9u LWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4gTlVM TCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2UgaW4g dGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmlldmFs IGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+ LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3Nj aGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAg PGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJs ZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMg KGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNv bnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1h IHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBi ZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+ U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFu IGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4g dGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAgc2Vh cmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0 YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZh cmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlh YmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRoZW4gcmV0cmlldmUgaXQg Y29udmVydGVkIHRvIG51bWVyaWMuCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUK K3Bvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAxMCk7Cisgc2V0 X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitw b3N0Z3Jlcz0jIHNlbGVjdCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgMTAKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGlzIGEg UG9zdGdyZVNRTCBmZWF0dXJlLgorICAgPCEtLSBUaGUgY2hvaWNlIG9mIHdvcmRpbmcgaGVyZSBz ZWVtcyB0byBiZSBsZWZ0IHRvIHBlcnNvbmFsIHByZWZlcmVuY2UuLi4gLS0+CisgIDwvcGFyYT4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgor CisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9 InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCmluZGV4IDZiOTA5YjcyMzIuLjM5 NTQ1M2JiYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CitESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwgVkFSSUFCTEVT fQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNiBAQCBE SVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJp YWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBoYXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hl bWEgdmFyaWFibGVzIC0tPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUu c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0t LSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAg LTAsMCArMSw5MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwK K1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1h cnk+RFJPUCBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5EUk9QIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEg dmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2 PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5E Uk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2 YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4K KyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJs ZSBvd25lciB0byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBh biBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3Vl ZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgor ICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46 CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2Nv bW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRl IHZhcmlhYmxlIGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAi cHJvcHJpZXRhcnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxz aW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9ncmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxM IFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9Q VElPTiBdCiAKK0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8 IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z Y2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9w aHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8g PHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hl bWFzLAorICAgc2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90 aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQg dG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsy MTEsOCBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRo aXMgcHJpdmlsZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9u PmN1cnJ2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywg dGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Ig c2NoZW1hIHZhcmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUn cyB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAg IDxmdW5jdGlvbj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdl IG9iamVjdHMsIHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhl CiAgICAgICAgb2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZp bGVnZSBhbGxvd3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlh YmxlJ3MKKyAgICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBT RUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAg IE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NI RU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAg IEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RS SUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IGQyN2ZiNDE0ZjcuLmIzZjlmZmY1MTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsx MjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2Vy TWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxs b2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwog ICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAg ICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAK ICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZs ZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmlu ZGV4IDA2NDg1Mzk3OTYuLjZiZDA0MGI5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYg KzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2Rl IGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVj dCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC01MDYsNiArNTA5LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRT dG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NF UlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBl ICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hl bWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0 eXBlKTsKQEAgLTU3Niw2ICs1ODMsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFu dCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10 KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBA QCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQog CXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJ UmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMTcs NiArMTAyNiwxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52 YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklB QkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE0LDYgKzEyMjcsMTIgQEAgU2V0RGVmYXVsdEFDTChJ bnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ b2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYm IHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+ b2JqdHlwZSk7CkBAIC0xNDQwLDYgKzE0NTksOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChP aWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOwor CQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQi LApAQCAtMTYxMSw4ICsxNjMzLDkgQEAgZXhwYW5kX2FsbF9jb2xfcHJpdmlsZWdlcyhPaWQgdGFi bGVfb2lkLCBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKIAkJaWYgKGN1cnJfYXR0ID09IE9iamVj dElkQXR0cmlidXRlTnVtYmVyICYmICFjbGFzc0Zvcm0tPnJlbGhhc29pZHMpCiAJCQljb250aW51 ZTsKIAotCQkvKiBWaWV3cyBkb24ndCBoYXZlIGFueSBzeXN0ZW0gY29sdW1ucyBhdCBhbGwgKi8K LQkJaWYgKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgJiYgY3Vycl9hdHQgPCAw KQorCQkvKiBWaWV3cyBhbmQgdmFyaWFibGVzIGRvbid0IGhhdmUgYW55IHN5c3RlbSBjb2x1bW5z IGF0IGFsbCAqLworCQlpZiAoKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgIHx8 IGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKSAmJgorCQkJY3Vycl9hdHQg PCAwKQogCQkJY29udGludWU7CiAKIAkJYXR0VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVN LApAQCAtMzQ1NSw2ICszNDc4LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwg T2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29w KCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVy bWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2NSw2ICsz NTkxLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVD VF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBz Y2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVX OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzY3OSw2ICszNzA4LDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBl IG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ss IGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1 cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggMDQ5NzMzMmU5ZC4uMTlmZjI2Mzg4NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAg LTI5MSw2ICsyOTEsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRj aCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZP UkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTQyOCw3 ICs0MjksOCBAQCBDaGVja0F0dHJpYnV0ZU5hbWVzVHlwZXMoVHVwbGVEZXNjIHR1cGRlc2MsIGNo YXIgcmVsa2luZCwKIAkgKiBTa2lwIHRoaXMgZm9yIGEgdmlldyBvciB0eXBlIHJlbGF0aW9uLCBz aW5jZSB0aG9zZSBkb24ndCBoYXZlIHN5c3RlbQogCSAqIGF0dHJpYnV0ZXMuCiAJICovCi0JaWYg KHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVf VFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYgcmVsa2luZCAhPSBSRUxLSU5E X0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQl7CkBAIC03MTUsNyArNzE3LDggQEAgQWRk TmV3QXR0cmlidXRlVHVwbGVzKE9pZCBuZXdfcmVsX29pZCwKIAkgKiBhbGwgZm9yIGEgdmlldyBv ciB0eXBlIHJlbGF0aW9uLiAgV2UgZG9uJ3QgYm90aGVyIHdpdGggbWFraW5nIGRhdGF0eXBlCiAJ ICogZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHByZXN1bWFibHkgYWxsIHRoZXNlIHR5cGVzIGFy ZSBwaW5uZWQuCiAJICovCi0JaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQg IT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcg JiYgcmVsa2luZCAhPSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVM S0lORF9WQVJJQUJMRSkKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCAoaW50KSBsZW5ndGhvZihTeXNB dHQpOyBpKyspCiAJCXsKQEAgLTEwNjYsNyArMTA2OSw5IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0 YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlk T2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxu YW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQly ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwKKwkJ CQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVhdGUg YSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9yCkBAIC0xMTA3LDcgKzExMTIsNyBAQCBo ZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJCShyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8CiAJ CQkgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwgcmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcg fHwKIAkJCSByZWxraW5kID09IFJFTEtJTkRfQ09NUE9TSVRFX1RZUEUgfHwgcmVsa2luZCA9PSBS RUxLSU5EX0ZPUkVJR05fVEFCTEUgfHwKLQkJCSByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpKQorCQkJIHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBy ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQl7CiAJCQlpZiAoIU9pZElzVmFsaWQoYmlu YXJ5X3VwZ3JhZGVfbmV4dF9oZWFwX3BnX2NsYXNzX29pZCkpCiAJCQkJZXJlcG9ydChFUlJPUiwK QEAgLTExNDksNiArMTE1NCwxMCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfU0VR VUVOQ0UsIG93bmVyaWQsCiAJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNlKTsKIAkJCQlicmVhazsK KwkJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0 X2FjbChPQkpFQ1RfVkFSSUFCTEUsIG93bmVyaWQsCisJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNl KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJcmVsYWNsID0gTlVMTDsKIAkJCQlicmVh azsKQEAgLTExODAsMTQgKzExODksMTYgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0 IGNoYXIgKnJlbG5hbWUsCiAJICogRGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlIGFuIGFycmF5IHR5 cGUgb3ZlciB0aGUgcmVsYXRpb24ncyByb3d0eXBlLiBXZQogCSAqIGRvIG5vdCBjcmVhdGUgYW55 IGFycmF5IHR5cGVzIGZvciBzeXN0ZW0gY2F0YWxvZ3MgKGllLCB0aG9zZSBtYWRlCiAJICogZHVy aW5nIGluaXRkYikuIFdlIGRvIG5vdCBjcmVhdGUgdGhlbSB3aGVyZSB0aGUgdXNlIG9mIGEgcmVs YXRpb24gYXMKLQkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFi bGVzLCBzZXF1ZW5jZXMgYW5kIGluZGV4ZXMuCisJICogc3VjaCBpcyBhbiBpbXBsZW1lbnRhdGlv biBkZXRhaWw6IHRvYXN0IHRhYmxlcywgc2VxdWVuY2VzLCBpbmRleGVzIGFuZAorCSAqIHZhcmlh Ymxlcy4KIAkgKi8KIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgKHJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTiB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKIAkJCQkJ CQkgIHJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJF TEtJTkRfRk9SRUlHTl9UQUJMRSB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX0NPTVBP U0lURV9UWVBFIHx8Ci0JCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpKQorCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJ CQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQluZXdfYXJyYXlfb2lkID0g QXNzaWduVHlwZUFycmF5T2lkKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YwppbmRleCAxMTkyOTdiMzNhLi4zZDMwYTA1YzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwpAQCAtNTIwLDYgKzUyMCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBPQkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZh cmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJfSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJ fSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAgLTgyNCw2ICs4MjcsNyBAQCBnZXRfb2JqZWN0X2Fk ZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9W SUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFC TEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3Jl bGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCks CiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2RlLApAQCAtMTI2MCw2ICsxMjY0LDE0 IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxl IiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpA QCAtMTg0OSw2ICsxODYxLDggQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2Jq dHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFC TEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC0yMTExLDYgKzIxMjUsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JK RUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpAQCAtMjIzNSw2ICsyMjUwLDcgQEAg Y2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNU X1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JK RUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMzAyLDYgKzMzMTgsMTEgQEAgZ2V0T2JqZWN0RGVzY3Jp cHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0 IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJ CQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0 VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7 CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDUsNiArMzUyNiwxMCBAQCBnZXRSZWxhdGlv bkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZm ZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRv YXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpAQCAtNDgzMyw2ICs0ODU4LDEwIEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNj aGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBz Y2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFt ZSkKQEAgLTUxMjUsNiArNTE1NCw4IEBAIGdldF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5k KQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJ cmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0 dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JK RUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyAr MTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5v IGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4u byBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMu byBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlw b2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRz Lm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vi c2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBz ZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8g dGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwK IAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMKaW5kZXggMGQ2Mzg2NmZiMC4uZTE3NGUyNDBiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0z NDgsNiArMzQ4LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBP QkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJ R05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJcmV0dXJuIFJlbmFtZVJlbGF0 aW9uKHN0bXQpOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKQEAgLTQ3OCw2ICs0NzksNyBAQCBF eGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJ Y2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01B VFZJRVc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJYWRkcmVzcyA9IEFsdGVyVGFibGVO YW1lc3BhY2Uoc3RtdCwKIAkJCQkJCQkJCQkgIG9sZFNjaGVtYUFkZHIgPyAmb2xkTnNwT2lkIDog TlVMTCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1l bnQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwppbmRleCAyZjJlNjliNGE4Li5m NGEzY2FlNmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC04Myw3ICs4Myw3IEBAIENvbW1l bnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAKIAkJCS8qCiAJCQkgKiBBbGxvdyBjb21tZW50 cyBvbmx5IG9uIGNvbHVtbnMgb2YgdGFibGVzLCB2aWV3cywgbWF0ZXJpYWxpemVkCi0JCQkgKiB2 aWV3cywgY29tcG9zaXRlIHR5cGVzLCBhbmQgZm9yZWlnbiB0YWJsZXMgKHdoaWNoIGFyZSB0aGUg b25seQorCQkJICogdmlld3MsIGNvbXBvc2l0ZSB0eXBlcywgdmFyaWFibGVzIGFuZCBmb3JlaWdu IHRhYmxlcyAod2hpY2ggYXJlIHRoZSBvbmx5CiAJCQkgKiByZWxraW5kcyBmb3Igd2hpY2ggcGdf ZHVtcCB3aWxsIGR1bXAgcGVyLWNvbHVtbiBjb21tZW50cykuICBJbgogCQkJICogcGFydGljdWxh ciB3ZSB3aXNoIHRvIGRpc2FsbG93IGNvbW1lbnRzIG9uIGluZGV4IGNvbHVtbnMsCiAJCQkgKiBi ZWNhdXNlIHRoZSBuYW1pbmcgb2YgYW4gaW5kZXgncyBjb2x1bW5zIG1heSBjaGFuZ2UgYWNyb3Nz IFBHCkBAIC05NSwxMCArOTUsMTEgQEAgQ29tbWVudE9iamVjdChDb21tZW50U3RtdCAqc3RtdCkK IAkJCQlyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgogCQkJ CXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSAmJgog CQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYm Ci0JCQkJcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSAmJgorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJ QUJMRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCi0JCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcs IG1hdGVyaWFsaXplZCB2aWV3LCBjb21wb3NpdGUgdHlwZSwgb3IgZm9yZWlnbiB0YWJsZSIsCisJ CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcsIG1hdGVyaWFsaXplZCB2 aWV3LCBjb21wb3NpdGUgdHlwZSwgc2NoZW1hIHZhcmlhYmxlIG9yIGZvcmVpZ24gdGFibGUiLAog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBhNDI4NjFkYTBkLi4zYTFlZTYwMGYxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC0xNDg0LDYgKzE0ODQsOSBAQCBCZWdpbkNvcHkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CiAKKwkJ LyogRG9uJ3QgZXhwZWN0IExFVCBzdG10IGhlcmUsIGlzIG5vdCBwb3NzaWJsZSB0byBkbyB3cml0 ZSBpdCAqLworCQlBc3NlcnQocXVlcnktPmNvbW1hbmRUeXBlICE9IENNRF9MRVQpOworCiAJCS8q CiAJCSAqIFNpbWlsYXJseSB0aGUgZ3JhbW1hciBkb2Vzbid0IGVuZm9yY2UgdGhlIHByZXNlbmNl IG9mIGEgUkVUVVJOSU5HCiAJCSAqIGNsYXVzZSwgYnV0IHRoaXMgaXMgcmVxdWlyZWQgaGVyZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAwMWE5OTljMmFjLi43YWE3ZDgzNWY4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGlzY2FyZC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5 bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cHJlcGFyZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRp bHMvcG9ydGFsLmgiCkBAIC0yNSw3ICsyNiw3IEBACiBzdGF0aWMgdm9pZCBEaXNjYXJkQWxsKGJv b2wgaXNUb3BMZXZlbCk7CiAKIC8qCi0gKiBESVNDQVJEIHsgQUxMIHwgU0VRVUVOQ0VTIHwgVEVN UCB8IFBMQU5TIH0KKyAqIERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMg fCBWQVJJQUJMRVN9CiAgKi8KIHZvaWQKIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNj YXJkU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3Bh Y2UoKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNj aGVtYVZhcmlhYmxlc0NhY2hlKCk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBESVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJnZXQpOwog CX0KQEAgLTc1LDQgKzgwLDUgQEAgRGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJUmVzZXRQ bGFuQ2FjaGUoKTsKIAlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2VxdWVuY2VD YWNoZXMoKTsKKwlSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNTQ5YzdlYTUxZC4uYzhlMmI4MjJlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVu dF90cmlnZ2VyX3N1cHBvcnRfZGF0YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRF WFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1B UFBJTkciLCB0cnVlfSwKKwl7IlZBUklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJ e05VTEwsIGZhbHNlfQogfTsKQEAgLTExMjQsNiArMTEyNSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFU RToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCXJldHVybiB0cnVl OwogCkBAIC0yMjIyLDYgKzIyMjQsOCBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RU eXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBF OgogCQkJcmV0dXJuICJUWVBFIjsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4g IlZBUklBQkxFIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2Ug T0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMDQs NiArMjMwOCw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJl dHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFC TEVTIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNU X0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCBjMzhkMTc4Y2Q5Li5kZGZkNDI4Y2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC04ODcsNiArODg3LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAkJCQljYXNlIENNRF9ERUxFVEU6CiAJCQkJCXBuYW1lID0gb3BlcmF0 aW9uID0gIkRlbGV0ZSI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJcG5h bWUgPSBvcGVyYXRpb24gPSAiTGV0IjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJ cG5hbWUgPSAiPz8/IjsKIAkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYjk0 NWIxNTU2YS4uYTY5NDcxZTkyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTUxLDYgKzE1 MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENN RF9ERUxFVEU6CisJCWNhc2UgQ01EX0xFVDoKIAkJCS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVm YXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZWRmZTkxNGJkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NjaGVtYXZhci5jCkBAIC0wLDAgKzEsMTI3OCBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogc2NoZW1hdmFyLmMKKyAqCSAgUG9zdGdyZVNRTCBzZXNzaW9uIHZhcmlhYmxlIHN1 cHBvcnQgY29kZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2Rl ZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3NjaGVtYXZhci5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9wbGFubmVyLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl SGFuZGxlci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNo LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKKworLyoKKyAqIFRoaXMgc2NoZW1hIHZh cmlhYmxlIGNhY2hlIG1peGVzIHRoZSBjYWNoZSBhbmQgc3RvcmFnZXMgYmVoYXZlLiBUaGF0IGlz IG5vdAorICogY29ycmVjdCBhbmQgaXQgaXMgcHJvYmxlbWF0aWMsIHdoZW4gdmFyaWFibGUgaXMg cmVtb3ZlZC4gVGhlIG93biBzdG9yYWdlCisgKiBiYXNlZCBvbiBzdG9yYWdlIG1hbmFnZXIgY2Fu IGJlIGltcGxlbWVudGVkLCBSZWxGaWxlTm9kZSBjYW4gYmUgZGVmaW5lZCBhbmQKKyAqIG1lY2hh bmlzbSBiYXNlZCBvbiBQZW5kaW5nUmVsRGVsZXRlIHN0cnVjdCBjYW4gYmUgdXNlZC4gVGhpcyBp cyBhIGFyZ3VtZW50CisgKiBmb3IgaW1wbGVtZW50YXRpb24gc2NoZW1hIHZhcmlhYmxlcyBiYXNl ZCBvbiBwZ19jbGFzcy4KKyAqIEFsdGVybmF0aXZlIHNvbHV0aW9uIGNhbiBiZSBkZXRlY3Rpb24g b2Ygc2NoZW1hIGNoYW5nZXMgYW5kIHJlY2hlY2sgYXQgYW5kCisgKiBvZiB0cmFuc2FjdGlvbi4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1hVmFyRGF0YQoreworCU9pZAkJCXZhcmlkOwkJCS8q IHBnX2NsYXNzIE9JRCBvZiB0aGlzIHNlcXVlbmNlIChoYXNoIGtleSkgKi8KKwlPaWQJCQl0eXBp ZDsJCQkvKiBPSUQgb2YgdGhlIGRhdGEgdHlwZSAqLworCWludDMyCQl0eXBtb2Q7CisJaW50MTYJ CXR5cGxlbjsKKwlib29sCQl0eXBieXZhbDsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZh bDsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNfcm93dHlwZTsJCS8qIHRydWUgd2hlbiB2YXJp YWJsZSBpcyBjb21wb3NpdGUgKi8KK30gU2NoZW1hVmFyRGF0YTsKKwordHlwZWRlZiBTY2hlbWFW YXJEYXRhICpTY2hlbWFWYXI7CisKK3N0YXRpYyBIVEFCICpzY2hlbWF2YXJoYXNodGFiID0gTlVM TDsJCS8qIGhhc2ggdGFibGUgZm9yIHNlc3Npb24gdmFyaWFibGVzICovCitzdGF0aWMgTWVtb3J5 Q29udGV4dCBTY2hlbWFWYXJNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3RhdGljIERhdHVtIGRh dHVtQ2FzdChEYXR1bSB2YWx1ZSwKKwkJCQkJCSAgT2lkIHRhcmdldF90eXBpZCwgaW50IHRhcmdl dF90eXBtb2QsCisJCQkJCQkgIE9pZCBzb3VyY2VfdHlwaWQsIGludCBzb3VyY2VfdHlwbW9kKTsK Kworc3RhdGljIGJvb2wJZmlyc3RfdGltZSA9IHRydWU7CitzdGF0aWMgYm9vbAljYWNoZV9pc192 YWxpZCA9IHRydWU7CisKK3N0YXRpYyB2b2lkIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxi YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworc3RhdGljIHZv aWQgY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9pZCk7CisKKy8qIGp1c3QgbWFyayBjYWNo ZSB0byByZWNoZWNrICovCitzdGF0aWMgdm9pZAorSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwkvKgor CSAqIGJlY2F1c2UgdGhpcyBjYWNoZSBob2xkcyB2YWx1ZXMgb2Ygc2NoZW1hIHZhcmlhYmxlcywg dGhlbgorCSAqIHRoZSBjb250ZW50IGNhbm5vdCBiZSByZW1vdmVkIGluIHRoaXMgbW9tZW10LiBX ZSBzaG91bGQgdG8KKwkgKiB3YWl0IG9uIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwljYWNoZV9p c192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogQ2FzdCBkYXR1bQorICovCitzdGF0aWMgRGF0 dW0KK2RhdHVtQ2FzdChEYXR1bSB2YWx1ZSwKKwkJICBPaWQgdGFyZ2V0X3R5cGlkLCBpbnQgdGFy Z2V0X3R5cG1vZCwKKwkJICBPaWQgc291cmNlX3R5cGlkLCBpbnQgc291cmNlX3R5cG1vZCkKK3sK KwlDb2VyY2lvblBhdGhUeXBlIGNwYXRodHlwZTsKKwlPaWQJCWNmdW5jaWQ7CisJRGF0dW0JcmVz dWx0ID0gKERhdHVtKSAwOworCWJvb2wJaXNfYmluYXJ5X2Nhc3QgPSBmYWxzZTsKKworCWlmICh0 YXJnZXRfdHlwaWQgIT0gc291cmNlX3R5cGlkKQorCXsKKwkJY3BhdGh0eXBlID0gZmluZF9jb2Vy Y2lvbl9wYXRod2F5KHRhcmdldF90eXBpZCwgc291cmNlX3R5cGlkLAorCQkJCQkJCQkJCQlDT0VS Q0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJJmNmdW5jaWQpOworCisJCWlmIChjcGF0aHR5cGUg PT0gQ09FUkNJT05fUEFUSF9OT05FKQorCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIGNh c3QgZnJvbSAlcyB0byAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzb3VyY2VfdHlwaWQpLAor CQkJCQkJZm9ybWF0X3R5cGVfYmUodGFyZ2V0X3R5cGlkKSk7CisKKwkJaWYgKGNwYXRodHlwZSA9 PSBDT0VSQ0lPTl9QQVRIX1JFTEFCRUxUWVBFKQorCQl7CisJCQlyZXN1bHQgPSB2YWx1ZTsKKwkJ CWlzX2JpbmFyeV9jYXN0ID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChjcGF0aHR5cGUgPT0gQ09F UkNJT05fUEFUSF9DT0VSQ0VWSUFJTykKKwkJeworCQkJT2lkCQlvdXRmdW5jOworCQkJT2lkCQlp bmZ1bmM7CisJCQlPaWQJCWlvcGFyYW07CisJCQlib29sCWlzVmFybGVuYTsKKwkJCWNoYXIJKnN0 cjsKKworCQkJZ2V0VHlwZU91dHB1dEluZm8oc291cmNlX3R5cGlkLCAmb3V0ZnVuYywgJmlzVmFy bGVuYSk7CisJCQlzdHIgPSBPaWRPdXRwdXRGdW5jdGlvbkNhbGwob3V0ZnVuYywgdmFsdWUpOwor CisJCQlnZXRUeXBlSW5wdXRJbmZvKHRhcmdldF90eXBpZCwgJmluZnVuYywgJmlvcGFyYW0pOwor CQkJcmVzdWx0ID0gT2lkSW5wdXRGdW5jdGlvbkNhbGwoaW5mdW5jLCBzdHIsIGlvcGFyYW0sIC0x KTsKKwkJfQorCQllbHNlIGlmIChjcGF0aHR5cGUgPT0gQ09FUkNJT05fUEFUSF9GVU5DKQorCQl7 CisJCQlyZXN1bHQgPSBPaWRGdW5jdGlvbkNhbGwzKGNmdW5jaWQsCisJCQkJCQkJdmFsdWUsCisJ CQkJCQkJSW50MzJHZXREYXR1bSh0YXJnZXRfdHlwbW9kKSwKKwkJCQkJCQlCb29sR2V0RGF0dW0o ZmFsc2UpKTsKKwkJfQorCX0KKwllbHNlCisJeworCQlyZXN1bHQgPSB2YWx1ZTsKKwkJaXNfYmlu YXJ5X2Nhc3QgPSB0cnVlOworCX0KKworCWlmICh0YXJnZXRfdHlwbW9kIDwgMSB8fCAodGFyZ2V0 X3R5cG1vZCA9PSBzb3VyY2VfdHlwbW9kICYmIGlzX2JpbmFyeV9jYXN0KSkKKwkJcmV0dXJuIHJl c3VsdDsKKworCWNwYXRodHlwZSA9IGZpbmRfdHlwbW9kX2NvZXJjaW9uX2Z1bmN0aW9uKHRhcmdl dF90eXBpZCwgJmNmdW5jaWQpOworCWlmIChjcGF0aHR5cGUgPT0gQ09FUkNJT05fUEFUSF9GVU5D KQorCXsKKwkJcmVzdWx0ID0gT2lkRnVuY3Rpb25DYWxsMyhjZnVuY2lkLAorCQkJCQkJCQkJCQly ZXN1bHQsCisJCQkJCQkJCQkJCUludDMyR2V0RGF0dW0odGFyZ2V0X3R5cG1vZCksCisJCQkJCQkJ CQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0 YXRpYyBib29sCitzdl9nZXRfdHlwX3R5cG1vZChGb3JtX3BnX2NsYXNzIGNsYXNzZm9ybSwgT2lk ICp0eXAsIGludDMyICp0eXBtb2QpCit7CisJaWYgKGNsYXNzZm9ybS0+cmVsa2luZCAhPSBSRUxL SU5EX1ZBUklBQkxFKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoY2xhc3Nmb3JtLT5yZWxvZnR5 cGUgIT0gSW52YWxpZE9pZCkKKwl7CisJCU9pZAkJdHlwb2lkID0gY2xhc3Nmb3JtLT5yZWxvZnR5 cGU7CisKKwkJaWYgKGdldF90eXB0eXBlKHR5cG9pZCkgPT0gVFlQVFlQRV9DT01QT1NJVEUpCisJ CXsKKwkJCSp0eXAgPSBjbGFzc2Zvcm0tPnJlbG9mdHlwZTsKKwkJCSp0eXBtb2QgPSAtMTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCVR1cGxlRGVzYwl0dXBkZXNjOworCQkJUmVsYXRpb24JcmVsOwor CQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0clN0cnVjdDsKKworCQkJLyogZmluZCBmaXJzdCBmaWVs ZCAqLworCQkJcmVsID0gcmVsYXRpb25fb3Blbih0eXBlaWRUeXBlUmVsaWQoY2xhc3Nmb3JtLT5y ZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2MgPSBDcmVhdGVUdXBsZURlc2ND b3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWF0dHJTdHJ1Y3QgPSBUdXBsZURlc2NB dHRyKHR1cGRlc2MsIDApOworCisJCQkqdHlwID0gYXR0clN0cnVjdC0+YXR0dHlwaWQ7CisJCQkq dHlwbW9kID0gYXR0clN0cnVjdC0+YXR0dHlwbW9kOworCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRl c2MpOworCQkJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQl9CisJfQor CWVsc2UKKwl7CisJCSp0eXAgPSBjbGFzc2Zvcm0tPnJlbHR5cGU7CisJCSp0eXBtb2QgPSAtMTsK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwordm9pZAorc2NoZW1hdmFyX2dldF90eXBfdHlwbW9k KE9pZCB2YXJpZCwgT2lkICp0eXAsIGludDMyICp0eXBtb2QpCit7CisJSGVhcFR1cGxlCXRwOwor CUZvcm1fcGdfY2xhc3MJY2xhc3Nmb3JtOworCisJLyogbm93LCB0eXBlIGluZm8gZm9yIHNjaGVt YSB2YXJpYWJsZSBpcyBjb2xsZWN0ZWQgKi8KKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQs IE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlk KTsKKworCWNsYXNzZm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCisJaWYg KCFzdl9nZXRfdHlwX3R5cG1vZChjbGFzc2Zvcm0sIHR5cCwgdHlwbW9kKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJy bXNnKCJvYmplY3QgJXUgaXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwgdmFyaWQpKSk7CisKKwlS ZWxlYXNlU3lzQ2FjaGUodHApOworfQorCitib29sCitpc19zY2hlbWF2YXIoT2lkIHZhcmlkLCBi b29sICppc19yb3d0eXBlKQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzCWNsYXNz Zm9ybTsKKwlib29sCQlyZXN1bHQ7CisJT2lkCQkJdHlwOworCWludDMyCQl0eXBtb2Q7CisKKwlp ZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBub3csIHR5cGUg aW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3RlZCAqLworCXRwID0gU2VhcmNoU3lz Q2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGQgZm9yIHZhcmlh YmxlICV1IiwgdmFyaWQpOworCisJY2xhc3Nmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVD VCh0cCk7CisKKwlyZXN1bHQgPSBzdl9nZXRfdHlwX3R5cG1vZChjbGFzc2Zvcm0sICZ0eXAsICZ0 eXBtb2QpOworCisJaWYgKHJlc3VsdCAmJiBpc19yb3d0eXBlKQorCQkqaXNfcm93dHlwZSA9IHR5 cGVfaXNfcm93dHlwZSh0eXApOworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiBy ZXN1bHQ7Cit9CisKKworc3RhdGljIFNjaGVtYVZhcgorUHJlcGFyZVNjaGVtYVZhcihPaWQgdmFy aWQpCit7CisJU2NoZW1hVmFyCXZhcjsKKwlib29sCQlmb3VuZDsKKworCWlmIChzY2hlbWF2YXJo YXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisKKwl2YXIg PSAoU2NoZW1hVmFyKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJ CQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJUmVsYXRp b24JcmVsOworCQlUdXBsZURlc2MJZGVzYzsKKwkJaW50CQkJbmF0dHM7CisJCURhdHVtCSAgICp2 YWx1ZXM7CisJCWJvb2wJICAgKm51bGxzOworCQlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7CisJ CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCA9IE5VTEw7CisJCWludAkJCW5ub3RudWxscyA9IDA7 CisJCWludAkJaTsKKworCQl2YXItPnZhcmlkID0gdmFyaWQ7CisKKwkJc2NoZW1hdmFyX2dldF90 eXBfdHlwbW9kKHZhcmlkLCAmdmFyLT50eXBpZCwgJnZhci0+dHlwbW9kKTsKKwkJZ2V0X3R5cGxl bmJ5dmFsKHZhci0+dHlwaWQsICZ2YXItPnR5cGxlbiwgJnZhci0+dHlwYnl2YWwpOworCisJCXZh ci0+aXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5cGlkKTsKKworCQkvKiBwcmVw YXJlIGRlZmF1bHQgdmFsdWUgKi8KKwkJcmVsID0gcmVsYXRpb25fb3Blbih2YXJpZCwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJbmF0dHMgPSBk ZXNjLT5uYXR0czsKKworCQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJ CXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKERhdHVtKSk7CisJCW51 bGxzID0gKGJvb2wgKikgcGFsbG9jMChuYXR0cyAqIHNpemVvZihib29sKSk7CisKKwkJZm9yIChp ID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCXsKKwkJCUV4cHIJICAgKmRlZmV4cHI7CisJCQlFeHBy U3RhdGUgICpkZWZleHByczsKKworCQkJaWYgKFR1cGxlRGVzY0F0dHIoZGVzYywgaSktPmF0dGlz ZHJvcHBlZCkKKwkJCXsKKwkJCQludWxsc1tpXSA9IHRydWU7CisJCQkJY29udGludWU7CisJCQl9 CisKKwkJCWRlZmV4cHIgPSAoRXhwciAqKSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGkgKyAx KTsKKwkJCWlmIChkZWZleHByICE9IE5VTEwpCisJCQl7CisJCQkJZGVmZXhwciA9IGV4cHJlc3Np b25fcGxhbm5lcihkZWZleHByKTsKKwkJCQlkZWZleHBycyA9IEV4ZWNJbml0RXhwcihkZWZleHBy LCBOVUxMKTsKKworCQkJCXZhbHVlc1tpXSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoZGVm ZXhwcnMsIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwgJm51bGxzW2ldKTsKKwkJCQlp ZiAoIW51bGxzW2ldKQorCQkJCQlubm90bnVsbHMrKzsKKwkJCX0KKwkJCWVsc2UKKwkJCQludWxs c1tpXSA9IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisKKwkJaWYgKG5ub3RudWxscyA+IDApCisJCXsKKwkJCURhdHVtCQl2YWx1ZTsKKworCQkJaWYg KHZhci0+aXNfcm93dHlwZSkKKwkJCXsKKwkJCQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJCQl0dXBs ZSA9IGhlYXBfZm9ybV90dXBsZShkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwkJCQl2YWx1ZSA9IEhl YXBUdXBsZUhlYWRlckdldERhdHVtKChIZWFwVHVwbGVIZWFkZXIpIHR1cGxlLT50X2RhdGEpOwor CQkJfQorCQkJZWxzZQorCQkJCXZhbHVlID0gdmFsdWVzWzBdOworCisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8oU2NoZW1hVmFyTWVtb3J5Q29udGV4dCk7CisJCQl2YXItPnZhbHVlID0gZGF0dW1D b3B5KHZhbHVlLCB2YXItPnR5cGJ5dmFsLCB2YXItPnR5cGxlbik7CisJCQl2YXItPmlzbnVsbCA9 IGZhbHNlOworCQkJdmFyLT5mcmVldmFsID0gdmFyLT52YWx1ZSAhPSB2YWx1ZXNbMF07CisKKwkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ dmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJCXZhci0+aXNudWxsID0gdHJ1ZTsKKwkJCXZhci0+ ZnJlZXZhbCA9IGZhbHNlOworCQl9CisKKwkJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwkJ cmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCXJldHVybiB2YXI7 Cit9CisKKy8qCisgKiBXYWl0IG9uIGNvbW1pdCBvciByb2xsYmFjayBhbmQgY2xlYW4gdmFsdWVz IHRoYXQgbWlzcyBlbnRyeSBpbiBzeXN0ZW0KKyAqIGNhdGFsb2cuIEl0IGlzIHRlbXBvcmFyeSBz b2x1dGlvbiAoYWx0aG91Z2ggaXQgaXMgd29ya2luZykuIFN0b3JhZ2UgbWFuYWdlcgorICogYmFz ZWQgc29sdXRpb24gd2lsbCBiZSBiZXR0ZXIsIGJ1dCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB0 aGlzIFBvQy4KKyAqCisgKiByZW1vdmVzIHVuY29tbWl0dGVkIG9yIGRyb3BwZWQgc2NoZW1hIHZh cmlhYmxlcywgc28gZXZlbnQgY2FuIGJlIGlnbm9yZWQuCisgKi8KK3N0YXRpYyB2b2lkCityZWNo ZWNrX3NjaGVtYV92YXJpYWJsZXMoWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpCit7CisJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKKwlTY2hlbWFWYXIJCXZhcjsKKworCWlmIChjYWNoZV9pc192 YWxpZCB8fCBzY2hlbWF2YXJoYXNodGFiID09IE5VTEwgfHwgIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJd2hpbGUgKCh2YXIgPSAoU2NoZW1hVmFyKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXItPnZhcmlkKSk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCXsKKwkJCWVsb2coREVCVUcxLCAidmFyaWFibGUg JWQgaXMgcmVtb3ZlZCBmcm9tIGNhY2hlIiwgdmFyLT52YXJpZCk7CisKKwkJCWlmICh2YXItPmZy ZWV2YWwpCisJCQl7CisJCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHZhci0+dmFsdWUpKTsKKwkJ CQl2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJCX0KKworCQkJaWYgKGhhc2hfc2VhcmNoKHNjaGVt YXZhcmhhc2h0YWIsCisJCQkJCQkJCSh2b2lkICopICZ2YXItPnZhcmlkLAorCQkJCQkJCQlIQVNI X1JFTU9WRSwKKwkJCQkJCQkJTlVMTCkgPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9SLCAiaGFzaCB0 YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CX0KKwljYWNoZV9pc192YWxpZCA9IHRydWU7Cit9CisKKy8qCisgKiBEZWZpbmVTZXNzaW9uVmFy aWFibGUKKyAqCQkJCUNyZWF0ZXMgYSBuZXcgdmFyaWFibGUgcmVsYXRlZCByZWxhdGlvbgorICov CitPYmplY3RBZGRyZXNzCitEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZVNjaGVtYVZhclN0bXQgKnZhcikKK3sKKwlDcmVhdGVTdG10ICpzdG10ID0gbWFrZU5v ZGUoQ3JlYXRlU3RtdCk7CisJT2lkCQkJdHlwb2lkOworCU9pZAkJCXZhcm9pZDsKKwlPYmplY3RB ZGRyZXNzIGFkZHJlc3M7CisJYm9vbAkJY3JlYXRlX2Nhc3Q7CisKKwkvKgorCSAqIElmIGlmX25v dF9leGlzdHMgd2FzIGdpdmVuIGFuZCBhIHJlbGF0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJl YWR5CisJICogZXhpc3RzLCBiYWlsIG91dC4gKE5vdGU6IHdlIG5lZWRuJ3QgY2hlY2sgdGhpcyB3 aGVuIG5vdCBpZl9ub3RfZXhpc3RzLAorCSAqIGJlY2F1c2UgRGVmaW5lUmVsYXRpb24gd2lsbCBj b21wbGFpbiBhbnl3YXkuKQorCSAqLworCWlmICh2YXItPmlmX25vdF9leGlzdHMpCisJeworCQlS YW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UodmFyLT52YXJpYWJsZSwgTm9Mb2Nr LCAmdmFyb2lkKTsKKwkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkKKwkJeworCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJIGVy cm1zZygidmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIsCisJCQkJCQkJ dmFyLT52YXJpYWJsZS0+cmVsbmFtZSkpKTsKKwkJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVz czsKKwkJfQorCX0KKworCS8qCisJICogVmFyaWFibGUgY2FuIGJlIGRlZmluZWQgYnkgdHlwZSAo c2NhbGFyLCBjb21wb3NpdGUpIG9yIGJ5CisJICogZmllbGQgbGlzdC4gV2hlbiBpcyBkZWZpbmVk IGJ5IGZpZWxkIGxpc3QsIHdlIHNob3VsZCB0byBjcmVhdGUKKwkgKiBuZXcgdHlwZSByZWxhdGVk IHRvIHRoaXMgdmFyaWFibGUuCisJICovCisJaWYgKHZhci0+dHlwZU5hbWUgIT0gTlVMTCkKKwl7 CisJCU9pZAkJdHlwcmVsaWQ7CisKKwkJQXNzZXJ0KHZhci0+ZmllbGRzID09IE5JTCk7CisKKwkJ dHlwb2lkID0gTG9va3VwVHlwZU5hbWVPaWQocHN0YXRlLCB2YXItPnR5cGVOYW1lLCBmYWxzZSk7 CisKKwkJaWYgKGdldF90eXB0eXBlKHR5cG9pZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygidmFyaWFibGUgY2Fubm90IGJlICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9i ZSh2YXJvaWQpKSkpOworCisJCXR5cHJlbGlkID0gdHlwZWlkVHlwZVJlbGlkKHR5cG9pZCk7CisK KwkJaWYgKCFPaWRJc1ZhbGlkKHR5cHJlbGlkKSkKKwkJeworCQkJLyoKKwkJCSAqIHdoZW4gdmFy aWFibGUgdHlwZSBpcyBub3QgY29tcG9zaXRlIHR5cGUsIHdlIHNob3VsZCB0byBjcmVhdGUKKwkJ CSAqIGF1eCBjb21wb3NpdGUgdHlwZS4KKwkJCSAqLworCQkJQ29sdW1uRGVmICpjb2xkZWYgPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCisJCQljb2xkZWYtPmluaGNvdW50ID0gMDsKKwkJCWNvbGRl Zi0+aXNfbG9jYWwgPSB0cnVlOworCQkJY29sZGVmLT5pc19ub3RfbnVsbCA9IGZhbHNlOworCQkJ Y29sZGVmLT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwkJCWNvbGRlZi0+c3RvcmFnZSA9IDA7CisJ CQljb2xkZWYtPnJhd19kZWZhdWx0ID0gdmFyLT5kZWZleHByOworCQkJY29sZGVmLT5jb29rZWRf ZGVmYXVsdCA9IE5VTEw7CisJCQljb2xkZWYtPmNvbGxDbGF1c2UgPSBOVUxMOworCQkJY29sZGVm LT5jb2xsT2lkID0gSW52YWxpZE9pZDsKKwkJCWNvbGRlZi0+Y29uc3RyYWludHMgPSBOSUw7CisJ CQljb2xkZWYtPmxvY2F0aW9uID0gLTE7CisKKwkJCS8qIFVzZSBpbXBsaXQgbmFtZSBzYW1lIGxp a2UgdmFyaWFibGUgbmFtZSAqLworCQkJY29sZGVmLT5jb2xuYW1lID0gdmFyLT52YXJpYWJsZS0+ cmVsbmFtZTsKKwkJCWNvbGRlZi0+dHlwZU5hbWUgPSB2YXItPnR5cGVOYW1lOworCisJCQlzdG10 LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0cywgY29sZGVmKTsKKworCQkJY3Jl YXRlX2Nhc3QgPSBmYWxzZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVR1cGxlRGVzYwl0dXBkZXNj OworCQkJUmVsYXRpb24JcmVsOworCQkJaW50CQkJaTsKKworCQkJcmVsID0gcmVsYXRpb25fb3Bl bih0eXByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2MgPSBDcmVhdGVUdXBsZURl c2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBk ZXNjLT5uYXR0czsgaSsrKQorCQkJeworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJTdHJ1Y3Qg PSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpOworCisJCQkJaWYgKCFhdHRyU3RydWN0LT5hdHRp c2Ryb3BwZWQpCisJCQkJeworCQkJCQlDb2x1bW5EZWYgKmNvbGRlZiA9IG1ha2VOb2RlKENvbHVt bkRlZik7CisKKwkJCQkJY29sZGVmLT5pbmhjb3VudCA9IDA7CisJCQkJCWNvbGRlZi0+aXNfbG9j YWwgPSB0cnVlOworCQkJCQljb2xkZWYtPmlzX25vdF9udWxsID0gZmFsc2U7CisJCQkJCWNvbGRl Zi0+aXNfZnJvbV90eXBlID0gZmFsc2U7CisJCQkJCWNvbGRlZi0+c3RvcmFnZSA9IDA7CisJCQkJ CWNvbGRlZi0+cmF3X2RlZmF1bHQgPSBOVUxMOworCQkJCQljb2xkZWYtPmNvb2tlZF9kZWZhdWx0 ID0gTlVMTDsKKwkJCQkJY29sZGVmLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwkJCQkJY29sZGVmLT5j b2xsT2lkID0gSW52YWxpZE9pZDsKKwkJCQkJY29sZGVmLT5jb25zdHJhaW50cyA9IE5JTDsKKwkJ CQkJY29sZGVmLT5sb2NhdGlvbiA9IC0xOworCisJCQkJCWNvbGRlZi0+Y29sbmFtZSA9IHBzdHJk dXAoTmFtZVN0cihhdHRyU3RydWN0LT5hdHRuYW1lKSk7CisJCQkJCWNvbGRlZi0+dHlwZU5hbWUg PSBtYWtlVHlwZU5hbWVGcm9tT2lkKGF0dHJTdHJ1Y3QtPmF0dHR5cGlkLAorCQkJCQkJCQkJCQkJ CQkgICBhdHRyU3RydWN0LT5hdHR0eXBtb2QpOworCisJCQkJCXN0bXQtPnRhYmxlRWx0cyA9IGxh cHBlbmQoc3RtdC0+dGFibGVFbHRzLCBjb2xkZWYpOworCQkJCX0KKwkJCX0KKworCQkJRnJlZVR1 cGxlRGVzYyh0dXBkZXNjKTsKKwkJCXJlbGF0aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2Nr KTsKKworCQkJY3JlYXRlX2Nhc3QgPSB0cnVlOworCQl9CisJfQorCWVsc2UKKwl7CisJCUFzc2Vy dCh2YXItPnR5cGVOYW1lID09IE5VTEwpOworCQlBc3NlcnQodmFyLT5maWVsZHMgIT0gTklMKTsK KworCQlzdG10LT50YWJsZUVsdHMgPSB2YXItPmZpZWxkczsKKworCQljcmVhdGVfY2FzdCA9IGZh bHNlOworCX0KKworCXN0bXQtPnJlbGF0aW9uID0gdmFyLT52YXJpYWJsZTsKKwlzdG10LT5pbmhS ZWxhdGlvbnMgPSBOSUw7CisJc3RtdC0+Y29uc3RyYWludHMgPSBOSUw7CisJc3RtdC0+b3B0aW9u cyA9IE5JTDsKKwlzdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJc3RtdC0+dGFibGVz cGFjZW5hbWUgPSBOVUxMOworCXN0bXQtPmlmX25vdF9leGlzdHMgPSB2YXItPmlmX25vdF9leGlz dHM7CisKKwkvKgorCSAqIFNjaGVtYSB2YXJpYWJsZXMgdXNlcyByZWx0eXBlIGFuZCByZWxvZnR5 cGUgZmllbGRzLiBUaGUgcmVsdHlwZSBpcworCSAqIGNvbXBvc2l0ZSBhbHdheXMgZm9yIHNjYWxh ciBhbmQgbm9uIHNjYWxhciB2YXJpYWJsZXMuIEl0IGlzIHVzZWQgd2hlbgorCSAqIHdlIG5lZWQg YSB2YXJpYWJsZSdzIHR1cGxlIGRlc2NyaXByaW9uLiBXaGVuIHZhcmlhYmxlIHR5cGUgaXMgY29t cG9zaXRlLAorCSAqIHRoZW4gaXMgcmVmZXJlbmNlZCB3aXRob3V0IGNoYW5nZS4gU2NhbGFyIHZh cmlhYmxlIFYgaXMgdHJhbnNsYXRlZCB0bworCSAqIGNvbXBvc2l0ZSB0eXBlICh2X25hbWUgdl90 eXBlKS4KKwkgKiBUaGUgcmVsdHlwZSBpcyBhbHdheXMgY29tcG9zaXRlIC0gc2VlIGNhdGFsb2cv aGVhcC5jIEFkZE5ld1JlbGF0aW9uVHlwZSwKKwkgKiBidXQgZm9yIHNjaGVtYSB2YXJpYWJsZXMg YmFzZWQgb24gc29tZSB0eXBlIGlzIHRoaXMgYmVoYXZlIHVud2FudGVkLgorCSAqIHZhcmlhYmxl IHR5cGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBiYXNlIHR5cGUuIFNvIGluIHRoaXMgY2FzZSBp cyBiZXR0ZXIKKwkgKiBkZWZpbmUgcmVsdHlwZSBhcyBkb21haW4gb2YgYmFzZSB0eXBlLiBCdXQg dGhpcyBjaGFuZ2UgYnJlYWsgY29uc2lzdGVuY3kKKwkgKiBvZiByZWx0eXBlIC0gc28gSSBjaGFu Z2VkIG5vdGhpbmcgYW5kIGltcGxpY2l0bHkgZ2VuZXJhdGUgbmVjZXNzYXJ5IGNhc3RzLgorCSAq LworCXN0bXQtPm9mVHlwZW5hbWUgPSB2YXItPnR5cGVOYW1lOworCisJYWRkcmVzcyA9IERlZmlu ZVJlbGF0aW9uKHN0bXQsIFJFTEtJTkRfVkFSSUFCTEUsIEludmFsaWRPaWQsIE5VTEwsIE5VTEwp OworCUFzc2VydChhZGRyZXNzLm9iamVjdElkICE9IEludmFsaWRPaWQpOworCisJaWYgKGNyZWF0 ZV9jYXN0KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBjMSwgYzIsIHJlZmVyZW5jZWRfdDEsIHJlZmVy ZW5jZWRfdDI7CisJCVR5cGVOYW1lICp0MSA9IHZhci0+dHlwZU5hbWU7CisJCVR5cGVOYW1lICp0 MiA9IG1ha2VUeXBlTmFtZUZyb21PaWQoZ2V0X3JlbF90eXBlX2lkKGFkZHJlc3Mub2JqZWN0SWQp LCAtMSk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB1Z2x5IHBhcnQgLSBidXQgSSBzaG91bGQgdG8g dGVhY2ggUG9zdGdyZXMsIHNvIHQxIGFuZCB0MiB0eXBlcworCQkgKiBhcmUgY2FzdGFibGUuIFVu Zm9ydHVuYXRlbGx5LCBDcmVhdGVDYXN0IGNhbm5vdCB0byBjaGFuZ2UgZGVwZW5kZW5jeSwKKwkJ ICogc28gZnJlc2ggZGVwZW5kZW5jeSBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkIHdp dGggREVQRU5ERU5DWV9BVVRPCisJCSAqIGZsYWcuIEluIHRoaXMgY2FzZSwgd2UgYXJlIHN1cmUg c28gYm90aCB0eXBlcyBhcmUgY29tcG9zaXRlLCBzbyBtYXliZSBsZXNzCisJCSAqIHVnbHkgY2Fu IGJlIHVzZSByZWx0eXBlIGFzIGRvbWFpbiB0eXBlIG9mIGJhc2UgdHlwZSBpbnN0ZWFkIGNvcHku CisJCSAqLworCQlDcmVhdGVDYXN0U3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZUNhc3RTdG10KTsK KworCQluLT5zb3VyY2V0eXBlID0gdDE7CisJCW4tPnRhcmdldHR5cGUgPSB0MjsKKwkJbi0+ZnVu YyA9IE5VTEw7CisJCW4tPmNvbnRleHQgPSBDT0VSQ0lPTl9JTVBMSUNJVDsKKwkJbi0+aW5vdXQg PSB0cnVlOworCisJCWMxID0gQ3JlYXRlQ2FzdChuKTsKKworCQluLT5zb3VyY2V0eXBlID0gdDI7 CisJCW4tPnRhcmdldHR5cGUgPSB0MTsKKworCQljMiA9IENyZWF0ZUNhc3Qobik7CisKKwkJZGVs ZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoQ2FzdFJlbGF0aW9uSWQsIGMxLm9iamVjdElkLCBmYWxz ZSk7CisJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yKENhc3RSZWxhdGlvbklkLCBjMi5vYmpl Y3RJZCwgZmFsc2UpOworCisJCXJlZmVyZW5jZWRfdDEuY2xhc3NJZCA9IFR5cGVSZWxhdGlvbklk OworCQlyZWZlcmVuY2VkX3QxLm9iamVjdElkID0gZ2V0X3JlbF90eXBlX2lkKGFkZHJlc3Mub2Jq ZWN0SWQpOworCQlyZWZlcmVuY2VkX3QxLm9iamVjdFN1YklkID0gMDsKKworCQlyZWZlcmVuY2Vk X3QyLmNsYXNzSWQgPSBUeXBlUmVsYXRpb25JZDsKKwkJcmVmZXJlbmNlZF90Mi5vYmplY3RJZCA9 IExvb2t1cFR5cGVOYW1lT2lkKHBzdGF0ZSwgdmFyLT50eXBlTmFtZSwgZmFsc2UpOworCQlyZWZl cmVuY2VkX3QyLm9iamVjdFN1YklkID0gMDsKKworCQlyZWNvcmREZXBlbmRlbmN5T24oJmMxLCAm cmVmZXJlbmNlZF90MSwgREVQRU5ERU5DWV9BVVRPKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZj MSwgJnJlZmVyZW5jZWRfdDIsIERFUEVOREVOQ1lfQVVUTyk7CisJCXJlY29yZERlcGVuZGVuY3lP bigmYzIsICZyZWZlcmVuY2VkX3QxLCBERVBFTkRFTkNZX0FVVE8pOworCQlyZWNvcmREZXBlbmRl bmN5T24oJmMyLCAmcmVmZXJlbmNlZF90MiwgREVQRU5ERU5DWV9BVVRPKTsKKwl9CisKKwlyZXR1 cm4gYWRkcmVzczsKK30KKworLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIHNjaGVtYXZhciBjYWNo ZS4gSXQgaXMgcXVlc3Rpb24gaWYgaXQgc2hvdWxkIGJlIGluIHRoaXMgcGxhY2UsIG9yCisgKiBp dCBzaG91bGQgYmUgc3RvcmFnZSByZWxhdGVkIG9yIGNhY2hlIHJlbGF0ZWQgcGxhY2U/IEJ1dCBm b3IgdGhpcyBtb21lbnQgKFBvQykgaXQKKyAqIGNhbiBiZSBoZXJlLiBDYWNoZSBpcyBpbXBsZW1l bnRlZCBhcyBoYXNoIHRhYmxlIHdpdGggb3duIG1lbW9yeSBjb250ZXh0LgorICovCisKKy8qCisg KiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcworICov CitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlIQVNI Q1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJhY2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJewor CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFJFTE9JRCwKKwkJCQkJCQkJCSAgSW52 YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJ CVJlZ2lzdGVyWGFjdENhbGxiYWNrKHJlY2hlY2tfc2NoZW1hX3ZhcmlhYmxlcywgTlVMTCk7CisK KwkJZmlyc3RfdGltZSA9IGZhbHNlOworCX0KKworCS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVt b3J5IGNvbnRleHQgKi8KKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsK KwkJU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1v cnlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJInNjaGVtYSB2YXJpYWJsZXMiLAorCQkJCQkJCQkJ CQkJCQkJQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCW1lbXNldCgmY3RsLCAw LCBzaXplb2YoY3RsKSk7CisJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKKwljdGwuZW50cnlz aXplID0gc2l6ZW9mKFNjaGVtYVZhckRhdGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyTWVtb3J5 Q29udGV4dDsKKworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlh YmxlcyIsIDY0LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKK30KKworLyoKKyAqIEZhc3QgZHJv cCBjb21wbGV0ZSBjb250ZW50IG9mIHNjaGVtYSB2YXJpYWJsZXMKKyAqLwordm9pZAorUmVzZXRT Y2hlbWFWYXJpYWJsZXNDYWNoZSh2b2lkKQoreworCWlmIChzY2hlbWF2YXJoYXNodGFiKQorCXsK KwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0YWIpOworCQlzY2hlbWF2YXJoYXNodGFiID0g TlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhck1lbW9yeUNvbnRleHQpOworCX0KK30KKworLyoK KyAqIENvcHkgZGF0dW0gdmFsdWUgdG8gc2NoZW1hIHZhcmlhYmxlcyBjYWNoZSBwbGFjZQorICov CitzdGF0aWMgdm9pZAorU2V0VmFsdWUoU2NoZW1hVmFyIHZhciwKKwkJIERhdHVtIHZhbHVlLCBi b29sIGlzTnVsbCwKKwkJIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCS8qIHJlbGVhc2Ug cHJldmlvdXNseSBzdG9yZWQgdmFsdWUgKi8KKwlpZiAodmFyLT5mcmVldmFsKQorCXsKKwkJcGZy ZWUoRGF0dW1HZXRQb2ludGVyKHZhci0+dmFsdWUpKTsKKwkJdmFyLT5mcmVldmFsID0gZmFsc2U7 CisJfQorCisJaWYgKCFpc051bGwpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKworCQkv KgorCQkgKiBjYXN0IHRoZSB2YWx1ZSBpZiBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS4KKwkJICog RXhwZWN0aW5nOiBjdXJyZW50IGNvbnRleHQgaXMgc2hvcnQgY29udGV4dC4KKwkJICoKKwkJICog UVVFU1RJT046IGhvdyBtdWNoIHNob3VsZCBiZSB0aGlzIGNhc3QgdG9sZXJhbnQvc3RyaWN0Pwor CQkgKi8KKwkJaWYgKHZhci0+dHlwaWQgIT0gdHlwaWQgfHwgdmFyLT50eXBtb2QgIT0gdHlwbW9k KQorCQl7CisJCQl2YWx1ZSA9IGRhdHVtQ2FzdCh2YWx1ZSwKKwkJCQkJCQkJdmFyLT50eXBpZCwg dmFyLT50eXBtb2QsCisJCQkJCQkJCXR5cGlkLCB0eXBtb2QpOworCQl9CisKKwkJdmFyLT5pc251 bGwgPSBmYWxzZTsKKworCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2NoZW1hVmFy TWVtb3J5Q29udGV4dCk7CisKKwkJdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgdmFyLT50 eXBieXZhbCwgdmFyLT50eXBsZW4pOworCQlpZiAodmFyLT52YWx1ZSAhPSB2YWx1ZSkKKwkJCXZh ci0+ZnJlZXZhbCA9IHRydWU7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJ fQorCWVsc2UKKwl7CisJCXZhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCXZhci0+aXNudWxsID0g dHJ1ZTsKKwl9Cit9CisKKy8qCisgKiBSZXR1cm5zIHZhcmlhYmxlIG5hbWUKKyAqLworY2hhciAq CitnZXRfc2NoZW1hdmFyX25hbWUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQkJcmVsVHVwOwor CUZvcm1fcGdfY2xhc3MJcmVsRm9ybTsKKwljaGFyCSAgICpuc3BuYW1lOworCWNoYXIJICAgKnJl bG5hbWU7CisKKwlyZWxUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELAorCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChyZWxUdXApKQor CQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAl dSIsIHZhcmlkKTsKKwlyZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChyZWxUdXAp OworCisJLyogUXVhbGlmeSB0aGUgbmFtZSBpZiBub3QgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aCAq LworCWlmIChSZWxhdGlvbklzVmlzaWJsZSh2YXJpZCkpCisJCW5zcG5hbWUgPSBOVUxMOworCWVs c2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShyZWxGb3JtLT5yZWxuYW1lc3BhY2Up OworCisJcmVsbmFtZSA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsIE5hbWVT dHIocmVsRm9ybS0+cmVsbmFtZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHJlbFR1cCk7CisKKwly ZXR1cm4gcmVsbmFtZTsKK30KKworLyoKKyAqIEFjY2VzcyBmdW5jdGlvbnMgdG8gc2NoZW1hIHZh cmlhYmxlcy4KKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2 YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCVNjaGVtYVZh cgl2YXI7CisKKwl2YXIgPSBQcmVwYXJlU2NoZW1hVmFyKHZhcmlkKTsKKwlTZXRWYWx1ZSh2YXIs IHZhbHVlLCBpc051bGwsIHR5cGlkLCB0eXBtb2QpOworfQorCisvKgorICogU2VjdXJpemVkIHZl cnNpb25zIFNldFNjaGVtYVZhcmlhYmxlCisgKi8KK3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlU2Vj dXJlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMy IHR5cG1vZCkKK3sKKwlBY2xSZXN1bHQJCWFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Np b25zICovCisJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgp LCBBQ0xfVVBEQVRFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVj a19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZh cmlkKSk7CisKKwlTZXRTY2hlbWFWYXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCwgdHlwaWQs IHR5cG1vZCk7Cit9CisKK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wg KmlzTnVsbCwKKwkJCQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlw bGVuLCBib29sIHR5cGJ5dmFsKQoreworCVNjaGVtYVZhcgl2YXI7CisJRGF0dW0JCXJlc3VsdCA9 IChEYXR1bSkgMDsKKworCXZhciA9IFByZXBhcmVTY2hlbWFWYXIodmFyaWQpOworCisJaWYgKCF2 YXItPmlzbnVsbCkKKwl7CisJCXJlc3VsdCA9IGRhdHVtQ2FzdCh2YXItPnZhbHVlLCB0eXBpZCwg dHlwbW9kLAorCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCk7CisJCSppc051bGwgPSBm YWxzZTsKKworCQlpZiAocmVzdWx0ID09IHZhci0+dmFsdWUpCisJCQlyZXN1bHQgPSBkYXR1bUNv cHkocmVzdWx0LCB0eXBieXZhbCwgdHlwbGVuKTsKKwl9CisJZWxzZQorCQkqaXNOdWxsID0gdHJ1 ZTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBTZWN1cml6ZWQgdmVyc2lvbiBvZiBH ZXRTY2hlbWFWYXJpYWJsZQorICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lk IHZhcmlkLCBib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJ CQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xSZXN1bHQgYWNscmVzdWx0 OworCisJLyogQ2hlY2sgcGVybWlzc2lvbnMgKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xj aGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCWlmIChhY2xyZXN1bHQgIT0g QUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxF LCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKworCXJldHVybiBHZXRTY2hlbWFWYXJpYWJs ZSh2YXJpZCwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kLCB0eXBsZW4sIHR5cGJ5dmFsKTsKK30KKwor LyoKKyAqIFYxIGZ1bmN0aW9uIEFQSQorICoKKyAqIHZvaWQgc2V0X3NjaGVtYV92YXJpYWJsZSh2 YXIgcmVnY2xhc3MsIHZhbHVlIGFueWVsZW1lbnQpOworICogYW55ZWxlbWVudCBnZXRfc2NoZW1h X3ZhcmlhYmxlKHZhciByZWdjbGFzcywgZXhwZWN0ZWRfdHlwZSBhbnllbGVtZW50KQorICoKKyAq LworRGF0dW0KK3NldF9zY2hlbWFfdmFyaWFibGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJ CXZhcmlkOworCURhdHVtCXZhbHVlOworCWJvb2wJaXNOdWxsOworCU9pZAkJdHlwaWQ7CisJaW50 MTYJdHlwbGVuOworCWJvb2wJdHlwYnl2YWw7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dF RCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRl bnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKCFQR19BUkdJ U05VTEwoMSkpCisJeworCQl2YWx1ZSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKKwkJaXNOdWxsID0g ZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXZhbHVlID0gKERhdHVtKSAwOworCQlpc051bGwgPSB0 cnVlOworCX0KKworCXR5cGlkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywg MSk7CisJaWYgKHR5cGlkID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY291 bGQgbm90IGRldGVybWluZSBpbnB1dCBkYXRhIHR5cGUiKSkpOworCisJZ2V0X3R5cGxlbmJ5dmFs KHR5cGlkLCAmdHlwbGVuLCAmdHlwYnl2YWwpOworCVNldFNjaGVtYVZhcmlhYmxlU2VjdXJlKHZh cmlkLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgLTEpOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30K KworRGF0dW0KK2dldF9zY2hlbWFfdmFyaWFibGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJ CXZhcmlkOworCU9pZAkJdHlwaWQ7CisJaW50MTYJdHlwbGVuOworCWJvb2wJdHlwYnl2YWw7CisJ Ym9vbAlpc051bGw7CisJRGF0dW0JcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9X RUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIHZhcmlhYmxlIGlk ZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCXR5cGlkID0gZ2V0 X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMSk7CisJaWYgKHR5cGlkID09IEludmFs aWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSBpbnB1dCBk YXRhIHR5cGUiKSkpOworCisJZ2V0X3R5cGxlbmJ5dmFsKHR5cGlkLCAmdHlwbGVuLCAmdHlwYnl2 YWwpOworCXJlc3VsdCA9IEdldFNjaGVtYVZhcmlhYmxlU2VjdXJlKHZhcmlkLCAmaXNOdWxsLCB0 eXBpZCwgLTEsIHR5cGxlbiwgdHlwYnl2YWwpOworCisJaWYgKGlzTnVsbCkKKwkJUEdfUkVUVVJO X05VTEwoKTsKKwllbHNlCisJCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworfQorCisvKgorICog QWNjZXNzIGZ1bmN0aW9ucyB0byBmaWVsZHMgb2YgY29tcG9zaXRlIHZhcmlhYmxlcworICovCit2 b2lkCitTZXRTY2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRu YW1lLAorCQkJCQkJRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAorCQkJCQkJT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QpCit7CisKKwlTY2hlbWFWYXIJdmFyOworCVR1cGxlRGVzYwl0dXBEZXNjOwor CUZvcm1fcGdfYXR0cmlidXRlCXNhdHRyID0gTlVMTDsKKwlEYXR1bQkgICAqdmFsdWVzOworCWJv b2wJICAgKm51bGxzOworCWludAkJCW5hdHRzOworCUhlYXBUdXBsZQkJdHVwbGU7CisJaW50CQkJ aTsKKworCXZhciA9IFByZXBhcmVTY2hlbWFWYXIodmFyaWQpOworCisJaWYgKCF2YXItPmlzX3Jv d3R5cGUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCisJCQkJIGVycm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBpcyBub3Qgb2Ygcm93 IHR5cGUiLAorCQkJCQkJICBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKSkpOworCisJdHVwRGVz YyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModmFyLT50eXBpZCwgdmFyLT50eXBtb2QpOworCW5h dHRzID0gdHVwRGVzYy0+bmF0dHM7CisKKwkvKgorCSAqIFdlIHNob3VsZCB0byBjaGVjayBjb3Jy ZWN0IGZpZWxkIG5hbWUsIGFsdGhvdWdoIHJlc3VsdCBjYW4gYmUgTlVMTCwKKwkgKiBhbmQgdGhp cyBpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSB1c2VkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBu YXR0czsgaSsrKQorCXsKKwkJaWYgKG5hbWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cERlc2Ms IGkpLT5hdHRuYW1lKSwgZmllbGRuYW1lKSA9PSAwICYmCisJCQkhVHVwbGVEZXNjQXR0cih0dXBE ZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQl7CisJCQlzYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVw RGVzYywgaSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChzYXR0ciA9PSBOVUxMKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJ CQkJIGVycm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBoYXMgbm90IGZpZWxkIFwiJXNcIiIsCisJ CQkJCQkJZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmaWVsZG5hbWUpKSk7CisK KwkvKiBsZWF2ZSwgd2hlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBjb21wb3NpdGUgKi8KKwlp ZiAodmFyLT5pc251bGwgJiYgaXNOdWxsKQorCXsKKwkJRnJlZVR1cGxlRGVzYyh0dXBEZXNjKTsK KwkJcmV0dXJuOworCX0KKworCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKG5hdHRzICogc2l6 ZW9mKERhdHVtKSk7CisJbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKGJv b2wpKTsKKworCWlmICghdmFyLT5pc251bGwpCisJeworCQlIZWFwVHVwbGVIZWFkZXIgcmVjID0g RGF0dW1HZXRIZWFwVHVwbGVIZWFkZXIodmFyLT52YWx1ZSk7CisJCUhlYXBUdXBsZURhdGEJdHVw OworCisJCS8qIEJ1aWxkIGEgdGVtcG9yYXJ5IEhlYXBUdXBsZSBjb250cm9sIHN0cnVjdHVyZSAq LworCQl0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aChyZWMpOworCQlJ dGVtUG9pbnRlclNldEludmFsaWQoJih0dXAudF9zZWxmKSk7CisJCXR1cC50X3RhYmxlT2lkID0g SW52YWxpZE9pZDsKKwkJdHVwLnRfZGF0YSA9IHJlYzsKKworCQloZWFwX2RlZm9ybV90dXBsZSgm dHVwLCB0dXBEZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwl9CisJZWxzZQorCXsKKwkJZm9yIChpID0g MDsgaSA8IG5hdHRzOyBpKyspCisJCQludWxsc1tpXSA9IHRydWU7CisJfQorCisJaWYgKCFpc051 bGwpCisJeworCQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gZGF0dW1DYXN0KHZhbHVlLAor CQkJCQkJCQkJCSAgc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kLAorCQkJCQkJCQkJ CSAgdHlwaWQsIHR5cG1vZCk7CisJCW51bGxzW3NhdHRyLT5hdHRudW0gLSAxXSA9IGZhbHNlOwor CX0KKwllbHNlCisJeworCQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gKERhdHVtKSAwOwor CQludWxsc1tzYXR0ci0+YXR0bnVtIC0gMV0gPSB0cnVlOworCX0KKworCXR1cGxlID0gaGVhcF9m b3JtX3R1cGxlKHR1cERlc2MsIHZhbHVlcywgbnVsbHMpOworCVNldFZhbHVlKHZhciwKKwkJCSAg SGVhcFR1cGxlSGVhZGVyR2V0RGF0dW0oKEhlYXBUdXBsZUhlYWRlcikgdHVwbGUtPnRfZGF0YSks CisJCQkgIGZhbHNlLAorCQkJICB2YXItPnR5cGlkLCB2YXItPnR5cG1vZCk7CisKKwloZWFwX2Zy ZWV0dXBsZSh0dXBsZSk7CisJUmVsZWFzZVR1cGxlRGVzYyh0dXBEZXNjKTsKK30KKworRGF0dW0K K0dldFNjaGVtYVZhcmlhYmxlRmllbGQoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5hbWUs CisJCQkJCQlib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJ CQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlEYXR1bQkJcmVzdWx0ID0gKERh dHVtKSAwOworCURhdHVtCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwlUdXBsZURlc2MJCXR1cERlc2M7 CisJRm9ybV9wZ19hdHRyaWJ1dGUJc2F0dHIgPSBOVUxMOworCVNjaGVtYVZhcgkJdmFyOworCWlu dAkJCWk7CisKKwlBc3NlcnQodmFyaWQgIT0gSW52YWxpZE9pZCk7CisKKwl2YXIgPSBQcmVwYXJl U2NoZW1hVmFyKHZhcmlkKTsKKworCWlmICghdmFyLT5pc19yb3d0eXBlKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJt c2coInRoZSB2YXJpYWJsZSBcIiVzXCIgaXMgbm90IG9mIHJvdyB0eXBlIiwKKwkJCQkJCSAgZ2V0 X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSkpKTsKKworCXR1cERlc2MgPSBsb29rdXBfcm93dHlwZV90 dXBkZXNjKHZhci0+dHlwaWQsIHZhci0+dHlwbW9kKTsKKworCS8qCisJICogV2Ugc2hvdWxkIHRv IGNoZWNrIGNvcnJlY3QgZmllbGQgbmFtZSwgYWx0aG91Z2ggcmVzdWx0IGNhbiBiZSBOVUxMLAor CSAqIGFuZCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHVzZWQuCisJICovCisJZm9yIChp ID0gMDsgaSA8IHR1cERlc2MtPm5hdHRzOyBpKyspCisJeworCQlpZiAobmFtZXN0cmNtcCgmKFR1 cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0dG5hbWUpLCBmaWVsZG5hbWUpID09IDAgJiYKKwkJ CSFUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5hdHRpc2Ryb3BwZWQpCisJCXsKKwkJCXNhdHRy ID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYg KHNhdHRyID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJ0aGUgdmFyaWFibGUgXCIlc1wiIGhhcyBu b3QgZmllbGQgXCIlc1wiIiwKKwkJCQkJCQlnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpLAorCQkJ CQkJCWZpZWxkbmFtZSkpKTsKKworCS8qCisJICogVGhlb3JldGljYWxseSwgd2UgY2hlY2sgYSBw b3NzaWJpbGl0eSB0byBjYXN0IHRvIHRhcmdldCB0eXBlIGV2ZXJ5dGltZSwKKwkgKiBidXQgY2Fu IGJlIGlnbm9yZWQsIHdoZW4gcmVzdWx0IHdpbGwgYmUgbnVsbC4KKwkgKi8KKwlpZiAoIXZhci0+ aXNudWxsKQorCXsKKwkJSGVhcFR1cGxlSGVhZGVyCXR1cGxlOworCQlIZWFwVHVwbGVEYXRhCXRt cHR1cDsKKworCQl0dXBsZSA9IERhdHVtR2V0SGVhcFR1cGxlSGVhZGVyKHZhci0+dmFsdWUpOwor CisJCS8qCisJCSAqIGhlYXBfZ2V0YXR0ciBuZWVkcyBhIEhlYXBUdXBsZSBub3QgYSBiYXJlIEhl YXBUdXBsZUhlYWRlci4gIFdlIHNldCBhbGwKKwkJICogdGhlIGZpZWxkcyBpbiB0aGUgc3RydWN0 IGp1c3QgaW4gY2FzZSB1c2VyIHRyaWVzIHRvIGluc3BlY3Qgc3lzdGVtCisJCSAqIGNvbHVtbnMu CisJCSAqLworCQl0bXB0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aCh0 dXBsZSk7CisJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmKHRtcHR1cC50X3NlbGYpKTsKKwkJdG1w dHVwLnRfdGFibGVPaWQgPSBJbnZhbGlkT2lkOworCQl0bXB0dXAudF9kYXRhID0gdHVwbGU7CisK KwkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJnRtcHR1cCwKKwkJCQkJCQkgIHNhdHRyLT5hdHRudW0s CisJCQkJCQkJICB0dXBEZXNjLAorCQkJCQkJCSAgaXNOdWxsKTsKKworCQlpZiAoISppc051bGwp CisJCXsKKwkJCXJlc3VsdCA9IGRhdHVtQ2FzdCh2YWx1ZSwgdHlwaWQsIHR5cG1vZCwKKwkJCQkJ CQkJc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kKTsKKworCQkJaWYgKHJlc3VsdCA9 PSB2YWx1ZSkKKwkJCQlyZXN1bHQgPSBkYXR1bUNvcHkocmVzdWx0LCB0eXBieXZhbCwgdHlwbGVu KTsKKwkJfQorCX0KKworCVJlbGVhc2VUdXBsZURlc2ModHVwRGVzYyk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKE9pZCB2YXJpZCwg Y29uc3QgY2hhciAqZmllbGRuYW1lLAorCQkJCQkJRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAor CQkJCQkJT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJQWNsUmVzdWx0CQlhY2xyZXN1bHQ7 CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNo ZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBB Q0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUs IGdldF9zY2hlbWF2YXJfbmFtZSh2YXJpZCkpOworCisJU2V0U2NoZW1hVmFyaWFibGVGaWVsZCh2 YXJpZCwgZmllbGRuYW1lLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kKTsKK30KKworRGF0 dW0KK0dldFNjaGVtYVZhcmlhYmxlRmllbGRTZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpm aWVsZG5hbWUsCisJCQkJCQlib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5 cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xSZXN1bHQg YWNscmVzdWx0OworCisJLyoKKwkgKiBUaGVyZSBhcmUgbm90IGFueSBzcGVjaWFsIGFjY2VzcyB0 byBmaWVsZHMuIEp1c3QgY2hlY2sgYQorCSAqIGFjY2VzcyB0byB2YXJpYWJsZS4KKwkgKi8KKwlh Y2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxF Q1QpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKwor CXJldHVybiBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkKHZhcmlkLCBmaWVsZG5hbWUsIGlzTnVsbCwg dHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBieXZhbCk7Cit9CisKK0RhdHVtCitzZXRfc2NoZW1h X3ZhcmlhYmxlX2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsKKwlEYXR1 bQl2YWx1ZTsKKwlib29sCWlzTnVsbDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5cGxlbjsKKwli b29sCXR5cGJ5dmFsOworCWNvbnN0IGNoYXIgICAqZmllbGRuYW1lOworCisJaWYgKFBHX0FSR0lT TlVMTCgwKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFM VUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9y IHZhcmlhYmxlIGlkZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwor CWlmIChQR19BUkdJU05VTEwoMSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5v dCBhbGxvd2VkIGZvciBmaWVsZCBuYW1lIikpKTsKKworCWZpZWxkbmFtZSA9IE5hbWVTdHIoKlBH X0dFVEFSR19OQU1FKDEpKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDIpKQorCXsKKwkJdmFsdWUg PSBQR19HRVRBUkdfREFUVU0oMik7CisJCWlzTnVsbCA9IGZhbHNlOworCX0KKwllbHNlCisJewor CQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJaXNOdWxsID0gdHJ1ZTsKKwl9CisKKwl0eXBpZCA9IGdl dF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDIpOworCWlmICh0eXBpZCA9PSBJbnZh bGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgaW5wdXQg ZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwgJnR5cGJ5 dmFsKTsKKwlTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKHZhcmlkLCBmaWVsZG5hbWUsIHZh bHVlLCBpc051bGwsIHR5cGlkLCAtMSk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitEYXR1 bQorZ2V0X3NjaGVtYV92YXJpYWJsZV9maWVsZChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJ dmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBsZW47CisJYm9vbAl0eXBieXZhbDsKKwli b29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisJY29uc3QgY2hhciAgICpmaWVsZG5hbWU7CisK KwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBu b3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRB UkdfT0lEKDApOworCisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2co Im51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIGZpZWxkIG5hbWUiKSkpOworCisJZmllbGRuYW1l ID0gTmFtZVN0cigqUEdfR0VUQVJHX05BTUUoMSkpOworCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9h cmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAyKTsKKwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIp KSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJcmVz dWx0ID0gR2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3VyZSh2YXJpZCwgZmllbGRuYW1lLCAmaXNO dWxsLCB0eXBpZCwgLTEsIHR5cGxlbiwgdHlwYnl2YWwpOworCisJaWYgKGlzTnVsbCkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKwllbHNlCisJCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworCisJUEdf UkVUVVJOX05VTEwoKTsKK30KKworLyoKKyAqIFJlc3VsdHM6CisgKj0KKyAKKzEuIFRoZSBzY2hl bWEgdmFyaWFibGVzIGFyZSBzaW1pbGFyIHRvIHRlbXBvcmFyeSB0YWJsZXMgLSBidXQgdGhlIGRh dGEgYXJlIG5vdCBzYXZlZAorICAgaW4gOEtCIGJsb2Nrcywgc28gbmV3IHN0b3JhZ2UgYW5kIHNv bWUgc2ltcGxlIHN0b3JhZ2UgbWFuYWdlciBzaG91bGQgYmUgY3JlYXRlZC4gV2UKKyAgIHdvdWxk IG5vdCB0byB1c2UgbG9jYWwgYnVmZmVyIGR1ZSBhbGxvY2F0aW9uIDhLQiBhcyBtaW5pbXVuLCBj cmVhdGluZyB0ZW1wIGZpbGUuCisKKzIuIFdlIHNob3VsZCB0byB3b3JrIHdpdGggdHlwbW9kLCBz byBwZ19hdHRyaWJ1dGUgZW50cnkgc2hvdWxkIGJlIGNyZWF0ZWQgYW55dGltZS4KKworMy4gQSBy aXNrIG9mIGNvbGxpc2lvbnMgb2YgdmFyaWFibGUgYW5kIHRhYmxlIG5hbWUgd2lsbCBiZSByZWR1 Y2VkLCB3aGVuIHZhcmlhYmxlcworICAgYW5kIHRhYmxlcyBjYW5ub3QgdG8gaGF2ZSBzYW1lIG5h bWUuCisKKzQuIElmIHNjaGVtYSB2YXJpYWJsZXMgYXJlIHBnX2NsYXNzIGJhc2VkLCB0aGVuIHNv bWUgY3VycmVudCBzeW50YXggaGFzIHNlbnNlCisKKyAgICBXZSBjYW4gc3VwcG9ydCBVUERBVEUg YW5kIFNFTEVDVCBjb21tYW5kcyBvbiB2YXJpYWJsZXMuCisKKyAgICBwb3NzaWJsZSBzeW50YXhl czoKKworICAgICAgICAtLSB0aGVyZSBjYW4gYmUgYSBhbmFsb2d5IHdpdGggcmVjb3JkIGZ1bmN0 aW9ucworICAgICAgICBTRUxFQ1QgdmFybmFtZTsKKyAgICAgICAgU0VMRUNUIHZhcm5hbWUuZmll bGQ7CisgICAgICAgIFNFTEVDVCB2YXJuYW1lIEZST00gdmFybmFtZTsgLS0gd2hlbiB2YXIgaXMg c2NhbGFyLCB0aGVuIHZhcm5hbWUgaW4gdGFyZ2V0IGxpc3QgaXMgc2NhbGFyCisKKyAgICAgICAg VVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAxMDsgLS0gc2NhbGFyIHZlcnNpb24KKyAgICAg ICAgVVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAoeCx5LHopIC0tIGNvbXBvc2l0ZSB2ZXJz aW9uCisgICAgICAgIFVQREFURSB2YXJuYW1lIFNFVCB2YXJuYW1lLmZpZWxkMSA9IHgsIHZhcm5h bWUuZmllbGQyID0geSwgLi4KKworICAgICAgICBMRVQgdmFybmFtZSA9IGV4cHI7CisgICAgICAg IExFVCB2YXJuYW1lLmZpZWxkMSA9IGV4cHI7CisgICAgICAgIExFVCB2YXJuYW1lID0gKHgsIHks IHopOyAtLSBjb21wb3NpdGUgdmVyc2lvbgorCisgICBQb3NzaWJsZQorICAgCisgICAgICAgIExF VCB2YXJuYW1lKGEsYikgPSAoc2VsZWN0ICgxMCwgMjApIEZST00gLi4uICkKKworCis1LiBMRVQg Y21kIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBDTUQgKGxpa2UgSU5TRVJULCBVUERBVEUsIERFTEVU RSkgb3IgVXRpbGl0eSAobGlrZQorICAgQ3JlYXRlVGFibGVBc1NlbGVjdCkuIFByZWZlciBmaXJz dCBvcHRpb24sIGJlY2F1c2UgdGhlcmUgY2FuIGJlIHByZXBhcmVkLCBjYW4gYmUKKyAgIHVzZWQg dG9nZXRoZXIgd2l0aCBFWFBMQUlOLCBldGMuCisKKyAgIEV4cGVjdGVkIGZvcm06CisgICAgIExF VCBmb28gPSAoU0VMRUNUIGlkIEZST00gYm9vIFdIRVJFIHNvbWUgPSAnaGVsbG8nKTsKKworICAg c28gcG9zc2liaWxpdHkgdG8gcnVuIEVYUExBSU4gTEVUIC4uIGhhcyBnb29kIGVub3VnaCBiZW5l Zml0CisKKzYuIFdoYXQgc2hvdWxkIGJlIG1lY2hhbmlzbSBvZiBjb21wYXRpYmlsaXR5IGJldHdl ZW4gYmFzZSB0eXBlIGFuZCB2YXJpYWJsZSB0eXBlPworCisgICAgIENSRUFURSBWQVJJQUJMRSB4 eCBBUyBCVAorCisgICBFeGFtcGxlOiBDUkVBVEUgVFlQRSBjdCBBUyAoeCBpbnQsIGludCk7IENS RUFURSBWQVJJQUJMRSB2YXIgQVMgY3Q7CisgICB2YXIgdHlwZSAoaW1wbGljaXRseSBjcmVhdGVk KSBzaG91bGQgYmUgY29tcGF0aWJsZSB3aXRoIGN0IHR5cGUsIGJlY2F1c2Ugd2Ugd2FudAorCisg ICAgIExFVCB2YXIgPSAoMTAsMjApOjp2YXI7IExFVCB2YXIgPSAoMTAsMjApOjpjdDsKKworNy4g V2hlbiBMRVQgY29tbWFuZCBhbGxvd3MgdG8gc3BlY2lmeSB0YXJnZXQgZmllbGQsIHRoZW4gdGhl cmUgaXMgcG9zc2libGUgY29sbGlzaW9uCisgICBJMS5JMiBjYW4gYmUgc2NoZW1hLnZhcmlhYmxl LCBidXQgc2hvdWxkIGJlIHZhcmlhYmxlLmZpZWxkIHRvby4gSXQgc2hvdWxkIGJlIHRlc3RlZAor ICAgYW5kIGlmIGJvdGggdmFyaWFudHMgYXJlIHBvc3NpYmxlLCB0aGVuIGV4Y2VwdGlvbiBzaG91 bGQgYmUgcmFpc2VkLiBMRVQgdmFyLmZpZWxkID0gZXhwcgorICAgaXMgYSBhbmFsb2d5IHRvIFVQ REFURSB2YXIgU0VUIGZpZWxkID0gZXhwci4KKworCisqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOGY4M2FhNDY3NS4uMWZhZDE1NjU3 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTI3Miw2ICsyNzIsMTIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm9wbXNnc3RyaW5ncyBkcm9wbXNnc3RyaW5nYXJyYXlbXSA9IHsKIAkJ Z2V0dGV4dF9ub29wKCJpbmRleCBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiksCiAJ CWdldHRleHRfbm9vcCgiXCIlc1wiIGlzIG5vdCBhbiBpbmRleCIpLAogCWdldHRleHRfbm9vcCgi VXNlIERST1AgSU5ERVggdG8gcmVtb3ZlIGFuIGluZGV4LiIpfSwKKwl7UkVMS0lORF9WQVJJQUJM RSwKKwkJRVJSQ09ERV9VTkRFRklORURfVEFCTEUsCisJCWdldHRleHRfbm9vcCgic2NoZW1hIHZh cmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIpLAorCQlnZXR0ZXh0X25vb3AoInNjaGVtYSB2 YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiksCisJCWdldHRleHRfbm9v cCgiXCIlc1wiIGlzIG5vdCBhIHNjaGVtYSB2YXJpYWJsZSIpLAorCWdldHRleHRfbm9vcCgiVXNl IERST1AgVkFSSUFCTEUgdG8gcmVtb3ZlIGEgdmFyaWFibGUuIil9LAogCXsnXDAnLCAwLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQogfTsKIApAQCAtMTAwNTYsNiArMTAwNjIsNyBAQCBBVEV4ZWND aGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdPd25lcklkLCBib29sIHJlY3Vyc2lu ZywgTE9DS01PREUgbG9jawogCQljYXNlIFJFTEtJTkRfTUFUVklFVzoKIAkJY2FzZSBSRUxLSU5E X0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKKwkJY2Fz ZSBSRUxLSU5EX1ZBUklBQkxFOgogCQkJLyogb2sgdG8gY2hhbmdlIG93bmVyICovCiAJCQlicmVh azsKIAkJY2FzZSBSRUxLSU5EX0lOREVYOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggZGI1 ZmNhZmJmZS4uNWRkOThkOGRlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0zMyw2ICsz Myw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2Jq ZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcy Myw2ICs3MjQsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAkJCQlQYXJh bUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OwogCiAJCQkJc3dpdGNo IChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTczMCw2ICs3MzIsMjMgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfUEFSQU1fRVhFQzsKIAkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFy YW0tPnBhcmFtaWQ7CiAJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBh cmFtdHlwZTsKKwkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJ CWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9WQVJJQUJMRToKKwkJCQkJCS8qIENoZWNr IHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFibGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9 IHBnX2NsYXNzX2FjbGNoZWNrKHBhcmFtLT5wYXJhbWlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVD VCk7CisJCQkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQkJCWFjbGNoZWNr X2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUocGFy YW0tPnBhcmFtaWQpKTsKKworCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BBUkFNX1NDSEVN QV9WQVJJQUJMRTsKKwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFt aWQ7CisJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsK KwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cG1vZCA9IHBhcmFtLT5wYXJhbXR5cG1vZDsK KworCQkJCQkJZ2V0X3R5cGxlbmJ5dmFsKHBhcmFtLT5wYXJhbXR5cGUsCisJCQkJCQkJCQkJCQkm c2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwbGVuLAorCQkJCQkJCQkJCQkJJnNjcmF0Y2guZC5wYXJh bS5wYXJhbXR5cGJ5dmFsKTsKKwogCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0 Y2gpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgUEFSQU1fRVhURVJOOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggNzcxYjdlMzk0NS4uNjQyOTRlNGFjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZh ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0zNTEsNiArMzUyLDcgQEAg RXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BB UkFNX0VYVEVSTiwKIAkJJiZDQVNFX0VFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9Q X1BBUkFNX1NDSEVNQV9WQVJJQUJMRSwKIAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFMLAogCQkm JkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwKQEAgLTEw MzMsNiArMTAzNSwyMyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29u dGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlF RU9fQ0FTRShFRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJMRSkKKwkJeworCQkJRGF0dW0JZDsKKwkJ CWJvb2wJaXNudWxsOworCisJCQlkID0gR2V0U2NoZW1hVmFyaWFibGUob3AtPmQucGFyYW0ucGFy YW1pZCwgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBhcmFtdHlwZSwKKwkJ CQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJCQkJCSAgb3AtPmQucGFyYW0ucGFyYW10eXBsZW4s CisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGJ5dmFsKTsKKworCQkJKm9wLT5y ZXN2YWx1ZSA9IGQ7CisJCQkqb3AtPnJlc251bGwgPSBpc251bGw7CisKKwkJCUVFT19ORVhUKCk7 CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX1BBUkFNX0NBTExCQUNLKQogCQl7CiAJCQkvKiBhbGxv dyBhbiBleHRlbnNpb24gbW9kdWxlIHRvIHN1cHBseSBhIFBBUkFNX0VYVEVSTiB2YWx1ZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggOTFiYTkzOWJkYy4uNzIzMmNmYWRmOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC0yMTAsNiArMjEwLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlzd2l0Y2ggKHF1ZXJ5RGVz Yy0+b3BlcmF0aW9uKQogCXsKIAkJY2FzZSBDTURfU0VMRUNUOgorCQljYXNlIENNRF9MRVQ6CiAK IAkJCS8qCiAJCQkgKiBTRUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5n IENURXMgbmVlZCB0byBtYXJrCkBAIC03NjksNyArNzcwLDggQEAgRXhlY0NoZWNrWGFjdFJlYWRP bmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKIAogCS8qCiAJICogRmFpbCBpZiB3cml0ZSBw ZXJtaXNzaW9ucyBhcmUgcmVxdWVzdGVkIGluIHBhcmFsbGVsIG1vZGUgZm9yIHRhYmxlCi0JICog KHRlbXAgb3Igbm9uLXRlbXApLCBvdGhlcndpc2UgZmFpbCBmb3IgYW55IG5vbi10ZW1wIHRhYmxl LgorCSAqICh0ZW1wIG9yIG5vbi10ZW1wKSwgb3RoZXJ3aXNlIGZhaWwgZm9yIGFueSBub24tdGVt cCB0YWJsZS4gQWxsb3cgdG8KKwkgKiBtb2RpZnkgY29udGVudCBvZiBzY2hlbWEgdmFyaWFibGVz LgogCSAqLwogCWZvcmVhY2gobCwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKIAl7CkBAIC03ODQsNiAr Nzg2LDkgQEAgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkK IAkJaWYgKGlzVGVtcE5hbWVzcGFjZShnZXRfcmVsX25hbWVzcGFjZShydGUtPnJlbGlkKSkpCiAJ CQljb250aW51ZTsKIAorCQlpZiAocnRlLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpCisJ CQljb250aW51ZTsKKwogCQlQcmV2ZW50Q29tbWFuZElmUmVhZE9ubHkoQ3JlYXRlQ29tbWFuZFRh ZygoTm9kZSAqKSBwbGFubmVkc3RtdCkpOwogCX0KIApAQCAtMTExOSw2ICsxMTI0LDE0IEBAIENo ZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBv cGVyYXRpb24pCiAJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgVE9BU1QgcmVsYXRpb24gXCIl c1wiIiwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOwogCQkJ YnJlYWs7CisJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCS8qIG9ubHkgTEVUIGNvbW1hbmQg Y2FuIGNoYW5nZSBhIHZhcmlhYmxlICovCisJCQlpZiAob3BlcmF0aW9uICE9IENNRF9MRVQpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBzY2hlbWEgdmFyaWFibGUgXCIlc1wi IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsKKwkJCWJy ZWFrOwogCQljYXNlIFJFTEtJTkRfVklFVzoKIAogCQkJLyoKQEAgLTEyODYsNiArMTI5OSwxMyBA QCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtUeXBl KQogCQkJCQkJIGVycm1zZygiY2Fubm90IGxvY2sgcm93cyBpbiBmb3JlaWduIHRhYmxlIFwiJXNc IiIsCiAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CiAJCQlicmVhazsK KwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJLyogTXVzdCBkaXNhbGxvdyB0aGlzIGJlY2F1 c2Ugd2UgdGhlcmUgYXJlIG5vdCByb3dzICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGxv Y2sgcm93cyBpbiBzY2hlbWEgdmFyaWFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGZhMmQ3MjY1Zi4uYmNjNDExMzk0MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTM5LDYgKzM5LDcgQEAK IAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgRXhl Y1NldHVwQ2hpbGRQYXJlbnRNYXBGb3JTdWJwbGFuKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUp Owogc3RhdGljIFR1cGxlQ29udmVyc2lvbk1hcCAqdHVwY29udl9tYXBfZm9yX3N1YnBsYW4oTW9k aWZ5VGFibGVTdGF0ZSAqbm9kZSwKIAkJCQkJCWludCB3aGljaHBsYW4pOwogCisKIC8qCiAgKiBW ZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElOU0VSVCBvciBVUERBVEUg bWF0Y2ggdGhlCiAgKiB0YXJnZXQgcmVsYXRpb24ncyByb3d0eXBlCkBAIC0xNDgzLDYgKzE0ODUs NzIgQEAgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNMZXQKKyAqCisgKgkJRm9yIExF VCwgd2UgaGF2ZSB0byB1cGRhdGUgdGFyZ2V0IHZhcmlhYmxlLAorICogICAgICBSZXR1cm5zIE5V TEwsIHRoZXJlIGFyZSBub3QgUkVUVVJOSU5HIGNsYXVzZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3Rh dGljIFR1cGxlVGFibGVTbG90ICoKK0V4ZWNMZXQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwK KwkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCSAgIEVTdGF0ZSAqZXN0YXRlLAorCQkgICBi b29sIGNhblNldFRhZykKK3sKKwlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOworCVJlbGF0 aW9uCXJlc3VsdFJlbGF0aW9uRGVzYzsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlib29sCQlpc251 bGwgPSB0cnVlOworCURhdHVtCQl2YWx1ZTsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gTlVM TDsKKwlPaWQJCQl2YXJpZDsKKworCWlmIChzbG90ICE9IE5VTEwgJiYgIXNsb3QtPnR0c19pc2Vt cHR5KQorCXsKKwkJdHVwZGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7CisKKwkJQXNz ZXJ0KHR1cGRlc2MgIT0gTlVMTCk7CisKKwkJLyogc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlICov CisJCWlmICh0dXBkZXNjLT5uYXR0cyAhPSAxKQorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQg bnVtYmVyIG9mIGF0dHJpYnV0ZXMiKTsKKworCQlhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBkZXNj LCAwKTsKKworCQlpZiAoIXNsb3QtPnR0c19pc251bGxbMF0pCisJCXsKKwkJCWlzbnVsbCA9IGZh bHNlOworCQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzWzBdOworCQl9CisJfQorCisJLyoKKwkg KiBOb3csIGVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvIGlzIGVtcHR5LCBidXQgY2FuIGJlIGluaXRp YWxpemVkCisJICogdG8gc3RydWN0dXJlIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlLgorCSAqLwor CXJlc3VsdFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvOworCXJlc3Vs dFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwl2YXJpZCA9 IHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfaWQ7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJCS8qIGV4 cGVjdGluZyBzbyB2YXJpYWJsZSBhbmQgZXhwcmVzc2lvbiBhcmUgZXF1YWwgKi8KKwkJU2V0U2No ZW1hVmFyaWFibGUodmFyaWQsIHZhbHVlLCBpc251bGwsIGF0dHItPmF0dHR5cGlkLCAtMSk7CisJ fQorCWVsc2UKKwl7CisJCVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCAoRGF0dW0pIDAsIHRydWUs IEludmFsaWRPaWQsIC0xKTsKKwl9CisKKwlpZiAoY2FuU2V0VGFnKQorCXsKKwkJQXNzZXJ0KGVz dGF0ZS0+ZXNfcHJvY2Vzc2VkID09IDApOworCQkoZXN0YXRlLT5lc19wcm9jZXNzZWQpKys7CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CiAKIC8qCiAgKiBQcm9jZXNzIEJFRk9SRSBFQUNIIFNUQVRF TUVOVCB0cmlnZ2VycwpAQCAtMTUxNSw2ICsxNTgzLDkgQEAgZmlyZUJTVHJpZ2dlcnMoTW9kaWZ5 VGFibGVTdGF0ZSAqbm9kZSkKIAkJY2FzZSBDTURfREVMRVRFOgogCQkJRXhlY0JTRGVsZXRlVHJp Z2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8pOwogCQkJYnJlYWs7CisJCWNhc2Ug Q01EX0xFVDoKKwkJCS8qIHRoZXJlIGFyZSBubyB0cmlnZ2VyICovCisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBA IC0xNTcwLDYgKzE2NDEsOSBAQCBmaXJlQVNUcmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2Rl KQogCQkJRXhlY0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8s CiAJCQkJCQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOwogCQkJYnJlYWs7CisJCWNh c2UgQ01EX0xFVDoKKwkJCS8qIHZhcmlhYmxlcyBoYXMgbm90IHRyaWdnZXJzICovCisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJ YnJlYWs7CkBAIC0yMDg0LDYgKzIxNTgsOSBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpw c3RhdGUpCiAJCQkJCQkJCSAgJm5vZGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsCiAJCQkJCQkJCSAg TlVMTCwgdHJ1ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgQ01EX0xF VDoKKwkJCQlzbG90ID0gRXhlY0xldChub2RlLCBzbG90LCBlc3RhdGUsIG5vZGUtPmNhblNldFRh Zyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bmtub3duIG9w ZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjQ2OSw2ICsyNTQ2LDcgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CQkJYnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJCQljYXNlIENNRF9ERUxFVEU6CisJCQlj YXNlIENNRF9MRVQ6CiAJCQkJanVua19maWx0ZXJfbmVlZGVkID0gdHJ1ZTsKIAkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDlmYzQ0MzFiODAuLjMxMGJjM2YyYzcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jCkBAIC0yNDA0LDYgKzI0MDQsOSBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQkJZWxzZQog CQkJCXJlcyA9IFNQSV9PS19VUERBVEU7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJ cmVzID0gU1BJX09LX1VUSUxJVFk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiBT UElfRVJST1JfT1BVTktOT1dOOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggM2FkNGRhNjRh YS4uNTJiOTAyNTA2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMwNjYsNiArMzA2NiwxOCBA QCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9k ZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10KGNvbnN0IExldFN0bXQgKmZy b20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExldFN0bXQpOworCisJQ09QWV9O T0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCUNPUFlf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRp YyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVy YXRpb25TdG10ICpmcm9tKQogewpAQCAtNTEwNCw2ICs1MTE2LDkgQEAgY29weU9iamVjdEltcGwo Y29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfY29w eVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXR2 YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlv blN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJvbSk7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA3NjViMWJlNzRiLi41OWM5ZmNiNGJjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0xMDY3LDYgKzEwNjcsMTYgQEAgX2VxdWFsU2VsZWN0U3Rt dChjb25zdCBTZWxlY3RTdG10ICphLCBjb25zdCBTZWxlY3RTdG10ICpiKQogCXJldHVybiB0cnVl OwogfQogCitzdGF0aWMgYm9vbAorX2VxdWFsTGV0U3RtdChjb25zdCBMZXRTdG10ICphLCBjb25z dCBMZXRTdG10ICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRCh0YXJnZXQpOworCUNPTVBBUkVf Tk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9u KTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbAogX2VxdWFsU2V0T3BlcmF0aW9u U3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICphLCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpi KQogewpAQCAtMzIzNiw2ICszMjQ2LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZWxlY3RTdG10 KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmV0dmFsID0gX2VxdWFs TGV0U3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJ CXJldHZhbCA9IF9lcXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggNmM3NmM0MWViZS4uN2I4MTc3ODJhMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKQEAgLTM0NDQsNiArMzQ0NCwxNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRf TGV0U3RtdDoKKwkJCXsKKwkJCQlMZXRTdG10ICpzdG10ID0gKExldFN0bXQgKikgbm9kZTsKKwor CQkJCWlmICh3YWxrZXIoc3RtdC0+dGFyZ2V0LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKHdhbGtlcihzdG10LT5zZWxlY3RTdG10LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FfRXhwcjoKIAkJCXsKIAkJCQlBX0V4 cHIJICAgKmV4cHIgPSAoQV9FeHByICopIG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKaW5kZXggOTNlNTY1OGEzNS4uNDVmMDJhZDc1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2NsYXVzZXMuYwpAQCAtMTI1MSwxMiArMTI1MSwxNSBAQCBtYXhfcGFyYWxsZWxfaGF6YXJk X3dhbGtlcihOb2RlICpub2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRleHQgKmNvbnRleHQp CiAJICogUEFSQU1fRVhFQyBQYXJhbXMgbGlzdGVkIGluIHNhZmVfcGFyYW1faWRzLCBtZWFuaW5n IHRoZXkgY291bGQgYmUKIAkgKiBlaXRoZXIgZ2VuZXJhdGVkIHdpdGhpbiB0aGUgd29ya2VyIG9y IGNhbiBiZSBjb21wdXRlZCBpbiBtYXN0ZXIgYW5kCiAJICogdGhlbiB0aGVpciB2YWx1ZSBjYW4g YmUgcGFzc2VkIHRvIHRoZSB3b3JrZXIuCisJICogUEFSQU1fU0NIRU1BX1ZBUklBQkxFIHBhcmFt cyBhcmUgbmV3ZXIgY2hhbmdlZCBieSB3b3JrZXJzLCBzbyB0aGV5IGNhbiBiZQorCSAqIHNhZmUu CiAJICovCiAJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKIAl7CiAJCVBhcmFtCSAgICpwYXJh bSA9IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VY VEVSTikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJh bS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKIAkJCXJldHVybiBmYWxzZTsK IAogCQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVDIHx8CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YwppbmRleCBjZjFhMzRlNDFhLi5mMGVhMWE1MTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI0 LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTQyLDggKzQzLDEyIEBACiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX3BhcmFtLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgorI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1 ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTU2LDYgKzYxLDcgQEAgc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAq c3RtdCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJICAgTGlzdCAqc3RtdGNvbHMsIExpc3QgKmljb2x1bW5z LCBMaXN0ICphdHRybm9zLAogCQkJCSAgIGJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOworc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3Rt dCk7CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBPbkNvbmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0Q2xh dXNlKTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqZXhwcik7CkBAIC0yNjcsNiArMjczLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0luc2VydFN0bXQ6CiAJCWNh c2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6 CiAJCQkodm9pZCkgdGVzdF9yYXdfZXhwcmVzc2lvbl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5VTEwp OwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0zMDQsNiArMzExLDEwIEBAIHRyYW5zZm9ybVN0 bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQl9CiAJCQlicmVhazsK IAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0YXRl LCAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBTcGVj aWFsIGNhc2VzCiAJCQkgKi8KQEAgLTM2Nyw2ICszNzgsNyBAQCBhbmFseXplX3JlcXVpcmVzX3Nu YXBzaG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNhc2Ug VF9VcGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJ CQlyZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1NDgsNiArMTU2MCwzNTQgQEAgdHJh bnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkK IAlyZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRyYW5z Zm9ybSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1MZXRT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAqcXJ5 ID0gbWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJICAg KmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICpzdWJfcnRhYmxlOworCUxpc3QJICAgKnN1 Yl9uYW1lc3BhY2U7CisJUmFuZ2VUYmxFbnRyeSAqcnRlOworCVJhbmdlVGJsUmVmICpydHI7CisJ TGlzdENlbGwgICAqbGM7CisJQWNsTW9kZQkJdGFyZ2V0UGVybXM7CisJUGFyc2VTdGF0ZSAqc3Vi X3BzdGF0ZTsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlSYW5n ZVZhciAgICpydmFyOworCWNoYXIJICAgKnN0cjEgPSBOVUxMOworCWNoYXIJICAgKnN0cjIgPSBO VUxMOworCWNoYXIJICAgKnN0cjMgPSBOVUxMOworCWNoYXIJICAgKmZpZWxkbmFtZTsKKwlpbnQJ CQlmaWVsZG5hbWVfcG9zOworCUxpc3QJICAgKmluZGlyZWN0aW9uID0gTklMOworCWludAkJCWlu ZGlyZWN0aW9uX3BvcyA9IC0xOworCisJUmVsYXRpb24JcmQ7CisJT2lkCQkJdmFydHlwaWQgPSBJ bnZhbGlkT2lkOworCWludDMyCQl2YXJ0eXBtb2QgPSAtMTsKKwlPaWQJCQl2YXJpZDsKKworCVBh cnNlRXhwcktpbmQgc3ZfZXhwcl9raW5kOworCisJc3ZfZXhwcl9raW5kID0gcHN0YXRlLT5wX2V4 cHJfa2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQUl9LSU5EX1VQREFURV9UQVJHRVQ7 CisKKwkvKiBUaGVyZSBjYW4ndCBiZSBhbnkgb3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLwor CUFzc2VydChwc3RhdGUtPnBfY3RlbmFtZXNwYWNlID09IE5JTCk7CisKKwlxcnktPmNvbW1hbmRU eXBlID0gQ01EX0xFVDsKKwlwc3RhdGUtPnBfaXNfbGV0ID0gdHJ1ZTsKKworCXN3aXRjaCAobGlz dF9sZW5ndGgoc3RtdC0+dGFyZ2V0KSkKKwl7CisJCWNhc2UgMToKKwkJCXsKKwkJCQlOb2RlCSpm aWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChzdG10LT50YXJnZXQpOworCisJCQkJQXNzZXJ0KElz QShmaWVsZDEsIFN0cmluZykpOworCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQxKTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIDI6CisJCQl7CisJCQkJTm9kZQkqZmllbGQxID0gKE5vZGUgKikgbGlu aXRpYWwoc3RtdC0+dGFyZ2V0KTsKKwkJCQlOb2RlCSpmaWVsZDIgPSAoTm9kZSAqKSBsc2Vjb25k KHN0bXQtPnRhcmdldCk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7CisKKwkJ CQlpZiAoSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJCXN0cjEgPSBzdHJWYWwoZmll bGQxKTsKKwkJCQkJc3RyMiA9IHN0clZhbChmaWVsZDIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJ eworCQkJCQlzdHIyID0gc3RyVmFsKGZpZWxkMSk7CisJCQkJCWluZGlyZWN0aW9uX3BvcyA9IDI7 CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCXsKKwkJCQlOb2RlCSpmaWVs ZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxkMiA9 IChOb2RlICopIGxzZWNvbmQoc3RtdC0+dGFyZ2V0KTsKKwkJCQlOb2RlCSpmaWVsZDMgPSAoTm9k ZSAqKSBsdGhpcmQoc3RtdC0+dGFyZ2V0KTsKKworCQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJp bmcpKTsKKworCQkJCWlmICghSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2co ImJyb2tlbiBzY2hlbWEgdmFyaWFibGUgaWRlbnRpZmllciIpLAorCQkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCQkJCWlmIChJc0EoZmllbGQy LCBTdHJpbmcpICYmIElzQShmaWVsZDMsIFN0cmluZykpCisJCQkJeworCQkJCQlzdHIxID0gc3Ry VmFsKGZpZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJc3RyMyA9IHN0 clZhbChmaWVsZDMpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlzdHIxID0gc3RyVmFs KGZpZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJaW5kaXJlY3Rpb25f cG9zID0gMzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJeworCQkJCU5v ZGUJKmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKHN0bXQtPnRhcmdldCk7CisJCQkJTm9kZQkq ZmllbGQyID0gKE5vZGUgKikgbHNlY29uZChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxk MyA9IChOb2RlICopIGx0aGlyZChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxkNCA9IChO b2RlICopIGxmb3VydGgoc3RtdC0+dGFyZ2V0KTsKKworCQkJCUFzc2VydChJc0EoZmllbGQxLCBT dHJpbmcpKTsKKworCQkJCWlmIChJc0EoZmllbGQyLCBTdHJpbmcpICYmIElzQShmaWVsZDMsIFN0 cmluZykgJiYgIUlzQShmaWVsZDQsIFN0cmluZykpCisJCQkJeworCQkJCQlzdHIxID0gc3RyVmFs KGZpZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJc3RyMyA9IHN0clZh bChmaWVsZDMpOworCQkJCQlpbmRpcmVjdGlvbl9wb3MgPSA0OworCQkJCX0KKwkJCQllbHNlCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQkgZXJybXNnKCJicm9rZW4gc2NoZW1hIHZhcmlhYmxlIGlkZW50aWZpZXIiKSwKKwkJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisJCQl9 CisJCQlicmVhazsKKworCisJCWRlZmF1bHQ6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImltcHJvcGVyIHF1YWxp ZmllZCBuYW1lIiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9j YXRpb24pKSk7CisJfQorCisJcnZhciA9IG1ha2VSYW5nZVZhckZvclRhcmdldE9mU2NoZW1hVmFy aWFibGUocHN0YXRlLCBzdHIxLCBzdHIyLCBzdHIzLAorCQkJCQkJCQkJCQkJICBzdG10LT5sb2Nh dGlvbiwgJmZpZWxkbmFtZSwKKwkJCQkJCQkJCQkJCSAgJmZpZWxkbmFtZV9wb3MsIGZhbHNlKTsK KworCS8qCisJICogSWYgYSBub24tbmlsIHJhbmdldGFibGUvbmFtZXNwYWNlIHdhcyBwYXNzZWQg aW4sIGFuZCB3ZSBhcmUgZG9pbmcKKwkgKiBJTlNFUlQvU0VMRUNULCBhcnJhbmdlIHRvIHBhc3Mg dGhlIHJhbmdldGFibGUvbmFtZXNwYWNlIGRvd24gdG8gdGhlCisJICogU0VMRUNULiAgVGhpcyBj YW4gb25seSBoYXBwZW4gaWYgd2UgYXJlIGluc2lkZSBhIENSRUFURSBSVUxFLCBhbmQgaW4KKwkg KiB0aGF0IGNhc2Ugd2Ugd2FudCB0aGUgcnVsZSdzIE9MRCBhbmQgTkVXIHJ0YWJsZSBlbnRyaWVz IHRvIGFwcGVhciBhcworCSAqIHBhcnQgb2YgdGhlIFNFTEVDVCdzIHJ0YWJsZSwgbm90IGFzIG91 dGVyIHJlZmVyZW5jZXMgZm9yIGl0LiAgKEtsdWdlISkKKwkgKiBUaGUgU0VMRUNUJ3Mgam9pbmxp c3QgaXMgbm90IGFmZmVjdGVkIGhvd2V2ZXIuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlCisJICog YWRkaW5nIHRoZSB0YXJnZXQgdGFibGUgdG8gdGhlIElOU0VSVCdzIHJ0YWJsZS4KKwkgKi8KKwlz dWJfcnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlwc3RhdGUtPnBfcnRhYmxlID0gTklMOwor CXN1Yl9uYW1lc3BhY2UgPSBwc3RhdGUtPnBfbmFtZXNwYWNlOworCXBzdGF0ZS0+cF9uYW1lc3Bh Y2UgPSBOSUw7CisKKwl0YXJnZXRQZXJtcyA9IEFDTF9VUERBVEU7CisJcXJ5LT5yZXN1bHRSZWxh dGlvbiA9IHNldFRhcmdldFRhYmxlKHBzdGF0ZSwgcnZhciwKKwkJCQkJCQkJCQkgZmFsc2UsIGZh bHNlLCB0YXJnZXRQZXJtcyk7CisKKwlyZCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisK Kwl2YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbG9mdHlwZTsKKwl2YXJpZCA9IHJkLT5yZF9pZDsK KworCWlmICh2YXJ0eXBpZCAhPSBJbnZhbGlkT2lkKQorCXsKKwkJaWYgKGdldF90eXB0eXBlKHZh cnR5cGlkKSAhPSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJVHVwbGVEZXNjCXR1cGRlc2M7 CisJCQlSZWxhdGlvbglyZWw7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyU3RydWN0OworCisJ CQkvKiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQlyZWwgPSByZWxhdGlvbl9vcGVuKHR5cGVpZFR5 cGVSZWxpZChyZC0+cmRfcmVsLT5yZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRl c2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWF0 dHJTdHJ1Y3QgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJCQl2YXJ0eXBpZCA9IGF0 dHJTdHJ1Y3QtPmF0dHR5cGlkOworCQkJdmFydHlwbW9kID0gYXR0clN0cnVjdC0+YXR0dHlwbW9k OworCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJcmVsYXRpb25fY2xvc2UocmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCQl9CisJCWVsc2UKKwkJeworCQkJdmFydHlwaWQgPSByZC0+cmRf cmVsLT5yZWxvZnR5cGU7CisJCQl2YXJ0eXBtb2QgPSAtMTsKKwkJfQorCX0KKwllbHNlCisJewor CQl2YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbHR5cGU7CisJCXZhcnR5cG1vZCA9IC0xOworCX0K KworCWlmIChmaWVsZG5hbWUgIT0gTlVMTCkKKwkJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFp bChzdG10LT50YXJnZXQsIGZpZWxkbmFtZV9wb3MgLSAxKTsKKwllbHNlIGlmIChpbmRpcmVjdGlv bl9wb3MgPj0gMikKKwkJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFpbChzdG10LT50YXJnZXQs IGluZGlyZWN0aW9uX3BvcyAtIDEpOworCisJLyoKKwkgKiBXZSBtYWtlIHRoZSBzdWItcHN0YXRl IGEgY2hpbGQgb2YgdGhlIG91dGVyIHBzdGF0ZSBzbyB0aGF0IGl0IGNhbgorCSAqIHNlZSBhbnkg UGFyYW0gZGVmaW5pdGlvbnMgc3VwcGxpZWQgZnJvbSBhYm92ZS4gIFNpbmNlIHRoZSBvdXRlcgor CSAqIHBzdGF0ZSdzIHJ0YWJsZSBhbmQgbmFtZXNwYWNlIGFyZSBwcmVzZW50bHkgZW1wdHksIHRo ZXJlIGFyZSBubworCSAqIHNpZGUtZWZmZWN0cyBvZiBleHBvc2luZyBuYW1lcyB0aGUgc3ViLVNF TEVDVCBzaG91bGRuJ3QgYmUgYWJsZSB0bworCSAqIHNlZS4KKwkgKi8KKwlzdWJfcHN0YXRlID0g bWFrZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisKKwkvKgorCSAqIFByb2Nlc3MgdGhlIHNvdXJjZSBT RUxFQ1QuCisJICoKKwkgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGlzIGJlIGhhbmRsZWQganVz dCBsaWtlIGEgc3RhbmRhbG9uZSBTRUxFQ1Q7CisJICogb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBv ZiBTRUxFQ1Qgd2l0aGluIElOU0VSVCBtaWdodCBiZSBkaWZmZXJlbnQKKwkgKiBmcm9tIGEgc3Rh bmQtYWxvbmUgU0VMRUNULiAoSW5kZWVkLCBQb3N0Z3JlcyB1cCB0aHJvdWdoIDYuNSBoYWQKKwkg KiBidWdzIG9mIGp1c3QgdGhhdCBuYXR1cmUuLi4pCisJICoKKwkgKiBUaGUgc29sZSBleGNlcHRp b24gaXMgdGhhdCB3ZSBwcmV2ZW50IHJlc29sdmluZyB1bmtub3duLXR5cGUKKwkgKiBvdXRwdXRz IGFzIFRFWFQuICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIHNpbmNlIGlmIHRo ZQorCSAqIGNvbHVtbiB0eXBlIG1hdHRlcnMgc2VtYW50aWNhbGx5LCBpdCB3b3VsZCBoYXZlIGJl ZW4gcmVzb2x2ZWQgdG8KKwkgKiBzb21ldGhpbmcgZWxzZSBhbnl3YXkuICBEb2luZyB0aGlzIGxl dHMgdXMgcmVzb2x2ZSBzdWNoIG91dHB1dHMgYXMKKwkgKiB0aGUgdGFyZ2V0IGNvbHVtbidzIHR5 cGUsIHdoaWNoIHdlIGhhbmRsZSBiZWxvdy4KKwkgKi8KKwlzdWJfcHN0YXRlLT5wX3J0YWJsZSA9 IHN1Yl9ydGFibGU7CisJc3ViX3BzdGF0ZS0+cF9qb2luZXhwcnMgPSBOSUw7CS8qIHN1Yl9ydGFi bGUgaGFzIG5vIGpvaW5zICovCisJc3ViX3BzdGF0ZS0+cF9uYW1lc3BhY2UgPSBzdWJfbmFtZXNw YWNlOworCXN1Yl9wc3RhdGUtPnBfcmVzb2x2ZV91bmtub3ducyA9IGZhbHNlOworCisJc2VsZWN0 UXVlcnkgPSB0cmFuc2Zvcm1TdG10KHN1Yl9wc3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJ ZnJlZV9wYXJzZXN0YXRlKHN1Yl9wc3RhdGUpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhh dmUgcHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8 CisJCXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKwor CS8qCisJICogTWFrZSB0aGUgc291cmNlIGJlIGEgc3VicXVlcnkgaW4gdGhlIExFVCdzIHJhbmdl dGFibGUsIGFuZCBhZGQKKwkgKiBpdCB0byB0aGUgTEVUJ3Mgam9pbmxpc3QuCisJICovCisJcnRl ID0gYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yU3VicXVlcnkocHN0YXRlLAorCQkJCQkJCQkJCXNlbGVj dFF1ZXJ5LAorCQkJCQkJCQkJCW1ha2VBbGlhcygiKlNFTEVDVCoiLCBOSUwpLAorCQkJCQkJCQkJ CWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlKTsKKwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7 CisJLyogYXNzdW1lIG5ldyBydGUgaXMgYXQgZW5kICovCisJcnRyLT5ydGluZGV4ID0gbGlzdF9s ZW5ndGgocHN0YXRlLT5wX3J0YWJsZSk7CisJQXNzZXJ0KHJ0ZSA9PSBydF9mZXRjaChydHItPnJ0 aW5kZXgsIHBzdGF0ZS0+cF9ydGFibGUpKTsKKwlwc3RhdGUtPnBfam9pbmxpc3QgPSBsYXBwZW5k KHBzdGF0ZS0+cF9qb2lubGlzdCwgcnRyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRl IGFuIGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAq IG5vbi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuIAorCSAqLS0tLS0tLS0tLQor CSAqLworCisJZXhwckxpc3QgPSBOSUw7CisJZm9yZWFjaChsYywgc2VsZWN0UXVlcnktPnRhcmdl dExpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChs Yyk7CisKKwkJaWYgKHRsZS0+cmVzanVuaykKKwkJCWNvbnRpbnVlOworCisJCWV4cHJMaXN0ID0g bGFwcGVuZChleHByTGlzdCwgdGxlLT5leHByKTsKKwl9CisKKwkvKgorCSAqIEJlY2F1c2UgZG9l c24ndCBzdXBwb3J0IHBhdHRlcm4gbWF0Y2hpbmcsIGRvbid0IGFsbG93IG11bHRpY29sdW1uIHJl c3VsdAorCSAqLworCWlmIChsaXN0X2xlbmd0aChleHByTGlzdCkgIT0gMSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygi ZXhwcmVzc2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgZXhwckxpc3QpKSkpOwor CisJZXhwckxpc3RDb2VyID0gTklMOworCWZvcmVhY2gobGMsIGV4cHJMaXN0KQorCXsKKwkJTm9k ZQkgICAqb3JpZ19leHByID0gKE5vZGUqKSBsZmlyc3QobGMpOworCQlPaWQJCQlleHBydHlwaWQg PSBleHByVHlwZSgoTm9kZSAqKSBvcmlnX2V4cHIpOworCQlFeHByCSAgICpleHByID0gTlVMTDsK KwkJUGFyYW0gKnBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCisJCXBhcmFtLT5wYXJhbWtpbmQg PSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJCXBhcmFtLT5wYXJhbWlkID0gdmFyaWQ7CisJCXBh cmFtLT5wYXJhbXR5cGUgPSB2YXJ0eXBpZDsKKwkJcGFyYW0tPnBhcmFtdHlwbW9kID0gdmFydHlw bW9kOworCisJCWV4cHIgPSAoRXhwciAqKQorCQkJdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0 aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCQkJKE5vZGUgKikgcGFyYW0sCisJCQkJCQkJCQkJCWZpZWxk bmFtZSwKKwkJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJCXZhcnR5cGlkLAorCQkJCQkJCQkJ CQl2YXJ0eXBtb2QsCisJCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJCWxpc3RfaGVh ZChpbmRpcmVjdGlvbiksCisJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJCQkJCQkJ CQkJLTEpOworCisJCWlmIChleHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFi bGUgXCIlc1wiIGlzIG9mIHR5cGUgJXMiCisJCQkJCQkJICAiIGJ1dCBleHByZXNzaW9uIGlzIG9m IHR5cGUgJXMiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJkKSwKKwkJCQkJCQlm b3JtYXRfdHlwZV9iZSh2YXJ0eXBpZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwcnR5cGlk KSksCisJCQkJIGVycmhpbnQoIllvdSB3aWxsIG5lZWQgdG8gcmV3cml0ZSBvciBjYXN0IHRoZSBl eHByZXNzaW9uLiIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRp b24oKE5vZGUgKikgb3JpZ19leHByKSkpKTsKKworCQlleHByTGlzdENvZXIgPSBsYXBwZW5kKGV4 cHJMaXN0Q29lciwgZXhwcik7CisJfQorCisJLyoKKwkgKiBHZW5lcmF0ZSBxdWVyeSdzIHRhcmdl dCBsaXN0IHVzaW5nIHRoZSBjb21wdXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zLgorCSAqIEFsc28s IG1hcmsgYWxsIHRoZSB0YXJnZXQgY29sdW1ucyBhcyBuZWVkaW5nIGluc2VydCBwZXJtaXNzaW9u cy4KKwkgKi8KKwlydGUgPSBwc3RhdGUtPnBfdGFyZ2V0X3JhbmdldGJsZW50cnk7CisJcXJ5LT50 YXJnZXRMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIGV4cHJMaXN0Q29lcikKKwl7CisJCUV4cHIJ ICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJ CXRsZSA9IG1ha2VUYXJnZXRFbnRyeShleHByLAorCQkJCQkJCSAgaSArIDEsCisJCQkJCQkJICBG aWd1cmVDb2xuYW1lKChOb2RlICopZXhwciksCisJCQkJCQkJICBmYWxzZSk7CisJCXFyeS0+dGFy Z2V0TGlzdCA9IGxhcHBlbmQocXJ5LT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCS8qIGRvbmUg YnVpbGRpbmcgdGhlIHJhbmdlIHRhYmxlIGFuZCBqb2ludHJlZSAqLworCXFyeS0+cnRhYmxlID0g cHN0YXRlLT5wX3J0YWJsZTsKKwlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+ cF9qb2lubGlzdCwgTlVMTCk7CisKKwlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFz VGFyZ2V0U1JGczsKKwlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOwor CisJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOworCisJcHN0YXRlLT5wX2V4 cHJfa2luZCA9IHN2X2V4cHJfa2luZDsKKworCXJldHVybiBxcnk7Cit9CisKIC8qCiAgKiB0cmFu c2Zvcm1TZXRPcGVyYXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25z IHRyZWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CmluZGV4IGNkNWJhMmQ0ZDguLjczNzFiMWRmYWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtMTU3LDYgKzE1Nyw4IEBAIHN0YXRpYyBSb2xlU3BlYyAqbWFrZVJvbGVTcGVjKFJvbGVT cGVjVHlwZSB0eXBlLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIHZvaWQgY2hlY2tfcXVhbGlmaWVk X25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBMaXN0 ICpjaGVja19mdW5jX25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK IHN0YXRpYyBMaXN0ICpjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIExpc3QgKmNoZWNrX2luZGlyZWN0aW9uX2xldChM aXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOworCiBzdGF0aWMgTGlz dCAqZXh0cmFjdEFyZ1R5cGVzKExpc3QgKnBhcmFtZXRlcnMpOwogc3RhdGljIExpc3QgKmV4dHJh Y3RBZ2dyQXJnVHlwZXMoTGlzdCAqYWdncmFyZ3MpOwogc3RhdGljIExpc3QgKm1ha2VPcmRlcmVk U2V0QXJncyhMaXN0ICpkaXJlY3RhcmdzLCBMaXN0ICpvcmRlcmVkYXJncywKQEAgLTI1Nyw4ICsy NTksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQgQ29w eVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQgQ3Jl YXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJQ3Jl YXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlDcmVh dGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3Jl YXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3Rt dCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2NoZW1h VmFyU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10CisJCUNyZWF0 ZVRhYmxlU3BhY2VTdG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgQ3Jl YXRlRm9yZWlnblRhYmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10IENyZWF0ZVRyYW5zZm9ybVN0 bXQgQ3JlYXRlVHJpZ1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAogCQlDcmVhdGVVc2VyU3RtdCBD cmVhdGVVc2VyTWFwcGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3JlYXRlUG9saWN5U3RtdAogCQlD cmVhdGVkYlN0bXQgRGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3RtdCBEZWxldGVTdG10IERpc2Nh cmRTdG10IERvU3RtdApAQCAtMjY4LDcgKzI3MCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCURyb3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFpblN0bXQg RmV0Y2hTdG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25TY2hlbWFT dG10IEluZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQg Tm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKKwkJTGV0U3RtdCBMaXN0 ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBh cmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBSZWluZGV4 U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBSZW5h bWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQgUnVsZUFj dGlvblN0bXRPckVtcHR5IFJ1bGVTdG10CkBAIC01ODMsNiArNTg1LDkgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgkJcGFydGJvdW5kX2RhdHVtIFBhcnRpdGlvblJhbmdl RGF0dW0KICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQgcGFydGJvdW5kX2RhdHVtX2xpc3Qg cmFuZ2VfZGF0dW1fbGlzdAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KKyV0 eXBlIDxsaXN0PglmaWVsZExpc3QKKyV0eXBlIDxub2RlPglmaWVsZERlZiBvcHRTY2hlbWFWYXJE ZWZFeHByCisldHlwZSA8bGlzdD4Jc2NoZW1hdmFyX25hbWUKIAogLyoKICAqIE5vbi1rZXl3b3Jk IHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxleGVy LgpAQCAtNjQ4LDcgKzY1Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJS0VZCiAKIAlM QUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKLQlMRUFESU5HIExFQUtQUk9P RiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKKwlMRUFESU5H IExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExP Q0FMCiAJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9H R0VECiAKIAlNQVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlOVVRF X1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTY4Niw4ICs2OTEsOCBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCVVOQk9VTkRFRCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklP TiBVTklRVUUgVU5LTk9XTiBVTkxJU1RFTiBVTkxPR0dFRAogCVVOVElMIFVQREFURSBVU0VSIFVT SU5HCiAKLQlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZB UkNIQVIgVkFSSUFESUMgVkFSWUlORwotCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9M QVRJTEUKKwlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZB UkNIQVIgVkFSSUFCTEUgVkFSSUFCTEVTCisJVkFSSUFESUMgVkFSWUlORyBWRVJCT1NFIFZFUlNJ T05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKIAlXSEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5E T1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIApAQCAtODc4LDYgKzg4 Myw3IEBAIHN0bXQgOgogCQkJfCBDcmVhdGVQTGFuZ1N0bXQKIAkJCXwgQ3JlYXRlU2NoZW1hU3Rt dAogCQkJfCBDcmVhdGVTZXFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0bXQKIAkJCXwgQ3Jl YXRlU3RtdAogCQkJfCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CiAJCQl8IENyZWF0ZVN0YXRzU3Rt dApAQCAtOTE5LDYgKzkyNSw3IEBAIHN0bXQgOgogCQkJfCBMaXN0ZW5TdG10CiAJCQl8IFJlZnJl c2hNYXRWaWV3U3RtdAogCQkJfCBMb2FkU3RtdAorCQkJfCBMZXRTdG10CiAJCQl8IExvY2tTdG10 CiAJCQl8IE5vdGlmeVN0bXQKIAkJCXwgUHJlcGFyZVN0bXQKQEAgLTEzNzksNiArMTM4Niw3IEBA IHNjaGVtYV9zdG10OgogCQkJQ3JlYXRlU3RtdAogCQkJfCBJbmRleFN0bXQKIAkJCXwgQ3JlYXRl U2VxU3RtdAorCQkJfCBDcmVhdGVTY2hlbWFWYXJTdG10CiAJCQl8IENyZWF0ZVRyaWdTdG10CiAJ CQl8IEdyYW50U3RtdAogCQkJfCBWaWV3U3RtdApAQCAtMTgwNyw3ICsxODE1LDEyIEBAIERpc2Nh cmRTdG10OgogCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1NFUVVFTkNFUzsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KLQorCQkJfCBESVNDQVJEIFZBUklBQkxFUworCQkJCXsKKwkJCQkJ RGlzY2FyZFN0bXQgKm4gPSBtYWtlTm9kZShEaXNjYXJkU3RtdCk7CisJCQkJCW4tPnRhcmdldCA9 IERJU0NBUkRfVkFSSUFCTEVTOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQk7CiAK IApAQCAtMjAwMyw2ICsyMDE2LDI0IEBAIEFsdGVyVGFibGVTdG10OgogCQkJCQluLT5ub3dhaXQg PSAkMTQ7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJfAlBTFRFUiBWQVJJQUJMRSBx dWFsaWZpZWRfbmFtZSBhbHRlcl90YWJsZV9jbWRzCisJCQkJeworCQkJCQlBbHRlclRhYmxlU3Rt dCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVTdG10KTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkMzsK KwkJCQkJbi0+Y21kcyA9ICQ0OworCQkJCQluLT5yZWxraW5kID0gT0JKRUNUX1ZBUklBQkxFOwor CQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0K KwkJfAlBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBxdWFsaWZpZWRfbmFtZSBhbHRlcl90YWJs ZV9jbWRzCisJCQkJeworCQkJCQlBbHRlclRhYmxlU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFi bGVTdG10KTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkNTsKKwkJCQkJbi0+Y21kcyA9ICQ2OworCQkJ CQluLT5yZWxraW5kID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1 ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAKIGFsdGVyX3RhYmxlX2NtZHM6 CkBAIC00Mjc1LDYgKzQzMDYsODYgQEAgTnVtZXJpY09ubHlfbGlzdDoJTnVtZXJpY09ubHkJCQkJ CQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KIAkJCQl8IE51bWVyaWNPbmx5X2xpc3QgJywnIE51 bWVyaWNPbmx5CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKgkJUVVFUlkgOgorICoJCQkJQ1JFQVRFIFZBUklBQkxFIHNlcW5hbWUg W0FTXSB0eXBlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitDcmVhdGVTY2hlbWFWYXJT dG10OgorCQkJQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5 cGVuYW1lIG9wdFNjaGVtYVZhckRlZkV4cHIKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0 bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJCQkJJDQtPnJlbHBlcnNp c3RlbmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0gJDQ7CisJCQkJCW4tPnR5cGVOYW1lID0g JDY7CisJCQkJCW4tPmRlZmV4cHIgPSAkNzsKKwkJCQkJbi0+ZmllbGRzID0gTlVMTDsKKwkJCQkJ bi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJ CQl8IENSRUFURSBPcHRUZW1wIFZBUklBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZpZWRfbmFt ZSBvcHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRl U2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkk Ny0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNzsKKwkJCQkJbi0+ dHlwZU5hbWUgPSAkOTsKKwkJCQkJbi0+ZGVmZXhwciA9ICQxMDsKKwkJCQkJbi0+ZmllbGRzID0g TlVMTDsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWUgb3B0 X2FzICcoJyBmaWVsZExpc3QgJyknCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5j ZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ0OworCQkJCQluLT50eXBlTmFtZSA9IE5VTEw7 CisJCQkJCW4tPmZpZWxkcyA9ICQ3OworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJ CQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUg SUZfUCBOT1QgRVhJU1RTIHF1YWxpZmllZF9uYW1lIG9wdF9hcyAnKCcgZmllbGRMaXN0ICcpJwor CQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVt YVZhclN0bXQpOworCQkJCQkkNy0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFi bGUgPSAkNzsKKwkJCQkJbi0+dHlwZU5hbWUgPSBOVUxMOworCQkJCQluLT5maWVsZHMgPSAkMTA7 CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCTsKKworb3B0U2NoZW1hVmFyRGVmRXhwcjogREVGQVVMVCBiX2V4cHIJCQkJCXsgJCQg PSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK2Zp ZWxkTGlzdDoKKwkJCWZpZWxkRGVmCQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJ CXwgZmllbGRMaXN0ICcsJyBmaWVsZERlZgkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJ CTsKKworZmllbGREZWY6CUNvbElkIFR5cGVuYW1lIG9wdFNjaGVtYVZhckRlZkV4cHIKKwkJCQl7 CisJCQkJCUNvbHVtbkRlZiAqbiA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisJCQkJCW4tPmNvbG5h bWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+aW5oY291bnQgPSAwOwor CQkJCQluLT5pc19sb2NhbCA9IHRydWU7CisJCQkJCW4tPmlzX25vdF9udWxsID0gZmFsc2U7CisJ CQkJCW4tPmlzX2Zyb21fdHlwZSA9IGZhbHNlOworCQkJCQluLT5pc19mcm9tX3BhcmVudCA9IGZh bHNlOworCQkJCQluLT5zdG9yYWdlID0gMDsKKwkJCQkJbi0+cmF3X2RlZmF1bHQgPSAkMzsKKwkJ CQkJbi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCQkJCQluLT5jb2xsT2lkID0gSW52YWxpZE9p ZDsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQor CQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlRVUVSSUVTIDoKQEAgLTYzMjMs NiArNjQzNCw3IEBAIGRyb3BfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNU SU9OQVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFS Q0ggVEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBT RUFSQ0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOyB9CisJ CQl8IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyog b2JqZWN0IHR5cGVzIHRha2luZyBuYW1lX2xpc3QgKi8KQEAgLTY1OTIsNiArNjcwNCw3IEBAIGNv bW1lbnRfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9OQVJZCQkJeyAk JCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBQQVJTRVIJCQkJ eyAkJCA9IE9CSkVDVF9UU1BBUlNFUjsgfQogCQkJfCBURVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJ eyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBP QkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFraW5nIG5hbWUgKi8K QEAgLTY3MzAsNiArNjg0Myw3IEBAIHNlY3VyaXR5X2xhYmVsX3R5cGVfYW55X25hbWU6CiAJCQl8 IFRBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1RBQkxFOyB9CiAJCQl8IFZJRVcJCQkJCQkJCXsg JCQgPSBPQkpFQ1RfVklFVzsgfQogCQkJfCBNQVRFUklBTElaRUQgVklFVwkJCQkJeyAkJCA9IE9C SkVDVF9NQVRWSUVXOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFC TEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFraW5nIG5hbWUgKi8KQEAgLTcwNTUsNiAr NzE2OSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDI7CiAJCQkJCSQk ID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lX2xpc3QKKwkJCQl7CisJ CQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJn ZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKKwkJCQkJbi0+b2Jq dHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQyOworCQkJCQkkJCA9IG47 CisJCQkJfQogCQkJfCBGT1JFSUdOIERBVEFfUCBXUkFQUEVSIG5hbWVfbGlzdAogCQkJCXsKIAkJ CQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdl dCkpOwpAQCAtNzE2Nyw2ICs3Mjg5LDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9i anMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgQUxMIFZBUklBQkxFUyBJTl9QIFND SEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAq KSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFS R0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJ CQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgQUxMIEZVTkNUSU9O UyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTczNDksNiArNzQ3OSw3 IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0OgogCQkJfCBGVU5DVElPTlMJCXsgJCQgPSBPQkpF Q1RfRlVOQ1RJT047IH0KIAkJCXwgUk9VVElORVMJCXsgJCQgPSBPQkpFQ1RfRlVOQ1RJT047IH0K IAkJCXwgU0VRVUVOQ0VTCQl7ICQkID0gT0JKRUNUX1NFUVVFTkNFOyB9CisJCQl8IFZBUklBQkxF UwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQkJfCBUWVBFU19QCQl7ICQkID0gT0JKRUNU X1RZUEU7IH0KIAkJCXwgU0NIRU1BUwkJeyAkJCA9IE9CSkVDVF9TQ0hFTUE7IH0KIAkJOwpAQCAt ODkzNyw2ICs5MDY4LDI2IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVf d2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7 CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgcXVhbGlm aWVkX25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtl Tm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsK KwkJCQkJbi0+cmVsYXRpb24gPSAkMzsKKwkJCQkJbi0+c3VibmFtZSA9IE5VTEw7CisJCQkJCW4t Pm5ld25hbWUgPSAkNjsKKwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIElGX1AgRVhJU1RTIHF1YWxpZmll ZF9uYW1lIFJFTkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5v ZGUoUmVuYW1lU3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJ CQkJCW4tPnJlbGF0aW9uID0gJDU7CisJCQkJCW4tPnN1Ym5hbWUgPSBOVUxMOworCQkJCQluLT5u ZXduYW1lID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9IChOb2Rl ICopbjsKKwkJCQl9CiAJCTsKIAogb3B0X2NvbHVtbjogQ09MVU1OCQkJCQkJCQkJeyAkJCA9IENP TFVNTjsgfQpAQCAtMTA2NjQsNyArMTA4MTUsOCBAQCBFeHBsYWluYWJsZVN0bXQ6CiAJCQl8IENy ZWF0ZUFzU3RtdAogCQkJfCBDcmVhdGVNYXRWaWV3U3RtdAogCQkJfCBSZWZyZXNoTWF0Vmlld1N0 bXQKLQkJCXwgRXhlY3V0ZVN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLwor CQkJfCBFeGVjdXRlU3RtdAorCQkJfCBMZXRTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUg JCQ9JDEgKi8KIAkJOwogCiBleHBsYWluX29wdGlvbl9saXN0OgpAQCAtMTA3MjEsNyArMTA4NzMs OCBAQCBQcmVwYXJhYmxlU3RtdDoKIAkJCVNlbGVjdFN0bXQKIAkJCXwgSW5zZXJ0U3RtdAogCQkJ fCBVcGRhdGVTdG10Ci0JCQl8IERlbGV0ZVN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAk JD0kMSAqLworCQkJfCBEZWxldGVTdG10CisJCQl8IExldFN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQg YWxsIGFyZSAkJD0kMSAqLwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTExMjAs NiArMTEyNzMsNTAgQEAgb3B0X2hvbGQ6IC8qIEVNUFRZICovCQkJCQkJeyAkJCA9IDA7IH0KIAkJ CXwgV0lUSE9VVCBIT0xECQkJCQl7ICQkID0gMDsgfQogCQk7CiAKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoKKyAqCQlRVUVSWToKKyAqCQkJCUxFVCBTVEFURU1FTlRTCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworTGV0U3RtdDoJTEVUIHNjaGVtYXZhcl9uYW1lICc9JyBhX2V4cHIKKwkJ CQl7CisJCQkJCUxldFN0bXQgKm4gPSBtYWtlTm9kZShMZXRTdG10KTsKKwkJCQkJU2VsZWN0U3Rt dCAqc2VsZWN0ID0gbWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJCVJlc1RhcmdldAkqcmVzID0g bWFrZU5vZGUoUmVzVGFyZ2V0KTsKKworCQkJCQlyZXMtPm5hbWUgPSBOVUxMOworCQkJCQlyZXMt PmluZGlyZWN0aW9uID0gTklMOworCQkJCQlyZXMtPnZhbCA9IChOb2RlICopICQ0OworCQkJCQly ZXMtPmxvY2F0aW9uID0gQDQ7CisJCQkJCXNlbGVjdC0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFrZTEo cmVzKTsKKwkJCQkJbi0+dGFyZ2V0ID0gJDI7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAq KSBzZWxlY3Q7CisJCQkJCW4tPmxvY2F0aW9uID0gQDI7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJOworCitzY2hlbWF2YXJfbmFtZToKKwkJCUNvbElkCisJCQkJeworCQkJCQkk JCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygkMSkpOworCQkJCX0KKwkJCXwgQ29sSWQgaW5kaXJl Y3Rpb24KKwkJCQl7CisJCQkJCWNoZWNrX2luZGlyZWN0aW9uX2xldCgkMiwgeXlzY2FubmVyKTsK KwkJCQkJaWYgKGxpc3RfbGVuZ3RoKCQyKSA+IDMpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImlt cHJvcGVyIHF1YWxpZmllZCBuYW1lIiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDEp KSk7CisKKwkJCQkJJCQgPSBsY29ucyhtYWtlU3RyaW5nKCQxKSwgJDIpOworCQkJCQkkJCA9IGxp c3RfdW5pb24oJCQsICQyKTsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KgogICoJCVFVRVJZOgpAQCAtMTUwNzgsNiArMTUyNzUsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExFQUtQUk9PRgorCQkJfCBMRVQKIAkJ CXwgTEVWRUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAgLTE1MjI2LDYgKzE1NDI0LDggQEAg dW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJREFUT1IKIAkJCXwg VkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwgVkFSWUlORwogCQkJ fCBWRVJTSU9OX1AKIAkJCXwgVklFVwpAQCAtMTU2OTAsNiArMTU4OTAsMjUgQEAgY2hlY2tfZnVu Y19uYW1lKExpc3QgKm5hbWVzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKICAqIFdlIG9ubHkg YWxsb3cgJyonIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIGJ1dCBpdCdzIGhhcmQgdG8gZW5mb3Jj ZSB0aGF0CiAgKiBpbiB0aGUgZ3JhbW1hciwgc28gZG8gaXQgaGVyZS4KICAqLworc3RhdGljIExp c3QgKgorY2hlY2tfaW5kaXJlY3Rpb25fbGV0KExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lcikKK3sKKwlMaXN0Q2VsbCAqbDsKKworCWZvcmVhY2gobCwgaW5kaXJlY3Rp b24pCisJeworCQlpZiAoSXNBKGxmaXJzdChsKSwgQV9TdGFyKSkKKwkJCXBhcnNlcl95eWVycm9y KCJzeW50YXggZXJyb3IiKTsKKworCQlpZiAoSXNBKGxmaXJzdChsKSwgQV9JbmRpY2VzKSkKKwkJ eworCQkJaWYgKGxuZXh0KGwpICE9IE5VTEwpCisJCQkJcGFyc2VyX3l5ZXJyb3IoImltcHJvcGVy IHVzZSBvZiBbXSIpOworCQl9CisJfQorCXJldHVybiBpbmRpcmVjdGlvbjsKK30KKwogc3RhdGlj IExpc3QgKgogY2hlY2tfaW5kaXJlY3Rpb24oTGlzdCAqaW5kaXJlY3Rpb24sIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKQogewpAQCAtMTU3MDYsNiArMTU5MjUsNyBAQCBjaGVja19pbmRpcmVjdGlv bihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJcmV0dXJuIGlu ZGlyZWN0aW9uOwogfQogCisKIC8qIGV4dHJhY3RBcmdUeXBlcygpCiAgKiBHaXZlbiBhIGxpc3Qg b2YgRnVuY3Rpb25QYXJhbWV0ZXIgbm9kZXMsIGV4dHJhY3QgYSBsaXN0IG9mIGp1c3QgdGhlCiAg KiBhcmd1bWVudCB0eXBlcyAoVHlwZU5hbWVzKSBmb3IgaW5wdXQgcGFyYW1ldGVycyBvbmx5LiAg VGhpcyBpcyB3aGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzODVlNTRhOWI2Li44ZjZl MjhkYThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTM3MSw3ICszNzEsNyBAQCB0cmFu c2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAKIAkJZGVm YXVsdDoKIAkJCS8qIHNob3VsZCBub3QgcmVhY2ggaGVyZSAqLwotCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CisJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQgJWQiLCAoaW50KSBub2RlVGFnKGV4 cHIpLCBUX0NvbnN0KTsKIAkJCXJlc3VsdCA9IE5VTEw7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCiAJCQlicmVhazsKIAl9CkBAIC01MDksNiArNTA5LDcgQEAgc3RhdGljIE5vZGUgKgogdHJh bnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogewog CU5vZGUJICAgKm5vZGUgPSBOVUxMOworCU5vZGUJICAgKnZhcmlhYmxlID0gTlVMTDsKIAljaGFy CSAgICpuc3BuYW1lID0gTlVMTDsKIAljaGFyCSAgICpyZWxuYW1lID0gTlVMTDsKIAljaGFyCSAg ICpjb2xuYW1lID0gTlVMTDsKQEAgLTc0OSw2ICs3NTAsMTMzIEBAIHRyYW5zZm9ybUNvbHVtblJl ZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCWJyZWFrOwogCX0KIAor CS8qCisJICogVHJ5IHRvIGlkZW50aWZ5IGNvbHVtbiByZWYgYXMgdmFyaWFibGUuIFBvc3NpYmxl IHZhcmlhbnRzIGFyZQorCSAqCisJICogQSAuLiB2YXJpYWJsZSBuYW1lCisJICogQS5CIC4uIHF1 YWxpZmllZCB2YXJpYWJsZSBuYW1lCisJICogQS5CIC4uIHZhcmlhYmxlLmZpZWxkCisJICogQS5C LkMgLi4gc2NoZW1hLnZhcmlhYmxlLmZpZWxkCisJICogQS5CLkMuRCAuLiBjYXRhbG9ndWUuc2No ZW1hLnZhcmlhYmxlLmZpZWxkCisJICovCisJc3dpdGNoIChsaXN0X2xlbmd0aChjcmVmLT5maWVs ZHMpKQorCXsKKwkJY2FzZSAxOgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2RlICop IGxpbml0aWFsKGNyZWYtPmZpZWxkcyk7CisKKwkJCQlpZiAoSXNBKGZpZWxkMSwgU3RyaW5nKSkK KwkJCQl7CisJCQkJCWNoYXIgKnZhcm5hbWUgID0gc3RyVmFsKGZpZWxkMSk7CisKKwkJCQkJLyog VHJ5IHRvIGlkZW50aWZ5IGFzIGFuIHVucXVhbGlmaWVkIGNvbHVtbiAqLworCQkJCQl2YXJpYWJs ZSA9IHRvU2NoZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJCU5VTEwsIHZhcm5hbWUs IE5VTEwsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQlicmVhazsK KwkJCX0KKwkJY2FzZSAyOgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2RlICopIGxp bml0aWFsKGNyZWYtPmZpZWxkcyk7CisJCQkJTm9kZQkgICAqZmllbGQyID0gKE5vZGUgKikgbHNl Y29uZChjcmVmLT5maWVsZHMpOworCisJCQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykgJiYgSXNB KGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJCWNoYXIgKm5zcG5hbWUgPSBzdHJWYWwoZmll bGQxKTsKKwkJCQkJY2hhciAqdmFybmFtZSA9IHN0clZhbChmaWVsZDIpOworCisJCQkJCS8qIFRy eSB0byBpZGVudGlmeSBhcyBhbiB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUg PSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2YXJuYW1l LCBOVUxMLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJCQl9CisJCQkJYnJlYWs7 CisJCQl9CisJCWNhc2UgMzoKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVsZDEgPSAoTm9kZSAqKSBs aW5pdGlhbChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMiA9IChOb2RlICopIGxz ZWNvbmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDMgPSAoTm9kZSAqKSBsdGhp cmQoY3JlZi0+ZmllbGRzKTsKKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpICYmIElzQShm aWVsZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJCWNoYXIg Km5zcG5hbWUgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJY2hhciAqdmFybmFtZSA9IHN0clZhbChm aWVsZDIpOworCQkJCQljaGFyICpmaWVsZG5hbWUgPSBzdHJWYWwoZmllbGQzKTsKKworCQkJCQkv KiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICovCisJCQkJCXZhcmlh YmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJbnNwbmFtZSwgdmFy bmFtZSwgZmllbGRuYW1lLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJCQl9CisJ CQkJYnJlYWs7CisJCQl9CisJCWNhc2UgNDoKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVsZDEgPSAo Tm9kZSAqKSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMiA9IChO b2RlICopIGxzZWNvbmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDMgPSAoTm9k ZSAqKSBsdGhpcmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDQgPSAoTm9kZSAq KSBsZm91cnRoKGNyZWYtPmZpZWxkcyk7CisJCQkJY2hhcgkgICAqY2F0bmFtZTsKKworCQkJCUFz c2VydChJc0EoZmllbGQxLCBTdHJpbmcpKTsKKwkJCQljYXRuYW1lID0gc3RyVmFsKGZpZWxkMSk7 CisKKwkJCQkvKgorCQkJCSAqIFdlIGNoZWNrIHRoZSBjYXRhbG9nIG5hbWUgYW5kIHRoZW4gaWdu b3JlIGl0LgorCQkJCSAqLworCQkJCWlmIChzdHJjbXAoY2F0bmFtZSwgZ2V0X2RhdGFiYXNlX25h bWUoTXlEYXRhYmFzZUlkKSkgIT0gMCkKKwkJCQl7CisJCQkJCWNyZXJyID0gQ1JFUlJfV1JPTkdf REI7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpICYm IElzQShmaWVsZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJ CWNoYXIgKm5zcG5hbWUgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJY2hhciAqdmFybmFtZSA9IHN0 clZhbChmaWVsZDMpOworCQkJCQljaGFyICpmaWVsZG5hbWUgPSBzdHJWYWwoZmllbGQ0KTsKKwor CQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICovCisJCQkJ CXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJbnNwbmFt ZSwgdmFybmFtZSwgZmllbGRuYW1lLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJ CQl9CisJCQkJYnJlYWs7CisJCQl9CisJCWRlZmF1bHQ6CisKKwkJCS8qCisJCQkgKiBUaGVyZSBj YW4gYmUgYW5vdGhlciB2YXJpYW50cywgbW9yZSB3aGVuIGNvbXBvc2l0ZSB2YXJpYWJsZXMKKwkJ CSAqIHdpbGwgYmUgc3VwcG9ydGVkLiBDdXJyZW50bHkgb25seSBzY2FsYXJzIGFyZSBzdXBwb3J0 ZWQsIHNvCisJCQkgKiB0aGVyZSBhcmUgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBvdGhlciBxdWVz dGlvbnMuCisJCQkgKgorCQkJICogZG8gbm90aGluZworCQkJICovCisJCQljcmVyciA9IENSRVJS X1RPT19NQU5ZOyAvKiB0b28gbWFueSBkb3R0ZWQgbmFtZXMgKi8KKwkJCWJyZWFrOworCX0KKwor CWlmICh2YXJpYWJsZSAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2hlbiB3ZSBhbGxvdyB2YXJp YWJsZXMgaW4gRlJPTSBjbGF1c2UsIHRoZW4gaGVyZSBjYW4gYmUgY2hlY2ssCisJCSAqIGlmIHZh cmlhYmxlIGFuZCBub2RlIGFyZSBzYW1lLiBPciBiZXR0ZXIsIHdoZW4gbm9kZSB3aWxsIGJlCisJ CSAqIHJlZmVyZW5jZWQgdG8gdmFyaWFibGUsIHRoZW4gdG9TY2hlbWFWYXJpYWJsZSB3aWxsIG5v dCBiZSBjYWxsZWQuCisJCSAqIEJ1dCBub3csIHdlIGRvbid0IGFsbG93IHNjaGVtYSB2YXJpYWJs ZSBpbiBGUk9NIGNsYXVzZSwgc28gdGhlCisJCSAqIGNvbmZsaWN0IGlzIG5vdCBwb3NzaWJsZS4K KwkJICovCisJCWlmIChub2RlICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gcmVm ZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3Jl Zi0+ZmllbGRzKSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2Nh dGlvbikpKTsKKworCQlub2RlID0gdmFyaWFibGU7CisJfQorCiAJLyoKIAkgKiBOb3cgZ2l2ZSB0 aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywgaWYgYW55LCBhIGNoYW5jZS4gIFdlIHBhc3MgdGhl CiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNvIHRoYXQgaXQgY2FuIHRocm93IGFuIGVycm9yIGlm IGl0IHdpc2hlcyBpbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y ZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggMDUz YWUwMmM5Zi4uNzBhNDZlMjdmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRh bG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTMyLDYg KzMzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgogCiAKQEAgLTExNTAsNiArMTE1Miw3 IEBAIHBhcnNlck9wZW5UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFJhbmdlVmFyICpy ZWxhdGlvbiwgaW50IGxvY2ttb2RlKQogCiAJc2V0dXBfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxi YWNrKCZwY2JzdGF0ZSwgcHN0YXRlLCByZWxhdGlvbi0+bG9jYXRpb24pOwogCXJlbCA9IGhlYXBf b3BlbnJ2X2V4dGVuZGVkKHJlbGF0aW9uLCBsb2NrbW9kZSwgdHJ1ZSk7CisKIAlpZiAocmVsID09 IE5VTEwpCiAJewogCQlpZiAocmVsYXRpb24tPnNjaGVtYW5hbWUpCkBAIC0xMTgwLDYgKzExODMs MjQgQEAgcGFyc2VyT3BlblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIg KnJlbGF0aW9uLCBpbnQgbG9ja21vZGUpCiAJCQkJCQkJCXJlbGF0aW9uLT5yZWxuYW1lKSkpOwog CQl9CiAJfQorCisJLyoKKwkgKiBSRUxLSU5EX1ZBUklBQkxFIGNhbiBiZSB1c2VkIG9ubHkgaW4g TEVUIGNvbW1hbmQuCisJICogUHJvYmFibHkgdGhpcyBjaGVjayBjYW4gYmUgZG9uZSBlbHNld2hl cmUsIGJ1dCBoZXJlIEkKKwkgKiBoYXZlIGEgdXNlZCByZWxhdGlvbiBhbmQgcGFyc2Ugc3RhdGUg dG9nZXRoZXIgZmlyc3QgdGltZS4KKwkgKi8KKwlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9WQVJJQUJMRSAmJiAhcHN0YXRlLT5wX2lzX2xldCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJc IiVzXCIgaXMgYW4gc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpKSk7CisKKwlpZiAocHN0YXRlLT5wX2lzX2xldCAmJiByZWwtPnJkX3JlbC0+cmVs a2luZCAhPSBSRUxLSU5EX1ZBUklBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3Qg YW4gc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp KSk7CisKIAljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CiAJ cmV0dXJuIHJlbDsKIH0KQEAgLTMzNjAsMyArMzM4MSwxNjAgQEAgaXNRdWVyeVVzaW5nVGVtcFJl bGF0aW9uX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJCQkJCQkgIGlzUXVl cnlVc2luZ1RlbXBSZWxhdGlvbl93YWxrZXIsCiAJCQkJCQkJCSAgY29udGV4dCk7CiB9CisKK1Jh bmdlVmFyICoKK21ha2VSYW5nZVZhckZvclRhcmdldE9mU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0 ZSAqcHN0YXRlLAorCQkJCQkJCQkJICBjaGFyICpmaWVsZDEsIGNoYXIgKmZpZWxkMiwgY2hhciAq ZmllbGQzLAorCQkJCQkJCQkJICBpbnQgbG9jYXRpb24sIGNoYXIgKipmaWVsZG5hbWUsIGludCAq ZmllbGRuYW1lX3BvcywgYm9vbCBub2Vycm9yKQoreworCVJhbmdlVmFyCSpydjE7CisJT2lkCQkJ dmFyaWQxOworCWJvb2wJCWlzX3Jvd3R5cGUxOworCisJcnYxID0gbWFrZVJhbmdlVmFyKGZpZWxk MSwgZmllbGQyLCBsb2NhdGlvbik7CisJdmFyaWQxID0gUmFuZ2VWYXJHZXRSZWxpZChydjEsIE5v TG9jaywgdHJ1ZSk7CisJdmFyaWQxID0gaXNfc2NoZW1hdmFyKHZhcmlkMSwgJmlzX3Jvd3R5cGUx KSA/IHZhcmlkMSA6IEludmFsaWRPaWQ7CisKKwlpZiAoZmllbGQxICE9IE5VTEwgJiYgZmllbGQz ID09IE5VTEwpCisJeworCQlSYW5nZVZhciAgICpydjI7CisJCWJvb2wJaXNfcm93dHlwZTI7CisJ CU9pZAkJdmFyaWQyOworCisJCXJ2MiA9IG1ha2VSYW5nZVZhcihOVUxMLCBmaWVsZDEsIGxvY2F0 aW9uKTsKKwkJdmFyaWQyID0gUmFuZ2VWYXJHZXRSZWxpZChydjIsIE5vTG9jaywgdHJ1ZSk7CisK KwkJLyogdmFyaWQyIGhhcyBzZW5zZSBvbmx5IGFzIHJvdyB0eXBlIHZhcmlhYmxlICovCisJCXZh cmlkMiA9IGlzX3NjaGVtYXZhcih2YXJpZDIsICZpc19yb3d0eXBlMikgPyB2YXJpZDIgOiBJbnZh bGlkT2lkOworCQl2YXJpZDIgPSBpc19yb3d0eXBlMiA/IHZhcmlkMiA6IEludmFsaWRPaWQ7CisK KwkJaWYgKE9pZElzVmFsaWQodmFyaWQxKSAmJiBPaWRJc1ZhbGlkKHZhcmlkMikpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAorCQkJ IGVycm1zZygidmFyaWFibGUgcmVmZXJlbmNlIFwiJXNcIi5cIiVzXCIgaXMgYW1iaWd1b3VzIiwg ZmllbGQxLCBmaWVsZDIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRp b24pKSk7CisKKwkJaWYgKE9pZElzVmFsaWQodmFyaWQyKSkKKwkJeworCQkJKmZpZWxkbmFtZSA9 IGZpZWxkMjsKKwkJCSpmaWVsZG5hbWVfcG9zID0gMjsKKwkJCXJldHVybiBydjI7CisJCX0KKwl9 CisKKwlpZiAoIU9pZElzVmFsaWQodmFyaWQxKSkKKwl7CisJCWlmICghbm9lcnJvcikKKwkJewor CQkJaWYgKGZpZWxkMSAhPSBOVUxMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJCQkgZXJybXNnKCJzY2hlbWEgdmFyaWFi bGUgXCIlcy4lc1wiIGRvZXNuJ3QgZXhpc3RzIiwgZmllbGQxLCBmaWVsZDIpLAorCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCQkJZWxzZQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJ CQkgZXJybXNnKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGRvZXNuJ3QgZXhpc3RzIiwgZmllbGQy KSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwkJfQor CisJCXJldHVybiBOVUxMOworCX0KKworCSpmaWVsZG5hbWUgPSBmaWVsZDM7CisJKmZpZWxkbmFt ZV9wb3MgPSAzOworCisJaWYgKGZpZWxkMyAhPSBOVUxMICYmICFpc19yb3d0eXBlMSkKKwl7CisJ CWlmICghbm9lcnJvcikKKwkJeworCQkJaWYgKGZpZWxkMSAhPSBOVUxMKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJ CSBlcnJtc2coInZhcmlhYmxlIFwiJXMuJXNcIiBpcyBub3Qgcm93IHR5cGUiLCBmaWVsZDEsIGZp ZWxkMiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwor CQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJtc2coInZhcmlhYmxlIFwiJXNcIiBpcyBub3Qgcm93 IHR5cGUiLCBmaWVsZDIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0 aW9uKSkpOworCQl9CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHJ2MTsKK30KKwor LyoKKyAqIFRyeSB0byByZXBsYWNlIENvbHVtblJlZiBieSBQYXJhbSByZWxhdGVkIHRvIHZhcmlh YmxlCisgKgorICovCitOb2RlICoKK3RvU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBjaGFyICpuc3BuYW1lLCBjaGFyICp2YXJuYW1lLCBjaGFyICpmaWVsZG5hbWUsIGludCBsb2Nh dGlvbikKK3sKKwljaGFyCSAgICp1c2VkX2ZpZWxkbmFtZTsKKwlSYW5nZVZhciAgICpydjsKKwlP aWQJCQl2YXJpZDsKKwlpbnQJCQlmaWVsZG5hbWVfcG9zOworCU9pZAkJCXZhcnR5cDsKKwlpbnQz MgkJdmFydHlwbW9kOworCVBhcmFtCSAgICpwYXJhbTsKKworCXJ2ID0gbWFrZVJhbmdlVmFyRm9y VGFyZ2V0T2ZTY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCSAgIG5zcG5hbWUsIHZh cm5hbWUsIGZpZWxkbmFtZSwgbG9jYXRpb24sCisJCQkJCQkJCQkJCSAgICZ1c2VkX2ZpZWxkbmFt ZSwgJmZpZWxkbmFtZV9wb3MsIHRydWUpOworCisJaWYgKHJ2ID09IE5VTEwpCisJCXJldHVybiBO VUxMOworCisJdmFyaWQgPSBSYW5nZVZhckdldFJlbGlkKHJ2LCBOb0xvY2ssIHRydWUpOworCWlm ICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCXJldHVybiBOVUxMOworCisJcGFyYW0gPSBtYWtlTm9k ZShQYXJhbSk7CisKKwlzY2hlbWF2YXJfZ2V0X3R5cF90eXBtb2QodmFyaWQsICZ2YXJ0eXAsICZ2 YXJ0eXBtb2QpOworCisJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFNX1NDSEVNQV9WQVJJQUJMRTsK KwlwYXJhbS0+cGFyYW1pZCA9IHZhcmlkOworCXBhcmFtLT5wYXJhbXR5cGUgPSB2YXJ0eXA7CisJ cGFyYW0tPnBhcmFtdHlwbW9kID0gdmFydHlwbW9kOworCisJaWYgKHVzZWRfZmllbGRuYW1lICE9 IE5VTEwpCisJeworCQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCWludAkJaTsKKworCQl0dXBkZXNj ID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyhwYXJhbS0+cGFyYW10eXBlLCBwYXJhbS0+cGFyYW10 eXBtb2QpOworCisJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5uYXR0czsgaSsrKQorCQl7CisJ CQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpOworCisJ CQlpZiAoc3RyY21wKHVzZWRfZmllbGRuYW1lLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkpID09IDAg JiYKKwkJCQkhYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQl7CisJCQkJLyogU3VjY2Vzcywgc28gZ2Vu ZXJhdGUgYSBGaWVsZFNlbGVjdCBleHByZXNzaW9uICovCisJCQkJRmllbGRTZWxlY3QgKmZzZWxl Y3QgPSBtYWtlTm9kZShGaWVsZFNlbGVjdCk7CisKKwkJCQlmc2VsZWN0LT5hcmcgPSAoRXhwciAq KSBwYXJhbTsKKwkJCQlmc2VsZWN0LT5maWVsZG51bSA9IGkgKyAxOworCQkJCWZzZWxlY3QtPnJl c3VsdHR5cGUgPSBhdHQtPmF0dHR5cGlkOworCQkJCWZzZWxlY3QtPnJlc3VsdHR5cG1vZCA9IGF0 dC0+YXR0dHlwbW9kOworCQkJCS8qIHNhdmUgYXR0cmlidXRlJ3MgY29sbGF0aW9uIGZvciBwYXJz ZV9jb2xsYXRlLmMgKi8KKwkJCQlmc2VsZWN0LT5yZXN1bHRjb2xsaWQgPSBhdHQtPmF0dGNvbGxh dGlvbjsKKworCQkJCVJlbGVhc2VUdXBsZURlc2ModHVwZGVzYyk7CisJCQkJcmV0dXJuIChOb2Rl ICopIGZzZWxlY3Q7CisJCQl9CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCSBlcnJtc2coImNvdWxkIG5vdCBpZGVudGlm eSBjb2x1bW4gXCIlc1wiIGluIHZhcmlhYmxlIiwgdXNlZF9maWVsZG5hbWUpLAorCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwl9CisKKwlyZXR1cm4gKE5vZGUg KikgcGFyYW07Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggZWEyMDljZGFiNi4u NGNmMWI5MTBkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtMzUsMTYgKzM1LDYg QEAKIAogc3RhdGljIHZvaWQgbWFya1RhcmdldExpc3RPcmlnaW4oUGFyc2VTdGF0ZSAqcHN0YXRl LCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkgVmFyICp2YXIsIGludCBsZXZlbHN1cCk7Ci1zdGF0 aWMgTm9kZSAqdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKLQkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKLQkJCQkJCQkgICBjb25zdCBjaGFyICp0YXJn ZXROYW1lLAotCQkJCQkJCSAgIGJvb2wgdGFyZ2V0SXNBcnJheSwKLQkJCQkJCQkgICBPaWQgdGFy Z2V0VHlwZUlkLAotCQkJCQkJCSAgIGludDMyIHRhcmdldFR5cE1vZCwKLQkJCQkJCQkgICBPaWQg dGFyZ2V0Q29sbGF0aW9uLAotCQkJCQkJCSAgIExpc3RDZWxsICppbmRpcmVjdGlvbiwKLQkJCQkJ CQkgICBOb2RlICpyaHMsCi0JCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ ICBOb2RlICpiYXNlbm9kZSwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCkBAIC01 OTYsNyArNTg2LDYgQEAgdHJhbnNmb3JtQXNzaWduZWRFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAlyZXR1cm4gZXhwcjsKIH0KIAotCiAvKgogICogdXBkYXRlVGFyZ2V0TGlzdEVudHJ5KCkKICAq CVRoaXMgaXMgdXNlZCBpbiBVUERBVEUgc3RhdGVtZW50cyAoYW5kIE9OIENPTkZMSUNUIERPIFVQ REFURSkKQEAgLTY3Miw3ICs2NjEsNyBAQCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogICogbWlnaHQgd2FudCB0byBkZWNvcmF0ZSBpbmRpcmVjdGlvbiBjZWxscyB3 aXRoIHRoZWlyIG93biBsb2NhdGlvbiBpbmZvLAogICogaW4gd2hpY2ggY2FzZSB0aGUgbG9jYXRp b24gYXJndW1lbnQgY291bGQgcHJvYmFibHkgYmUgZHJvcHBlZC4pCiAgKi8KLXN0YXRpYyBOb2Rl ICoKK05vZGUgKgogdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICp0 YXJnZXROYW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMGZkMTRmNDNjNi4u M2EwYjA3MWY1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMDgsNiArMTA4 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlMaXN0CSAgICp2aWV3czsJCQkvKiBDUkVBVEUgVklFVyBp dGVtcyAqLwogCUxpc3QJICAgKmluZGV4ZXM7CQkvKiBDUkVBVEUgSU5ERVggaXRlbXMgKi8KIAlM aXN0CSAgICp0cmlnZ2VyczsJCS8qIENSRUFURSBUUklHR0VSIGl0ZW1zICovCisJTGlzdAkgICAq dmFyaWFibGVzOwkJLyogQ1JFQVRFIFZBUklBQkxFIGl0ZW1zICovCiAJTGlzdAkgICAqZ3JhbnRz OwkJCS8qIEdSQU5UIGl0ZW1zICovCiB9IENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0OwogCkBAIC0z MzA5LDYgKzMzMTAsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10KENyZWF0ZVNjaGVtYVN0 bXQgKnN0bXQpCiAJY3h0LnZpZXdzID0gTklMOwogCWN4dC5pbmRleGVzID0gTklMOwogCWN4dC50 cmlnZ2VycyA9IE5JTDsKKwljeHQudmFyaWFibGVzID0gTklMOwogCWN4dC5ncmFudHMgPSBOSUw7 CiAKIAkvKgpAQCAtMzM3NCw2ICszMzc2LDE0IEBAIHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXQo Q3JlYXRlU2NoZW1hU3RtdCAqc3RtdCkKIAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9D cmVhdGVTY2hlbWFWYXJTdG10OgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqZWxw ID0gKENyZWF0ZVNjaGVtYVZhclN0bXQgKikgZWxlbWVudDsKKworCQkJCQlzZXRTY2hlbWFOYW1l KGN4dC5zY2hlbWFuYW1lLCAmZWxwLT52YXJpYWJsZS0+c2NoZW1hbmFtZSk7CisJCQkJCWN4dC52 YXJpYWJsZXMgPSBsYXBwZW5kKGN4dC52YXJpYWJsZXMsIGVsZW1lbnQpOworCQkJCX0KKwogCQkJ Y2FzZSBUX0dyYW50U3RtdDoKIAkJCQljeHQuZ3JhbnRzID0gbGFwcGVuZChjeHQuZ3JhbnRzLCBl bGVtZW50KTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRl eCA2NjI1M2ZjM2QzLi40N2E5YjIxMWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRl L3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5jCkBAIC0zMzM3LDcgKzMzMzcsNyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwg TGlzdCAqcmV3cml0ZV9ldmVudHMpCiAJCQkJCQkJCQlydF9lbnRyeV9yZWxhdGlvbiwKIAkJCQkJ CQkJCXBhcnNldHJlZS0+cmVzdWx0UmVsYXRpb24sIE5VTEwpOwogCQl9Ci0JCWVsc2UgaWYgKGV2 ZW50ID09IENNRF9ERUxFVEUpCisJCWVsc2UgaWYgKGV2ZW50ID09IENNRF9ERUxFVEUgfHwgZXZl bnQgPT0gQ01EX0xFVCkKIAkJewogCQkJLyogTm90aGluZyB0byBkbyBoZXJlICovCiAJCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCmluZGV4IDY2Y2M1YzM1YzYuLjM0ZGRiNzlhM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTkz LDYgKzE5MywxMCBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJCQkJCQkgIkRF TEVURSAiIFVJTlQ2NF9GT1JNQVQsCiAJCQkJCQkgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nl c3NlZCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIENNRF9MRVQ6CisJCQkJc25wcmludGYoY29tcGxl dGlvblRhZywgQ09NUExFVElPTl9UQUdfQlVGU0laRSwKKwkJCQkJCSAiTEVUICIpOworCQkJCWJy ZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlzdHJjcHkoY29tcGxldGlvblRhZywgIj8/PyIpOwogCQkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBlZDU1NTIxYTBjLi4xZWExZDZjZDI3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCkBAIC0xMTIsNiArMTEzLDcg QEAgQ29tbWFuZElzUmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBzdG10KQogCQljYXNlIENNRF9ERUxF VEU6CiAJCQlyZXR1cm4gZmFsc2U7CiAJCWNhc2UgQ01EX1VUSUxJVFk6CisJCWNhc2UgQ01EX0xF VDoKIAkJCS8qIEZvciBub3csIHRyZWF0IGFsbCB1dGlsaXR5IGNvbW1hbmRzIGFzIHJlYWQvd3Jp dGUgKi8KIAkJCXJldHVybiBmYWxzZTsKIAkJZGVmYXVsdDoKQEAgLTE3Nyw2ICsxNzksNyBAQCBj aGVja194YWN0X3JlYWRvbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0NyZWF0ZVNjaGVt YVN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgogCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJ Y2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVUYWJsZUFzU3RtdDoK IAkJY2FzZSBUX1JlZnJlc2hNYXRWaWV3U3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVRhYmxlU3BhY2VT dG10OgpAQCAtMTQ2MCw2ICsxNDYzLDEwIEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJYWRkcmVzcyA9IEFsdGVyU2VxdWVuY2UocHN0YXRlLCAoQWx0ZXJTZXFT dG10ICopIHBhcnNldHJlZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTY2hlbWFW YXJTdG10OgorCQkJCWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFWYXJpYWJsZShwc3RhdGUsIChDcmVh dGVTY2hlbWFWYXJTdG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgVF9D cmVhdGVUYWJsZUFzU3RtdDoKIAkJCQlhZGRyZXNzID0gRXhlY0NyZWF0ZVRhYmxlQXMoKENyZWF0 ZVRhYmxlQXNTdG10ICopIHBhcnNldHJlZSwKIAkJCQkJCQkJCQkJcXVlcnlTdHJpbmcsIHBhcmFt cywgcXVlcnlFbnYsCkBAIC0yMDMyLDYgKzIwMzksOSBAQCBBbHRlck9iamVjdFR5cGVDb21tYW5k VGFnKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJ CXRhZyA9ICJBTFRFUiBTVEFUSVNUSUNTIjsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJ QUJMRToKKwkJCXRhZyA9ICJBTFRFUiBWQVJJQUJMRSI7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCXRhZyA9ICI/Pz8iOwogCQkJYnJlYWs7CkBAIC0yMDgxLDYgKzIwOTEsMTAgQEAgQ3JlYXRl Q29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSAiU0VMRUNUIjsKIAkJCWJyZWFr OwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJdGFnID0gIkxFVCI7CisJCQlicmVhazsKKwogCQkJ LyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tlZCAqLwog CQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAtMjI0NSw2ICsyMjU5LDkgQEAgQ3Jl YXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJ CQkJCXRhZyA9ICJEUk9QIElOREVYIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBPQkpFQ1RfVkFS SUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklBQkxFIjsKKwkJCQkJYnJlYWs7CiAJCQkJY2Fz ZSBPQkpFQ1RfVFlQRToKIAkJCQkJdGFnID0gIkRST1AgVFlQRSI7CiAJCQkJCWJyZWFrOwpAQCAt MjQ5OSw2ICsyNTE2LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJ dGFnID0gIkFMVEVSIFNFUVVFTkNFIjsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTY2hl bWFWYXJTdG10OgorCQkJdGFnID0gIkNSRUFURSBWQVJJQUJMRSI7CisJCQlicmVhazsKKwogCQlj YXNlIFRfRG9TdG10OgogCQkJdGFnID0gIkRPIjsKIAkJCWJyZWFrOwpAQCAtMjYxNiw2ICsyNjM3 LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBESVNDQVJE X1NFUVVFTkNFUzoKIAkJCQkJdGFnID0gIkRJU0NBUkQgU0VRVUVOQ0VTIjsKIAkJCQkJYnJlYWs7 CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gIkRJU0NBUkQgVkFSSUFC TEVTIjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9 CkBAIC0yODIwLDYgKzI4NDQsOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkK IAkJCQkJY2FzZSBDTURfREVMRVRFOgogCQkJCQkJdGFnID0gIkRFTEVURSI7CiAJCQkJCQlicmVh azsKKwkJCQkJY2FzZSBDTURfTEVUOgorCQkJCQkJdGFnID0gIkxFVCI7CisJCQkJCQlicmVhazsK IAkJCQkJY2FzZSBDTURfVVRJTElUWToKIAkJCQkJCXRhZyA9IENyZWF0ZUNvbW1hbmRUYWcoc3Rt dC0+dXRpbGl0eVN0bXQpOwogCQkJCQkJYnJlYWs7CkBAIC0yOTM4LDYgKzI5NjUsMTAgQEAgR2V0 Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCQlsZXYgPSBMT0dTVE1UX0FMTDsK IAkJCWJyZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9BTEw7CisJ CQlicmVhazsKKwogCQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3 IG9yIGNvb2tlZCAqLwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJbGV2ID0gTE9HU1RN VF9BTEw7CkBAIC0zMzkxLDYgKzM0MjIsNyBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFy c2V0cmVlKQogCQkJCXN3aXRjaCAoc3RtdC0+Y29tbWFuZFR5cGUpCiAJCQkJewogCQkJCQljYXNl IENNRF9TRUxFQ1Q6CisJCQkJCWNhc2UgQ01EX0xFVDoKIAkJCQkJCWxldiA9IExPR1NUTVRfQUxM OwogCQkJCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCAwY2ZjMjk3YjY1Li5mY2Q2OTU4 MzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC04MDgsNiArODA4LDEwIEBAIGFjbGRlZmF1bHQoT2Jq ZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfVVNB R0U7CiAJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVFlQRTsKIAkJCWJyZWFrOwor CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRT OworCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwg KGludCkgb2JqdHlwZSk7CiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDJjZDU0 ZWMzM2YuLmMxMDI0MTRiMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTQxLDYg KzQxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtMzgxLDYgKzM4 Miw3IEBAIHN0YXRpYyB2b2lkIGdldF91cGRhdGVfcXVlcnlfdGFyZ2V0bGlzdF9kZWYoUXVlcnkg KnF1ZXJ5LCBMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJCQlkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCiAJCQkJCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSk7CiBzdGF0aWMgdm9pZCBnZXRfZGVsZXRl X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CitzdGF0 aWMgdm9pZCBnZXRfbGV0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfdXRpbGl0eV9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5 LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2Jhc2ljX3NlbGVj dF9xdWVyeShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJICAg VHVwbGVEZXNjIHJlc3VsdERlc2MpOwpAQCAtNDk1Myw2ICs0OTU1LDEwIEBAIGdldF9xdWVyeV9k ZWYoUXVlcnkgKnF1ZXJ5LCBTdHJpbmdJbmZvIGJ1ZiwgTGlzdCAqcGFyZW50bmFtZXNwYWNlLAog CQkJZ2V0X2RlbGV0ZV9xdWVyeV9kZWYocXVlcnksICZjb250ZXh0KTsKIAkJCWJyZWFrOwogCisJ CWNhc2UgQ01EX0xFVDoKKwkJCWdldF9sZXRfcXVlcnlfZGVmKHF1ZXJ5LCAmY29udGV4dCk7CisJ CQlicmVhazsKKwogCQljYXNlIENNRF9OT1RISU5HOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICJOT1RISU5HIik7CiAJCQlicmVhazsKQEAgLTYxNzAsNiArNjE3Niw1OCBAQCBnZXRf aW5zZXJ0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkK IAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIGdldF9sZXRfcXVlcnlfZGVmCQkJLSBQYXJzZSBi YWNrIGFuIExFVCBwYXJzZXRyZWUKKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2dl dF9sZXRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQor eworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCVJhbmdlVGJsRW50cnkgKnNlbGVj dF9ydGUgPSBOVUxMOworCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKwlMaXN0Q2VsbCAgICpsOworCisJ LyoKKwkgKiBJZiBpdCdzIGFuIElOU0VSVCAuLi4gU0VMRUNUIG9yIG11bHRpLXJvdyBWQUxVRVMs IHRoZXJlIHdpbGwgYmUgYQorCSAqIHNpbmdsZSBSVEUgZm9yIHRoZSBTRUxFQ1Qgb3IgVkFMVUVT LiAgUGxhaW4gVkFMVUVTIGhhcyBuZWl0aGVyLgorCSAqLworCWZvcmVhY2gobCwgcXVlcnktPnJ0 YWJsZSkKKwl7CisJCXJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsKTsKKworCQlpZiAo cnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSkKKwkJeworCQkJaWYgKHNlbGVjdF9ydGUpCisJ CQkJZWxvZyhFUlJPUiwgInRvbyBtYW55IHN1YnF1ZXJ5IFJURXMgaW4gSU5TRVJUIik7CisJCQlz ZWxlY3RfcnRlID0gcnRlOworCQl9CisJfQorCisJLyoKKwkgKiBTdGFydCB0aGUgcXVlcnkgd2l0 aCBJTlNFUlQgSU5UTyByZWxuYW1lCisJICovCisJcnRlID0gcnRfZmV0Y2gocXVlcnktPnJlc3Vs dFJlbGF0aW9uLCBxdWVyeS0+cnRhYmxlKTsKKwlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9S RUxBVElPTik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwl7CisJCWNvbnRleHQt PmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9TVEQ7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGJ1ZiwgJyAnKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJMRVQgJXMgIiwKKwkJCQkJ IGdlbmVyYXRlX3JlbGF0aW9uX25hbWUocnRlLT5yZWxpZCwgTklMKSk7CisKKwlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiA9ICIpOworCisJaWYgKHNlbGVjdF9ydGUpCisJeworCQkvKiBBZGQgdGhl IFNFTEVDVCAqLworCQlnZXRfcXVlcnlfZGVmKHNlbGVjdF9ydGUtPnN1YnF1ZXJ5LCBidWYsIE5J TCwgTlVMTCwKKwkJCQkJICBjb250ZXh0LT5wcmV0dHlGbGFncywgY29udGV4dC0+d3JhcENvbHVt biwKKwkJCQkJICBjb250ZXh0LT5pbmRlbnRMZXZlbCk7CisJfQorfQogCiAvKiAtLS0tLS0tLS0t CiAgKiBnZXRfdXBkYXRlX3F1ZXJ5X2RlZgkJCS0gUGFyc2UgYmFjayBhbiBVUERBVEUgcGFyc2V0 cmVlCkBAIC03MjQ1LDYgKzczMDMsMTMgQEAgZ2V0X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCkKIAlkZXBhcnNlX25hbWVzcGFjZSAqZHBuczsKIAlMaXN0 Q2VsbCAgICphbmNlc3Rvcl9jZWxsOwogCisJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1f U0NIRU1BX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIl cyIsIGdldF9zY2hlbWF2YXJfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCisJCXJldHVybjsKKwl9 CisKIAkvKgogCSAqIElmIGl0J3MgYSBQQVJBTV9FWEVDIHBhcmFtZXRlciwgdHJ5IHRvIGxvY2F0 ZSB0aGUgZXhwcmVzc2lvbiBmcm9tIHdoaWNoCiAJICogdGhlIHBhcmFtZXRlciB3YXMgY29tcHV0 ZWQuICBOb3RlIHRoYXQgZmFpbGluZyB0byBmaW5kIGEgcmVmZXJlbnQgaXNuJ3QKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpp bmRleCAwYTc1OGYxNGJmLi45OTI3ZmY2ZGY1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv Y29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCkBAIC0zMjYsNyArMzI2LDgg QEAgZmxhZ0luaFRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBu dW1UYWJsZXMsCiAJCS8qIFNvbWUga2luZHMgbmV2ZXIgaGF2ZSBwYXJlbnRzICovCiAJCWlmICh0 YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8fAogCQkJdGJsaW5mb1tpXS5y ZWxraW5kID09IFJFTEtJTkRfVklFVyB8fAotCQkJdGJsaW5mb1tpXS5yZWxraW5kID09IFJFTEtJ TkRfTUFUVklFVykKKwkJCXRibGluZm9baV0ucmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwK KwkJCXRibGluZm9baV0ucmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQogCQkJY29udGludWU7 CiAKIAkJLyoKQEAgLTQ3NSw3ICs0NzYsOCBAQCBmbGFnSW5oQXR0cnMoRHVtcE9wdGlvbnMgKmRv cHQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJLyogU29tZSBraW5kcyBu ZXZlciBoYXZlIHBhcmVudHMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFIHx8CiAJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXIHx8Ci0JCQl0Ymlu Zm8tPnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKQorCQkJdGJpbmZvLT5yZWxraW5kID09IFJF TEtJTkRfTUFUVklFVyB8fAorCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUp CiAJCQljb250aW51ZTsKIAogCQkvKiBEb24ndCBib3RoZXIgY29tcHV0aW5nIGFueXRoaW5nIGZv ciBub24tdGFyZ2V0IHRhYmxlcywgZWl0aGVyICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKaW5kZXggODNjOTc2ZWFmNy4uNzBiM2RhOWM5MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfYXJjaGl2ZXIuYwpAQCAtMzQ4MCw3ICszNDgwLDggQEAgX2dldE9iamVjdERlc2NyaXB0aW9u KFBRRXhwQnVmZmVyIGJ1ZiwgVG9jRW50cnkgKnRlLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJc3Ry Y21wKHR5cGUsICJTRVJWRVIiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiUFVCTElDQVRJT04i KSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiU1VCU0NSSVBUSU9OIikgPT0gMCB8fAotCQlzdHJj bXAodHlwZSwgIlVTRVIgTUFQUElORyIpID09IDApCisJCXN0cmNtcCh0eXBlLCAiVVNFUiBNQVBQ SU5HIikgPT0gMCB8fAorCQlzdHJjbXAodHlwZSwgIlZBUklBQkxFIikgPT0gMCkKIAl7CiAJCWFw cGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiVzICIsIHR5cGUpOwogCQlpZiAodGUtPm5hbWVzcGFjZSAm JiAqdGUtPm5hbWVzcGFjZSkKQEAgLTM2NjEsNiArMzY2Miw3IEBAIF9wcmludFRvY0VudHJ5KEFy Y2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNEYXRhKQogCQkJc3RyY21wKHRl LT5kZXNjLCAiVEFCTEUiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJUWVBFIikgPT0g MCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiVklFVyIpID09IDAgfHwKKwkJCXN0cmNtcCh0ZS0+ ZGVzYywgIlZBUklBQkxFIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiTUFURVJJQUxJ WkVEIFZJRVciKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJTRVFVRU5DRSIpID09IDAg fHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIkZPUkVJR04gVEFCTEUiKSA9PSAwIHx8CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCA1NjZjYmYyY2RhLi44MmY4YzE4OWY4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTEzMjUsMTAg KzEzMjUsMTEgQEAgZXhwYW5kX3RhYmxlX25hbWVfcGF0dGVybnMoQXJjaGl2ZSAqZm91dCwKIAkJ CQkJCSAgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiIKIAkJCQkJ CSAgIlxuICAgICBPTiBuLm9pZCBPUEVSQVRPUihwZ19jYXRhbG9nLj0pIGMucmVsbmFtZXNwYWNl IgogCQkJCQkJICAiXG5XSEVSRSBjLnJlbGtpbmQgT1BFUkFUT1IocGdfY2F0YWxvZy49KSBBTlki Ci0JCQkJCQkgICJcbiAgICAoYXJyYXlbJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVj J10pXG4iLAorCQkJCQkJICAiXG4gICAgKGFycmF5WyclYycsICclYycsICclYycsICclYycsICcl YycsICclYywgJWMnXSlcbiIsCiAJCQkJCQkgIFJFTEtJTkRfUkVMQVRJT04sIFJFTEtJTkRfU0VR VUVOQ0UsIFJFTEtJTkRfVklFVywKIAkJCQkJCSAgUkVMS0lORF9NQVRWSUVXLCBSRUxLSU5EX0ZP UkVJR05fVEFCTEUsCi0JCQkJCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJCQkJ ICBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFLAorCQkJCQkJICBSRUxLSU5EX1ZBUklBQkxFKTsK IAkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKEdldENvbm5lY3Rpb24oZm91dCksIHF1ZXJ5LCBjZWxs LT52YWwsIHRydWUsCiAJCQkJCQkJICBmYWxzZSwgIm4ubnNwbmFtZSIsICJjLnJlbG5hbWUiLCBO VUxMLAogCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZCkiKTsK QEAgLTIyNTYsNiArMjI1NywxMCBAQCBtYWtlVGFibGVEYXRhSW5mbyhEdW1wT3B0aW9ucyAqZG9w dCwgVGFibGVJbmZvICp0YmluZm8sIGJvb2wgb2lkcykKIAkJZG9wdC0+bm9fdW5sb2dnZWRfdGFi bGVfZGF0YSkKIAkJcmV0dXJuOwogCisJLyogRG9uJ3QgZHVtcCBkYXRhIG9mIHZhcmlhYmxlcyAq LworCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJcmV0dXJuOwor CiAJLyogQ2hlY2sgdGhhdCB0aGUgZGF0YSBpcyBub3QgZXhwbGljaXRseSBleGNsdWRlZCAqLwog CWlmIChzaW1wbGVfb2lkX2xpc3RfbWVtYmVyKCZ0YWJsZWRhdGFfZXhjbHVkZV9vaWRzLAogCQkJ CQkJCSAgIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpKQpAQCAtMjQ3Nyw5ICsyNDgyLDEwIEBAIGd1 ZXNzQ29uc3RyYWludEluaGVyaXRhbmNlKFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxl cykKIAkJVGFibGVJbmZvICoqcGFyZW50czsKIAkJVGFibGVJbmZvICAqcGFyZW50OwogCi0JCS8q IFNlcXVlbmNlcyBhbmQgdmlld3MgbmV2ZXIgaGF2ZSBwYXJlbnRzICovCisJCS8qIFNlcXVlbmNl cywgdmFyaWFibGVzIGFuZCB2aWV3cyBuZXZlciBoYXZlIHBhcmVudHMgKi8KIAkJaWYgKHRiaW5m by0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8Ci0JCQl0YmluZm8tPnJlbGtpbmQgPT0g UkVMS0lORF9WSUVXKQorCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVklFVyB8fAorCQkJ dGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpCiAJCQljb250aW51ZTsKIAogCQkv KiBEb24ndCBib3RoZXIgY29tcHV0aW5nIGFueXRoaW5nIGZvciBub24tdGFyZ2V0IHRhYmxlcywg ZWl0aGVyICovCkBAIC01OTY4LDcgKzU5NzQsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1UYWJsZXMpCiAJCQkJCQkgICIoYy5vaWQgPSBwaXAub2Jqb2lkICIKIAkJCQkJCSAg IkFORCBwaXAuY2xhc3NvaWQgPSAncGdfY2xhc3MnOjpyZWdjbGFzcyAiCiAJCQkJCQkgICJBTkQg cGlwLm9ianN1YmlkID0gMCkgIgotCQkJCQkJICAiV0hFUkUgYy5yZWxraW5kIGluICgnJWMnLCAn JWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnKSAiCisJCQkJCQkgICJXSEVSRSBjLnJl bGtpbmQgaW4gKCclYycsICclYycsICclYycsICclYycsICclYycsICclYycsICclYycsICclYycp ICIKIAkJCQkJCSAgIk9SREVSIEJZIGMub2lkIiwKIAkJCQkJCSAgYWNsX3N1YnF1ZXJ5LT5kYXRh LAogCQkJCQkJICByYWNsX3N1YnF1ZXJ5LT5kYXRhLApAQCAtNTk4Nyw3ICs1OTkzLDggQEAgZ2V0 VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQkJCQkJICBSRUxLSU5EX1JF TEFUSU9OLCBSRUxLSU5EX1NFUVVFTkNFLAogCQkJCQkJICBSRUxLSU5EX1ZJRVcsIFJFTEtJTkRf Q09NUE9TSVRFX1RZUEUsCiAJCQkJCQkgIFJFTEtJTkRfTUFUVklFVywgUkVMS0lORF9GT1JFSUdO X1RBQkxFLAotCQkJCQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCQkJCSAgUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSwKKwkJCQkJCSAgUkVMS0lORF9WQVJJQUJMRSk7CiAKIAkJ ZGVzdHJveVBRRXhwQnVmZmVyKGFjbF9zdWJxdWVyeSk7CiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihy YWNsX3N1YnF1ZXJ5KTsKQEAgLTE1MzcwLDYgKzE1Mzc3LDExIEBAIGR1bXBUYWJsZVNjaGVtYShB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCQlzcnZuYW1lID0gTlVMTDsKIAkJ CQlmdG9wdGlvbnMgPSBOVUxMOwogCQkJCWJyZWFrOworCQkJY2FzZSBSRUxLSU5EX1ZBUklBQkxF OgorCQkJCXJlbHR5cGVuYW1lID0gIlZBUklBQkxFIjsKKwkJCQlzcnZuYW1lID0gTlVMTDsKKwkJ CQlmdG9wdGlvbnMgPSBOVUxMOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlyZWx0eXBl bmFtZSA9ICJUQUJMRSI7CiAJCQkJc3J2bmFtZSA9IE5VTEw7CkBAIC0xNTM5MSwxMiArMTU0MDMs MjggQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQog CQkJCQkJICByZWx0eXBlbmFtZSwKIAkJCQkJCSAgcXVhbHJlbG5hbWUpOwogCisJCS8qCisJCSAq IEJpbmFyeSB1cGdyYWRlIG9mIHZhcmlhYmxlcyBzaG91bGQgdG8gYmUgZml4ZWQgd2l0aCBzdXBw b3J0CisJCSAqIGNvbXBvc2l0ZSB0eXBlcywgYW5kIHNob3VsZCBiZSB0ZXN0ZWQgVG9EbworCQkg Ki8KKwkJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQorCQl7CisJCQkJ YXBwZW5kUFFFeHBCdWZmZXIocSwgIiBBUyIpOworCQkJCWlmICh0YmluZm8tPnJlbG9mdHlwZSAh PSBOVUxMKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiICVzIiwKKwkJCQkJCQkJCSAgdGJp bmZvLT5hdHR0eXBuYW1lc1swXSk7CisJCQkJaWYgKHRiaW5mby0+YXR0cmRlZnNbMF0gIT0gTlVM TCAmJiB0YmluZm8tPmF0dHJkZWZzWzBdLT5hZGVmX2V4cHIgIT0gTlVMTCkKKwkJCQkJYXBwZW5k UFFFeHBCdWZmZXIocSwgIiBERUZBVUxUICVzIiwKKwkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVm c1tqXS0+YWRlZl9leHByKTsKKwkJfQorCiAJCS8qCiAJCSAqIEF0dGFjaCB0byB0eXBlLCBpZiBy ZWxvZnR5cGU7IGV4Y2VwdCBpbiBjYXNlIG9mIGEgYmluYXJ5IHVwZ3JhZGUsCiAJCSAqIHdlIGR1 bXAgdGhlIHRhYmxlIG5vcm1hbGx5IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHR5cGUgYWZ0ZXJ3YXJk LgogCQkgKi8KLQkJaWYgKHRiaW5mby0+cmVsb2Z0eXBlICYmICFkb3B0LT5iaW5hcnlfdXBncmFk ZSkKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgT0YgJXMiLCB0YmluZm8tPnJlbG9mdHlwZSk7 CisJCWVsc2UgaWYgKHRiaW5mby0+cmVsb2Z0eXBlICYmICFkb3B0LT5iaW5hcnlfdXBncmFkZSkK KwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgT0YgJXMiLAorCQkJCQkJCSAgdGJpbmZvLT5yZWxv ZnR5cGUpOwogCiAJCS8qCiAJCSAqIElmIHRoZSB0YWJsZSBpcyBhIHBhcnRpdGlvbiwgZHVtcCBp dCBhcyBzdWNoOyBleGNlcHQgaW4gdGhlIGNhc2Ugb2YKQEAgLTE1NDE5LDcgKzE1NDQ3LDggQEAg ZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCQkJ CSAgZm10UXVhbGlmaWVkRHVtcGFibGUocGFyZW50UmVsKSk7CiAJCX0KIAotCQlpZiAodGJpbmZv LT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVykKKwkJaWYgKHRiaW5mby0+cmVsa2luZCAhPSBS RUxLSU5EX01BVFZJRVcgJiYKKwkJCSEodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFC TEUgJiYgdGJpbmZvLT5yZWxvZnR5cGUgIT0gTlVMTCkpCiAJCXsKIAkJCS8qIER1bXAgdGhlIGF0 dHJpYnV0ZXMgKi8KIAkJCWFjdHVhbF9hdHRzID0gMDsKQEAgLTE1NTQ1LDcgKzE1NTc0LDggQEAg ZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCSAq IFdlIG11c3QgaGF2ZSBhIHBhcmVudGhlc2l6ZWQgYXR0cmlidXRlIGxpc3QsIGV2ZW4gdGhvdWdo CiAJCQkJICogZW1wdHksIHdoZW4gbm90IHVzaW5nIHRoZSBPRiBUWVBFIG9yIFBBUlRJVElPTiBP RiBzeW50YXguCiAJCQkJICovCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiAoXG4pIik7 CisJCQkJaWYgKHRiaW5mby0+cmVsa2luZCAhPSBSRUxLSU5EX1ZBUklBQkxFKQorCQkJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbikiKTsKIAkJCX0KIAogCQkJaWYgKHRiaW5mby0+aXNw YXJ0aXRpb24gJiYgIWRvcHQtPmJpbmFyeV91cGdyYWRlKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggYTRkNmQ5 MjZhOC4uNDNjMmY2NjJmMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYg ZW51bQogCURPX1BPTElDWSwKIAlET19QVUJMSUNBVElPTiwKIAlET19QVUJMSUNBVElPTl9SRUws Ci0JRE9fU1VCU0NSSVBUSU9OCisJRE9fU1VCU0NSSVBUSU9OLAogfSBEdW1wYWJsZU9iamVjdFR5 cGU7CiAKIC8qIGNvbXBvbmVudCB0eXBlcyBvZiBhbiBvYmplY3Qgd2hpY2ggY2FuIGJlIHNlbGVj dGVkIGZvciBkdW1waW5nICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDFiZWE2YWU4 MWQuLjc3YjE2MmIzNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC01NDA2LDYgKzU0 MDYsNzUgQEAgcXIvQ1JFQVRFIFRSQU5TRk9STSBGT1IgaW50ZWdlciBMQU5HVUFHRSBzcWwgXChG Uk9NIFNRTCBXSVRIIEZVTkNUSU9OIHBnX2NhdGFsb2cKIAkJCXJvbGUgICAgICAgICAgICAgICAg ICAgICA9PiAxLAogCQkJc2VjdGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCiAKKwkn Q1JFQVRFIFZBUklBQkxFIHRlc3RfdmFyaWFibGUnID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEs CisJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4uLiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRl ciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZh cmlhYmxlIEFTIGludGVnZXI7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFZBUklB QkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2VyO1xFL3htLAorCQlsaWtlID0+IHsKKwkJ CWJpbmFyeV91cGdyYWRlICAgICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAgICAg ICA9PiAxLAorCQkJY2xlYW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0ZWRiICAg ICAgICAgICAgICAgID0+IDEsCisJCQlkZWZhdWx0cyAgICAgICAgICAgICAgICA9PiAxLAorCQkJ ZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9kYXRh ID0+IDEsCisJCQlub19ibG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMgICAg ICAgICAgICAgICAgPT4gMSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+IDEsCisJCQlv bmx5X2R1bXBfdGVzdF9zY2hlbWEgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9kYnByaXZzICAgICAg PT4gMSwKKwkJCXNjaGVtYV9vbmx5ICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3ByZV9k YXRhICAgICAgICA9PiAxLAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJCXdp dGhfb2lkcyAgICAgICAgICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRl X2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9PiAx LAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2Jh bHNfY2xlYW4gPT4gMSwKKwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJc2Vj dGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCisKKwknQ1JFQVRFIFZBUklBQkxFIHRl c3RfdmFyaWFibGUgd2l0aCBmaWVsZCBsaXN0JyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAor CQljYXRjaF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIg PT4gNjEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJp YWJsZTEgQVMgKGEgaW50LCBiIG51bWVyaWMoMTAsMikpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJ CQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUxIEFTIChcRQorCQkJXG5ccytc UWEgaW50ZWdlcixcRQorCQkJXG5ccytcUWIgbnVtZXJpYygxMCwyKVxFCisJCQlcblwpOworCQkJ L3htLAorCQlsaWtlID0+IHsKKwkJCWJpbmFyeV91cGdyYWRlICAgICAgICAgID0+IDEsCisJCQlj bGVhbiAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJY2xlYW5faWZfZXhpc3RzICAgICAgICAg PT4gMSwKKwkJCWNyZWF0ZWRiICAgICAgICAgICAgICAgID0+IDEsCisJCQlkZWZhdWx0cyAgICAg ICAgICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgPT4gMSwKKwkJCWV4 Y2x1ZGVfdGVzdF90YWJsZV9kYXRhID0+IDEsCisJCQlub19ibG9icyAgICAgICAgICAgICAgICA9 PiAxLAorCQkJbm9fcHJpdnMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX293bmVyICAgICAg ICAgICAgICAgID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF9zY2hlbWEgICA9PiAxLAorCQkJcGdf ZHVtcGFsbF9kYnByaXZzICAgICAgPT4gMSwKKwkJCXNjaGVtYV9vbmx5ICAgICAgICAgICAgID0+ IDEsCisJCQlzZWN0aW9uX3ByZV9kYXRhICAgICAgICA9PiAxLAorCQkJdGVzdF9zY2hlbWFfcGx1 c19ibG9icyAgPT4gMSwKKwkJCXdpdGhfb2lkcyAgICAgICAgICAgICAgID0+IDEsIH0sCisJCXVu bGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVt cF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzICAgICAgID0+IDEs CisJCQlwZ19kdW1wYWxsX2dsb2JhbHNfY2xlYW4gPT4gMSwKKwkJCXJvbGUgICAgICAgICAgICAg ICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCisK KwogCSdBTFRFUiBWSUVXIHRlc3RfdmlldyBTRVQgREVGQVVMVCcgPT4gewogCQlhbGxfcnVucyAg ICAgPT4gMSwKIAkJY2F0Y2hfYWxsICAgID0+ICdDUkVBVEUgLi4uIGNvbW1hbmRzJywKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmlu ZGV4IDM1NjAzMTg3NDkuLmFkMDAzMGMwZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21t YW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtNzk0LDYgKzc5NCw3IEBAIGV4 ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo LCBjb25zdCBjaGFyICpjbWQpCiAJCQljYXNlICdpJzoKIAkJCWNhc2UgJ3MnOgogCQkJY2FzZSAn RSc6CisJCQljYXNlICdWJzoKIAkJCQlzdWNjZXNzID0gbGlzdFRhYmxlcygmY21kWzFdLCBwYXR0 ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3In OgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYwppbmRleCAwYzNiZTFmNTA0Li5hMTIyZjZmY2I2IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTgyOCw2 ICsxODI4LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5h bWUsCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIkZvcmVpZ24gdGFibGUgXCIlcy4l c1wiIiksCiAJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOwogCQkJYnJlYWs7CisJ CWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygi c2NoZW1hIHZhcmlhYmxlIFwiJXMuJXNcIiIpLAorCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRp b25uYW1lKTsKKwkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEU6CiAJ CQlpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNlID09ICd1JykKIAkJCQlwcmludGZQUUV4cEJ1 ZmZlcigmdGl0bGUsIF8oIlVubG9nZ2VkIHRhYmxlIFwiJXMuJXNcIiIpLApAQCAtMzQwMSw2ICsz NDA1LDcgQEAgbGlzdERiUm9sZVNldHRpbmdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNo YXIgKnBhdHRlcm4yKQogICogbSAtIG1hdGVyaWFsaXplZCB2aWV3cwogICogcyAtIHNlcXVlbmNl cwogICogRSAtIGZvcmVpZ24gdGFibGUgKE5vdGU6IGRpZmZlcmVudCBmcm9tICdmJywgdGhlIHJl bGtpbmQgdmFsdWUpCisgKiBWIC0gc2NoZW1hIHZhcmlhYmxlCiAgKiAoYW55IG9yZGVyIG9mIHRo ZSBhYm92ZSBpcyBmaW5lKQogICovCiBib29sCkBAIC0zNDEyLDYgKzM0MTcsNyBAQCBsaXN0VGFi bGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5cwogCWJvb2wJCXNob3dNYXRWaWV3cyA9IHN0cmNocih0YWJ0eXBlcywg J20nKSAhPSBOVUxMOwogCWJvb2wJCXNob3dTZXEgPSBzdHJjaHIodGFidHlwZXMsICdzJykgIT0g TlVMTDsKIAlib29sCQlzaG93Rm9yZWlnbiA9IHN0cmNocih0YWJ0eXBlcywgJ0UnKSAhPSBOVUxM OworCWJvb2wJCXNob3dWYXJpYWJsZXMgPSBzdHJjaHIodGFidHlwZXMsICdWJykgIT0gTlVMTDsK IAogCVBRRXhwQnVmZmVyRGF0YSBidWY7CiAJUEdyZXN1bHQgICAqcmVzOwpAQCAtMzQxOSw4ICsz NDI1LDggQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0 dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFu c2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2V9OwogCiAJLyogSWYgdGFidHlwZXMgaXMgZW1wdHksIHdlIGRlZmF1bHQgdG8gXGR0 dm1zRSAoYnV0IHNlZSBhbHNvIGNvbW1hbmQuYykgKi8KLQlpZiAoIShzaG93VGFibGVzIHx8IHNo b3dJbmRleGVzIHx8IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93 Rm9yZWlnbikpCi0JCXNob3dUYWJsZXMgPSBzaG93Vmlld3MgPSBzaG93TWF0Vmlld3MgPSBzaG93 U2VxID0gc2hvd0ZvcmVpZ24gPSB0cnVlOworCWlmICghKHNob3dUYWJsZXMgfHwgc2hvd0luZGV4 ZXMgfHwgc2hvd1ZpZXdzIHx8IHNob3dNYXRWaWV3cyB8fCBzaG93U2VxIHx8IHNob3dGb3JlaWdu IHx8IHNob3dWYXJpYWJsZXMpKQorCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZp ZXdzID0gc2hvd1NlcSA9IHNob3dGb3JlaWduID0gc2hvd1ZhcmlhYmxlcyA9IHRydWU7CiAKIAlp bml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKQEAgLTM0NDEsNiArMzQ0Nyw3IEBAIGxpc3RUYWJsZXMo Y29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwg Ym9vbCBzaG93U3lzCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfRk9SRUlH Tl9UQUJMRSkgIiBUSEVOICclcyciCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hFTiAiIENwcEFz U3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKSAiIFRIRU4gJyVzJyIKKwkJCQkJICAi IFdIRU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9WQVJJQUJMRSkgIiBUSEVOICclcyciCiAJCQkJ CSAgIiBFTkQgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJi eWlkKGMucmVsb3duZXIpIGFzIFwiJXNcIiIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEi KSwKQEAgLTM0NTQsNiArMzQ2MSw3IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMs IGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJCQkJCSAg Z2V0dGV4dF9ub29wKCJmb3JlaWduIHRhYmxlIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJ0YWJs ZSIpLAkvKiBwYXJ0aXRpb25lZCB0YWJsZSAqLwogCQkJCQkgIGdldHRleHRfbm9vcCgiaW5kZXgi KSwJLyogcGFydGl0aW9uZWQgaW5kZXggKi8KKwkJCQkJICBnZXR0ZXh0X25vb3AoInNjaGVtYSB2 YXJpYWJsZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAogCQkJCQkgIGdldHRleHRf bm9vcCgiT3duZXIiKSk7CiAKQEAgLTM1MDcsNiArMzUxNSw4IEBAIGxpc3RUYWJsZXMoY29uc3Qg Y2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBz aG93U3lzCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIncycsIik7IC8qIHdhcyBSRUxL SU5EX1NQRUNJQUwgKi8KIAlpZiAoc2hvd0ZvcmVpZ24pCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsIENwcEFzU3RyaW5nMihSRUxLSU5EX0ZPUkVJR05fVEFCTEUpICIsIik7CisJaWYgKHNo b3dWYXJpYWJsZXMpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsIENwcEFzU3RyaW5nMihS RUxLSU5EX1ZBUklBQkxFKSAiLCIpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIicn Iik7CS8qIGR1bW15ICovCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIilcbiIpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aAppbmRleCBhNGNjNWVmYWUwLi5jNWYxMDdkODE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjAsNyArNjAsNyBA QCBleHRlcm4gYm9vbCBsaXN0VFNUZW1wbGF0ZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlKTsKIC8qIFxsICovCiBleHRlcm4gYm9vbCBsaXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBh dHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAKLS8qIFxkdCwgXGRpLCBcZHMsIFxkUywgZXRjLiAqLwor LyogXGR0LCBcZGksIFxkcywgXGRTLCBcZHZhciBldGMuICovCiBleHRlcm4gYm9vbCBsaXN0VGFi bGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5c3RlbSk7CiAKIC8qIFxkRCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNzAyZTc0MmFmNC4uMmRhNTBm NzI5MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwv aGVscC5jCkBAIC0xNjcsNyArMTY3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQg cGFnZXIpCiAJICogVXNlICJwc3FsIC0taGVscD1jb21tYW5kcyB8IHdjIiB0byBjb3VudCBjb3Jy ZWN0bHkuICBJdCdzIG9rYXkgdG8gY291bnQKIAkgKiB0aGUgVVNFX1JFQURMSU5FIGxpbmUgZXZl biBpbiBidWlsZHMgd2l0aG91dCB0aGF0LgogCSAqLwotCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI1 LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CisJb3V0cHV0ID0gUGFnZU91dHB1 dCgxMjYsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkgOiBOVUxMKTsKIAogCWZwcmludGYob3V0 cHV0LCBfKCJHZW5lcmFsXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxjb3B5cmlnaHQg ICAgICAgICAgICAgc2hvdyBQb3N0Z3JlU1FMIHVzYWdlIGFuZCBkaXN0cmlidXRpb24gdGVybXNc biIpKTsKQEAgLTI1Nyw2ICsyNTcsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBw YWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0 IGRhdGEgdHlwZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR1W1MrXSBbUEFUVEVS Tl0gICAgICBsaXN0IHJvbGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdltTK10g W1BBVFRFUk5dICAgICAgbGlzdCB2aWV3c1xuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxc ZFZbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgc2NoZW1hIHZhcmlhYmxlc1xuIikpOwogCWZwcmlu dGYob3V0cHV0LCBfKCIgIFxcZHhbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgZXh0ZW5zaW9uc1xu IikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZHkgICAgIFtQQVRURVJOXSAgICAgIGxpc3Qg ZXZlbnQgdHJpZ2dlcnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGxbK10gICBbUEFU VEVSTl0gICAgICBsaXN0IGRhdGFiYXNlc1xuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDA4ZDhl ZjA5YTQuLmRmZDQ5NjZlMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTgwNSw2ICs4MDUsMjIgQEAg c3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3N0YXRpc3RpY3MgPSB7 CiAJTlVMTAogfTsKIAorc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29m X3ZhcmlhYmxlcyA9IHsKKwkvKiBtaW5fc2VydmVyX3ZlcnNpb24gKi8KKwkwLAorCS8qIGNhdG5h bWUgKi8KKwkicGdfY2F0YWxvZy5wZ19jbGFzcyBjIiwKKwkvKiBzZWxjb25kaXRpb24gKi8KKwki Yy5yZWxraW5kIElOICgnVicpIiwKKwkvKiB2aXNjb25kaXRpb24gKi8KKwkicGdfY2F0YWxvZy5w Z190YWJsZV9pc192aXNpYmxlKGMub2lkKSIsCisJLyogbmFtZXNwYWNlICovCisJImMucmVsbmFt ZXNwYWNlIiwKKwkvKiByZXN1bHQgKi8KKwkicGdfY2F0YWxvZy5xdW90ZV9pZGVudChjLnJlbG5h bWUpIiwKKwkvKiBxdWFscmVzdWx0ICovCisJTlVMTAorfTsKIAogLyoKICAqIFF1ZXJpZXMgdG8g Z2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhpbmdzLCBwb3NzaWJseQpA QCAtMTI0OSw2ICsxMjY1LDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3RoaW5nX3Qgd29yZHNfYWZ0 ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4uLiAqLwogCXsiVVNF UiIsIFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzICIgVU5JT04gU0VMRUNUICdNQVBQSU5HIEZPUici fSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxMfSwKKwl7IlZBUklBQkxF IiwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlc30sCiAJeyJWSUVXIiwgTlVMTCwg TlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7TlVMTH0JCQkJCQkvKiBlbmQgb2Yg bGlzdCAqLwogfTsKQEAgLTE2MDQsNyArMTYyMSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJBQk9SVCIsICJBTFRFUiIsICJBTkFM WVpFIiwgIkJFR0lOIiwgIkNBTEwiLCAiQ0hFQ0tQT0lOVCIsICJDTE9TRSIsICJDTFVTVEVSIiwK IAkJIkNPTU1FTlQiLCAiQ09NTUlUIiwgIkNPUFkiLCAiQ1JFQVRFIiwgIkRFQUxMT0NBVEUiLCAi REVDTEFSRSIsCiAJCSJERUxFVEUgRlJPTSIsICJESVNDQVJEIiwgIkRPIiwgIkRST1AiLCAiRU5E IiwgIkVYRUNVVEUiLCAiRVhQTEFJTiIsCi0JCSJGRVRDSCIsICJHUkFOVCIsICJJTVBPUlQiLCAi SU5TRVJUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAorCQkiRkVUQ0giLCAiR1JBTlQiLCAi SU1QT1JUIiwgIklOU0VSVCIsICJMRVQiLCAiTElTVEVOIiwgIkxPQUQiLCAiTE9DSyIsCiAJCSJN T1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJFQVNTSUdOIiwgIlJFRlJFU0ggTUFURVJJ QUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNFIiwKIAkJIlJFU0VUIiwgIlJFVk9LRSIs ICJST0xMQkFDSyIsCkBAIC0xNjIzLDcgKzE2NDAsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkRiIsICJcXGRGZCIsICJcXGRG cCIsICJcXGRGdCIsICJcXGRnIiwgIlxcZGkiLCAiXFxkbCIsICJcXGRMIiwKIAkJIlxcZG0iLCAi XFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxkcCIsCiAJCSJcXGRyZHMiLCAiXFxkUnMiLCAiXFxk UnAiLCAiXFxkcyIsICJcXGRTIiwKLQkJIlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAi XFxkeCIsICJcXGR5IiwKKwkJIlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxkeCIs ICJcXGR5IiwgIlxcZHZhciIsCiAJCSJcXGUiLCAiXFxlY2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwg IlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxcZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxc ZXYiLAogCQkiXFxmIiwKQEAgLTI4MzQsNiArMjg1MSwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29u c3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXM0KCJD UkVBVEUiLCAiUk9MRXxVU0VSfEdST1VQIiwgTWF0Y2hBbnksICJJTiIpKQogCQlDT01QTEVURV9X SVRIX0xJU1QyKCJHUk9VUCIsICJST0xFIik7CiAKKy8qIENSRUFURSBWQVJJQUJMRSAtLS0gaXMg YWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCisJLyog Q29tcGxldGUgQ1JFQVRFIFZBUklBQkxFIDxuYW1lPiB3aXRoIEFTICovCisJZWxzZSBpZiAoVGFp bE1hdGNoZXMzKCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJ VEhfQ09OU1QoIkFTIik7CisJLyogQ29tcGxldGUgQ1JFQVRFIFZBUklBQkxFIDxuYW1lPiB3aXRo IEFTIHR5cGVzKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkNSRUFURSIsICJWQVJJQUJMRSIs IE1hdGNoQW55LCAiQVMiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwogLyogQ1JFQVRFIFZJRVcgLS0tIGlzIGFsbG93 ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLwogCS8qIENvbXBs ZXRlIENSRUFURSBWSUVXIDxuYW1lPiB3aXRoIEFTICovCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXMz KCJDUkVBVEUiLCAiVklFVyIsIE1hdGNoQW55KSkKQEAgLTI5ODksNiArMzAxNCwxMiBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2Ug aWYgKE1hdGNoZXM1KCJEUk9QIiwgIlJVTEUiLCBNYXRjaEFueSwgIk9OIiwgTWF0Y2hBbnkpKQog CQlDT01QTEVURV9XSVRIX0xJU1QyKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9Q IFZBUklBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlczIoIkRST1AiLCAiVkFSSUFCTEUiKSkKKwkJ Q09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBO VUxMKTsKKwllbHNlIGlmIChNYXRjaGVzMygiRFJPUCIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkK KwkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOworCiAvKiBFWEVD VVRFICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTI5OTksMTQg KzMwMzAsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwg aW50IGVuZCkKIAkgKiBDb21wbGV0ZSBFWFBMQUlOIFtBTkFMWVpFXSBbVkVSQk9TRV0gd2l0aCBs aXN0IG9mIEVYUExBSU4tYWJsZSBjb21tYW5kcwogCSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJF WFBMQUlOIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVM RVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIik7 CisJCUNPTVBMRVRFX1dJVEhfTElTVDgoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQ REFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkxFVCIpOwog CWVsc2UgaWYgKE1hdGNoZXMyKCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKLQkJQ09NUExFVEVfV0lU SF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUi LAotCQkJCQkJCSJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJ TlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiVkVSQk9TRSIs ICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJWRVJCT1NFIikgfHwKIAkJ CSBNYXRjaGVzMygiRVhQTEFJTiIsICJBTkFMWVpFIiwgIlZFUkJPU0UiKSkKLQkJQ09NUExFVEVf V0lUSF9MSVNUNSgiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xB UkUiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUi LCAiVVBEQVRFIiwgIkRFQ0xBUkUiLCAiTEVUIik7CiAKIC8qIEZFVENIICYmIE1PVkUgKi8KIAkv KiBDb21wbGV0ZSBGRVRDSCB3aXRoIG9uZSBvZiBGT1JXQVJELCBCQUNLV0FSRCwgUkVMQVRJVkUg Ki8KQEAgLTMxMTUsNiArMzE0Niw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFJP VVRJTkVTIElOIFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFNFUVVF TkNFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBUQUJMRVMg SU4gU0NIRU1BJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVkFSSUFCTEVTIElO IFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnREFUQUJBU0UnIgogCQkJCQkJ CQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RPTUFJTiciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnRk9SRUlHTiBEQVRBIFdSQVBQRVInIgpAQCAtMzEyOCwxNCArMzE2MCwxNiBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ1NFUVVFTkNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNU ICdUQUJMRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEVTUEFDRSciCi0JCQkJ CQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciKTsKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdUWVBFJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdWQVJJQUJMRSciKTsKIAl9 CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwg IkFMTCIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJGVU5DVElPTlMgSU4gU0NIRU1BIiwKKwkJ Q09NUExFVEVfV0lUSF9MSVNUNigiRlVOQ1RJT05TIElOIFNDSEVNQSIsCiAJCQkJCQkJIlBST0NF RFVSRVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJCQki U0VRVUVOQ0VTIElOIFNDSEVNQSIsCi0JCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJ CQkiVEFCTEVTIElOIFNDSEVNQSIsCisJCQkJCQkJIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAll bHNlIGlmIChUYWlsTWF0Y2hlczQoIkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiRk9S RUlHTiIpKQogCQlDT01QTEVURV9XSVRIX0xJU1QyKCJEQVRBIFdSQVBQRVIiLCAiU0VSVkVSIik7 CiAKQEAgLTMxNjUsNiArMzE5OSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEo IlRBQkxFIikpCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9v Zl90c3ZtZiwgTlVMTCk7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVkFSSUFCTEUiKSkKKwkJ CUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywg TlVMTCk7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVEFCTEVTUEFDRSIpKQogCQkJQ09NUExF VEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNwYWNlcyk7CiAJCWVsc2UgaWYg KFRhaWxNYXRjaGVzMSgiVFlQRSIpKQpAQCAtMzMyMSw3ICszMzU3LDcgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyogUFJFUEFSRSB4 eCBBUyAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQot CQlDT01QTEVURV9XSVRIX0xJU1Q0KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIsICJERUxF VEUgRlJPTSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklO U0VSVCIsICJERUxFVEUgRlJPTSIsICJMRVQiKTsKIAogLyoKICAqIFBSRVBBUkUgVFJBTlNBQ1RJ T04gaXMgbWlzc2luZyBvbiBwdXJwb3NlLiBJdCdzIGludGVuZGVkIGZvciB0cmFuc2FjdGlvbgpA QCAtMzU0MCw2ICszNTc2LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJVUERBVEUiLCBNYXRj aEFueSwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOwogCisv KiBMRVQgLS0tIGNhbiBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBw cmV2LiB3b3JkIGlzIExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlm IChUYWlsTWF0Y2hlczEoIkxFVCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCS8qIENvbXBsZXRlIExFVCA8dmFyaWFi bGU+IHdpdGggIj0iICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMyKCJMRVQiLCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKKwogLyogVVNFUiBNQVBQSU5HICovCiAJZWxz ZSBpZiAoTWF0Y2hlczMoIkFMVEVSfENSRUFURXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQog CQlDT01QTEVURV9XSVRIX0NPTlNUKCJGT1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCA3 ZmMzNTVhY2I4Li4wMmViY2U2YjVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xNjUsNiAr MTY1LDcgQEAgREVTQ1IoIiIpOwogI2RlZmluZQkJICBSRUxLSU5EX0ZPUkVJR05fVEFCTEUgICAn ZicJLyogZm9yZWlnbiB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFICdwJyAvKiBwYXJ0aXRpb25lZCB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJ VElPTkVEX0lOREVYICdJJyAvKiBwYXJ0aXRpb25lZCBpbmRleCAqLworI2RlZmluZQkJICBSRUxL SU5EX1ZBUklBQkxFCQkgICdWJwkvKiBzY2hlbWEgdmFyaWFibGUgKi8KIAogI2RlZmluZQkJICBS RUxQRVJTSVNURU5DRV9QRVJNQU5FTlQJJ3AnIC8qIHJlZ3VsYXIgdGFibGUgKi8KICNkZWZpbmUJ CSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQJJ3UnIC8qIHVubG9nZ2VkIHBlcm1hbmVudCB0YWJs ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IDExYjMwNjAzN2QuLjEz MjMyZDdhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTcxLDUgKzcx LDYgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19kZWZhdWx0X2FjbCAqRm9ybV9wZ19kZWZhdWx0X2Fj bDsKICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNUSU9OCQknZicgLyogZnVuY3Rpb24gKi8KICNkZWZp bmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyogdHlwZSAqLwogI2RlZmluZSBERUZBQ0xPQkpfTkFN RVNQQUNFCQknbicgLyogbmFtZXNwYWNlICovCisjZGVmaW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJ J1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRpZgkJCQkJCQkvKiBQR19ERUZBVUxUX0FDTF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5oCmluZGV4IDBmZGI0MmY2MzkuLmFhZDA5YWYzYzQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5oCkBAIC01NTczLDYgKzU1NzMsMTYgQEAgREVTQ1IoImxpc3Qgb2YgZmlsZXMg aW4gdGhlIFdBTCBkaXJlY3RvcnkiKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDUwMjggKCBzYXRpc2Zp ZXNfaGFzaF9wYXJ0aXRpb24gUEdOU1AgUEdVSUQgMTIgMSAwIDIyNzYgMCBmIGYgZiBmIGYgaSBz IDQgMCAxNiAiMjYgMjMgMjMgMjI3NiIgX251bGxfICJ7aSxpLGksdn0iIF9udWxsXyBfbnVsbF8g X251bGxfIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbiBfbnVsbF8gX251bGxfIF9udWxsXyApKTsK IERFU0NSKCJoYXNoIHBhcnRpdGlvbiBDSEVDSyBjb25zdHJhaW50Iik7CiAKKy8qIHNjaGVtYSB2 YXJpYWJsZXMgZnVuY3Rpb24gaW50ZXJmYWNlICovCitEQVRBKGluc2VydCBPSUQgPSA2MTIyICgg Z2V0X3NjaGVtYV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBmIGYgZiB2IHIg MiAwIDIyODMgIjIyMDUgMjI4MyIgX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBn ZXRfc2NoZW1hX3ZhcmlhYmxlIF9udWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1IoInJldHVy bnMgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlIik7CitEQVRBKGluc2VydCBPSUQgPSA2MTIzICgg c2V0X3NjaGVtYV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBmIGYgZiB2IHIg MiAwIDIyNzggIjIyMDUgMjI4MyIgX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBz ZXRfc2NoZW1hX3ZhcmlhYmxlIF9udWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1IoInNldCB2 YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUiKTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjQgKCBnZXRf c2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIHYgciAzIDAg MjI4MyAiMjIwNSAxOSAyMjgzIiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIGdl dF9zY2hlbWFfdmFyaWFibGVfZmllbGQgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitERVNDUigi cmV0dXJucyB2YWx1ZSBmaWVsZCBvZiBzY2hlbWEgdmFyaWFibGUgb2YgY29tcG9zaXRlIHR5cGUi KTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjUgKCBzZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBH VUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIHYgciAzIDAgMjI3OCAiMjIwNSAxOSAyMjgzIiBfbnVs bF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIHNldF9zY2hlbWFfdmFyaWFibGVfZmllbGQg X251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitERVNDUigic2V0IHZhbHVlIG9mIGZpZWxkIG9mIHNj aGVtYSB2YXJpYWJsZSBvZiBjb21wb3NpdGUgdHlwZSIpOworCiAvKgogICogU3ltYm9saWMgdmFs dWVzIGZvciBwcm9raW5kIGNvbHVtbgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9zY2hlbWF2YXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZjZDUxNmQxOTIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXIuaApAQCAtMCwwICsxLDM5IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzY2hlbWF2YXIuaAorICoJICBwcm90b3R5cGVz IGZvciBzY2hlbWF2YXIuYy4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAx OCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyLmgKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworI2lmbmRlZiBTQ0hFTUFWQVJfSAorI2RlZmluZSBTQ0hFTUFWQVJfSAorCisj aW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vu b2Rlcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCisKK2V4dGVybiBPYmplY3RB ZGRyZXNzIERlZmluZVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2No ZW1hVmFyU3RtdCAqdmFyKTsKKworZXh0ZXJuIHZvaWQgUmVzZXRTY2hlbWFWYXJpYWJsZXNDYWNo ZSh2b2lkKTsKKworZXh0ZXJuIGNoYXIgKmdldF9zY2hlbWF2YXJfbmFtZShPaWQgdmFyaWQpOwor CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBi b29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIERhdHVtIEdldFNj aGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5 cG1vZCwgIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gdm9pZCBTZXRTY2hl bWFWYXJpYWJsZVNlY3VyZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIERhdHVtIEdldFNjaGVtYVZhcmlhYmxlU2Vj dXJlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50 MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKKworZXh0ZXJuIHZvaWQgU2V0U2NoZW1hVmFyaWFi bGVGaWVsZChPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgRGF0dW0gdmFsdWUsIGJv b2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRlcm4gRGF0dW0gR2V0U2No ZW1hVmFyaWFibGVGaWVsZChPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgYm9vbCAq aXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5 dmFsKTsKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlRmllbGRTZWN1cmUoT2lkIHZhcmlk LCBjb25zdCBjaGFyICpmaWVsZG5hbWUsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIERhdHVtIEdldFNjaGVtYVZhcmlhYmxlRmllbGRT ZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5hbWUsIGJvb2wgKmlzTnVsbCwgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CisKK2V4 dGVybiB2b2lkIHNjaGVtYXZhcl9nZXRfdHlwX3R5cG1vZChPaWQgdmFyaWQsIE9pZCAqdHlwLCBp bnQzMiAqdHlwbW9kKTsKK2V4dGVybiBib29sIGlzX3NjaGVtYXZhcihPaWQgdmFyaWQsIGJvb2wg KmlzX3Jvd3R5cGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY0V4cHIuaAppbmRleCAwY2FiNDMxZjY1Li4zYjQzYmE0OGU2IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxP cAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BBUkFNX0NB TExCQUNLLAorCUVFT1BfUEFSQU1fU0NIRU1BX1ZBUklBQkxFLAogCiAJLyogcmV0dXJuIENhc2VU ZXN0RXhwciB2YWx1ZSAqLwogCUVFT1BfQ0FTRV9URVNUVkFMLApAQCAtMzQzLDExICszNDQsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCQlUdXBsZURlc2MJYXJnZGVzYzsKIAkJ fQkJCW51bGx0ZXN0X3JvdzsKIAotCQkvKiBmb3IgRUVPUF9QQVJBTV9FWEVDL0VYVEVSTiAqLwor CQkvKiBmb3IgRUVPUF9QQVJBTV9FWEVDL0VYVEVSTi9WQVJJQUJMRSAqLwogCQlzdHJ1Y3QKIAkJ ewotCQkJaW50CQkJcGFyYW1pZDsJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCi0JCQlP aWQJCQlwYXJhbXR5cGU7CS8qIE9JRCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAqLworCQkJaW50 CQkJcGFyYW1pZDsJCS8qIG51bWVyaWMgSUQgZm9yIHBhcmFtZXRlciAqLworCQkJT2lkCQkJcGFy YW10eXBlOwkJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlpbnQzMgkJcGFy YW10eXBtb2Q7CS8qIHR5cG1vZCBvZiBwYXJhbSAobm90IHVzZWQgeWV0KSAqLworCQkJaW50MTYJ CXBhcmFtdHlwbGVuOwkvKiBleHBlY3RlZCBsZW5ndGggKi8KKwkJCWJvb2wJCXBhcmFtdHlwYnl2 YWw7CS8qIGlzIHBhc3NlZCBieSB2YWx1ZSAqLwogCQl9CQkJcGFyYW07CiAKIAkJLyogZm9yIEVF T1BfUEFSQU1fQ0FMTEJBQ0sgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDc0YjA5NGE5YzMuLjJmNDk4NjA5 OWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ0LDYgKzM0NCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFn CiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNlcVN0 bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRfVmFy aWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRTdG10LApAQCAtNDE1LDYgKzQxNiw3IEBAIHR5cGVk ZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlvblN0 bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNF IFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkKQEAgLTY1Nyw2ICs2NTksNyBAQCB0eXBlZGVmIGVu dW0gQ21kVHlwZQogCUNNRF9VUERBVEUsCQkJCQkvKiB1cGRhdGUgc3RtdCAqLwogCUNNRF9JTlNF UlQsCQkJCQkvKiBpbnNlcnQgc3RtdCAqLwogCUNNRF9ERUxFVEUsCisJQ01EX0xFVCwKIAlDTURf VVRJTElUWSwJCQkJLyogY21kcyBsaWtlIGNyZWF0ZSwgZGVzdHJveSwgY29weSwgdmFjdXVtLAog CQkJCQkJCQkgKiBldGMuICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1bW15IGNvbW1hbmQgZm9y IGluc3RlYWQgbm90aGluZyBydWxlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkyMDgyYjNh N2EuLjJkOGZlZDhkNTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE1MDMsNiArMTUwMywx NSBAQCB0eXBlZGVmIHN0cnVjdCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJ CS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKK3R5cGVkZWYgc3RydWN0IExldFN0 bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAqdGFyZ2V0OwkJCS8qIGxpc3Qgb2YgZmll bGRzICAqLworCU5vZGUJICAgKnNlbGVjdFN0bXQ7CQkvKiB0aGUgc291cmNlIFNFTEVDVC9WQUxV RVMsIG9yIE5VTEwgKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKworCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJU2VsZWN0IFN0YXRlbWVudAogICoKQEAgLTE2ODAsNiAr MTY4OSw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJ T0JKRUNUX1RZUEUsCiAJT0JKRUNUX1VTRVJfTUFQUElORywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJ T0JKRUNUX1ZJRVcKIH0gT2JqZWN0VHlwZTsKIApAQCAtMjQ5Miw2ICsyNTAyLDIwIEBAIHR5cGVk ZWYgc3RydWN0IEFsdGVyU2VxU3RtdAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9y IGlmIGEgcm9sZSBpcyBtaXNzaW5nPyAqLwogfSBBbHRlclNlcVN0bXQ7CiAKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCQlDcmVhdGUgVkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNjaGVtYVZhclN0bXQK K3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJLyogdGhlIHZhcmlh YmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhlIHNjYWxhciB2 YXJpYWJsZSB0eXBlICovCisJTm9kZQkgICAqZGVmZXhwcjsJCS8qIGRlZmF1bHQgZXhwcmVzc2lv biAqLworCUxpc3QJICAgKmZpZWxkczsJCQkvKiB0aGUgZmllbGRzIG9mIGNvbXBvc2l0ZSB2YXJp YWJsZSB0eXBlICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyoganVzdCBkbyBub3RoaW5nIGlm IGl0IGFscmVhZHkgZXhpc3RzPyAqLworfSBDcmVhdGVTY2hlbWFWYXJTdG10OworCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIHtBZ2dyZWdhdGV8T3BlcmF0b3J8VHlwZX0g U3RhdGVtZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjI0LDcgKzMyNDgsOCBA QCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJEX1BMQU5T LAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVNUCwKKwlE SVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3QgRGlzY2Fy ZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggMWI0YjBkNzVhZi4uYjM2NjQ3MTk0MCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIyOSwxMyArMjI5LDE3IEBAIHR5cGVkZWYgc3RydWN0IENv bnN0CiAgKgkJCQlvZiB0aGUgYHBhcmFtaWQnIGZpZWxkIGNvbnRhaW4gdGhlIFN1YkxpbmsncyBz dWJMaW5rSWQsIGFuZAogICoJCQkJdGhlIGxvdy1vcmRlciAxNiBiaXRzIGNvbnRhaW4gdGhlIGNv bHVtbiBudW1iZXIuICAoVGhpcyB0eXBlCiAgKgkJCQlvZiBQYXJhbSBpcyBhbHNvIGNvbnZlcnRl ZCB0byBQQVJBTV9FWEVDIGR1cmluZyBwbGFubmluZy4pCisgKgorICoJCVBBUkFNX1NDSEVNQV9W QVJJQUJMRTogIFRoZSBwYXJhbWV0ZXIgaXMgYSBhY2Nlc3MgdG8gc2NoZW1hIHZhcmlhYmxlCisg KgkJCQlwYXJhbWlkIGhvbGRzIHZhcmlkLgogICovCiB0eXBlZGVmIGVudW0gUGFyYW1LaW5kCiB7 CiAJUEFSQU1fRVhURVJOLAogCVBBUkFNX0VYRUMsCiAJUEFSQU1fU1VCTElOSywKLQlQQVJBTV9N VUxUSUVYUFIKKwlQQVJBTV9NVUxUSUVYUFIsCisJUEFSQU1fU0NIRU1BX1ZBUklBQkxFCiB9IFBh cmFtS2luZDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjZjMy MTk3YmMzLi5kYjExZTA4N2MxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yMzAsNiArMjMwLDcgQEAg UEdfS0VZV09SRCgibGVhZGluZyIsIExFQURJTkcsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlX T1JEKCJsZWFrcHJvb2YiLCBMRUFLUFJPT0YsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdP UkQoImxlYXN0IiwgTEVBU1QsIENPTF9OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZWZ0Iiwg TEVGVCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKK1BHX0tFWVdPUkQoImxldCIsIExFVCwgVU5S RVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGV2ZWwiLCBMRVZFTCwgVU5SRVNFUlZFRF9L RVlXT1JEKQogUEdfS0VZV09SRCgibGlrZSIsIExJS0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJsaW1pdCIsIExJTUlULCBSRVNFUlZFRF9LRVlXT1JEKQpAQCAtNDMzLDYg KzQzNCw4IEBAIFBHX0tFWVdPUkQoInZhbGlkYXRvciIsIFZBTElEQVRPUiwgVU5SRVNFUlZFRF9L RVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWUiLCBWQUxVRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJ2YWx1ZXMiLCBWQUxVRVMsIENPTF9OQU1FX0tFWVdPUkQpCiBQR19LRVlX T1JEKCJ2YXJjaGFyIiwgVkFSQ0hBUiwgQ09MX05BTUVfS0VZV09SRCkKK1BHX0tFWVdPUkQoInZh cmlhYmxlIiwgVkFSSUFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCkKK1BHX0tFWVdPUkQoInZhcmlh YmxlcyIsIFZBUklBQkxFUywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFyaWFk aWMiLCBWQVJJQURJQywgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcnlpbmciLCBW QVJZSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9T RSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDAy MzA1NDM4MTAuLmQyNWMwNjEwODggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMTM1LDYg KzEzNSw4IEBAIHR5cGVkZWYgTm9kZSAqKCpDb2VyY2VQYXJhbUhvb2spIChQYXJzZVN0YXRlICpw c3RhdGUsIFBhcmFtICpwYXJhbSwKICAqIHRvIHByb2Nlc3MgdGhlbSBsaWtlIFVQREFURS4gIChO b3RlIHRoaXMgY2FuIGNoYW5nZSBpbnRyYS1zdGF0ZW1lbnQsIGZvcgogICogY2FzZXMgbGlrZSBJ TlNFUlQgT04gQ09ORkxJQ1QgVVBEQVRFLikKICAqCisgKiBwX2lzX2xldDogdHJ1ZSB0byBwcm9j ZXNzIGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMgbGlrZSBMRVQuCisgKgogICogcF93aW5kb3dkZWZz OiBsaXN0IG9mIFdpbmRvd0RlZnMgcmVwcmVzZW50aW5nIFdJTkRPVyBhbmQgT1ZFUiBjbGF1c2Vz LgogICogV2UgY29sbGVjdCB0aGVzZSB3aGlsZSB0cmFuc2Zvcm1pbmcgZXhwcmVzc2lvbnMgYW5k IHRoZW4gdHJhbnNmb3JtIHRoZW0KICAqIGFmdGVyd2FyZHMgKHNvIHRoYXQgYW55IHJlc2p1bmsg dGxpc3QgaXRlbXMgbmVlZGVkIGZvciB0aGUgc29ydC9ncm91cApAQCAtMTg0LDYgKzE4Niw3IEBA IHN0cnVjdCBQYXJzZVN0YXRlCiAJUmVsYXRpb24JcF90YXJnZXRfcmVsYXRpb247CS8qIElOU0VS VC9VUERBVEUvREVMRVRFIHRhcmdldCByZWwgKi8KIAlSYW5nZVRibEVudHJ5ICpwX3RhcmdldF9y YW5nZXRibGVudHJ5OwkvKiB0YXJnZXQgcmVsJ3MgUlRFICovCiAJYm9vbAkJcF9pc19pbnNlcnQ7 CS8qIHByb2Nlc3MgYXNzaWdubWVudCBsaWtlIElOU0VSVCBub3QgVVBEQVRFICovCisJYm9vbAkJ cF9pc19sZXQ7CQkvKiBwcm9jZXNzIGFzc2lnbm1lbnQgTEVUIHN0bXQgKi8KIAlMaXN0CSAgICpw X3dpbmRvd2RlZnM7CS8qIHJhdyByZXByZXNlbnRhdGlvbnMgb2Ygd2luZG93IGNsYXVzZXMgKi8K IAlQYXJzZUV4cHJLaW5kIHBfZXhwcl9raW5kOwkvKiB3aGF0IGtpbmQgb2YgZXhwcmVzc2lvbiB3 ZSdyZSBwYXJzaW5nICovCiAJaW50CQkJcF9uZXh0X3Jlc25vOwkvKiBuZXh0IHRhcmdldGxpc3Qg cmVzbm8gdG8gYXNzaWduICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf cmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oCmluZGV4IGI5 NzkyYWNkYWUuLmM4OTQxNDdkMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oCkBA IC0xMjksNCArMTI5LDEwIEBAIGV4dGVybiBPaWQJYXR0bnVtVHlwZUlkKFJlbGF0aW9uIHJkLCBp bnQgYXR0aWQpOwogZXh0ZXJuIE9pZAlhdHRudW1Db2xsYXRpb25JZChSZWxhdGlvbiByZCwgaW50 IGF0dGlkKTsKIGV4dGVybiBib29sIGlzUXVlcnlVc2luZ1RlbXBSZWxhdGlvbihRdWVyeSAqcXVl cnkpOwogCitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZvclRhcmdldE9mU2NoZW1hVmFy aWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCSAgY2hhciAqZmllbGQxLCBjaGFyICpmaWVs ZDIsIGNoYXIgKmZpZWxkMywKKwkJCQkgIGludCBsb2NhdGlvbiwgY2hhciAqKmZpZWxkbmFtZSwg aW50ICpmaWVsZG5hbWVfcG9zLCBib29sIG5vZXJyb3IpOworCitleHRlcm4gTm9kZSAqdG9TY2hl bWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNoYXIgKm5zcG5hbWUsIGNoYXIgKnZhcm5h bWUsIGNoYXIgKmZpZWxkbmFtZSwgaW50IGxvY2F0aW9uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBB UlNFX1JFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90 YXJnZXQuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaAppbmRleCBlYzZlMGMx MDJmLi43MmViM2NkN2I2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFy Z2V0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCkBAIC00Myw0ICs0 MywxNiBAQCBleHRlcm4gVHVwbGVEZXNjIGV4cGFuZFJlY29yZFZhcmlhYmxlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgVmFyICp2YXIsCiBleHRlcm4gY2hhciAqRmlndXJlQ29sbmFtZShOb2RlICpub2Rl KTsKIGV4dGVybiBjaGFyICpGaWd1cmVJbmRleENvbG5hbWUoTm9kZSAqbm9kZSk7CiAKK2V4dGVy biBOb2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LAorCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdl dE5hbWUsCisJCQkJCQkJICAgYm9vbCB0YXJnZXRJc0FycmF5LAorCQkJCQkJCSAgIE9pZCB0YXJn ZXRUeXBlSWQsCisJCQkJCQkJICAgaW50MzIgdGFyZ2V0VHlwTW9kLAorCQkJCQkJCSAgIE9pZCB0 YXJnZXRDb2xsYXRpb24sCisJCQkJCQkJICAgTGlzdENlbGwgKmluZGlyZWN0aW9uLAorCQkJCQkJ CSAgIE5vZGUgKnJocywKKwkJCQkJCQkgICBpbnQgbG9jYXRpb24pOworCisKICNlbmRpZgkJCQkJ CQkvKiBQQVJTRV9UQVJHRVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNs LmggYi9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAppbmRleCBmNGQ0YmU4ZDBkLi5kMDczN2E5ZTRi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9hY2wuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFjbDsKICNk ZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVm aW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9B TExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJ QUJMRQkJKEFDTF9TRUxFQ1R8QUNMX1VQREFURSkKIAogLyogb3BlcmF0aW9uIGNvZGVzIGZvciBw Z18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYWIxZDNhYzY2ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKQEAgLTAsMCArMSw0NTYgQEAKK0NSRUFURSBWQVJJ QUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7 CitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxl KCd2YXIxJywgMzMzKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVs bDo6bnVtZXJpYyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAzMzMKKygxIHJvdykKKworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAzMzM6OmludGVnZXIpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzMworKDEgcm93KQorCitTRUxFQ1Qg c2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICczMzMuNTUnOjp0ZXh0KTsKKyBzZXRfc2NoZW1h X3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBn ZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisgZ2V0X3NjaGVtYV92 YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzMzMuNTUKKygx IHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjppbnQpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgMzM0CisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg bnVsbDo6dGV4dCk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIDMzMy41NQorKDEgcm93KQorCistLSBhY2Nlc3MgcmlnaHRzIHRlc3QKK0NSRUFURSBST0xF IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRv IGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRUxF Q1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworRVJST1I6ICBw ZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERF RkFVTFQ7CitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1Qgc2V0 X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0gc2hvdWxkIHRvIHdvcmsKK1NF TEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisgZ2V0X3Nj aGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzMzMu NTUKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFVQREFURSBPTiBWQVJJ QUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwor LS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEw MDAnOjp0ZXh0KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6 bnVtZXJpYyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgIDEwMDAKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK1JF Vk9LRSBBTEwgT04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFS SUFCTEUgdmFyIEFTIGludGVnZXI7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgncHVibGlj LnZhcicsIDEyMzQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIHB1YmxpYy52YXI7CisgdmFyICAKKy0tLS0tLQorIDEy MzQKKygxIHJvdykKKworRE8gJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAncHVibGljLnZhciBp cyA9ICUnLCBwdWJsaWMudmFyOworRU5EOworJCQ7CitOT1RJQ0U6ICBwdWJsaWMudmFyIGlzID0g MTIzNAorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGlu dCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklUWSBE RUZJTkVSOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0t CisgICAgICAgMTIzNAorKDEgcm93KQorCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0g c2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMudmFyOworRVJST1I6ICBwZXJtaXNzaW9uIGRl bmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcgorLS0gc2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qg c2VjdXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAxMjM0Ciso MSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnKHYpIFdIRVJFIHYgPSB2 YXI7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBT Y2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgIE91dHB1dDogdgorICAgRnVu Y3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkKKyAgIEZpbHRlcjogKGcudiA9IHZh cikKKyg0IHJvd3MpCisKK0NSRUFURSBWSUVXIHNjaGVtYV92YXJfdmlldyBBUyBTRUxFQ1QgdmFy OworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyICAKKy0tLS0tLQorIDEyMzQK KygxIHJvdykKKworXGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBi ZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyIAorLS0tLS0KKyAg ICAKKygxIHJvdykKKworTEVUIHZhcjEgPSBwaSgpOworU0VMRUNUIHZhcjE7CisgICAgICAgdmFy MSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5NzkKKygxIHJvdykK KworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExldCBvbiBwdWJsaWMu dmFyMQorICAgLT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiAzLjE0MTU5MjY1MzU4OTc5Ciso MyByb3dzKQorCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZhcl9wcChpbnQsIG51 bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1 Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZhcjEgICAgCistLS0tLS0tLS0tLQorIDEwMS4yMzQ1Ngor KDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CitDUkVBVEUgT1IgUkVQTEFD RSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBwdWJs aWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0t LQorICAgMQorKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAyCiso MSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDMKKygxIHJvdykKKwor U0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKyBpbmMgCistLS0tLQor ICAgNAorICAgNQorICAgNgorICAgNworICAgOAorICAgOQorICAxMAorICAxMQorICAxMgorICAx MworKDEwIHJvd3MpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8g ZmFpbAorTEVUIHZhcjMgPSAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHZhcmlhYmxlIHZhcjMKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZJRVcgc2NoZW1hX3Zh cl92aWV3OworRFJPUCBWQVJJQUJMRSB2YXIgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMSBD QVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CistLSBjb21wb3NpdGUgdmFyaWFi bGVzCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIp KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMg KHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIpKTsKK1xkIHYxCitzY2hlbWEgdmFyaWFibGUg InB1YmxpYy52MSIKKyBDb2x1bW4gfCAgICAgVHlwZSAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgeCAgICAgIHwgaW50ZWdlcgorIHkgICAgICB8IGludGVnZXIKKyB6ICAgICAgfCBu dW1lcmljKDEwLDIpCisKK1xkIHYyCitzY2hlbWEgdmFyaWFibGUgInB1YmxpYy52MiIKKyBDb2x1 bW4gfCAgICAgVHlwZSAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgeCAgICAgIHwg aW50ZWdlcgorIHkgICAgICB8IGludGVnZXIKKyB6ICAgICAgfCBudW1lcmljKDEwLDIpCisKKy0t IGV4cGxpY2l0IGNhc3RpbmcgaXMgbmVjZXNzYXJ5CitMRVQgdjEgPSAoMSwyLDMuMTQpOjpzdl94 eXo7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk6OnYyOworLS0gc2hvdWxkIHRvIHdvcmsgdG9v IC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOjp2MTsKK1NF TEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiwzLjE0KQorKDEgcm93 KQorCitTRUxFQ1QgdjI7CisgICAgICB2MiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorICgxMCwy MCwzMS40MCkKKygxIHJvdykKKworU0VMRUNUICh2MSkuKjsKKyB4IHwgeSB8ICB6ICAgCistLS0r LS0tKy0tLS0tLQorIDEgfCAyIHwgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgKHYyKS4qOworIHgg IHwgeSAgfCAgIHogICAKKy0tLS0rLS0tLSstLS0tLS0tCisgMTAgfCAyMCB8IDMxLjQwCisoMSBy b3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgbnVsbDo6ZG91Ymxl IHByZWNpc2lvbik7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFy aWFibGUoJ3YyJywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMzEuNAorKDEg cm93KQorCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Yx JywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK0VSUk9SOiAgdGhlIHZhcmlhYmxlICJ2 MSIgaGFzIG5vdCBmaWVsZCAidyIKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MicsICd3 JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CitFUlJPUjogIHRoZSB2YXJpYWJsZSAidjIiIGhh cyBub3QgZmllbGQgInciCitDUkVBVEUgVkFSSUFCTEUgdjMgQVMgaW50ZWdlcjsKK1NFTEVDVCBn ZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MycsICd3JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CitF UlJPUjogIHRoZSB2YXJpYWJsZSAidjMiIGlzIG5vdCBvZiByb3cgdHlwZQorU0VMRUNUIHNldF9z Y2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCAzLjE0ICogMik7Cisgc2V0X3NjaGVtYV92YXJpYWJs ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgdjE7CisgICAg IHYxICAgICAKKy0tLS0tLS0tLS0tLQorICgxLDIsNi4yOCkKKygxIHJvdykKKworU0VMRUNUIHNl dF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBz ZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCB2MTsKKyAgIHYxICAgCistLS0tLS0tLQorICgxLDIsKQorKDEgcm93KQorCitTRUxF Q1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIDMuMzMzMzo6ZG91YmxlIHByZWNpc2lv bik7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneCcsIDEwMDAwLjIyKTsK KyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCB2MTsKKyAgICAgICB2MSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAoMTAw MDAsMiwzLjMzKQorKDEgcm93KQorCitTRUxFQ1QgdjEueCArIHYxLno7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgMTAwMDMuMzMKKygxIHJvdykKKworU0VMRUNUIHYyLnggKyB2Mi56OworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSByb3cpCisKKy0tIGFjY2VzcyB0byBj b21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgdjIueDsKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2MgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RS T1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworRFJPUCBWQVJJQUJMRSB2MzsKK0RS T1AgUk9MRSB2YXJfdGVzdF9yb2xlOworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90IGJl IGluIGNvbmZsaWN0IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklBQkxFIHZhcngg QVMgdGV4dDsKK1NFTEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4IFdIRVJFIHZh cngucmVsbmFtZSA9ICdwZ19jbGFzcyc7CisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdfY2xh c3MKKygxIHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKK0VSUk9S OiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInZhcngiCitMSU5FIDE6IFNF TEVDVCB2YXJ4Lnh4eDsKKyAgICAgICAgICAgICAgIF4KKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBk YXRlZCB1bmRlciBSTyB0cmFuc2FjdGlvbgorQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBP TkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOworU0VMRUNUIHZhcng7CisgdmFyeCAg CistLS0tLS0tCisgaGVsbG8KKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworQ1JFQVRF IFZBUklBQkxFIHYxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworTEVUIHYxID0gKDEs IHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworICAgICAgICAgICAgIHYxICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDMuMTQxNTkyNjUzNTg5NzksaGVs bG8pCisoMSByb3cpCisKK0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKyAgICAgICAg djEgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLGhlbGxvKQorKDEg cm93KQorCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90 IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uICJ4IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1 Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB2MQorRFJPUCBWQVJJQUJMRSB2MTsKKy0tIGFycmF5cyBh cmUgc3VwcG9ydGVkCitDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEg PSBBUlJBWVsxLjEsMi4xXTsKK0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsKKyAgICB2 YTEgICAgIAorLS0tLS0tLS0tLS0tCisgezEwLjEsMi4xfQorKDEgcm93KQorCitDUkVBVEUgVkFS SUFCTEUgdmEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0xFVCB2YTIgPSAoMTAuMSwg QVJSQVlbMC4wLCAwLjBdKTsKK0xFVCB2YTIuYSA9IDEwLjI7CitTRUxFQ1QgdmEyOworICAgICAg ICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEwLjIsInswLjAsMC4wfSIp CisoMSByb3cpCisKK0xFVCB2YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1QgdmEyOworICAgICAgICAg dmEyICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAuMiwiezEwLjMsMC4wfSIp CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJMRSB2YTI7CistLSBk ZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgp OworTEVUIHYxID0gdjEgKiAyOworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0KKyA2LjI4MzE4NTMwNzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBWQVJJ QUJMRSB2MiBBUyAoYSBudW1lcmljLCBiIHRleHQgREVGQVVMVCAnaGVsbG8nKTsKK0xFVCBwdWJs aWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisgICAgICAgICAgICB2MiAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMy4xNDE1OTI2NTM1ODk3OSxoZWxsbykKKygx IHJvdykKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCBhZDk0MzRmYjg3Li4zM2ZlN2VlNDc2IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBzZWxlY3Rfdmll d3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9w cyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0cmFuc2llbnRs eSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBncm91cCB0byBh dCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBn c3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0X29pZCBjb252 ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSByb3d0eXBl cyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNoZSBsaW1pdCBw bHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0X29pZCBj b252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSByb3d0 eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2NoZW1hX3ZhcmlhYmxlcwogCiAj IC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Nl cmlhbF9zY2hlZHVsZQppbmRleCAyN2NkNDk4NDVlLi4yMmM0Y2FjN2NlIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nl cmlhbF9zY2hlZHVsZQpAQCAtMTg3LDMgKzE4Nyw0IEBAIHRlc3Q6IGhhc2hfcGFydAogdGVzdDog aW5kZXhpbmcKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IHN0YXRzCit0ZXN0OiBzY2hlbWFf dmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFi bGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI3YmJkMWZkYzMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNxbApAQCAtMCww ICsxLDI1MSBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1Q IFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOworCist LSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsK K1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgMzMzKTsKK1NFTEVDVCBnZXRfc2No ZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFTEVDVCBzZXRfc2NoZW1h X3ZhcmlhYmxlKCd2YXIxJywgMzMzOjppbnRlZ2VyKTsKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxl KCd2YXIxJywgJzMzMy41NSc6OnRleHQpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCBudWxsOjpudW1lcmljKTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg bnVsbDo6aW50KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6dGV4 dCk7CisKKy0tIGFjY2VzcyByaWdodHMgdGVzdAorCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xl OworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VM RUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworU0VMRUNUIGdl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VUIFJPTEUgVE8g REVGQVVMVDsKKworR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9s ZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxF Q1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CistLSBzaG91bGQg dG8gd29yaworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmlj KTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworR1JBTlQgVVBEQVRFIE9OIFZBUklBQkxFIHZh cjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0g c2hvdWxkIHRvIHdvcmsKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAn Ojp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK1JFVk9LRSBBTEwgT04gVkFSSUFCTEUgdmFy MSBGUk9NIHZhcl90ZXN0X3JvbGU7CisKK0NSRUFURSBWQVJJQUJMRSB2YXIgQVMgaW50ZWdlcjsK KworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3B1YmxpYy52YXInLCAxMjM0KTsKKworU0VM RUNUIHB1YmxpYy52YXI7CisKK0RPICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3B1YmxpYy52 YXIgaXMgPSAlJywgcHVibGljLnZhcjsKK0VORDsKKyQkOworCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMu dmFyOworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CisKK1NFTEVDVCBzZWN1cmVf dmFyKCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWls CitTRUxFQ1QgcHVibGljLnZhcjsKKworLS0gc2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qgc2VjdXJl X3ZhcigpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnKHYpIFdIRVJFIHYg PSB2YXI7CisKK0NSRUFURSBWSUVXIHNjaGVtYV92YXJfdmlldyBBUyBTRUxFQ1QgdmFyOworCitT RUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKworXGMgLQorCistLSBzaG91bGQgdG8gd29y ayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJf dmlldzsKKworTEVUIHZhcjEgPSBwaSgpOworCitTRUxFQ1QgdmFyMTsKKworLS0gd2UgY2FuIGxv b2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgTEVUIHZh cjEgPSBwaSgpOworCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZhcl9wcChpbnQs IG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKKworRVhFQ1VURSB2YXJfcHAoMTAwLCAx LjIzNDU2KTsKKworU0VMRUNUIHZhcjE7CisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsK KworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaW5jKGludCkKK1JFVFVSTlMgaW50IEFTICQk CitCRUdJTgorICBMRVQgcHVibGljLnZhcjMgPSBDT0FMRVNDRShwdWJsaWMudmFyMyArICQxLCAk MSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNU IGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5jKDEpOworCitTRUxFQ1QgaW5jKDEp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OworCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMgPSAwOworCitTRVQgUk9MRSBUTyBERUZB VUxUOworCitEUk9QIFZJRVcgc2NoZW1hX3Zhcl92aWV3OworCitEUk9QIFZBUklBQkxFIHZhciBD QVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMg Q0FTQ0FERTsKKworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworCitDUkVBVEUgVFlQRSBzdl94eXog QVMgKHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIpKTsKKworQ1JFQVRFIFZBUklBQkxFIHYx IEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVy aWMoMTAsMikpOworCitcZCB2MQorXGQgdjIKKworLS0gZXhwbGljaXQgY2FzdGluZyBpcyBuZWNl c3NhcnkKK0xFVCB2MSA9ICgxLDIsMy4xNCk6OnN2X3h5ejsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0 KjEwKTo6djI7CisKKy0tIHNob3VsZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBj YXN0cworTEVUIHYxID0gKDEsMiwzLjE0KTo6djE7CisKK1NFTEVDVCB2MTsKK1NFTEVDVCB2MjsK K1NFTEVDVCAodjEpLio7CitTRUxFQ1QgKHYyKS4qOworCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJp YWJsZSgndjEnLCAneicsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworU0VMRUNUIGdldF9zY2hl bWFfdmFyaWFibGUoJ3YyJywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKworLS0gc2hv dWxkIHRvIGZhaWwKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd3JywgbnVsbDo6 ZG91YmxlIHByZWNpc2lvbik7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndjInLCAndycs IG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworCitDUkVBVEUgVkFSSUFCTEUgdjMgQVMgaW50ZWdl cjsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MycsICd3JywgbnVsbDo6ZG91YmxlIHBy ZWNpc2lvbik7CisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgMy4xNCAq IDIpOworU0VMRUNUIHYxOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCBu dWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK1NFTEVDVCB2MTsKK1NFTEVDVCBzZXRfc2NoZW1hX3Zh cmlhYmxlKCd2MScsICd6JywgMy4zMzMzOjpkb3VibGUgcHJlY2lzaW9uKTsKK1NFTEVDVCBzZXRf c2NoZW1hX3ZhcmlhYmxlKCd2MScsICd4JywgMTAwMDAuMjIpOworU0VMRUNUIHYxOworCitTRUxF Q1QgdjEueCArIHYxLno7CitTRUxFQ1QgdjIueCArIHYyLno7CisKKy0tIGFjY2VzcyB0byBjb21w b3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFTEVDVCB2Mi54OworCitTRVQgUk9MRSBUTyBERUZB VUxUOworCisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworRFJPUCBWQVJJ QUJMRSB2MzsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJpYWJs ZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NSRUFU RSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xh c3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHZhcngueHh4OworCisKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBkYXRlZCB1 bmRlciBSTyB0cmFuc2FjdGlvbgorCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7 CitMRVQgdmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CisKK1NFTEVDVCB2YXJ4OworCitEUk9QIFZB UklBQkxFIHZhcng7CisKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywg YyB0ZXh0KTsKK0xFVCB2MSA9ICgxLCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsKK0xFVCB2 MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54 ID0gMTA7CisKK0RST1AgVkFSSUFCTEUgdjE7CisKKy0tIGFycmF5cyBhcmUgc3VwcG9ydGVkCitD UkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEgPSBBUlJBWVsxLjEsMi4x XTsKK0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsKKworQ1JFQVRFIFZBUklBQkxFIHZh MiBBUyAoYSBudW1lcmljLCBiIG51bWVyaWNbXSk7CitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAu MCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VMRUNUIHZhMjsKK0xFVCB2YTIuYlsxXSA9 IDEwLjM7CitTRUxFQ1QgdmEyOworCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFSSUFCTEUg dmEyOworCistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMg REVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNUIHYxOworCitDUkVBVEUgVkFS SUFCTEUgdjIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0IERFRkFVTFQgJ2hlbGxvJyk7CitMRVQgcHVi bGljLnYyLmEgPSBwaSgpOworU0VMRUNUIHYyOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBW QVJJQUJMRSB2MjsKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkNDc2NWNlM2IwLi5i MDQwNGMyMWE1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAor KysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDIzLDYgKzQyMyw3IEBA IENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZAogQ3JlYXRlUm9sZVN0bXQKIENyZWF0ZVNjaGVtYVN0 bXQKIENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0CitDcmVhdGVTY2hlbWFWYXJTdG10CiBDcmVhdGVT ZXFTdG10CiBDcmVhdGVTdGF0c1N0bXQKIENyZWF0ZVN0bXQK --f40304388e6468033a0567db8e4d Content-Type: application/octet-stream; name="schema_variables.out" Content-Disposition: attachment; filename="schema_variables.out" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jezy0i341 Q1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFy MiBBUyB0ZXh0OwpEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7Ci0tIGZ1bmN0aW9uYWwgaW50ZXJm YWNlCkNSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7ClNFTEVDVCBzZXRfc2NoZW1hX3Zh cmlhYmxlKCd2YXIxJywgMzMzKTsKIHNldF9zY2hlbWFfdmFyaWFibGUgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLQogCigxIHJvdykKClNFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVs bDo6bnVtZXJpYyk7CiBnZXRfc2NoZW1hX3ZhcmlhYmxlIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAgICAgICAgICAgICAgICAzMzMKKDEgcm93KQoKU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUo J3ZhcjEnLCAzMzM6OmludGVnZXIpOwogc2V0X3NjaGVtYV92YXJpYWJsZSAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBu dWxsOjpudW1lcmljKTsKIGdldF9zY2hlbWFfdmFyaWFibGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAgICAgICAgICAgICAgIDMzMwooMSByb3cpCgpTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJs ZSgndmFyMScsICczMzMuNTUnOjp0ZXh0KTsKIHNldF9zY2hlbWFfdmFyaWFibGUgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLQogCigxIHJvdykKClNFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIx JywgbnVsbDo6bnVtZXJpYyk7CiBnZXRfc2NoZW1hX3ZhcmlhYmxlIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgICAzMzMuNTUKKDEgcm93KQoKU0VMRUNUIGdldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCBudWxsOjppbnQpOwogZ2V0X3NjaGVtYV92YXJpYWJsZSAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgMzM0CigxIHJvdykKClNFTEVDVCBnZXRfc2No ZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6dGV4dCk7CiBnZXRfc2NoZW1hX3ZhcmlhYmxlIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDMzMy41NQooMSByb3cpCgotLSBhY2Nlc3MgcmlnaHRzIHRl c3QKQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsK LS0gc2hvdWxkIHRvIGZhaWwKU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAw MCc6OnRleHQpOwpFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUg dmFyMQpTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwpF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQpTRVQgUk9M RSBUTyBERUZBVUxUOwpHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9y b2xlOwpTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwotLSBzaG91bGQgdG8gZmFpbApTRUxFQ1Qg c2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CkVSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCi0tIHNob3VsZCB0byB3b3JrClNF TEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CiBnZXRfc2No ZW1hX3ZhcmlhYmxlIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAzMzMuNTUK KDEgcm93KQoKU0VUIFJPTEUgVE8gREVGQVVMVDsKR1JBTlQgVVBEQVRFIE9OIFZBUklBQkxFIHZh cjEgVE8gdmFyX3Rlc3Rfcm9sZTsKU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKLS0gc2hvdWxk IHRvIHdvcmsKU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQp Owogc2V0X3NjaGVtYV92YXJpYWJsZSAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoK U0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKIGdldF9z Y2hlbWFfdmFyaWFibGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgMTAw MAooMSByb3cpCgpTRVQgUk9MRSBUTyBERUZBVUxUOwpSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZh cjEgRlJPTSB2YXJfdGVzdF9yb2xlOwpDUkVBVEUgVkFSSUFCTEUgdmFyIEFTIGludGVnZXI7ClNF TEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCdwdWJsaWMudmFyJywgMTIzNCk7CiBzZXRfc2NoZW1h X3ZhcmlhYmxlIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgcHVibGlj LnZhcjsKIHZhciAgCi0tLS0tLQogMTIzNAooMSByb3cpCgpETyAkJApCRUdJTgogIFJBSVNFIE5P VElDRSAncHVibGljLnZhciBpcyA9ICUnLCBwdWJsaWMudmFyOwpFTkQ7CiQkOwpOT1RJQ0U6ICBw dWJsaWMudmFyIGlzID0gMTIzNApDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFy KCkKUkVUVVJOUyBpbnQgQVMgJCQKICBTRUxFQ1QgcHVibGljLnZhcjsKJCQgTEFOR1VBR0Ugc3Fs IFNFQ1VSSVRZIERFRklORVI7ClNFTEVDVCBzZWN1cmVfdmFyKCk7CiBzZWN1cmVfdmFyIAotLS0t LS0tLS0tLS0KICAgICAgIDEyMzQKKDEgcm93KQoKU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsK LS0gc2hvdWxkIHRvIGZhaWwKU0VMRUNUIHB1YmxpYy52YXI7CkVSUk9SOiAgcGVybWlzc2lvbiBk ZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIKLS0gc2hvdWxkIHRvIHdvcms7ClNFTEVDVCBz ZWN1cmVfdmFyKCk7CiBzZWN1cmVfdmFyIAotLS0tLS0tLS0tLS0KICAgICAgIDEyMzQKKDEgcm93 KQoKU0VUIFJPTEUgVE8gREVGQVVMVDsKRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOwogICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogRnVuY3Rpb24gU2NhbiBvbiBwZ19j YXRhbG9nLmdlbmVyYXRlX3NlcmllcyBnCiAgIE91dHB1dDogdgogICBGdW5jdGlvbiBDYWxsOiBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQogICBGaWx0ZXI6IChnLnYgPSB2YXIpCig0IHJvd3MpCgpD UkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjsKU0VMRUNUICogRlJPTSBz Y2hlbWFfdmFyX3ZpZXc7CiB2YXIgIAotLS0tLS0KIDEyMzQKKDEgcm93KQoKXGMgLQotLSBzaG91 bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5ClNFTEVDVCAqIEZST00gc2No ZW1hX3Zhcl92aWV3OwogdmFyIAotLS0tLQogICAgCigxIHJvdykKCkxFVCB2YXIxID0gcGkoKTsK U0VMRUNUIHZhcjE7CiAgICAgICB2YXIxICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0KIDMuMTQx NTkyNjUzNTg5NzkKKDEgcm93KQoKLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CiAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog TGV0IG9uIHB1YmxpYy52YXIxCiAgIC0+ICBSZXN1bHQKICAgICAgICAgT3V0cHV0OiAzLjE0MTU5 MjY1MzU4OTc5CigzIHJvd3MpCgotLSBMRVQgY2FuIGJlIHByZXBhcmVkClBSRVBBUkUgdmFyX3Bw KGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOwpFWEVDVVRFIHZhcl9wcCgxMDAs IDEuMjM0NTYpOwpTRUxFQ1QgdmFyMTsKICAgdmFyMSAgICAKLS0tLS0tLS0tLS0KIDEwMS4yMzQ1 NgooMSByb3cpCgpDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CkNSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGluYyhpbnQpClJFVFVSTlMgaW50IEFTICQkCkJFR0lOCiAgTEVUIHB1YmxpYy52 YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOwogIFJFVFVSTiB2YXIzOwpFTkQ7 CiQkIExBTkdVQUdFIHBscGdzcWw7ClNFTEVDVCBpbmMoMSk7CiBpbmMgCi0tLS0tCiAgIDEKKDEg cm93KQoKU0VMRUNUIGluYygxKTsKIGluYyAKLS0tLS0KICAgMgooMSByb3cpCgpTRUxFQ1QgaW5j KDEpOwogaW5jIAotLS0tLQogICAzCigxIHJvdykKClNFTEVDVCBpbmMoMSkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMCk7CiBpbmMgCi0tLS0tCiAgIDQKICAgNQogICA2CiAgIDcKICAgOAogICA5 CiAgMTAKICAxMQogIDEyCiAgMTMKKDEwIHJvd3MpCgpTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OwotLSBzaG91bGQgdG8gZmFpbApMRVQgdmFyMyA9IDA7CkVSUk9SOiAgcGVybWlzc2lvbiBkZW5p ZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIzClNFVCBST0xFIFRPIERFRkFVTFQ7CkRST1AgVklF VyBzY2hlbWFfdmFyX3ZpZXc7CkRST1AgVkFSSUFCTEUgdmFyIENBU0NBREU7CkRST1AgVkFSSUFC TEUgdmFyMSBDQVNDQURFOwpEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKLS0gY29tcG9zaXRl IHZhcmlhYmxlcwpDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmlj KDEwLDIpKTsKQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKQ1JFQVRFIFZBUklBQkxFIHYy IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7ClxkIHYxCnNjaGVtYSB2YXJpYWJs ZSAicHVibGljLnYxIgogQ29sdW1uIHwgICAgIFR5cGUgICAgICAKLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCiB4ICAgICAgfCBpbnRlZ2VyCiB5ICAgICAgfCBpbnRlZ2VyCiB6ICAgICAgfCBudW1l cmljKDEwLDIpCgpcZCB2MgpzY2hlbWEgdmFyaWFibGUgInB1YmxpYy52MiIKIENvbHVtbiB8ICAg ICBUeXBlICAgICAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQogeCAgICAgIHwgaW50ZWdlcgog eSAgICAgIHwgaW50ZWdlcgogeiAgICAgIHwgbnVtZXJpYygxMCwyKQoKLS0gZXhwbGljaXQgY2Fz dGluZyBpcyBuZWNlc3NhcnkKTEVUIHYxID0gKDEsMiwzLjE0KTo6c3ZfeHl6OwpMRVQgdjIgPSAo MTAsMjAsMy4xNCoxMCk6OnYyOwotLSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJl cGFyZWQgY2FzdHMKTEVUIHYxID0gKDEsMiwzLjE0KTo6djE7ClNFTEVDVCB2MTsKICAgICB2MSAg ICAgCi0tLS0tLS0tLS0tLQogKDEsMiwzLjE0KQooMSByb3cpCgpTRUxFQ1QgdjI7CiAgICAgIHYy ICAgICAgIAotLS0tLS0tLS0tLS0tLS0KICgxMCwyMCwzMS40MCkKKDEgcm93KQoKU0VMRUNUICh2 MSkuKjsKIHggfCB5IHwgIHogICAKLS0tKy0tLSstLS0tLS0KIDEgfCAyIHwgMy4xNAooMSByb3cp CgpTRUxFQ1QgKHYyKS4qOwogeCAgfCB5ICB8ICAgeiAgIAotLS0tKy0tLS0rLS0tLS0tLQogMTAg fCAyMCB8IDMxLjQwCigxIHJvdykKClNFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6 JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CiBnZXRfc2NoZW1hX3ZhcmlhYmxlIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgIDMuMTQKKDEgcm93KQoKU0VMRUNUIGdldF9z Y2hlbWFfdmFyaWFibGUoJ3YyJywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKIGdldF9z Y2hlbWFfdmFyaWFibGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgMzEu NAooMSByb3cpCgotLSBzaG91bGQgdG8gZmFpbApTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgn djEnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOwpFUlJPUjogIHRoZSB2YXJpYWJsZSAi djEiIGhhcyBub3QgZmllbGQgInciClNFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MicsICd3 JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CkVSUk9SOiAgdGhlIHZhcmlhYmxlICJ2MiIgaGFz IG5vdCBmaWVsZCAidyIKQ1JFQVRFIFZBUklBQkxFIHYzIEFTIGludGVnZXI7ClNFTEVDVCBnZXRf c2NoZW1hX3ZhcmlhYmxlKCd2MycsICd3JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CkVSUk9S OiAgdGhlIHZhcmlhYmxlICJ2MyIgaXMgbm90IG9mIHJvdyB0eXBlClNFTEVDVCBzZXRfc2NoZW1h X3ZhcmlhYmxlKCd2MScsICd6JywgMy4xNCAqIDIpOwogc2V0X3NjaGVtYV92YXJpYWJsZSAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIHYxOwogICAgIHYxICAgICAKLS0t LS0tLS0tLS0tCiAoMSwyLDYuMjgpCigxIHJvdykKClNFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxl KCd2MScsICd6JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CiBzZXRfc2NoZW1hX3ZhcmlhYmxl IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgdjE7CiAgIHYxICAgCi0t LS0tLS0tCiAoMSwyLCkKKDEgcm93KQoKU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywg J3onLCAzLjMzMzM6OmRvdWJsZSBwcmVjaXNpb24pOwogc2V0X3NjaGVtYV92YXJpYWJsZSAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUo J3YxJywgJ3gnLCAxMDAwMC4yMik7CiBzZXRfc2NoZW1hX3ZhcmlhYmxlIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgdjE7CiAgICAgICB2MSAgICAgICAKLS0tLS0tLS0t LS0tLS0tLQogKDEwMDAwLDIsMy4zMykKKDEgcm93KQoKU0VMRUNUIHYxLnggKyB2MS56OwogP2Nv bHVtbj8gCi0tLS0tLS0tLS0KIDEwMDAzLjMzCigxIHJvdykKClNFTEVDVCB2Mi54ICsgdjIuejsK ID9jb2x1bW4/IAotLS0tLS0tLS0tCiAgICA0MS40MAooMSByb3cpCgotLSBhY2Nlc3MgdG8gY29t cG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KLS0gc2hvdWxkIHRvIGZhaWwKU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKU0VMRUNUIHYyLng7CkVSUk9SOiAgcGVybWlzc2lvbiBkZW5p ZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2MgpTRVQgUk9MRSBUTyBERUZBVUxUOwpEUk9QIFZBUklB QkxFIHYxOwpEUk9QIFZBUklBQkxFIHYyOwpEUk9QIFZBUklBQkxFIHYzOwpEUk9QIFJPTEUgdmFy X3Rlc3Rfcm9sZTsKLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90IGJlIGluIGNvbmZsaWN0 IHdpdGggcXVhbGlmaWVkIGNvbHVtbgpDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OwpTRUxF Q1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAn cGdfY2xhc3MnOwogcmVsbmFtZSAgCi0tLS0tLS0tLS0KIHBnX2NsYXNzCigxIHJvdykKCi0tIHNo b3VsZCB0byBmYWlsClNFTEVDVCB2YXJ4Lnh4eDsKRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNl IGVudHJ5IGZvciB0YWJsZSAidmFyeCIKTElORSAxOiBTRUxFQ1QgdmFyeC54eHg7CiAgICAgICAg ICAgICAgIF4KLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9u CkJFR0lOOwpTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZOwpMRVQgdmFyeCA9ICdoZWxsbyc7CkNP TU1JVDsKU0VMRUNUIHZhcng7CiB2YXJ4ICAKLS0tLS0tLQogaGVsbG8KKDEgcm93KQoKRFJPUCBW QVJJQUJMRSB2YXJ4OwpDUkVBVEUgVkFSSUFCTEUgdjEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMg dGV4dCk7CkxFVCB2MSA9ICgxLCBwaSgpLCAnaGVsbG8nKTsKU0VMRUNUIHYxOwogICAgICAgICAg ICAgdjEgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICgxLDMuMTQx NTkyNjUzNTg5NzksaGVsbG8pCigxIHJvdykKCkxFVCB2MS5iID0gMTAuMjIyMjsKU0VMRUNUIHYx OwogICAgICAgIHYxICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0KICgxLDEwLjIyMjIsaGVs bG8pCigxIHJvdykKCi0tIHNob3VsZCB0byBmYWlsCkxFVCB2MS54ID0gMTA7CkVSUk9SOiAgY2Fu bm90IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uICJ4IiBiZWNhdXNlIHRoZXJlIGlzIG5v IHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB2MQpEUk9QIFZBUklBQkxFIHYxOwotLSBhcnJheXMg YXJlIHN1cHBvcnRlZApDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKTEVUIHZhMSA9 IEFSUkFZWzEuMSwyLjFdOwpMRVQgdmExWzFdID0gMTAuMTsKU0VMRUNUIHZhMTsKICAgIHZhMSAg ICAgCi0tLS0tLS0tLS0tLQogezEwLjEsMi4xfQooMSByb3cpCgpDUkVBVEUgVkFSSUFCTEUgdmEy IEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAs IDAuMF0pOwpMRVQgdmEyLmEgPSAxMC4yOwpTRUxFQ1QgdmEyOwogICAgICAgIHZhMiAgICAgICAg IAotLS0tLS0tLS0tLS0tLS0tLS0tLQogKDEwLjIsInswLjAsMC4wfSIpCigxIHJvdykKCkxFVCB2 YTIuYlsxXSA9IDEwLjM7ClNFTEVDVCB2YTI7CiAgICAgICAgIHZhMiAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0KICgxMC4yLCJ7MTAuMywwLjB9IikKKDEgcm93KQoKRFJPUCBWQVJJQUJM RSB2YTE7CkRST1AgVkFSSUFCTEUgdmEyOwotLSBkZWZhdWx0IHZhbHVlcwpDUkVBVEUgVkFSSUFC TEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CkxFVCB2MSA9IHYxICogMjsKU0VMRUNUIHYx OwogICAgICAgIHYxICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tCiA2LjI4MzE4NTMwNzE3OTU4 CigxIHJvdykKCkNSRUFURSBWQVJJQUJMRSB2MiBBUyAoYSBudW1lcmljLCBiIHRleHQgREVGQVVM VCAnaGVsbG8nKTsKTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKU0VMRUNUIHYyOwogICAgICAgICAg ICB2MiAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKDMuMTQxNTkyNjUz NTg5NzksaGVsbG8pCigxIHJvdykKCkRST1AgVkFSSUFCTEUgdjE7CkRST1AgVkFSSUFCTEUgdjI7 Cg== --f40304388e6468033a0567db8e4d--