Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wh62M-00034R-0r for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 13:40:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wh62J-000kxo-36 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 13:40:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with utf8esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <44973863@qq.com>) id 1wh62I-000kxf-2P for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 13:40:32 +0000 Received: from xmbghk7.mail.qq.com ([43.163.128.53]) by makus.postgresql.org with utf8esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from <44973863@qq.com>) id 1wh62C-000000001tO-2sUE for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 13:40:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1783431612; bh=KnCyZwt8vDipNmZm6Pbg5sd6f9N3BakK7Y53Xb65v0A=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=dI0rR65NegkKr+zyWbHwTbd/cXXx9l/cUKlxlWoJg2DHXkwNmjKaw8x6UPtz6jbrx s/peUOB4VtOpanjP2Rc0BvzJk6e3udR8h5SV1679VfPs3SN6yiiW8FwkpSIWS7UHEB Puk0np8n3kU0tv9iatv6nI7dEPJLb8brtsFWVJas= X-QQ-XMRINFO: Mp0Kj//9VHAxzExpfF+O8yhSrljjwrznVg== X-QQ-XMAILINFO: MyX6PgDjS+FsrFaLw4aHZcgnsfhXqRyducPWDvJC4y0M3H1t8pLI5FrAW0Glv7 L+kTWPv6L2S6kFrJZdw1jUMR5USFTQ7enhIS4x9spsqH2/cHvzUq1O81w43M0/If3D5IK+9MN1uDA /T0OHJVlxpw3v1jWYlRefvqh0eK3puEtzJGIh78X272KDIlS3jv6NOr7uqMZw8rwX9l5/HZPoGOUR +vIWFIlHeUIiuNzfP0lO39zHnTScFVWiUqZZdfTwCnk2uJf6Z6duiefig9z2gCtjRXr7QkAVzkjWq 8yD45CoTY+EptPmCi3j+YhKvC4vBm7pUK6mbIqC3qo72wJ0ABr1YlDYxYNpBdjKxRfW1MDBWvUPt7 aYOvq2MHhBgz6yaVsMmpJlGtcgUAjjdXhSwz+GehlUEm8cczxXb8iP/u2gjway5Q6AqJ3RH+8/aM5 TbL+OsOLKEWttlwPBqW1F17yZ2cJGodxlcqe82LDZF0Yu5gU3FQEhyqMHKGKrFfyIbB29ANEXQ1pT 9knY0UNe3TohMbEfCfJDtIBlWIBv/pUUpOHpX1cmlL5EiZu7JsqiMePEngUJtsoNW7rVKxsKtph7A UovbYYJGokZUOvUUjveGVK32xT7eT0kSEFQ/wmvau1QvZ/hOCevOkCBBfaotmI4F+EYsWgBW7iSA0 q+uN2CSWm2g0sltCYgSZZYEDBGEelsSVtKOf2WYY6lpEn5lr9K8h+W7NOMTmAFdZwmUEE2GFYqNhE 1iCgixajbQ2DMkm20ai/YYNYfmYkWI+/ufK3BCv8c2EsXaICJzh7kRWz7rYREt/b7TtshGmhUPyTw fba/QRtKakCb8IYPMc43e5PcubBfKvi+mZoTnGy9ogcnaWK6WNs13Io+HXF8M+gT/knYNU6Wmq1VN cOgkzOVE7tPNgtnH8I+2QmLofm6ny9cehcQWn0PgNDVqXJNx/+vSZ6cV4B9r1Vom80GFfh+gnZcBO d74Wpzn7sgasxWsfOtgXMJqqAhAwdLGXRlTlCRXD8/OV/gfsSgkuk1vLZPs5bew3qtDrzabS9W3Cy TEtFmDeBXrFRrP2u9M0rasrEkL3WhLQ6tjy2oEM+GcxM5664qKY6ViA4VEHIUI1d5iMuYnnRcEPKC n5ptrMwDJzLFQkXauwnhLZGpaknrhOfyJ6HhmEenHe1KPnD2XFi0t/kPrtOmv1ej2dg9ncl508Eor JkCiSSaEvnaHXIFYCFP0/sSzTZcW7Tq2Q== From: "=?utf-8?B?Wml6aHVhbkxpdSBYLU1BTg==?=" <44973863@qq.com> To: "=?utf-8?B?amlhbiBoZQ==?=" , "=?utf-8?B?UGV0ZXIgRWlzZW50cmF1dA==?=" , "=?utf-8?B?cGdzcWwtaGFja2Vycw==?=" Cc: "=?utf-8?B?Q29yZXkgSHVpbmtlcg==?=" , "=?utf-8?B?VG9tIExhbmU=?=" , "=?utf-8?B?Y2hlbmdwZW5nX3lhbg==?=" , "=?utf-8?B?Z3VvZmVuZ2xpbnV4?=" , "=?utf-8?B?5oiR6Ieq5bex55qE6YKu566x?=" <44973863@qq.com> Subject: Re: support create index on virtual generated column. Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_6A4D01BA_E0C967E0_16568690" Content-Transfer-Encoding: 8Bit Date: Tue, 7 Jul 2026 21:40:10 +0800 X-Priority: 3 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <1178617.1753217685@sss.pgh.pa.us> In-Reply-To: X-QQ-mid: xmsezb43-0t1783431610t24vvvgfx List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. ------=_NextPart_6A4D01BA_E0C967E0_16568690 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgZXZlcnlvbmUsCgpUaGlzIGlzIHRoZSBWNCBwYXRjaC4gT24gdG9wIG9mIHByaW9yIHJl dmlzaW9ucywgSSd2ZSByZXZpc2VkIGdlbmVyYXRlZF92aXJ0dWFsLnNxbAp0b2dldGhlciB3 aXRoIGl0cyBtYXRjaGluZyBvdXRwdXQgZmlsZSBnZW5lcmF0ZWRfdmlydHVhbC5vdXQuCgpU aGUgbW9kaWZpY2F0aW9ucyB0YXJnZXQgaW5kZXggY29uc3RyYWludHMsIHJlZ3VsYXIgaW5k ZXhlcywgYW5kIGZvcmVpZ24ga2V5cy4KCkkgaGF2ZSB1bmNvbW1lbnRlZCB0aGUgZXhpc3Rp bmcgdGVzdCBTUUwgZm9yIHRoZXNlIG1vZHVsZXMgYW5kIGFkZGVkIGEgZmV3CmV4dHJhIHRl c3QgY2FzZXMuICBBbGwgdGVzdHMgYXJlIHBhc3Npbmcgc3VjY2Vzc2Z1bGx5LgoKcmVnYXJk cywKLS0KWml6aHVhbkxpdcKgKFgtTUFOKcKgCjQ0OTczODYzQHFxLmNvbQoK ------=_NextPart_6A4D01BA_E0C967E0_16568690 Content-Type: application/octet-stream; charset="utf-8"; name="v4-0001-enhance-index-support-for-virtual-generated-colum.patch" Content-Disposition: attachment; filename="v4-0001-enhance-index-support-for-virtual-generated-colum.patch" Content-Transfer-Encoding: base64 RnJvbSAxMDgxMGY1ZWQyNTEzMjU0ZjU2ZjBmMWQ2N2NkNzM5ZDMxNmJjMTg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBaaXpodWFuIExpdSA8NDQ5NzM4NjNAcXEuY29tPgpE YXRlOiBUdWUsIDcgSnVsIDIwMjYgMjE6MjQ6MTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 XSBlbmhhbmNlLWluZGV4LXN1cHBvcnQtZm9yLXZpcnR1YWwtZ2VuZXJhdGVkLWNvbHVtbnMK Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDIwICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgICAgICAgICAgICAg fCAgIDYgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAg IHwgIDYxICsrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMgICAgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAg ICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAg ICAgICAgICAgIHwgIDQyICsrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGlu Zy5jICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2luZHhwYXRoLmMgICAgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9zZWxmdW5jcy5jICAgICAgICAgICAgICB8ICAyMSArLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgMTI2ICsrKysrKysrKysKIHNyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgICB8ICAgNCArCiAuLi4v cmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAyMzQgKysrKysr KysrKysrKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5z cWwgICAgfCAgODggKysrKy0tLQogMjEgZmlsZXMgY2hhbmdlZCwgNTY1IGluc2VydGlvbnMo KyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCAyMjY4Y2MyNy4uMjJlMDc2MmUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCURh dHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhf S0VZU107CiAJZG91YmxlCQlyZWx0dXBsZXM7Ci0JRXhwclN0YXRlICAqcHJlZGljYXRlOwor CUV4cHJTdGF0ZSAgKnByZWRpY2F0ZUV4cGFuZDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK IAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlFeHByQ29udGV4dCAqZWNvbnRleHQ7CkBAIC0xMjAw LDcgKzEyMDAsNyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAogCS8q IFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXBy ZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0 YXRlKTsKKwlwcmVkaWNhdGVFeHBhbmQgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5p aV9QcmVkaWNhdGVFeHBhbmQsIGVzdGF0ZSk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNj YW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2Ug dXNlCkBAIC0xNjA3LDkgKzE2MDcsOSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAqIEluIGEgcGFydGlhbCBpbmRleCwgZGlz Y2FyZCB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5IHRoZQogCQkgKiBwcmVkaWNhdGUuCiAJ CSAqLwotCQlpZiAocHJlZGljYXRlICE9IE5VTEwpCisJCWlmIChwcmVkaWNhdGVFeHBhbmQg IT0gTlVMTCkKIAkJewotCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkK KwkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlRXhwYW5kLCBlY29udGV4dCkpCiAJCQkJY29u dGludWU7CiAJCX0KIApAQCAtMTcwOSw3ICsxNzA5LDkgQEAgaGVhcGFtX2luZGV4X2J1aWxk X3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiAJLyogVGhlc2UgbWF5IGhh dmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZv LT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCWluZGV4SW5mby0+aWlfRXhwcmVzc2lv bnNFeHBhbmRTdGF0ZSA9IE5JTDsKIAlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0g TlVMTDsKKwlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZFN0YXRlID0gTlVMTDsKIAog CXJldHVybiByZWx0dXBsZXM7CiB9CkBAIC0xNzI2LDcgKzE3MjgsNyBAQCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJSGVhcFR1cGxlCWhl YXBUdXBsZTsKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlpc251 bGxbSU5ERVhfTUFYX0tFWVNdOwotCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZTsKKwlFeHByU3Rh dGUgICpwcmVkaWNhdGVFeHBhbmQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJRVN0YXRl CSAgICplc3RhdGU7CiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwpAQCAtMTc1OCw3ICsxNzYw LDcgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKIAkvKiBTZXQgdXAgZXhl Y3V0aW9uIHN0YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBF eGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJcHJl ZGljYXRlRXhwYW5kID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRl RXhwYW5kLCBlc3RhdGUpOwogCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBi YXNlIHJlbGF0aW9uLiAgV2UgbmVlZCBqdXN0IHRob3NlIHR1cGxlcwpAQCAtMTg5NSw5ICsx ODk3LDkgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRv bid0IHNhdGlzZnkgdGhlCiAJCQkgKiBwcmVkaWNhdGUuCiAJCQkgKi8KLQkJCWlmIChwcmVk aWNhdGUgIT0gTlVMTCkKKwkJCWlmIChwcmVkaWNhdGVFeHBhbmQgIT0gTlVMTCkKIAkJCXsK LQkJCQlpZiAoIUV4ZWNRdWFsKHByZWRpY2F0ZSwgZWNvbnRleHQpKQorCQkJCWlmICghRXhl Y1F1YWwocHJlZGljYXRlRXhwYW5kLCBlY29udGV4dCkpCiAJCQkJCWNvbnRpbnVlOwogCQkJ fQogCkBAIC0xOTUyLDcgKzE5NTQsOSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50 aW5nIHRvIHRoZSBub3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Np b25zU3RhdGUgPSBOSUw7CisJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRl ID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCWluZGV4 SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kU3RhdGUgPSBOVUxMOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGIwZGNkOTg3Li44MGJmNGZjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtMTE1NiwxMSArMTE1NiwxNyBAQCBpbmRl eF9yZWdpc3RlcihPaWQgaGVhcCwKIAkvKiBleHByZXNzaW9ucyB3aWxsIGxpa2VseSBiZSBu dWxsLCBidXQgbWF5IGFzIHdlbGwgY29weSBpdCAqLwogCW5ld2luZC0+aWxfaW5mby0+aWlf RXhwcmVzc2lvbnMgPQogCQljb3B5T2JqZWN0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMp OworCW5ld2luZC0+aWxfaW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQgPQorCQljb3B5T2Jq ZWN0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQpOwogCW5ld2luZC0+aWxfaW5m by0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwluZXdpbmQtPmlsX2luZm8tPmlpX0V4 cHJlc3Npb25zRXhwYW5kU3RhdGUgPSBOSUw7CiAJLyogcHJlZGljYXRlIHdpbGwgbGlrZWx5 IGJlIG51bGwsIGJ1dCBtYXkgYXMgd2VsbCBjb3B5IGl0ICovCiAJbmV3aW5kLT5pbF9pbmZv LT5paV9QcmVkaWNhdGUgPQogCQljb3B5T2JqZWN0KGluZGV4SW5mby0+aWlfUHJlZGljYXRl KTsKKwluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZCA9CisJCWNvcHlPYmpl Y3QoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmQpOwogCW5ld2luZC0+aWxfaW5mby0+ aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCW5ld2luZC0+aWxfaW5mby0+aWlfUHJlZGlj YXRlRXhwYW5kU3RhdGUgPSBOVUxMOwogCS8qIG5vIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBh dCBib290c3RyYXAgdGltZSwgc28gbm8gbmVlZCB0byBjb3B5ICovCiAJQXNzZXJ0KGluZGV4 SW5mby0+aWlfRXhjbHVzaW9uT3BzID09IE5VTEwpOwogCUFzc2VydChpbmRleEluZm8tPmlp X0V4Y2x1c2lvblByb2NzID09IE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDk0MDdj MzU3Li5lZTI2MGZkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTQwMyw2ICsxNDAzLDEw IEBAIGluZGV4X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgdWludDE2IGZs YWdzLAogCQkJCQkJCWNvbmN1cnJlbnRseSwJLyogY29uY3VycmVudCAqLwogCQkJCQkJCWlu ZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAogCQkJCQkJCW9sZEluZm8t PmlpX1dpdGhvdXRPdmVybGFwcyk7CisJbmV3SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQg PQorCQlFeHBhbmRWaXJ0dWFsR2VuZXJhdGVkQ29sdW1ucyhuZXdJbmZvLT5paV9FeHByZXNz aW9uc0V4cGFuZCwgaGVhcFJlbGF0aW9uLCBJbnZhbGlkT2lkKTsKKwluZXdJbmZvLT5paV9Q cmVkaWNhdGVFeHBhbmQgPQorCQlFeHBhbmRWaXJ0dWFsR2VuZXJhdGVkQ29sdW1ucyhuZXdJ bmZvLT5paV9QcmVkaWNhdGVFeHBhbmQsIGhlYXBSZWxhdGlvbiwgSW52YWxpZE9pZCk7CiAK IAkvKiBmZXRjaCBleGNsdXNpb24gY29uc3RyYWludCBpbmZvIGlmIGFueSAqLwogCWlmIChp bmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXNleGNsdXNpb24pCkBAIC0yNDcxLDYgKzI0 NzUsOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgZmFsc2Us CiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKIAkJCQkJICAgaW5k ZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7 CisJaWktPmlpX0V4cHJlc3Npb25zRXhwYW5kID0gKExpc3QgKilSZWxhdGlvbkdldEluZGV4 RXhwcmVzc2lvbnNFeHBhbmQoaW5kZXgpOworCWlpLT5paV9QcmVkaWNhdGVFeHBhbmQgPSAo TGlzdCAqKVJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGVFeHBhbmQoaW5kZXgpOwogCiAJLyog ZmlsbCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRz OyBpKyspCkBAIC0yNzYwLDEwICsyNzY2LDEyIEBAIEZvcm1JbmRleERhdHVtKEluZGV4SW5m byAqaW5kZXhJbmZvLAogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNldCB1cCBleHByZXNz aW9uIGV2YWx1YXRpb24gc3RhdGUgKi8KIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0 YXRlID0KIAkJCUV4ZWNQcmVwYXJlRXhwckxpc3QoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u cywgZXN0YXRlKTsKKwkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlID0K KwkJCUV4ZWNQcmVwYXJlRXhwckxpc3QoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFu ZCwgZXN0YXRlKTsKIAkJLyogQ2hlY2sgY2FsbGVyIGhhcyBzZXQgdXAgY29udGV4dCBjb3Jy ZWN0bHkgKi8KIAkJQXNzZXJ0KEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKS0+ZWN4 dF9zY2FudHVwbGUgPT0gc2xvdCk7CiAJfQotCWluZGV4cHJfaXRlbSA9IGxpc3RfaGVhZChp bmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUpOworCWluZGV4cHJfaXRlbSA9IGxpc3Rf aGVhZChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zRXhwYW5kU3RhdGUpOwogCiAJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQogCXsKQEAgLTI3 NzUsMTEgKzI3ODMsNDAgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8s CiAJCQlpRGF0dW0gPSBzbG90X2dldHN5c2F0dHIoc2xvdCwga2V5Y29sLCAmaXNOdWxsKTsK IAkJZWxzZSBpZiAoa2V5Y29sICE9IDApCiAJCXsKLQkJCS8qCi0JCQkgKiBQbGFpbiBpbmRl eCBjb2x1bW47IGdldCB0aGUgdmFsdWUgd2UgbmVlZCBkaXJlY3RseSBmcm9tIHRoZQotCQkJ ICogaGVhcCB0dXBsZS4KLQkJCSAqLwotCQkJaURhdHVtID0gc2xvdF9nZXRhdHRyKHNsb3Qs IGtleWNvbCwgJmlzTnVsbCk7CisJCQlUdXBsZURlc2MJCQl0dXBkZXNjID0gc2xvdC0+dHRz X3R1cGxlRGVzY3JpcHRvcjsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIAlhdHQgPSBUdXBsZURl c2NBdHRyKHR1cGRlc2MsIGtleWNvbCAtIDEpOworCisJCQlpZiAoYXR0LT5hdHRnZW5lcmF0 ZWQgIT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJeworCQkJCS8qCisJCQkJ ICogUGxhaW4gaW5kZXggY29sdW1uOyBnZXQgdGhlIHZhbHVlIHdlIG5lZWQgZGlyZWN0bHkg ZnJvbSB0aGUKKwkJCQkgKiBoZWFwIHR1cGxlLgorCQkJCSovCisJCQkJaURhdHVtID0gc2xv dF9nZXRhdHRyKHNsb3QsIGtleWNvbCwgJmlzTnVsbCk7CisJCQl9CisJCQllbHNlCisJCQl7 CisJCQkJVHVwbGVDb25zdHIgCSpjb25zdHIgPSB0dXBkZXNjLT5jb25zdHI7CisKKwkJCQlm b3IgKGludCBqID0gMDsgaiA8IGNvbnN0ci0+bnVtX2RlZnZhbDsgaisrKQorCQkJCXsKKwkJ CQkJQXR0ckRlZmF1bHQgCSpkZWZ2YWw7CisJCQkJCUV4cHIJICAgCQkqZXhwciA9IE5VTEw7 CisJCQkJCUV4cHJTdGF0ZSAgCQkqZXhwcnN0YXRlOworCisJCQkJCWRlZnZhbCA9ICZjb25z dHItPmRlZnZhbFtqXTsKKwkJCQkJaWYgKGRlZnZhbC0+YWRudW0gPT0ga2V5Y29sKQorCQkJ CQl7CisJCQkJCQlleHByID0gc3RyaW5nVG9Ob2RlKGRlZnZhbC0+YWRiaW4pOworCQkJCQkJ ZXhwcnN0YXRlID0gRXhlY1ByZXBhcmVFeHByKGV4cHIsIGVzdGF0ZSk7CisJCQkJCQlpRGF0 dW0gPSBFeGVjRXZhbEV4cHJTd2l0Y2hDb250ZXh0KGV4cHJzdGF0ZSwKKwkJCQkJCQkJCQkJ CQkJICAgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLAorCQkJCQkJCQkJCQkJCQkg ICAmaXNOdWxsKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJCUFzc2VydChqICsgMSA8 IGNvbnN0ci0+bnVtX2RlZnZhbCk7CisJCQkJfQorCQkJfQogCQl9CiAJCWVsc2UKIAkJewpA QCAtMjc5MSw3ICsyODI4LDcgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleElu Zm8sCiAJCQlpRGF0dW0gPSBFeGVjRXZhbEV4cHJTd2l0Y2hDb250ZXh0KChFeHByU3RhdGUg KikgbGZpcnN0KGluZGV4cHJfaXRlbSksCiAJCQkJCQkJCQkJCSAgIEdldFBlclR1cGxlRXhw ckNvbnRleHQoZXN0YXRlKSwKIAkJCQkJCQkJCQkJICAgJmlzTnVsbCk7Ci0JCQlpbmRleHBy X2l0ZW0gPSBsbmV4dChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUsIGluZGV4cHJf aXRlbSk7CisJCQlpbmRleHByX2l0ZW0gPSBsbmV4dChpbmRleEluZm8tPmlpX0V4cHJlc3Np b25zRXhwYW5kU3RhdGUsIGluZGV4cHJfaXRlbSk7CiAJCX0KIAkJdmFsdWVzW2ldID0gaURh dHVtOwogCQlpc251bGxbaV0gPSBpc051bGw7CkBAIC0zMjIwLDcgKzMyNTcsNyBAQCBJbmRl eENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlUYWJsZVNjYW5EZXNj IHNjYW47CiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxs W0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7CisJRXhwclN0YXRl ICAqcHJlZGljYXRlRXhwYW5kOwogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCUVTdGF0ZQkg ICAqZXN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsKQEAgLTMyNDYsNyArMzI4Myw3 IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCWVjb250 ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKIAkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFy ZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJcHJlZGljYXRlRXhw YW5kID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kLCBl c3RhdGUpOwogCiAJLyoKIAkgKiBTY2FuIGFsbCBsaXZlIHR1cGxlcyBpbiB0aGUgYmFzZSBy ZWxhdGlvbi4KQEAgLTMyNjYsOSArMzMwMyw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQkvKgogCQkgKiBJbiBhIHBhcnRpYWwgaW5kZXgsIGln bm9yZSB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUuCiAJCSAqLwot CQlpZiAocHJlZGljYXRlICE9IE5VTEwpCisJCWlmIChwcmVkaWNhdGVFeHBhbmQgIT0gTlVM TCkKIAkJewotCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKKwkJCWlm ICghRXhlY1F1YWwocHJlZGljYXRlRXhwYW5kLCBlY29udGV4dCkpCiAJCQkJY29udGludWU7 CiAJCX0KIApAQCAtMzMwMSw3ICszMzM4LDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5n IHRvIHRoZSBub3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25z U3RhdGUgPSBOSUw7CisJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlID0g TklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCWluZGV4SW5m by0+aWlfUHJlZGljYXRlRXhwYW5kU3RhdGUgPSBOVUxMOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleGluZy5jCmluZGV4IGZkN2QyZWMwLi5kMjdhYWEwOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYwpAQCAtMTMzLDcgKzEzMyw5IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRh bG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAkJICogc3Vw cG9ydGVkLCBub3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBub3IgZGVmZXJyZWQgdW5pcXVl bmVzcwogCQkgKi8KIAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgPT0gTklM KTsKKwkJQXNzZXJ0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQgPT0gTklMKTsK IAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfUHJlZGljYXRlID09IE5JTCk7CisJCUFzc2VydChp bmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZCA9PSBOSUwpOwogCQlBc3NlcnQoaW5kZXhJ bmZvLT5paV9FeGNsdXNpb25PcHMgPT0gTlVMTCk7CiAJCUFzc2VydChpbmRleC0+cmRfaW5k ZXgtPmluZGltbWVkaWF0ZSk7CiAJCUFzc2VydChpbmRleEluZm8tPmlpX051bUluZGV4S2V5 QXR0cnMgIT0gMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggNGFhNTJhNGIuLmRh ZWJmZGExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0yOTgsOSArMjk4LDEzIEBA IGNyZWF0ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRv YXN0SW5kZXhPaWQsCiAJaW5kZXhJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzWzBdID0gMTsK IAlpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbMV0gPSAyOwogCWluZGV4SW5mby0+ aWlfRXhwcmVzc2lvbnMgPSBOSUw7CisJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFu ZCA9IE5JTDsKIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CisJaW5k ZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlID0gTklMOwogCWluZGV4SW5mby0+ aWlfUHJlZGljYXRlID0gTklMOworCWluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kID0g TklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCWluZGV4SW5m by0+aWlfUHJlZGljYXRlRXhwYW5kU3RhdGUgPSBOVUxMOwogCWluZGV4SW5mby0+aWlfRXhj bHVzaW9uT3BzID0gTlVMTDsKIAlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzID0gTlVM TDsKIAlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMKaW5kZXggZjY2ZTgwYjcuLmZjNjdjMjRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCkBAIC04OTksNyArODk5LDcgQEAgY29tcHV0ZV9pbmRleF9zdGF0cyhSZWxh dGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCVR1cGxlVGFibGVTbG90ICpzbG90 OwogCQlFU3RhdGUJICAgKmVzdGF0ZTsKIAkJRXhwckNvbnRleHQgKmVjb250ZXh0OwotCQlF eHByU3RhdGUgICpwcmVkaWNhdGU7CisJCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZUV4cGFuZDsK IAkJRGF0dW0JICAgKmV4cHJ2YWxzOwogCQlib29sCSAgICpleHBybnVsbHM7CiAJCWludAkJ CW51bWluZGV4cm93cywKQEAgLTkwOCw3ICs5MDgsNyBAQCBjb21wdXRlX2luZGV4X3N0YXRz KFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywKIAkJZG91YmxlCQl0b3RhbGlu ZGV4cm93czsKIAogCQkvKiBJZ25vcmUgaW5kZXggaWYgbm8gY29sdW1ucyB0byBhbmFseXpl IGFuZCBub3QgcGFydGlhbCAqLwotCQlpZiAoYXR0cl9jbnQgPT0gMCAmJiBpbmRleEluZm8t PmlpX1ByZWRpY2F0ZSA9PSBOSUwpCisJCWlmIChhdHRyX2NudCA9PSAwICYmIGluZGV4SW5m by0+aWlfUHJlZGljYXRlRXhwYW5kID09IE5JTCkKIAkJCWNvbnRpbnVlOwogCiAJCS8qCkBA IC05MjYsNyArOTI2LDcgQEAgY29tcHV0ZV9pbmRleF9zdGF0cyhSZWxhdGlvbiBvbmVyZWws IGRvdWJsZSB0b3RhbHJvd3MsCiAJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7 CiAKIAkJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLiAqLwotCQlw cmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVz dGF0ZSk7CisJCXByZWRpY2F0ZUV4cGFuZCA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZUV4cGFuZCwgZXN0YXRlKTsKIAogCQkvKiBDb21wdXRlIGFuZCBzYXZl IGluZGV4IGV4cHJlc3Npb24gdmFsdWVzICovCiAJCWV4cHJ2YWxzID0gKERhdHVtICopIHBh bGxvYyhudW1yb3dzICogYXR0cl9jbnQgKiBzaXplb2YoRGF0dW0pKTsKQEAgLTk0OSw5ICs5 NDksOSBAQCBjb21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRv dGFscm93cywKIAkJCUV4ZWNTdG9yZUhlYXBUdXBsZShoZWFwVHVwbGUsIHNsb3QsIGZhbHNl KTsKIAogCQkJLyogSWYgaW5kZXggaXMgcGFydGlhbCwgY2hlY2sgcHJlZGljYXRlICovCi0J CQlpZiAocHJlZGljYXRlICE9IE5VTEwpCisJCQlpZiAocHJlZGljYXRlRXhwYW5kICE9IE5V TEwpCiAJCQl7Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKKwkJ CQlpZiAoIUV4ZWNRdWFsKHByZWRpY2F0ZUV4cGFuZCwgZWNvbnRleHQpKQogCQkJCQljb250 aW51ZTsKIAkJCX0KIAkJCW51bWluZGV4cm93cysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwppbmRleCA5YWI3NGM4ZC4uOGE2M2VmYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCkBAIC05MzIsNiArOTMyLDggQEAgRGVmaW5lSW5kZXgoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCSAgY29uY3VycmVudCwKIAkJCQkJCQkgIGFtaXNzdW1tYXJpemluZywK IAkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzKTsKKwlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZUV4cGFuZCA9CisJCUV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1bW5zKGluZGV4 SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kLCByZWwsIEludmFsaWRPaWQpOwogCiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9u SWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTk0OCw2 ICs5NTAsOCBAQCBEZWZpbmVJbmRleChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcm9v dF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0LAogCQkJCQkgICZyb290X3Nh dmVfbmVzdGxldmVsKTsKIAorCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQgPQor CQlFeHBhbmRWaXJ0dWFsR2VuZXJhdGVkQ29sdW1ucyhpbmRleEluZm8tPmlpX0V4cHJlc3Np b25zRXhwYW5kLCByZWwsIEludmFsaWRPaWQpOwogCS8qCiAJICogRXh0cmEgY2hlY2tzIHdo ZW4gY3JlYXRpbmcgYSBQUklNQVJZIEtFWSBpbmRleC4KIAkgKi8KQEAgLTExMTAsNyArMTEx NCw3IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBXZSBkaXNhbGxv dyBpbmRleGVzIG9uIHN5c3RlbSBjb2x1bW5zLiAgVGhleSB3b3VsZCBub3QgbmVjZXNzYXJp bHkgZ2V0CiAJICogdXBkYXRlZCBjb3JyZWN0bHksIGFuZCB0aGV5IGRvbid0IHNlZW0gdXNl ZnVsIGFueXdheS4KIAkgKgotCSAqIEFsc28gZGlzYWxsb3cgdmlydHVhbCBnZW5lcmF0ZWQg Y29sdW1ucyBpbiBpbmRleGVzICh1c2UgZXhwcmVzc2lvbgorCSAqIEFpc2FsbG93IHZpcnR1 YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gaW5kZXhlcyAoaW5jbHVkZSB1c2luZyBleHByZXNz aW9uCiAJICogaW5kZXggaW5zdGVhZCkuCiAJICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBp bmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKQEAgLTExMjMsNyArMTEyNyw3IEBA IERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiaW5kZXgg Y3JlYXRpb24gb24gc3lzdGVtIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CiAKIAot CQlpZiAoYXR0bm8gPiAwICYmCisJCS8qaWYgKGF0dG5vID4gMCAmJiBpIDwgbnVtYmVyT2ZL ZXlBdHRyaWJ1dGVzICYmCiAJCQlUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVs KSwgYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklS VFVBTCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLApAQCAtMTEzMSwxNyArMTEzNSwxNSBAQCBEZWZpbmVJbmRleChQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCWVycm1zZygicHJpbWFyeSBrZXlzIG9uIHZpcnR1 YWwgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSA6CiAJCQkJCXN0bXQt PmlzY29uc3RyYWludCA/CiAJCQkJCWVycm1zZygidW5pcXVlIGNvbnN0cmFpbnRzIG9uIHZp cnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSA6Ci0JCQkJCWVy cm1zZygiaW5kZXhlcyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3Vw cG9ydGVkIikpOworCQkJCQllcnJtc2coImluZGV4ZXMgb24gdmlydHVhbCBnZW5lcmF0ZWQg Y29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCIpKTsqLwogCX0KIAogCS8qCi0JICogQWxzbyBj aGVjayBmb3Igc3lzdGVtIGFuZCBnZW5lcmF0ZWQgY29sdW1ucyB1c2VkIGluIGV4cHJlc3Np b25zIG9yCi0JICogcHJlZGljYXRlcy4KKwkgKiBBbHNvIGNoZWNrIGZvciBzeXN0ZW0gY29s dW1ucyB1c2VkIGluIGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuCiAJICovCiAJaWYgKGlu ZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgfHwgaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUpCiAJ ewogCQlCaXRtYXBzZXQgICppbmRleGF0dHJzID0gTlVMTDsKLQkJaW50CQkJajsKIAogCQlw dWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zLCAxLCAm aW5kZXhhdHRycyk7CiAJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGluZGV4SW5mby0+aWlf UHJlZGljYXRlLCAxLCAmaW5kZXhhdHRycyk7CkBAIC0xMTU0LDI1ICsxMTU2LDYgQEAgRGVm aW5lSW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJIGVycm1zZygiaW5kZXggY3JlYXRpb24g b24gc3lzdGVtIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CiAJCX0KLQotCQkvKgot CQkgKiBYWFggVmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpbiBpbmRleCBleHByZXNzaW9u cyBvciBwcmVkaWNhdGVzCi0JCSAqIGNvdWxkIGJlIHN1cHBvcnRlZCwgYnV0IGl0IG5lZWRz IHN1cHBvcnQgaW4KLQkJICogUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKCkgYW5kIFJl bGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoKS4KLQkJICovCi0JCWogPSAtMTsKLQkJd2hpbGUg KChqID0gYm1zX25leHRfbWVtYmVyKGluZGV4YXR0cnMsIGopKSA+PSAwKQotCQl7Ci0JCQlB dHRyTnVtYmVyCWF0dG5vID0gaiArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1i ZXI7Ci0KLQkJCWlmIChhdHRubyA+IDAgJiYKLQkJCQlUdXBsZURlc2NBdHRyKFJlbGF0aW9u R2V0RGVzY3IocmVsKSwgYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9H RU5FUkFURURfVklSVFVBTCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIHN0bXQtPmlzY29uc3Ry YWludCA/Ci0JCQkJCQkgZXJybXNnKCJ1bmlxdWUgY29uc3RyYWludHMgb24gdmlydHVhbCBn ZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCIpIDoKLQkJCQkJCSBlcnJtc2co ImluZGV4ZXMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHN1cHBvcnRl ZCIpKSk7Ci0JCX0KIAl9CiAKIAkvKiBJcyBpbmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdu b3JlPyAgU2VlIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCkgKi8KQEAgLTE4NzYsNiArMTg1 OSwxMSBAQCBDaGVja1ByZWRpY2F0ZShFeHByICpwcmVkaWNhdGUpCiAgKiBJZiB0aGUgY2Fs bGVyIHN3aXRjaGVkIHRvIHRoZSB0YWJsZSBvd25lciwgZGRsX3VzZXJpZCBpcyB0aGUgcm9s ZSBmb3IgQUNMCiAgKiBjaGVja3MgcmVhY2hlZCB3aXRob3V0IHRyYXZlcnNpbmcgb3BhcXVl IGV4cHJlc3Npb25zLiAgT3RoZXJ3aXNlLCBpdCdzCiAgKiBJbnZhbGlkT2lkLCBhbmQgb3Ro ZXIgZGRsXyogYXJndW1lbnRzIGFyZSB1bmRlZmluZWQuCisgKgorICogVXBvbiByZXR1cm5p bmcgZnJvbSB0aGlzIGZ1bmN0aW9uLCBjYWxsZXJzIG11c3QgYXBwbHkKKyAqIEV4cGFuZFZp cnR1YWxHZW5lcmF0ZWRDb2x1bW5zKCkgdG8gaWlfRXhwcmVzc2lvbnNFeHBhbmQKKyAqIHdo ZW4gbmVjZXNzYXJ5IGZvciBhY3R1YWwgZXhwYW5zaW9uIGlmIGlpX0V4cHJlc3Npb25zRXhw YW5kCisgKiBpcyBub3QgTklMIG9yIGR1bW15LgogICovCiBzdGF0aWMgdm9pZAogQ29tcHV0 ZUluZGV4QXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMjI3NCw2ICsyMjYyLDEwIEBA IENvbXB1dGVJbmRleEF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQlhdHRuKys7CiAJ fQorCisJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZCA9CisJCUV4cGFuZFZpcnR1 YWxHZW5lcmF0ZWRDb2x1bW5zKGNvcHlPYmplY3QoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u cyksCisJCQkJCQkJCQkJCSAgTlVMTCwgcmVsSWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBlYjM4MzgxMi4uYjQ3ZGFhZjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0zODAsMjAgKzM4MCwyNCBAQCBFeGVj SW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJaWYg KGluZGV4SW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKIAkJewogCQkJRXhwclN0YXRlICAq cHJlZGljYXRlOworCQkJRXhwclN0YXRlICAqcHJlZGljYXRlRXhwYW5kOwogCiAJCQkvKgog CQkJICogSWYgcHJlZGljYXRlIHN0YXRlIG5vdCBzZXQgdXAgeWV0LCBjcmVhdGUgaXQgKGlu IHRoZSBlc3RhdGUncwogCQkJICogcGVyLXF1ZXJ5IGNvbnRleHQpCiAJCQkgKi8KIAkJCXBy ZWRpY2F0ZSA9IGluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGU7CisJCQlwcmVkaWNhdGVF eHBhbmQgPSBpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZFN0YXRlOwogCQkJaWYgKHBy ZWRpY2F0ZSA9PSBOVUxMKQogCQkJewogCQkJCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVh bChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkJCQlwcmVkaWNhdGVFeHBh bmQgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmQsIGVz dGF0ZSk7CiAJCQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IHByZWRpY2F0ZTsK KwkJCQlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZFN0YXRlID0gcHJlZGljYXRlRXhw YW5kOwogCQkJfQogCiAJCQkvKiBTa2lwIHRoaXMgaW5kZXgtdXBkYXRlIGlmIHRoZSBwcmVk aWNhdGUgaXNuJ3Qgc2F0aXNmaWVkICovCi0JCQlpZiAoIUV4ZWNRdWFsKHByZWRpY2F0ZSwg ZWNvbnRleHQpKQorCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGVFeHBhbmQsIGVjb250ZXh0 KSkKIAkJCQljb250aW51ZTsKIAkJfQogCkBAIC02MTYsMjAgKzYyMCwyNCBAQCBFeGVjQ2hl Y2tJbmRleENvbnN0cmFpbnRzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIFR1cGxl VGFibGVTbG90ICpzbG90LAogCQlpZiAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklM KQogCQl7CiAJCQlFeHByU3RhdGUgICpwcmVkaWNhdGU7CisJCQlFeHByU3RhdGUgICpwcmVk aWNhdGVFeHBhbmQ7CiAKIAkJCS8qCiAJCQkgKiBJZiBwcmVkaWNhdGUgc3RhdGUgbm90IHNl dCB1cCB5ZXQsIGNyZWF0ZSBpdCAoaW4gdGhlIGVzdGF0ZSdzCiAJCQkgKiBwZXItcXVlcnkg Y29udGV4dCkKIAkJCSAqLwogCQkJcHJlZGljYXRlID0gaW5kZXhJbmZvLT5paV9QcmVkaWNh dGVTdGF0ZTsKKwkJCXByZWRpY2F0ZUV4cGFuZCA9IGluZGV4SW5mby0+aWlfUHJlZGljYXRl RXhwYW5kU3RhdGU7CiAJCQlpZiAocHJlZGljYXRlID09IE5VTEwpCiAJCQl7CiAJCQkJcHJl ZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3Rh dGUpOworCQkJCXByZWRpY2F0ZUV4cGFuZCA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZUV4cGFuZCwgZXN0YXRlKTsKIAkJCQlpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZVN0YXRlID0gcHJlZGljYXRlOworCQkJCWluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhw YW5kU3RhdGUgPSBwcmVkaWNhdGVFeHBhbmQ7CiAJCQl9CiAKIAkJCS8qIFNraXAgdGhpcyBp bmRleC11cGRhdGUgaWYgdGhlIHByZWRpY2F0ZSBpc24ndCBzYXRpc2ZpZWQgKi8KLQkJCWlm ICghRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCisJCQlpZiAoIUV4ZWNRdWFsKHBy ZWRpY2F0ZUV4cGFuZCwgZWNvbnRleHQpKQogCQkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTEx MDIsNiArMTExMCw3IEBAIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywgRVN0YXRlICplc3RhdGUsCiAJICogcGFzcyBoaW50LgogCSAq LwogCWlkeEV4cHJzID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGluZGV4UmVsYXRp b24pOworCWlkeEV4cHJzID0gbGlzdF9jb25jYXQoaWR4RXhwcnMsIFJlbGF0aW9uR2V0SW5k ZXhFeHByZXNzaW9uc0V4cGFuZChpbmRleFJlbGF0aW9uKSk7CiAJaGFzZXhwcmVzc2lvbiA9 IGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoKE5vZGUgKikgaWR4RXhwcnMsCiAJ CQkJCQkJCQkJCQkJYWxsVXBkYXRlZENvbHMpOwogCWxpc3RfZnJlZShpZHhFeHBycyk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4Li45NDY4OTFiOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMKQEAgLTgyOCw3ICs4MjgsMTEgQEAgbWFrZV9hbmRzX2ltcGxpY2l0 KEV4cHIgKmNsYXVzZSkKIAogLyoKICAqIG1ha2VJbmRleEluZm8KLSAqCSAgY3JlYXRlIGFu IEluZGV4SW5mbyBub2RlCisgKgkgIGNyZWF0ZSBhbiBJbmRleEluZm8gbm9kZS4gIFVwb24g cmV0dXJuaW5nIGZyb20gdGhpcyBmdW5jdGlvbiwKKyAqIGNhbGxlcnMgbXVzdCBhcHBseSBF eHBhbmRWaXJ0dWFsR2VuZXJhdGVkQ29sdW1ucygpIAorICogb3IgUmVsYXRpb25HZXRJbmRl eEV4cHJlc3Npb25zRXhwYW5kIG9yIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGVFeHBhbmQo KSB0bworICogaWlfRXhwcmVzc2lvbnNFeHBhbmQgYW5kIGlpX1ByZWRpY2F0ZUV4cGFuZCBh cyBuZWVkZWQgZm9yIGFjdHVhbAorICogZXhwYW5zaW9uIHdoZW4gdGhleSBhcmUgbm90IE5J TCBvciBkdW1teS4KICAqLwogSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0 dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCkBA IC04NTYsMTEgKzg2MCwxNSBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51 bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCiAJLyogZXhwcmVz c2lvbnMgKi8KIAluLT5paV9FeHByZXNzaW9ucyA9IGV4cHJlc3Npb25zOworCW4tPmlpX0V4 cHJlc3Npb25zRXhwYW5kID0gY29weU9iamVjdChleHByZXNzaW9ucyk7CiAJbi0+aWlfRXhw cmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwluLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlID0g TklMOwogCiAJLyogcHJlZGljYXRlcyAgKi8KIAluLT5paV9QcmVkaWNhdGUgPSBwcmVkaWNh dGVzOworCW4tPmlpX1ByZWRpY2F0ZUV4cGFuZCA9IGNvcHlPYmplY3QocHJlZGljYXRlcyk7 CiAJbi0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCW4tPmlpX1ByZWRpY2F0ZUV4cGFu ZFN0YXRlID0gTlVMTDsKIAogCS8qIGV4Y2x1c2lvbiBjb25zdHJhaW50cyAqLwogCW4tPmlp X0V4Y2x1c2lvbk9wcyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNp emUuYwppbmRleCAxYzU3NWU1Ni4uMzRmYzE0N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvY29zdHNpemUuYwpAQCAtNTk0LDcgKzU5NCwxNCBAQCBjb3N0X2luZGV4KEluZGV4 UGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBsb29wX2NvdW50LAogCX0K IAllbHNlCiAJewotCQlwYXRoLT5wYXRoLnJvd3MgPSBiYXNlcmVsLT5yb3dzOworCQkvKgor CQkgKiBJZiBpbmRleC0+cHJlZE9LIGhvbGRzIHRydWUsIG5laXRoZXIgdGhlIGJhc2VyZWwn cyBlc3RpbWF0ZWQgb3V0cHV0IHR1cGxlcworCQkgKiBub3IgdGhpcyBpbmRleCBwYXRoJ3Mg ZXN0aW1hdGVkIG91dHB1dCB0dXBsZXMgY2FuIGV4Y2VlZCB0aGUgaW5kZXgncyB0b3RhbCB0 dXBsZXMuCisJCSovCisJCWlmICghaW5kZXgtPnByZWRPSykKKwkJCXBhdGgtPnBhdGgucm93 cyA9IGJhc2VyZWwtPnJvd3M7CisJCWVsc2UKKwkJCXBhdGgtPnBhdGgucm93cyA9IGJhc2Vy ZWwtPnJvd3MgPSBpbmRleC0+dHVwbGVzOwogCQkvKiBxcHF1YWxzIGNvbWUgZnJvbSBqdXN0 IHRoZSByZWwncyByZXN0cmljdGlvbiBjbGF1c2VzICovCiAJCXFwcXVhbHMgPSBleHRyYWN0 X25vbmluZGV4X2NvbmRpdGlvbnMocGF0aC0+aW5kZXhpbmZvLT5pbmRyZXN0cmljdGluZm8s CiAJCQkJCQkJCQkJCSAgcGF0aC0+aW5kZXhjbGF1c2VzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDNmNWQ0ZmEzLi5iNzE2ZWU5MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0xMTE5LDcgKzExMTksNyBAQCBi dWlsZF9wYXRoc19mb3JfT1IoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwK IAkJICoganVzdCBzY2FubmluZyB0aGUgcHJlZE9LIGluZGV4IGFsb25lLCBubyBPUi4pCiAJ CSAqLwogCQl1c2VmdWxfcHJlZGljYXRlID0gZmFsc2U7Ci0JCWlmIChpbmRleC0+aW5kcHJl ZCAhPSBOSUwpCisJCWlmIChpbmRleC0+aW5kcHJlZEV4cGFuZCAhPSBOSUwpCiAJCXsKIAkJ CWlmIChpbmRleC0+cHJlZE9LKQogCQkJewpAQCAtMTEzMSwxMCArMTEzMSwxMCBAQCBidWls ZF9wYXRoc19mb3JfT1IoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJ CQlpZiAoYWxsX2NsYXVzZXMgPT0gTklMKQogCQkJCQlhbGxfY2xhdXNlcyA9IGxpc3RfY29u Y2F0X2NvcHkoY2xhdXNlcywgb3RoZXJfY2xhdXNlcyk7CiAKLQkJCQlpZiAoIXByZWRpY2F0 ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkLCBhbGxfY2xhdXNlcywgZmFsc2UpKQorCQkJ CWlmICghcHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWRFeHBhbmQsIGFsbF9j bGF1c2VzLCBmYWxzZSkpCiAJCQkJCWNvbnRpbnVlOwkvKiBjYW4ndCB1c2UgaXQgYXQgYWxs ICovCiAKLQkJCQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkLCBv dGhlcl9jbGF1c2VzLCBmYWxzZSkpCisJCQkJaWYgKCFwcmVkaWNhdGVfaW1wbGllZF9ieShp bmRleC0+aW5kcHJlZEV4cGFuZCwgb3RoZXJfY2xhdXNlcywgZmFsc2UpKQogCQkJCQl1c2Vm dWxfcHJlZGljYXRlID0gdHJ1ZTsKIAkJCX0KIAkJfQpAQCAtMjE4Myw3ICsyMTgzLDcgQEAg ZmluZF9pbmRleHBhdGhfcXVhbHMoUGF0aCAqYml0bWFwcXVhbCwgTGlzdCAqKnF1YWxzLCBM aXN0ICoqcHJlZHMpCiAKIAkJCSpxdWFscyA9IGxhcHBlbmQoKnF1YWxzLCBpY2xhdXNlLT5y aW5mby0+Y2xhdXNlKTsKIAkJfQotCQkqcHJlZHMgPSBsaXN0X2NvbmNhdCgqcHJlZHMsIGlw YXRoLT5pbmRleGluZm8tPmluZHByZWQpOworCQkqcHJlZHMgPSBsaXN0X2NvbmNhdCgqcHJl ZHMsIGlwYXRoLT5pbmRleGluZm8tPmluZHByZWRFeHBhbmQpOwogCX0KIAllbHNlCiAJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIG5vZGVUYWcoYml0bWFw cXVhbCkpOwpAQCAtNDAzOCwxMSArNDAzOCwxMSBAQCBjaGVja19pbmRleF9wcmVkaWNhdGVz KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCUluZGV4T3B0SW5mbyAq aW5kZXggPSAoSW5kZXhPcHRJbmZvICopIGxmaXJzdChsYyk7CiAJCUxpc3RDZWxsICAgKmxj cjsKIAotCQlpZiAoaW5kZXgtPmluZHByZWQgPT0gTklMKQorCQlpZiAoaW5kZXgtPmluZHBy ZWRFeHBhbmQgPT0gTklMKQogCQkJY29udGludWU7CQkJLyogaWdub3JlIG5vbi1wYXJ0aWFs IGluZGV4ZXMgaGVyZSAqLwogCiAJCWlmICghaW5kZXgtPnByZWRPSykJCS8qIGRvbid0IHJl cGVhdCB3b3JrIGlmIGFscmVhZHkgcHJvdmVuIE9LICovCi0JCQlpbmRleC0+cHJlZE9LID0g cHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIGNsYXVzZWxpc3QsCisJCQlp bmRleC0+cHJlZE9LID0gcHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWRFeHBh bmQsIGNsYXVzZWxpc3QsCiAJCQkJCQkJCQkJCQkgZmFsc2UpOwogCiAJCS8qIElmIHJlbCBp cyBhbiB1cGRhdGUgdGFyZ2V0LCBsZWF2ZSBpbmRyZXN0cmljdGluZm8gYXMgc2V0IGFib3Zl ICovCkBAIC00MDY4LDcgKzQwNjgsNyBAQCBjaGVja19pbmRleF9wcmVkaWNhdGVzKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCQkvKiBwcmVkaWNhdGVfaW1wbGll ZF9ieSgpIGFzc3VtZXMgZmlyc3QgYXJnIGlzIGltbXV0YWJsZSAqLwogCQkJaWYgKGNvbnRh aW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgcmluZm8tPmNsYXVzZSkgfHwKIAkJCQkh cHJlZGljYXRlX2ltcGxpZWRfYnkobGlzdF9tYWtlMShyaW5mby0+Y2xhdXNlKSwKLQkJCQkJ CQkJCSAgaW5kZXgtPmluZHByZWQsIGZhbHNlKSkKKwkJCQkJCQkJCSAgaW5kZXgtPmluZHBy ZWRFeHBhbmQsIGZhbHNlKSkKIAkJCQlpbmRleC0+aW5kcmVzdHJpY3RpbmZvID0gbGFwcGVu ZChpbmRleC0+aW5kcmVzdHJpY3RpbmZvLCByaW5mbyk7CiAJCX0KIAl9CkBAIC00NDAyLDE0 ICs0NDAyLDE0IEBAIG1hdGNoX2luZGV4X3RvX29wZXJhbmQoTm9kZSAqb3BlcmFuZCwKIAkJ aW50CQkJaTsKIAkJTm9kZQkgICAqaW5kZXhrZXk7CiAKLQkJaW5kZXhwcl9pdGVtID0gbGlz dF9oZWFkKGluZGV4LT5pbmRleHBycyk7CisJCWluZGV4cHJfaXRlbSA9IGxpc3RfaGVhZChp bmRleC0+aW5kZXhwcnNFeHBhbmQpOwogCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhjb2w7IGkr KykKIAkJewogCQkJaWYgKGluZGV4LT5pbmRleGtleXNbaV0gPT0gMCkKIAkJCXsKIAkJCQlp ZiAoaW5kZXhwcl9pdGVtID09IE5VTEwpCiAJCQkJCWVsb2coRVJST1IsICJ3cm9uZyBudW1i ZXIgb2YgaW5kZXggZXhwcmVzc2lvbnMiKTsKLQkJCQlpbmRleHByX2l0ZW0gPSBsbmV4dChp bmRleC0+aW5kZXhwcnMsIGluZGV4cHJfaXRlbSk7CisJCQkJaW5kZXhwcl9pdGVtID0gbG5l eHQoaW5kZXgtPmluZGV4cHJzRXhwYW5kLCBpbmRleHByX2l0ZW0pOwogCQkJfQogCQl9CiAJ CWlmIChpbmRleHByX2l0ZW0gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYwppbmRleCBkZTZhMTgzZC4uMmJkYWQ3YmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTMzNDAsNyArMzM0MCw3IEBAIGNy ZWF0ZV9iaXRtYXBfc3VicGxhbihQbGFubmVySW5mbyAqcm9vdCwgUGF0aCAqYml0bWFwcXVh bCwKIAkJCQlzdWJpbmRleEVDcyA9IGxhcHBlbmQoc3ViaW5kZXhFQ3MsIHJpbmZvLT5wYXJl bnRfZWMpOwogCQl9CiAJCS8qIFdlIGNhbiBhZGQgYW55IGluZGV4IHByZWRpY2F0ZSBjb25k aXRpb25zLCB0b28gKi8KLQkJZm9yZWFjaChsLCBpcGF0aC0+aW5kZXhpbmZvLT5pbmRwcmVk KQorCQlmb3JlYWNoKGwsIGlwYXRoLT5pbmRleGluZm8tPmluZHByZWRFeHBhbmQpCiAJCXsK IAkJCUV4cHIJICAgKnByZWQgPSAoRXhwciAqKSBsZmlyc3QobCk7CiAKQEAgLTUxNDIsNyAr NTE0Miw3IEBAIGZpeF9pbmRleHF1YWxfb3BlcmFuZChOb2RlICpub2RlLCBJbmRleE9wdElu Zm8gKmluZGV4LCBpbnQgaW5kZXhjb2wpCiAJfQogCiAJLyogSXQncyBhbiBpbmRleCBleHBy ZXNzaW9uLCBzbyBmaW5kIGFuZCBjcm9zcy1jaGVjayB0aGUgZXhwcmVzc2lvbiAqLwotCWlu ZGV4cHJfaXRlbSA9IGxpc3RfaGVhZChpbmRleC0+aW5kZXhwcnMpOworCWluZGV4cHJfaXRl bSA9IGxpc3RfaGVhZChpbmRleC0+aW5kZXhwcnNFeHBhbmQpOwogCWZvciAocG9zID0gMDsg cG9zIDwgaW5kZXgtPm5jb2x1bW5zOyBwb3MrKykKIAl7CiAJCWlmIChpbmRleC0+aW5kZXhr ZXlzW3Bvc10gPT0gMCkKQEAgLTUxNjcsNyArNTE2Nyw3IEBAIGZpeF9pbmRleHF1YWxfb3Bl cmFuZChOb2RlICpub2RlLCBJbmRleE9wdEluZm8gKmluZGV4LCBpbnQgaW5kZXhjb2wpCiAJ CQkJZWxzZQogCQkJCQllbG9nKEVSUk9SLCAiaW5kZXgga2V5IGRvZXMgbm90IG1hdGNoIGV4 cGVjdGVkIGluZGV4IGNvbHVtbiIpOwogCQkJfQotCQkJaW5kZXhwcl9pdGVtID0gbG5leHQo aW5kZXgtPmluZGV4cHJzLCBpbmRleHByX2l0ZW0pOworCQkJaW5kZXhwcl9pdGVtID0gbG5l eHQoaW5kZXgtPmluZGV4cHJzRXhwYW5kLCBpbmRleHByX2l0ZW0pOwogCQl9CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggN2M0YmUxNzQuLjcyODQ2 ZDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC00MzMsMjQg KzQzMywzOCBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJl bGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJICogcHJvcGVybHkgcmVkdWNl ZC4KIAkJCSAqLwogCQkJaW5mby0+aW5kZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoaW5kZXhSZWxhdGlvbik7CisJCQlpbmZvLT5pbmRleHByc0V4cGFuZCA9IFJlbGF0 aW9uR2V0SW5kZXhFeHByZXNzaW9uc0V4cGFuZChpbmRleFJlbGF0aW9uKTsKIAkJCWluZm8t PmluZHByZWQgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pOwor CQkJaW5mby0+aW5kcHJlZEV4cGFuZCA9IFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGVFeHBh bmQoaW5kZXhSZWxhdGlvbik7CiAJCQlpZiAoaW5mby0+aW5kZXhwcnMpCiAJCQl7CiAJCQkJ aWYgKHZhcm5vICE9IDEpCisJCQkJewogCQkJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBp bmZvLT5pbmRleHBycywgMSwgdmFybm8sIDApOworCQkJCQlDaGFuZ2VWYXJOb2RlcygoTm9k ZSAqKSBpbmZvLT5pbmRleHByc0V4cGFuZCwgMSwgdmFybm8sIDApOworCQkJCX0KIAogCQkJ CWluZm8tPmluZGV4cHJzID0gKExpc3QgKikKIAkJCQkJZXZhbF9jb25zdF9leHByZXNzaW9u cyhyb290LCAoTm9kZSAqKSBpbmZvLT5pbmRleHBycyk7CisJCQkJaW5mby0+aW5kZXhwcnNF eHBhbmQgPSAoTGlzdCAqKQorCQkJCQlldmFsX2NvbnN0X2V4cHJlc3Npb25zKHJvb3QsIChO b2RlICopIGluZm8tPmluZGV4cHJzRXhwYW5kKTsKIAkJCX0KIAkJCWlmIChpbmZvLT5pbmRw cmVkKQogCQkJewogCQkJCWlmICh2YXJubyAhPSAxKQorCQkJCXsKIAkJCQkJQ2hhbmdlVmFy Tm9kZXMoKE5vZGUgKikgaW5mby0+aW5kcHJlZCwgMSwgdmFybm8sIDApOworCQkJCQlDaGFu Z2VWYXJOb2RlcygoTm9kZSAqKSBpbmZvLT5pbmRwcmVkRXhwYW5kLCAxLCB2YXJubywgMCk7 CisJCQkJfQogCiAJCQkJaW5mby0+aW5kcHJlZCA9IChMaXN0ICopCiAJCQkJCWV2YWxfY29u c3RfZXhwcmVzc2lvbnMocm9vdCwKIAkJCQkJCQkJCQkgICAoTm9kZSAqKSBtYWtlX2FuZHNf ZXhwbGljaXQoaW5mby0+aW5kcHJlZCkpOworCQkJCWluZm8tPmluZHByZWRFeHBhbmQgPSAo TGlzdCAqKQorCQkJCQlldmFsX2NvbnN0X2V4cHJlc3Npb25zKHJvb3QsCisJCQkJCQkJCQkJ ICAgKE5vZGUgKikgbWFrZV9hbmRzX2V4cGxpY2l0KGluZm8tPmluZHByZWRFeHBhbmQpKTsK IAkJCQlpbmZvLT5pbmRwcmVkID0gbWFrZV9hbmRzX2ltcGxpY2l0KChFeHByICopIGluZm8t PmluZHByZWQpOworCQkJCWluZm8tPmluZHByZWRFeHBhbmQgPSBtYWtlX2FuZHNfaW1wbGlj aXQoKEV4cHIgKikgaW5mby0+aW5kcHJlZEV4cGFuZCk7CiAJCQl9CiAKIAkJCS8qIEJ1aWxk IHRhcmdldGxpc3QgdXNpbmcgdGhlIGNvbXBsZXRlZCBpbmRleHBycyBkYXRhICovCkBAIC05 NDEsOCArOTU1LDggQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQkJCQkJCQkJCSAgIGF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlcik7CiAJCQkJfQogCi0JCQkJaW5mZXJFbGVtcyA9IFJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9ucyhpZHhSZWwpOwotCQkJCWluZmVySW5kZXhFeHBycyA9IFJlbGF0aW9uR2V0SW5k ZXhQcmVkaWNhdGUoaWR4UmVsKTsKKwkJCQlpbmZlckVsZW1zID0gUmVsYXRpb25HZXRJbmRl eEV4cHJlc3Npb25zRXhwYW5kKGlkeFJlbCk7CisJCQkJaW5mZXJJbmRleEV4cHJzID0gUmVs YXRpb25HZXRJbmRleFByZWRpY2F0ZUV4cGFuZChpZHhSZWwpOwogCQkJCWJyZWFrOwogCQkJ fQogCQl9CkBAIC0xMDcyLDcgKzEwODYsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxh bm5lckluZm8gKnJvb3QpCiAJCQljb250aW51ZTsKIAogCQkvKiBFeHByZXNzaW9uIGF0dHJp YnV0ZXMgKGlmIGFueSkgbXVzdCBtYXRjaCAqLwotCQlpZHhFeHBycyA9IFJlbGF0aW9uR2V0 SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQlpZHhFeHBycyA9IFJlbGF0aW9uR2V0SW5k ZXhFeHByZXNzaW9uc0V4cGFuZChpZHhSZWwpOwogCQlpZiAoaWR4RXhwcnMpCiAJCXsKIAkJ CWlmICh2YXJubyAhPSAxKQpAQCAtMTEzOSw3ICsxMTUzLDcgQEAgaW5mZXJfYXJiaXRlcl9p bmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQlpZiAobGlzdF9kaWZmZXJlbmNlKGlkeEV4 cHJzLCBpbmZlckVsZW1zKSAhPSBOSUwpCiAJCQljb250aW51ZTsKIAotCQlwcmVkRXhwcnMg PSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGlkeFJlbCk7CisJCXByZWRFeHBycyA9IFJl bGF0aW9uR2V0SW5kZXhQcmVkaWNhdGVFeHBhbmQoaWR4UmVsKTsKIAkJaWYgKHByZWRFeHBy cykKIAkJewogCQkJaWYgKHZhcm5vICE9IDEpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j CmluZGV4IGQ2ZWZkMDcwLi45NGUyMTcxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNz LmMKQEAgLTc0MzEsNiArNzQzMSw3IEBAIGdlbmVyaWNjb3N0ZXN0aW1hdGUoUGxhbm5lcklu Zm8gKnJvb3QsCiAJZG91YmxlCQlxdWFsX2FyZ19jb3N0OwogCUxpc3QJICAgKnNlbGVjdGl2 aXR5UXVhbHM7CiAJTGlzdENlbGwgICAqbDsKKwlib29sCQluZWVkQ2FsY0luZGV4U2VsZWN0 aXZpdHkgPSB0cnVlOwogCiAJLyoKIAkgKiBJZiB0aGUgaW5kZXggaXMgcGFydGlhbCwgQU5E IHRoZSBpbmRleCBwcmVkaWNhdGUgd2l0aCB0aGUgZXhwbGljaXRseQpAQCAtNzQ5NSw5ICs3 NDk2LDE5IEBAIGdlbmVyaWNjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsCiAJICog aW5kZXhTZWxlY3Rpdml0eSBlc3RpbWF0ZSBpcyB0aW55LgogCSAqLwogCWlmIChudW1JbmRl eFR1cGxlcyA+IGluZGV4LT50dXBsZXMpCisJewogCQludW1JbmRleFR1cGxlcyA9IGluZGV4 LT50dXBsZXM7CisJCW5lZWRDYWxjSW5kZXhTZWxlY3Rpdml0eSA9IHRydWU7CisJfQorCisJ LyogUmVjYWxjdWxhdGUgaW5kZXhTZWxlY3Rpdml0eSBiYXNlZCBvbiB0aGUgZXN0aW1hdGVk IG51bUluZGV4VHVwbGVzICovCiAJaWYgKG51bUluZGV4VHVwbGVzIDwgMS4wKQorCXsKIAkJ bnVtSW5kZXhUdXBsZXMgPSAxLjA7CisJCWluZGV4U2VsZWN0aXZpdHkgPSAwLjA7CisJfQor CWVsc2UgaWYgKG5lZWRDYWxjSW5kZXhTZWxlY3Rpdml0eSAmJiBpbmRleC0+cmVsLT50dXBs ZXMgPiAwKQorCQlpbmRleFNlbGVjdGl2aXR5ID0gbnVtSW5kZXhUdXBsZXMgLyBpbmRleC0+ cmVsLT50dXBsZXM7CiAKIAkvKgogCSAqIEVzdGltYXRlIHRoZSBudW1iZXIgb2YgaW5kZXgg cGFnZXMgdGhhdCB3aWxsIGJlIHJldHJpZXZlZC4KQEAgLTc2MzksMTAgKzc2NTAsMTAgQEAg YWRkX3ByZWRpY2F0ZV90b19pbmRleF9xdWFscyhJbmRleE9wdEluZm8gKmluZGV4LCBMaXN0 ICppbmRleFF1YWxzKQogCUxpc3QJICAgKnByZWRFeHRyYVF1YWxzID0gTklMOwogCUxpc3RD ZWxsICAgKmxjOwogCi0JaWYgKGluZGV4LT5pbmRwcmVkID09IE5JTCkKKwlpZiAoaW5kZXgt PmluZHByZWRFeHBhbmQgPT0gTklMKQogCQlyZXR1cm4gaW5kZXhRdWFsczsKIAotCWZvcmVh Y2gobGMsIGluZGV4LT5pbmRwcmVkKQorCWZvcmVhY2gobGMsIGluZGV4LT5pbmRwcmVkRXhw YW5kKQogCXsKIAkJTm9kZQkgICAqcHJlZFF1YWwgPSAoTm9kZSAqKSBsZmlyc3QobGMpOwog CQlMaXN0CSAgICpvbmVRdWFsID0gbGlzdF9tYWtlMShwcmVkUXVhbCk7CkBAIC04MDU0LDYg KzgwNjUsMTIgQEAgYnRjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0 aCAqcGF0aCwgZG91YmxlIGxvb3BfY291bnQsCiAJCQkJCQkJCQkJCQkgIEpPSU5fSU5ORVIs CiAJCQkJCQkJCQkJCQkgIE5VTEwpOwogCQludW1JbmRleFR1cGxlcyA9IGJ0cmVlU2VsZWN0 aXZpdHkgKiBpbmRleC0+cmVsLT50dXBsZXM7CisJCS8qCisJCSAqIFRoZSBudW1iZXIgb2Yg bGVhZiB0dXBsZXMgdmlzaXRlZCBmb3IgY29zdAorCQkgKiBjYW5ub3QgZXhjZWVkIHRoZSB0 b3RhbCB0dXBsZXMgb2YgdGhlIGluZGV4LgorCQkqLworCQlpZiAobnVtSW5kZXhUdXBsZXMg PiBpbmRleC0+dHVwbGVzKQorCQkJbnVtSW5kZXhUdXBsZXMgPSBpbmRleC0+dHVwbGVzOwog CiAJCS8qCiAJCSAqIGJ0cmVlIGF1dG9tYXRpY2FsbHkgY29tYmluZXMgaW5kaXZpZHVhbCBh cnJheSBlbGVtZW50IHByaW1pdGl2ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK aW5kZXggMDU3MmFiNDIuLmU2MDRiYjkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKQEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKIAogI2RlZmluZSBSRUxD QUNIRV9JTklUX0ZJTEVNQUdJQwkJMHg1NzMyNjYJLyogdmVyc2lvbiBJRCB2YWx1ZSAqLwog CkBAIC0xNTgzLDcgKzE1ODQsOSBAQCBSZWxhdGlvbkluaXRJbmRleEFjY2Vzc0luZm8oUmVs YXRpb24gcmVsYXRpb24pCiAJICogZXhwcmVzc2lvbnMsIHByZWRpY2F0ZSwgZXhjbHVzaW9u IGNhY2hlcyB3aWxsIGJlIGZpbGxlZCBsYXRlcgogCSAqLwogCXJlbGF0aW9uLT5yZF9pbmRl eHBycyA9IE5JTDsKKwlyZWxhdGlvbi0+cmRfaW5kZXhwcnNFeHBhbmQgPSBOSUw7CiAJcmVs YXRpb24tPnJkX2luZHByZWQgPSBOSUw7CisJcmVsYXRpb24tPnJkX2luZHByZWRFeHBhbmQg PSBOSUw7CiAJcmVsYXRpb24tPnJkX2V4Y2xvcHMgPSBOVUxMOwogCXJlbGF0aW9uLT5yZF9l eGNscHJvY3MgPSBOVUxMOwogCXJlbGF0aW9uLT5yZF9leGNsc3RyYXRzID0gTlVMTDsKQEAg LTUxNDYsNiArNTE0OSw0NSBAQCBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoUmVsYXRp b24gcmVsYXRpb24pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorTGlzdCAqCitSZWxhdGlvbkdl dEluZGV4RXhwcmVzc2lvbnNFeHBhbmQoUmVsYXRpb24gcmVsYXRpb24pCit7CisJTGlzdAkg ICAqcmVzdWx0OworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCWJvb2wJCWlzbnVsbDsKKwlE YXR1bQkJaGVhcFJlbGlkRGF0dW07CisJT2lkICAgICAgICAgaGVhcFJlbGlkOworCisJLyog UXVpY2sgZXhpdCBpZiB3ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSByZXN1bHQuICovCisJaWYg KHJlbGF0aW9uLT5yZF9pbmRleHByc0V4cGFuZCkKKwkJcmV0dXJuIGNvcHlPYmplY3QocmVs YXRpb24tPnJkX2luZGV4cHJzRXhwYW5kKTsKKworCS8qIFF1aWNrIGV4aXQgaWYgdGhlcmUg aXMgbm90aGluZyB0byBkby4gKi8KKwlpZiAocmVsYXRpb24tPnJkX2luZGV4dHVwbGUgPT0g TlVMTCB8fAorCQloZWFwX2F0dGlzbnVsbChyZWxhdGlvbi0+cmRfaW5kZXh0dXBsZSwgQW51 bV9wZ19pbmRleF9pbmRleHBycywgTlVMTCkpCisJCXJldHVybiBOSUw7CisKKwlyZXN1bHQg PSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMocmVsYXRpb24pOworCWlmIChyZXN1bHQg PT0gTklMKQorCQlyZXR1cm4gTklMOworCisJaGVhcFJlbGlkRGF0dW0gPSBoZWFwX2dldGF0 dHIocmVsYXRpb24tPnJkX2luZGV4dHVwbGUsCisJCQkJCQkJIEFudW1fcGdfaW5kZXhfaW5k cmVsaWQsCisJCQkJCQkJIEdldFBnSW5kZXhEZXNjcmlwdG9yKCksCisJCQkJCQkJICZpc251 bGwpOworCUFzc2VydCghaXNudWxsKTsKKwloZWFwUmVsaWQgPSBEYXR1bUdldE9iamVjdElk KGhlYXBSZWxpZERhdHVtKTsKKworCXJlc3VsdCA9IEV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRD b2x1bW5zKHJlc3VsdCwgTlVMTCwgaGVhcFJlbGlkKTsKKworCS8qIE5vdyBzYXZlIGEgY29w eSBvZiB0aGUgY29tcGxldGVkIHRyZWUgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAqLworCW9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhyZWxhdGlvbi0+cmRfaW5kZXhjeHQpOwor CXJlbGF0aW9uLT5yZF9pbmRleHByc0V4cGFuZCA9IGNvcHlPYmplY3QocmVzdWx0KTsKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK IC8qCiAgKiBSZWxhdGlvbkdldER1bW15SW5kZXhFeHByZXNzaW9ucyAtLSBnZXQgZHVtbXkg ZXhwcmVzc2lvbnMgZm9yIGFuIGluZGV4CiAgKgpAQCAtNTI2Niw2ICs1MzA4LDQ1IEBAIFJl bGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24gcmVsYXRpb24pCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAorTGlzdCAqCitSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlRXhwYW5kKFJl bGF0aW9uIHJlbGF0aW9uKQoreworCUxpc3QJICAgKnJlc3VsdDsKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKwlib29sCQlpc251bGw7CisJRGF0dW0JCWhlYXBSZWxpZERhdHVtOworCU9p ZCAgICAgICAgIGhlYXBSZWxpZDsKKworCS8qIFF1aWNrIGV4aXQgaWYgd2UgYWxyZWFkeSBj b21wdXRlZCB0aGUgcmVzdWx0LiAqLworCWlmIChyZWxhdGlvbi0+cmRfaW5kcHJlZEV4cGFu ZCkKKwkJcmV0dXJuIGNvcHlPYmplY3QocmVsYXRpb24tPnJkX2luZHByZWRFeHBhbmQpOwor CisJLyogUXVpY2sgZXhpdCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqLworCWlmIChy ZWxhdGlvbi0+cmRfaW5kZXh0dXBsZSA9PSBOVUxMIHx8CisJCWhlYXBfYXR0aXNudWxsKHJl bGF0aW9uLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZHByZWQsIE5VTEwpKQor CQlyZXR1cm4gTklMOworCisJcmVzdWx0ID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShy ZWxhdGlvbik7CisJaWYgKHJlc3VsdCA9PSBOSUwpCisJCXJldHVybiBOSUw7CisKKwloZWFw UmVsaWREYXR1bSA9IGhlYXBfZ2V0YXR0cihyZWxhdGlvbi0+cmRfaW5kZXh0dXBsZSwKKwkJ CQkJCQkgQW51bV9wZ19pbmRleF9pbmRyZWxpZCwKKwkJCQkJCQkgR2V0UGdJbmRleERlc2Ny aXB0b3IoKSwKKwkJCQkJCQkgJmlzbnVsbCk7CisJQXNzZXJ0KCFpc251bGwpOworCWhlYXBS ZWxpZCA9IERhdHVtR2V0T2JqZWN0SWQoaGVhcFJlbGlkRGF0dW0pOworCisJcmVzdWx0ID0g RXhwYW5kVmlydHVhbEdlbmVyYXRlZENvbHVtbnMocmVzdWx0LCBOVUxMLCBoZWFwUmVsaWQp OworCisJLyogTm93IHNhdmUgYSBjb3B5IG9mIHRoZSBjb21wbGV0ZWQgdHJlZSBpbiB0aGUg cmVsY2FjaGUgZW50cnkuICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJl bGF0aW9uLT5yZF9pbmRleGN4dCk7CisJcmVsYXRpb24tPnJkX2luZHByZWRFeHBhbmQgPSBj b3B5T2JqZWN0KHJlc3VsdCk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisK KwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXAgLS0gZ2V0IGEgYml0bWFwIG9mIGluZGV4IGF0dHJpYnV0ZSBudW1iZXJzCiAgKgpAQCAt NjQ5MCw3ICs2NTcxLDkgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQp CiAJCXJlbC0+cmRfcGFydGNoZWNrdmFsaWQgPSBmYWxzZTsKIAkJcmVsLT5yZF9wYXJ0Y2hl Y2tjeHQgPSBOVUxMOwogCQlyZWwtPnJkX2luZGV4cHJzID0gTklMOworCQlyZWwtPnJkX2lu ZGV4cHJzRXhwYW5kID0gTklMOwogCQlyZWwtPnJkX2luZHByZWQgPSBOSUw7CisJCXJlbC0+ cmRfaW5kcHJlZEV4cGFuZCA9IE5JTDsKIAkJcmVsLT5yZF9leGNsb3BzID0gTlVMTDsKIAkJ cmVsLT5yZF9leGNscHJvY3MgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xzdHJhdHMgPSBOVUxM OwpAQCAtNzAxOSwzICs3MTAyLDQ2IEBAIFJlc093bmVyUmVsZWFzZVJlbGF0aW9uKERhdHVt IHJlcykKIAogCVJlbGF0aW9uQ2xvc2VDbGVhbnVwKChSZWxhdGlvbikgRGF0dW1HZXRQb2lu dGVyKHJlcykpOwogfQorCitMaXN0ICoKK0V4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1bW5z KExpc3QgKmxpc3QsIFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIGhlYXBSZWxJZCkKK3sK Kwlib29sIAkJCQkgb3BlbmVkX3JlbGF0aW9uID0gZmFsc2U7CisJVHVwbGVEZXNjCQkJIHR1 cGRlc2M7CisKKwlpZiAobGlzdCA9PSBOSUwgfHwgKGhlYXBSZWxhdGlvbiA9PSBOVUxMICYm IGhlYXBSZWxJZCA9PSBJbnZhbGlkT2lkKSkKKwkJcmV0dXJuIGxpc3Q7CisKKwlpZiAoaGVh cFJlbGF0aW9uID09IE5VTEwpCisJeworCQloZWFwUmVsYXRpb24gPSB0YWJsZV9vcGVuKGhl YXBSZWxJZCwgTm9Mb2NrKTsKKwkJb3BlbmVkX3JlbGF0aW9uID0gdHJ1ZTsKKwl9CisKKwl0 dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pOworCWlmICgodHVwZGVz Yy0+Y29uc3RyICYmIHR1cGRlc2MtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF92aXJ0dWFsKSkK Kwl7CisJCWludAkJCQkgajsKKwkJQml0bWFwc2V0CQkqaW5kZXhhdHRycyA9IE5VTEw7CisK KwkJcHVsbF92YXJhdHRub3MoKE5vZGUgKilsaXN0LCAxLCAmaW5kZXhhdHRycyk7CisKKwkJ aiA9IC0xOworCQl3aGlsZSAoKGogPSBibXNfbmV4dF9tZW1iZXIoaW5kZXhhdHRycywgaikp ID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bm8gPSBqICsgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkJaWYgKGF0dG5vID4gMCAmJgorCQkJCVR1cGxl RGVzY0F0dHIodHVwZGVzYywgYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCkKKwkJCXsKKwkJCQlsaXN0ID0gKExpc3QgKilleHBhbmRf Z2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcigoTm9kZSAqKWxpc3QsIGhlYXBSZWxhdGlvbiwg MSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAob3BlbmVkX3JlbGF0aW9u KQorCQl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisKKwlyZXR1cm4gbGlz dDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNTNjMTM4MzEuLjIwYTJlNjE4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTkwLDEzICsxOTAsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhJbmZvCiAKIAkvKiBleHByIHRyZWVzIGZvciBleHByZXNzaW9uIGVudHJp ZXMsIG9yIE5JTCBpZiBub25lICovCiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnM7IC8qIGxp c3Qgb2YgRXhwciAqLworCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zRXhwYW5kOyAJLyogbGlz dCBvZiBFeHByICovCiAJLyogZXhlYyBzdGF0ZSBmb3IgZXhwcmVzc2lvbnMsIG9yIE5JTCBp ZiBub25lICovCiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnNTdGF0ZTsJLyogbGlzdCBvZiBF eHByU3RhdGUgKi8KKwlMaXN0CSAgICppaV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlOwkvKiBs aXN0IG9mIEV4cHJTdGF0ZSAqLwogCiAJLyogcGFydGlhbC1pbmRleCBwcmVkaWNhdGUsIG9y IE5JTCBpZiBub25lICovCiAJTGlzdAkgICAqaWlfUHJlZGljYXRlOwkvKiBsaXN0IG9mIEV4 cHIgKi8KKwlMaXN0CSAgICppaV9QcmVkaWNhdGVFeHBhbmQ7CQkvKiBsaXN0IG9mIEV4cHIg Ki8KIAkvKiBleGVjIHN0YXRlIGZvciBleHByZXNzaW9ucywgb3IgTklMIGlmIG5vbmUgKi8K IAlFeHByU3RhdGUgICppaV9QcmVkaWNhdGVTdGF0ZTsKKwlFeHByU3RhdGUgICppaV9QcmVk aWNhdGVFeHBhbmRTdGF0ZTsKIAogCS8qIFBlci1jb2x1bW4gZXhjbHVzaW9uIG9wZXJhdG9y cywgb3IgTlVMTCBpZiBub25lICovCiAJT2lkCQkgICAqaWlfRXhjbHVzaW9uT3BzOwkvKiBh cnJheSB3aXRoIG9uZSBlbnRyeSBwZXIgY29sdW1uICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CmluZGV4IDI3YTJjNjgxLi45YzY1ZTEyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAg LTE0MDMsOCArMTQwMywxMCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleE9wdEluZm8KIAkgKiBw cmludCBpbmRleHRsaXN0CiAJICovCiAJTGlzdAkgICAqaW5kZXhwcnMgcGdfbm9kZV9hdHRy KHJlYWRfd3JpdGVfaWdub3JlKTsKKwlMaXN0CSAgICppbmRleHByc0V4cGFuZCBwZ19ub2Rl X2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwogCS8qIHByZWRpY2F0ZSBpZiBhIHBhcnRpYWwg aW5kZXgsIGVsc2UgTklMICovCiAJTGlzdAkgICAqaW5kcHJlZDsKKwlMaXN0CSAgICppbmRw cmVkRXhwYW5kOwogCiAJLyogdGFyZ2V0bGlzdCByZXByZXNlbnRpbmcgaW5kZXggY29sdW1u cyAqLwogCUxpc3QJICAgKmluZGV4dGxpc3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGZhMDdlYmY4Li43 YmQwMWIzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTIxMCw3ICsyMTAsOSBAQCB0eXBlZGVmIHN0cnVj dCBSZWxhdGlvbkRhdGEKIAlzdHJ1Y3QgRm1nckluZm8gKnJkX3N1cHBvcnRpbmZvOwkvKiBs b29rdXAgaW5mbyBmb3Igc3VwcG9ydCBwcm9jZWR1cmVzICovCiAJaW50MTYJICAgKnJkX2lu ZG9wdGlvbjsJLyogcGVyLWNvbHVtbiBBTS1zcGVjaWZpYyBmbGFncyAqLwogCUxpc3QJICAg KnJkX2luZGV4cHJzOwkvKiBpbmRleCBleHByZXNzaW9uIHRyZWVzLCBpZiBhbnkgKi8KKwlM aXN0CSAgICpyZF9pbmRleHByc0V4cGFuZDsJLyogZXhwYW5kZWQgaW5kZXggZXhwcmVzc2lv biB0cmVlcywgaWYgYW55ICovCiAJTGlzdAkgICAqcmRfaW5kcHJlZDsJCS8qIGluZGV4IHBy ZWRpY2F0ZSB0cmVlLCBpZiBhbnkgKi8KKwlMaXN0CSAgICpyZF9pbmRwcmVkRXhwYW5kOwkJ LyogZXhwYW5kZWQgaW5kZXggcHJlZGljYXRlIHRyZWUsIGlmIGFueSAqLwogCU9pZAkJICAg KnJkX2V4Y2xvcHM7CQkvKiBPSURzIG9mIGV4Y2x1c2lvbiBvcGVyYXRvcnMsIGlmIGFueSAq LwogCU9pZAkJICAgKnJkX2V4Y2xwcm9jczsJLyogT0lEcyBvZiBleGNsdXNpb24gb3BzJyBw cm9jcywgaWYgYW55ICovCiAJdWludDE2CSAgICpyZF9leGNsc3RyYXRzOwkvKiBleGNsdXNp b24gb3BzJyBzdHJhdGVneSBudW1iZXJzLCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5o CmluZGV4IDg5YzI3YWExLi43MDUzMWJiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCkBAIC01 OCw4ICs1OCwxMCBAQCBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRTdGF0RXh0TGlzdChSZWxh dGlvbiByZWxhdGlvbik7CiBleHRlcm4gT2lkCVJlbGF0aW9uR2V0UHJpbWFyeUtleUluZGV4 KFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIGRlZmVycmFibGVfb2spOwogZXh0ZXJuIE9pZAlS ZWxhdGlvbkdldFJlcGxpY2FJbmRleChSZWxhdGlvbiByZWxhdGlvbik7CiBleHRlcm4gTGlz dCAqUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKFJlbGF0aW9uIHJlbGF0aW9uKTsKK2V4 dGVybiBMaXN0ICpSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnNFeHBhbmQoUmVsYXRpb24g cmVsYXRpb24pOwogZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0RHVtbXlJbmRleEV4cHJlc3Np b25zKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVybiBMaXN0ICpSZWxhdGlvbkdldEluZGV4 UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0aW9uKTsKK2V4dGVybiBMaXN0ICpSZWxhdGlvbkdl dEluZGV4UHJlZGljYXRlRXhwYW5kKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVybiBieXRl YSAqKlJlbGF0aW9uR2V0SW5kZXhBdHRPcHRpb25zKFJlbGF0aW9uIHJlbGF0aW9uLCBib29s IGNvcHkpOwogCiAvKgpAQCAtMTYxLDQgKzE2Myw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBi b29sIGNyaXRpY2FsUmVsY2FjaGVzQnVpbHQ7CiAvKiBzaG91bGQgYmUgdXNlZCBvbmx5IGJ5 IHJlbGNhY2hlLmMgYW5kIHBvc3Rpbml0LmMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBib29s IGNyaXRpY2FsU2hhcmVkUmVsY2FjaGVzQnVpbHQ7CiAKK2V4dGVybiBMaXN0ICpFeHBhbmRW aXJ0dWFsR2VuZXJhdGVkQ29sdW1ucyhMaXN0ICpsaXN0LCBSZWxhdGlvbiBoZWFwUmVsYXRp b24sIE9pZCBoZWFwUmVsSWQpOworCiAjZW5kaWYJCQkJCQkJLyogUkVMQ0FDSEVfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVh bC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91 dAppbmRleCAyNGQ1ZGJmNC4uNDVlZTUzMDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC0zNzAsNiArMzcwLDcgQEAg Tm90LW51bGwgY29uc3RyYWludHM6CiAgICAgImd0ZXN0MV9hX25vdF9udWxsIiBOT1QgTlVM TCAiYSIgKGluaGVyaXRlZCkKIEluaGVyaXRzOgogICAgIGd0ZXN0MQorQWNjZXNzIG1ldGhv ZDogaGVhcAogCiBJTlNFUlQgSU5UTyBndGVzdHggKGEsIHgpIFZBTFVFUyAoMTEsIDIyKTsK IFNFTEVDVCAqIEZST00gZ3Rlc3QxOwpAQCAtNzYzLDM5ICs3NjQsMjAyIEBAIEVSUk9SOiAg Y29sdW1uICJjIiBvZiByZWxhdGlvbiAiZ3Rlc3Rubl9jaGlsZCIgY29udGFpbnMgbnVsbCB2 YWx1ZXMKIEFMVEVSIFRBQkxFIGd0ZXN0bm5fcGFyZW50IEFERCBDT0xVTU4gYyBpbnQgTk9U IE5VTEwgR0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGYxLCA0KSArIG51bGxpZihmMiwg NikpIFZJUlRVQUw7ICAtLSBvawogLS0gaW5kZXggY29uc3RyYWludHMKIENSRUFURSBUQUJM RSBndGVzdDIyYSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgLyAyKSBWSVJUVUFMIFVOSVFVRSk7Ci1FUlJPUjogIHVuaXF1ZSBjb25zdHJhaW50 cyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9ydGVkCi0tLUlO U0VSVCBJTlRPIGd0ZXN0MjJhIFZBTFVFUyAoMik7Ci0tLUlOU0VSVCBJTlRPIGd0ZXN0MjJh IFZBTFVFUyAoMyk7Ci0tLUlOU0VSVCBJTlRPIGd0ZXN0MjJhIFZBTFVFUyAoNCk7CitJTlNF UlQgSU5UTyBndGVzdDIyYSBWQUxVRVMgKDIpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0 MjJhIFZBTFVFUyAoMyk7ICAtLSBlcnJvcgorRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVl IHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJndGVzdDIyYV9iX2tleSIKK0RFVEFJTDog IEtleSAoYik9KDEpIGFscmVhZHkgZXhpc3RzLgorSU5TRVJUIElOVE8gZ3Rlc3QyMmEgVkFM VUVTICg0KTsgIC0tIG9rCiBDUkVBVEUgVEFCTEUgZ3Rlc3QyMmIgKGEgaW50LCBiIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChhIC8gMikgVklSVFVBTCwgUFJJTUFSWSBLRVkgKGEsIGIp KTsKLUVSUk9SOiAgcHJpbWFyeSBrZXlzIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMg YXJlIG5vdCBzdXBwb3J0ZWQKLS0tSU5TRVJUIElOVE8gZ3Rlc3QyMmIgVkFMVUVTICgyKTsK LS0tSU5TRVJUIElOVE8gZ3Rlc3QyMmIgVkFMVUVTICgyKTsKK0lOU0VSVCBJTlRPIGd0ZXN0 MjJiIFZBTFVFUyAoMik7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyMmIgVkFMVUVTICgy KTsgIC0tIGVycm9yCitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5p cXVlIGNvbnN0cmFpbnQgImd0ZXN0MjJiX3BrZXkiCitERVRBSUw6ICBLZXkgKGEsIGIpPSgy LCAxKSBhbHJlYWR5IGV4aXN0cy4KIC0tIGluZGV4ZXMKIENSRUFURSBUQUJMRSBndGVzdDIy YyAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBWSVJUVUFMKTsK LS0tQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2JfaWR4IE9OIGd0ZXN0MjJjIChiKTsKLS0tQ1JF QVRFIElOREVYIGd0ZXN0MjJjX2V4cHJfaWR4IE9OIGd0ZXN0MjJjICgoYiAqIDMpKTsKLS0t Q1JFQVRFIElOREVYIGd0ZXN0MjJjX3ByZWRfaWR4IE9OIGd0ZXN0MjJjIChhKSBXSEVSRSBi ID4gMDsKLS0tXGQgZ3Rlc3QyMmMKLS0tSU5TRVJUIElOVE8gZ3Rlc3QyMmMgVkFMVUVTICgx KSwgKDIpLCAoMyk7Ci0tLVNFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7Ci0tLVNFVCBlbmFi bGVfYml0bWFwc2NhbiBUTyBvZmY7Ci0tLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSBndGVzdDIyYyBXSEVSRSBiID0gNDsKLS0tU0VMRUNUICogRlJPTSBndGVzdDIyYyBX SEVSRSBiID0gNDsKLS0tRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0 MjJjIFdIRVJFIGIgKiAzID0gNjsKLS0tU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBi ICogMyA9IDY7Ci0tLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIy YyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7Ci0tLVNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hF UkUgYSA9IDEgQU5EIGIgPiAwOwotLS1BTFRFUiBUQUJMRSBndGVzdDIyYyBBTFRFUiBDT0xV TU4gYiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDQpOwotLS1BTkFMWVpFIGd0ZXN0MjJjOwot LS1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiA9 IDg7Ci0tLVNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiA9IDg7Ci0tLUVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDEyOwot LS1TRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGIgKiAzID0gMTI7Ci0tLUVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+ IDA7Ci0tLVNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOwot LS1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLS0tUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitD UkVBVEUgSU5ERVggZ3Rlc3QyMmNfYl9pZHggT04gZ3Rlc3QyMmMgKGIpOyAgLS0gb2sKK0NS RUFURSBJTkRFWCBndGVzdDIyY19leHByX2lkeCBPTiBndGVzdDIyYyAoKGIgKiAzKSk7ICAt LSBvaworQ1JFQVRFIElOREVYIGd0ZXN0MjJjX3ByZWRfaWR4IE9OIGd0ZXN0MjJjIChhKSBX SEVSRSBiID4gMDsgIC0tIG9rCitcZCBndGVzdDIyYworICAgICAgICAgICAgICAgVGFibGUg ImdlbmVyYXRlZF92aXJ0dWFsX3Rlc3RzLmd0ZXN0MjJjIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpCitJbmRleGVzOgorICAgICJndGVzdDIyY19i X2lkeCIgYnRyZWUgKGIpCisgICAgImd0ZXN0MjJjX2V4cHJfaWR4IiBidHJlZSAoKGIgKiAz KSkKKyAgICAiZ3Rlc3QyMmNfcHJlZF9pZHgiIGJ0cmVlIChhKSBXSEVSRSBiID4gMAorCitJ TlNFUlQgSU5UTyBndGVzdDIyYyBWQUxVRVMgKDEpLCAoMiksICgzKTsKK1NFVCBlbmFibGVf c2Vxc2NhbiBUTyBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gVE8gb2ZmOworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGIgPSA0OworICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggT25seSBTY2FuIHVzaW5nIGd0ZXN0MjJjX3ByZWRfaWR4IG9uIGd0ZXN0MjJjCisg ICBGaWx0ZXI6ICgoYSAqIDIpID0gNCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZ3Rl c3QyMmMgV0hFUkUgYiA9IDQ7CisgYSB8IGIgCistLS0rLS0tCisgMiB8IDQKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGIg KiAzID0gNjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSW5kZXggU2NhbiB1c2luZyBndGVzdDIyY19leHByX2lkeCBvbiBndGVzdDIyYworICAg SW5kZXggQ29uZDogKCgoYSAqIDIpICogMykgPSA2KQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDY7CisgYSB8IGIgCistLS0rLS0tCisgMSB8 IDIKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0 MjJjIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IE9ubHkgU2NhbiB1c2luZyBn dGVzdDIyY19wcmVkX2lkeCBvbiBndGVzdDIyYworICAgSW5kZXggQ29uZDogKGEgPSAxKQor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+ IDA7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKygxIHJvdykKKworQUxURVIgVEFCTEUg Z3Rlc3QyMmMgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEgKiA0KTsKK0FO QUxZWkUgZ3Rlc3QyMmM7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rl c3QyMmMgV0hFUkUgYiA9IDg7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZ3Rlc3QyMmNf cHJlZF9pZHggb24gZ3Rlc3QyMmMKKyAgIEZpbHRlcjogKChhICogNCkgPSA4KQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiID0gODsKKyBhIHwgYiAKKy0t LSstLS0KKyAyIHwgOAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSAxMjsKKyAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBndGVzdDIyY19l eHByX2lkeCBvbiBndGVzdDIyYworICAgSW5kZXggQ29uZDogKCgoYSAqIDQpICogMykgPSAx MikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSAx MjsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgNAorKDEgcm93KQorCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOwor ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSW5kZXggT25seSBTY2FuIHVzaW5nIGd0ZXN0MjJjX3ByZWRfaWR4IG9uIGd0ZXN0MjJj CisgICBJbmRleCBDb25kOiAoYSA9IDEpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGd0 ZXN0MjJjIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwg NAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmQgKGEgaW50CisgICx2MSBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDExKSBWSVJUVUFMCisgICx2MiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoYSAqIDIyKSBWSVJUVUFMCisgICx2MyBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYSAqIDMzKSBWSVJUVUFMCisgICx2NCBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDQ0KSBWSVJUVUFMCispOyAgLS0gb2sgIAoraW5zZXJ0IGludG8gZ3Rlc3QyMmQg c2VsZWN0IG9pZCBmcm9tIHBnX2NhdGFsb2cucGdfY2xhc3MgdW5pb24gYWxsIHNlbGVjdCAt MTsgIC0tIG9rCitDUkVBVEUgSU5ERVggZ3Rlc3QyMmRfdmdjX2lkeCBPTiBndGVzdDIyZChh LHYxLGFicyh2MikpIEluY2x1ZGUodjMpIFdIRVJFIHY0IDwgMTAwOyAgLS0gb2sKK1xkIGd0 ZXN0MjJkCisgICAgICAgICAgICAgICAgVGFibGUgImdlbmVyYXRlZF92aXJ0dWFsX3Rlc3Rz Lmd0ZXN0MjJkIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBh ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2MSAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChh ICogMTEpCisgdjIgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2Vu ZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIyKQorIHYzICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAzMykKKyB2NCAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFz IChhICogNDQpCitJbmRleGVzOgorICAgICJndGVzdDIyZF92Z2NfaWR4IiBidHJlZSAoYSwg djEsIGFicyh2MikpIElOQ0xVREUgKHYzKSBXSEVSRSB2NCA8IDEwMAorCithbmFseXplIGd0 ZXN0MjJkOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdI RVJFIHY0IDwgMTAwOyAgLS1JbmRleCBPbmx5IFNjYW4gb3IgSW5kZXggU2NhbgorICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4 IE9ubHkgU2NhbiB1c2luZyBndGVzdDIyZF92Z2NfaWR4IG9uIGd0ZXN0MjJkCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgdjQgPCAxMDA7CisgYSAgfCB2MSAg fCB2MiAgfCB2MyAgfCB2NCAgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tCisgLTEg fCAtMTEgfCAtMjIgfCAtMzMgfCAtNDQKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIHY0ICogNSA8IDEwMDsgIC0tU2VxIFNj YW4KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBndGVzdDIyZAorICAgRGlzYWJs ZWQ6IHRydWUKKyAgIEZpbHRlcjogKCgoYSAqIDQ0KSAqIDUpIDwgMTAwKQorKDMgcm93cykK KworU0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSB2NCAqIDUgPCAxMDA7CisgYSAgfCB2 MSAgfCB2MiAgfCB2MyAgfCB2NCAgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tCisg LTEgfCAtMTEgfCAtMjIgfCAtMzMgfCAtNDQKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGEgKiA0NCA8IDEwMDsgIC0tSW5k ZXggT25seSBTY2FuIG9yIEluZGV4IFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZ3Rl c3QyMmRfdmdjX2lkeCBvbiBndGVzdDIyZAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGd0 ZXN0MjJkIFdIRVJFIGEgKiA0NCA8IDEwMDsKKyBhICB8IHYxICB8IHYyICB8IHYzICB8IHY0 ICAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0KKyAtMSB8IC0xMSB8IC0yMiB8IC0z MyB8IC00NAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g Z3Rlc3QyMmQgV0hFUkUgKGEgKiA0NCkgPCAxMDA7ICAtLUluZGV4IE9ubHkgU2NhbiBvciBJ bmRleCBTY2FuCisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgSW5kZXggT25seSBTY2FuIHVzaW5nIGd0ZXN0MjJkX3ZnY19pZHggb24g Z3Rlc3QyMmQKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSAoYSAq IDQ0KSA8IDEwMDsKKyBhICB8IHYxICB8IHYyICB8IHYzICB8IHY0ICAKKy0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0KKyAtMSB8IC0xMSB8IC0yMiB8IC0zMyB8IC00NAorKDEgcm93 KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUg KGEgKiAzMykgPCAxMDA7ICAtLVNlcSBTY2FuCisgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gZ3Rlc3Qy MmQKKyAgIERpc2FibGVkOiB0cnVlCisgICBGaWx0ZXI6ICgoYSAqIDMzKSA8IDEwMCkKKygz IHJvd3MpCisKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgKGEgKiAzMykgPCAxMDA7 CisgYSAgfCB2MSAgfCB2MiAgfCB2MyAgfCB2NCAgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0t Ky0tLS0tCisgLTEgfCAtMTEgfCAtMjIgfCAtMzMgfCAtNDQKKygxIHJvdykKKworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKIC0tIGZvcmVpZ24g a2V5cwogQ1JFQVRFIFRBQkxFIGd0ZXN0MjNhICh4IGludCBQUklNQVJZIEtFWSwgeSBpbnQp OwogLS1JTlNFUlQgSU5UTyBndGVzdDIzYSBWQUxVRVMgKDEsIDExKSwgKDIsIDIyKSwgKDMs IDMzKTsKQEAgLTgxMywxMiArOTc3LDEyIEBAIEVSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3Ry YWludHMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZAog LS1EUk9QIFRBQkxFIGd0ZXN0MjNiOwogLS1EUk9QIFRBQkxFIGd0ZXN0MjNhOwogQ1JFQVRF IFRBQkxFIGd0ZXN0MjNwICh4IGludCwgeSBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoeCAq IDIpIFZJUlRVQUwsIFBSSU1BUlkgS0VZICh5KSk7Ci1FUlJPUjogIHByaW1hcnkga2V5cyBv biB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9ydGVkCi0tLUlOU0VS VCBJTlRPIGd0ZXN0MjNwIFZBTFVFUyAoMSksICgyKSwgKDMpOworSU5TRVJUIElOVE8gZ3Rl c3QyM3AgVkFMVUVTICgxKSwgKDIpLCAoMyk7ICAtLSBvawogQ1JFQVRFIFRBQkxFIGd0ZXN0 MjNxIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgUkVGRVJFTkNFUyBndGVzdDIzcCAoeSkp OwotRVJST1I6ICByZWxhdGlvbiAiZ3Rlc3QyM3AiIGRvZXMgbm90IGV4aXN0Ci0tLUlOU0VS VCBJTlRPIGd0ZXN0MjNxIFZBTFVFUyAoMSwgMik7ICAtLSBvawotLS1JTlNFUlQgSU5UTyBn dGVzdDIzcSBWQUxVRVMgKDIsIDUpOyAgLS0gZXJyb3IKK0lOU0VSVCBJTlRPIGd0ZXN0MjNx IFZBTFVFUyAoMSwgMik7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyM3EgVkFMVUVTICgy LCA1KTsgIC0tIGVycm9yCitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgImd0 ZXN0MjNxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJndGVzdDIzcV9iX2Zr ZXkiCitERVRBSUw6ICBLZXkgKGIpPSg1KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAiZ3Rl c3QyM3AiLgogLS0gZG9tYWlucwogQ1JFQVRFIERPTUFJTiBndGVzdGRvbWFpbjEgQVMgaW50 IENIRUNLIChWQUxVRSA8IDEwKTsKIENSRUFURSBUQUJMRSBndGVzdDI0IChhIGludCBQUklN QVJZIEtFWSwgYiBndGVzdGRvbWFpbjEgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFZJ UlRVQUwpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3Zp cnR1YWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3Fs CmluZGV4IDljMmJiNjU5Li41ZWJkYzVlZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2dlbmVyYXRlZF92aXJ0dWFsLnNxbApAQCAtMzk2LDQwICszOTYsNjIgQEAgQUxURVIgVEFC TEUgZ3Rlc3Rubl9wYXJlbnQgQUREIENPTFVNTiBjIGludCBOT1QgTlVMTCBHRU5FUkFURUQg QUxXQVlTIEFTIChudWxsaWYKIAogLS0gaW5kZXggY29uc3RyYWludHMKIENSRUFURSBUQUJM RSBndGVzdDIyYSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgLyAyKSBWSVJUVUFMIFVOSVFVRSk7Ci0tLUlOU0VSVCBJTlRPIGd0ZXN0MjJhIFZB TFVFUyAoMik7Ci0tLUlOU0VSVCBJTlRPIGd0ZXN0MjJhIFZBTFVFUyAoMyk7Ci0tLUlOU0VS VCBJTlRPIGd0ZXN0MjJhIFZBTFVFUyAoNCk7CitJTlNFUlQgSU5UTyBndGVzdDIyYSBWQUxV RVMgKDIpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjJhIFZBTFVFUyAoMyk7ICAtLSBl cnJvcgorSU5TRVJUIElOVE8gZ3Rlc3QyMmEgVkFMVUVTICg0KTsgIC0tIG9rCiBDUkVBVEUg VEFCTEUgZ3Rlc3QyMmIgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhIC8g MikgVklSVFVBTCwgUFJJTUFSWSBLRVkgKGEsIGIpKTsKLS0tSU5TRVJUIElOVE8gZ3Rlc3Qy MmIgVkFMVUVTICgyKTsKLS0tSU5TRVJUIElOVE8gZ3Rlc3QyMmIgVkFMVUVTICgyKTsKK0lO U0VSVCBJTlRPIGd0ZXN0MjJiIFZBTFVFUyAoMik7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rl c3QyMmIgVkFMVUVTICgyKTsgIC0tIGVycm9yCiAKIC0tIGluZGV4ZXMKIENSRUFURSBUQUJM RSBndGVzdDIyYyAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBW SVJUVUFMKTsKLS0tQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2JfaWR4IE9OIGd0ZXN0MjJjIChi KTsKLS0tQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2V4cHJfaWR4IE9OIGd0ZXN0MjJjICgoYiAq IDMpKTsKLS0tQ1JFQVRFIElOREVYIGd0ZXN0MjJjX3ByZWRfaWR4IE9OIGd0ZXN0MjJjIChh KSBXSEVSRSBiID4gMDsKLS0tXGQgZ3Rlc3QyMmMKLQotLS1JTlNFUlQgSU5UTyBndGVzdDIy YyBWQUxVRVMgKDEpLCAoMiksICgzKTsKLS0tU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsK LS0tU0VUIGVuYWJsZV9iaXRtYXBzY2FuIFRPIG9mZjsKLS0tRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGIgPSA0OwotLS1TRUxFQ1QgKiBGUk9N IGd0ZXN0MjJjIFdIRVJFIGIgPSA0OwotLS1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OwotLS1TRUxFQ1QgKiBGUk9NIGd0ZXN0 MjJjIFdIRVJFIGIgKiAzID0gNjsKLS0tRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjJjIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKLS0tU0VMRUNUICogRlJPTSBn dGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7Ci0KLS0tQUxURVIgVEFCTEUgZ3Rlc3Qy MmMgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEgKiA0KTsKLS0tQU5BTFla RSBndGVzdDIyYzsKLS0tRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0 MjJjIFdIRVJFIGIgPSA4OwotLS1TRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGIgPSA4 OwotLS1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUg YiAqIDMgPSAxMjsKLS0tU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDEy OwotLS1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUg YSA9IDEgQU5EIGIgPiAwOwotLS1TRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGEgPSAx IEFORCBiID4gMDsKLS0tUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0tLVJFU0VUIGVuYWJsZV9i aXRtYXBzY2FuOworQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2JfaWR4IE9OIGd0ZXN0MjJjIChi KTsgIC0tIG9rCitDUkVBVEUgSU5ERVggZ3Rlc3QyMmNfZXhwcl9pZHggT04gZ3Rlc3QyMmMg KChiICogMykpOyAgLS0gb2sKK0NSRUFURSBJTkRFWCBndGVzdDIyY19wcmVkX2lkeCBPTiBn dGVzdDIyYyAoYSkgV0hFUkUgYiA+IDA7ICAtLSBvaworXGQgZ3Rlc3QyMmMKKworSU5TRVJU IElOVE8gZ3Rlc3QyMmMgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitTRVQgZW5hYmxlX3NlcXNj YW4gVE8gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuIFRPIG9mZjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiID0gNDsKK1NFTEVDVCAq IEZST00gZ3Rlc3QyMmMgV0hFUkUgYiA9IDQ7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OworU0VMRUNUICogRlJPTSBndGVz dDIyYyBXSEVSRSBiICogMyA9IDY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gZ3Rlc3QyMmMgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOworU0VMRUNUICogRlJPTSBndGVz dDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisKK0FMVEVSIFRBQkxFIGd0ZXN0MjJjIEFM VEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogNCk7CitBTkFMWVpFIGd0ZXN0 MjJjOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJF IGIgPSA4OworU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiID0gODsKK0VYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDEyOwor U0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDEyOworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJjIFdIRVJFIGEgPSAxIEFORCBiID4gMDsK K1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOworCitDUkVB VEUgVEFCTEUgZ3Rlc3QyMmQgKGEgaW50CisgICx2MSBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDExKSBWSVJUVUFMCisgICx2MiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAq IDIyKSBWSVJUVUFMCisgICx2MyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMzKSBW SVJUVUFMCisgICx2NCBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDQ0KSBWSVJUVUFM CispOyAgLS0gb2sKK2luc2VydCBpbnRvIGd0ZXN0MjJkIHNlbGVjdCBvaWQgZnJvbSBwZ19j YXRhbG9nLnBnX2NsYXNzIHVuaW9uIGFsbCBzZWxlY3QgLTE7ICAtLSBvaworQ1JFQVRFIElO REVYIGd0ZXN0MjJkX3ZnY19pZHggT04gZ3Rlc3QyMmQoYSx2MSxhYnModjIpKSBJbmNsdWRl KHYzKSBXSEVSRSB2NCA8IDEwMDsgIC0tIG9rCitcZCBndGVzdDIyZAorYW5hbHl6ZSBndGVz dDIyZDsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVS RSB2NCA8IDEwMDsgIC0tSW5kZXggT25seSBTY2FuIG9yIEluZGV4IFNjYW4KK1NFTEVDVCAq IEZST00gZ3Rlc3QyMmQgV0hFUkUgdjQgPCAxMDA7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgdjQgKiA1IDwgMTAwOyAgLS1TZXEgU2Nhbgor U0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSB2NCAqIDUgPCAxMDA7CitFWFBMQUlOIChD T1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgYSAqIDQ0IDwgMTAwOyAg LS1JbmRleCBPbmx5IFNjYW4gb3IgSW5kZXggU2NhbgorU0VMRUNUICogRlJPTSBndGVzdDIy ZCBXSEVSRSBhICogNDQgPCAxMDA7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gZ3Rlc3QyMmQgV0hFUkUgKGEgKiA0NCkgPCAxMDA7ICAtLUluZGV4IE9ubHkgU2NhbiBv ciBJbmRleCBTY2FuCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIChhICogNDQpIDwg MTAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJF IChhICogMzMpIDwgMTAwOyAgLS1TZXEgU2NhbgorU0VMRUNUICogRlJPTSBndGVzdDIyZCBX SEVSRSAoYSAqIDMzKSA8IDEwMDsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKIAogLS0gZm9yZWlnbiBrZXlzCiBDUkVBVEUgVEFCTEUgZ3Rl c3QyM2EgKHggaW50IFBSSU1BUlkgS0VZLCB5IGludCk7CkBAIC00NTAsMTEgKzQ3MiwxMSBA QCBDUkVBVEUgVEFCTEUgZ3Rlc3QyM2IgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMikgVklSVAogLS1EUk9QIFRBQkxFIGd0ZXN0MjNhOwog CiBDUkVBVEUgVEFCTEUgZ3Rlc3QyM3AgKHggaW50LCB5IGludCBHRU5FUkFURUQgQUxXQVlT IEFTICh4ICogMikgVklSVFVBTCwgUFJJTUFSWSBLRVkgKHkpKTsKLS0tSU5TRVJUIElOVE8g Z3Rlc3QyM3AgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitJTlNFUlQgSU5UTyBndGVzdDIzcCBW QUxVRVMgKDEpLCAoMiksICgzKTsgIC0tIG9rCiAKIENSRUFURSBUQUJMRSBndGVzdDIzcSAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IFJFRkVSRU5DRVMgZ3Rlc3QyM3AgKHkpKTsKLS0t SU5TRVJUIElOVE8gZ3Rlc3QyM3EgVkFMVUVTICgxLCAyKTsgIC0tIG9rCi0tLUlOU0VSVCBJ TlRPIGd0ZXN0MjNxIFZBTFVFUyAoMiwgNSk7ICAtLSBlcnJvcgorSU5TRVJUIElOVE8gZ3Rl c3QyM3EgVkFMVUVTICgxLCAyKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIzcSBWQUxV RVMgKDIsIDUpOyAgLS0gZXJyb3IKIAogLS0gZG9tYWlucwogQ1JFQVRFIERPTUFJTiBndGVz dGRvbWFpbjEgQVMgaW50IENIRUNLIChWQUxVRSA8IDEwKTsKLS0gCjIuNDMuMAoK ------=_NextPart_6A4D01BA_E0C967E0_16568690--