Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nlRaN-0003EH-Ho for pgsql-hackers@arkaria.postgresql.org; Mon, 02 May 2022 08:39:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nlRaL-0004ph-Fd for pgsql-hackers@arkaria.postgresql.org; Mon, 02 May 2022 08:39:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nlRaK-0004pY-C3 for pgsql-hackers@lists.postgresql.org; Mon, 02 May 2022 08:39:13 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nlRaE-00056x-4d for pgsql-hackers@postgresql.org; Mon, 02 May 2022 08:39:11 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 7D1195C00CF for ; Mon, 2 May 2022 04:39:02 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 02 May 2022 04:39:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; t=1651480742; x=1651567142; bh=4PHF344e6QPSY 95mt9aLACVwpwIM53g1k3fkuH0boaE=; b=YQZNB455ostGnAIMKV2OubWHV2x4l yrGs3lYOcnsTJMqsjQ1P3zQ6lHoCGtWifmtggRKX213EE0qFtElK6i/PlRuvYgN3 gx2ei4DytqwawOEQFVf1apzQZCEtqYRkG4Z5hX9tSKdOn3dj0vcdoCq9kSqPTk83 OpzDL5gi1LgVxYKCU9hZNzWWA2+pkqp6S6lsdIvSuReuCMhs+Qe3KGEKiFl3DFH8 5eVW5/RFSXhHzjwkv7DrtQ84cqOQoy4id8GrwMPYxNUGkd7C9F2I0ESdI6tvq4kR FLjQLVsihcFYIRSsf90EHPyB0GPJoyaDy5i9rBfuJ1S0zuNXMNRgijevw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrvdehgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderredtfe ejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhs vghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrh hnpeetveeuvdeikeeigefhveffhffhvdejveelleefieekieekvdffgeetkedutdefleen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvg hrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 2 May 2022 04:39:01 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------Qs66rZhQ6lRcsOgwiKACyfWC" Message-ID: <2914356f-9e5f-8c59-2995-5997fc48bcba@enterprisedb.com> Date: Mon, 2 May 2022 10:38:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Content-Language: en-US From: Peter Eisentraut Subject: Refactor construct_array() and deconstruct_array() for built-in types To: pgsql-hackers 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. --------------Qs66rZhQ6lRcsOgwiKACyfWC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit [for PG16] There are many calls to construct_array() and deconstruct_array() for built-in types, for example, when dealing with system catalog columns. These all hardcode the type attributes necessary to pass to these functions. To simplify this a bit, add construct_array_builtin(), deconstruct_array_builtin() as wrappers that centralize this hardcoded knowledge. This simplifies many call sites and reduces the amount of hardcoded stuff that is spread around. I also considered having genbki.pl generate lookup tables for these hardcoded values, similar to schemapg.h, but that ultimately seemed excessive. Thoughts? --------------Qs66rZhQ6lRcsOgwiKACyfWC Content-Type: text/plain; charset=UTF-8; name="0001-Add-construct_array_builtin-deconstruct_array_builti.patch" Content-Disposition: attachment; filename*0="0001-Add-construct_array_builtin-deconstruct_array_builti.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNWZlMzBmZWMxNjkyYTRlMzI5ZTljOWIxZWQ0MDg2M2UzYjk3MGIyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDEwOjIzOjI2ICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIGNvbnN0cnVjdF9hcnJheV9idWlsdGluLCBkZWNvbnN0cnVjdF9hcnJh eV9idWlsdGluCgpUaGVyZSB3ZXJlIG1hbnkgY2FsbHMgdG8gY29uc3RydWN0X2FycmF5KCkg YW5kIGRlY29uc3RydWN0X2FycmF5KCkgZm9yCmJ1aWx0LWluIHR5cGVzLCBmb3IgZXhhbXBs ZSwgd2hlbiBkZWFsaW5nIHdpdGggc3lzdGVtIGNhdGFsb2cgY29sdW1ucy4KVGhlc2UgYWxs IGhhcmRjb2RlZCB0aGUgdHlwZSBhdHRyaWJ1dGVzIG5lY2Vzc2FyeSB0byBwYXNzIHRvIHRo ZXNlCmZ1bmN0aW9ucy4KClRvIHNpbXBsaWZ5IHRoaXMgYSBiaXQsIGFkZCBjb25zdHJ1Y3Rf YXJyYXlfYnVpbHRpbigpLApkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKCkgYXMgd3JhcHBl cnMgdGhhdCBjZW50cmFsaXplIHRoaXMgaGFyZGNvZGVkCmtub3dsZWRnZS4gIFRoaXMgc2lt cGxpZmllcyBtYW55IGNhbGwgc2l0ZXMgYW5kIHJlZHVjZXMgdGhlIGFtb3VudCBvZgpoYXJk Y29kZWQgc3R1ZmYgdGhhdCBpcyBzcHJlYWQgYXJvdW5kLgotLS0KIGNvbnRyaWIvaHN0b3Jl L2hzdG9yZV9naW4uYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogY29udHJpYi9oc3Rv cmUvaHN0b3JlX2dpc3QuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBjb250cmliL2hz dG9yZS9oc3RvcmVfaW8uYyAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIGNvbnRyaWIv aHN0b3JlL2hzdG9yZV9vcC5jICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogY29udHJp Yi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMgICAgICAgICAgICAgIHwgICA2ICstCiBjb250 cmliL3BhZ2VpbnNwZWN0L2dpbmZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIGNv bnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMgICAgICAgICAgICAgICB8ICAgNCArLQog Y29udHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDE0ICst CiBjb250cmliL3BhZ2VpbnNwZWN0L2hlYXBmdW5jcy5jICAgICAgICAgICAgICAgfCAgIDQg Ky0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgICAgICAgICAgICAgICAgICAgICB8ICAg NyArLQogY29udHJpYi9wZ2NyeXB0by9wZ3AtcGdzcWwuYyAgICAgICAgICAgICAgICAgIHwg ICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyAgICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jICAgICAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAg ICAgIHwgIDIxICstLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMgICAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5j ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAg ICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5jICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YyAgICAgICAgICAgICAgfCAgMjQgKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlv bmNtZHMuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGlj eS5jICAgICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dGF0c2NtZHMuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90eXBlLmMgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA0ICstCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyAgICAgICB8ICAgNSArLQogc3JjL2Jh Y2tlbmQvdHNlYXJjaC9kaWN0LmMgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAgfCAxNTMgKysrKysr KysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXl1dGlscy5jICAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9oYmFmdW5jcy5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyAgICAgICAg ICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAg ICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4u YyAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX29w LmMgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgICAgICAgICAgICAgfCAgMTggKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbG9j a2Z1bmNzLmMgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9u YW1lLmMgICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L29yZGVyZWRzZXRhZ2dzLmMgICAgICAgIHwgIDIwICstLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgMjAgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYyAgICAgICAgICAgfCAgMTkgKy0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQveG1sLmMgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvZm1nci9mdW5jYXBpLmMgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL2FycmF5LmggICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiAu Li4vbW9kdWxlcy90ZXN0X3Jsc19ob29rcy90ZXN0X3Jsc19ob29rcy5jICAgfCAgIDQgKy0K IDUxIGZpbGVzIGNoYW5nZWQsIDI3NiBpbnNlcnRpb25zKCspLCAyOTggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2dpbi5jIGIvY29udHJpYi9o c3RvcmUvaHN0b3JlX2dpbi5jCmluZGV4IDkwODUzMDI2MWEuLjc2NmMwMGJiNmEgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9naW4uYworKysgYi9jb250cmliL2hzdG9y ZS9oc3RvcmVfZ2luLmMKQEAgLTExOCw5ICsxMTgsNyBAQCBnaW5fZXh0cmFjdF9oc3RvcmVf cXVlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJajsKIAkJdGV4dAkgICAqaXRlbTsKIAot CQlkZWNvbnN0cnVjdF9hcnJheShxdWVyeSwKLQkJCQkJCSAgVEVYVE9JRCwgLTEsIGZhbHNl LCBUWVBBTElHTl9JTlQsCi0JCQkJCQkgICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAma2V5 X2NvdW50KTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihxdWVyeSwgVEVYVE9JRCwg JmtleV9kYXR1bXMsICZrZXlfbnVsbHMsICZrZXlfY291bnQpOwogCiAJCWVudHJpZXMgPSAo RGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBrZXlfY291bnQpOwogCmRpZmYgLS1n aXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2lzdC5jIGIvY29udHJpYi9oc3RvcmUvaHN0 b3JlX2dpc3QuYwppbmRleCAxMDJjOWNlYTcyLi4wYTk1NjI4ODM3IDEwMDY0NAotLS0gYS9j b250cmliL2hzdG9yZS9oc3RvcmVfZ2lzdC5jCisrKyBiL2NvbnRyaWIvaHN0b3JlL2hzdG9y ZV9naXN0LmMKQEAgLTU2MCw5ICs1NjAsNyBAQCBnaHN0b3JlX2NvbnNpc3RlbnQoUEdfRlVO Q1RJT05fQVJHUykKIAkJaW50CQkJa2V5X2NvdW50OwogCQlpbnQJCQlpOwogCi0JCWRlY29u c3RydWN0X2FycmF5KHF1ZXJ5LAotCQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFM SUdOX0lOVCwKLQkJCQkJCSAgJmtleV9kYXR1bXMsICZrZXlfbnVsbHMsICZrZXlfY291bnQp OworCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKHF1ZXJ5LCBURVhUT0lELCAma2V5X2Rh dHVtcywgJmtleV9udWxscywgJmtleV9jb3VudCk7CiAKIAkJZm9yIChpID0gMDsgcmVzICYm IGkgPCBrZXlfY291bnQ7ICsraSkKIAkJewpAQCAtNTgzLDkgKzU4MSw3IEBAIGdoc3RvcmVf Y29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQlpbnQJCQlrZXlfY291bnQ7CiAJCWlu dAkJCWk7CiAKLQkJZGVjb25zdHJ1Y3RfYXJyYXkocXVlcnksCi0JCQkJCQkgIFRFWFRPSUQs IC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkJICAma2V5X2RhdHVtcywgJmtleV9u dWxscywgJmtleV9jb3VudCk7CisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocXVlcnks IFRFWFRPSUQsICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAma2V5X2NvdW50KTsKIAogCQly ZXMgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2lvLmMg Yi9jb250cmliL2hzdG9yZS9oc3RvcmVfaW8uYwppbmRleCBiMzMwNGZmODQ0Li5mYjcyYmI2 Y2ZlIDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9oc3RvcmVfaW8uYworKysgYi9jb250 cmliL2hzdG9yZS9oc3RvcmVfaW8uYwpAQCAtNTY3LDkgKzU2Nyw3IEBAIGhzdG9yZV9mcm9t X2FycmF5cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfQVJSQVlf U1VCU0NSSVBUX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ3cm9uZyBudW1iZXIgb2YgYXJyYXkg c3Vic2NyaXB0cyIpKSk7CiAKLQlkZWNvbnN0cnVjdF9hcnJheShrZXlfYXJyYXksCi0JCQkJ CSAgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAgJmtleV9kYXR1 bXMsICZrZXlfbnVsbHMsICZrZXlfY291bnQpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0 aW4oa2V5X2FycmF5LCBURVhUT0lELCAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9j b3VudCk7CiAKIAkvKiBzZWUgZGlzY3Vzc2lvbiBpbiBoc3RvcmVBcnJheVRvUGFpcnMoKSAq LwogCWlmIChrZXlfY291bnQgPiBNYXhBbGxvY1NpemUgLyBzaXplb2YoUGFpcnMpKQpAQCAt NjA2LDkgKzYwNCw3IEBAIGhzdG9yZV9mcm9tX2FycmF5cyhQR19GVU5DVElPTl9BUkdTKQog CQkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9FUlJPUiksCiAJCQkJCSBl cnJtc2coImFycmF5cyBtdXN0IGhhdmUgc2FtZSBib3VuZHMiKSkpOwogCi0JCWRlY29uc3Ry dWN0X2FycmF5KHZhbHVlX2FycmF5LAotCQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZ UEFMSUdOX0lOVCwKLQkJCQkJCSAgJnZhbHVlX2RhdHVtcywgJnZhbHVlX251bGxzLCAmdmFs dWVfY291bnQpOworCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKHZhbHVlX2FycmF5LCBU RVhUT0lELCAmdmFsdWVfZGF0dW1zLCAmdmFsdWVfbnVsbHMsICZ2YWx1ZV9jb3VudCk7CiAK IAkJQXNzZXJ0KGtleV9jb3VudCA9PSB2YWx1ZV9jb3VudCk7CiAJfQpAQCAtNjk2LDkgKzY5 Miw3IEBAIGhzdG9yZV9mcm9tX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCSBlcnJt c2coIndyb25nIG51bWJlciBvZiBhcnJheSBzdWJzY3JpcHRzIikpKTsKIAl9CiAKLQlkZWNv bnN0cnVjdF9hcnJheShpbl9hcnJheSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZ UEFMSUdOX0lOVCwKLQkJCQkJICAmaW5fZGF0dW1zLCAmaW5fbnVsbHMsICZpbl9jb3VudCk7 CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihpbl9hcnJheSwgVEVYVE9JRCwgJmluX2Rh dHVtcywgJmluX251bGxzLCAmaW5fY291bnQpOwogCiAJY291bnQgPSBpbl9jb3VudCAvIDI7 CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9vcC5jIGIvY29udHJpYi9o c3RvcmUvaHN0b3JlX29wLmMKaW5kZXggZGQ3OWQwMWNhYy4uMmY1NDBkN2VkNiAxMDA2NDQK LS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX29wLmMKKysrIGIvY29udHJpYi9oc3RvcmUv aHN0b3JlX29wLmMKQEAgLTgwLDkgKzgwLDcgQEAgaHN0b3JlQXJyYXlUb1BhaXJzKEFycmF5 VHlwZSAqYSwgaW50ICpucGFpcnMpCiAJaW50CQkJaSwKIAkJCQlqOwogCi0JZGVjb25zdHJ1 Y3RfYXJyYXkoYSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwK LQkJCQkJICAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9jb3VudCk7CisJZGVjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbihhLCBURVhUT0lELCAma2V5X2RhdHVtcywgJmtleV9udWxs cywgJmtleV9jb3VudCk7CiAKIAlpZiAoa2V5X2NvdW50ID09IDApCiAJewpAQCAtNTgyLDkg KzU4MCw3IEBAIGhzdG9yZV9zbGljZV90b19hcnJheShQR19GVU5DVElPTl9BUkdTKQogCWlu dAkJCWtleV9jb3VudDsKIAlpbnQJCQlpOwogCi0JZGVjb25zdHJ1Y3RfYXJyYXkoa2V5X2Fy cmF5LAotCQkJCQkgIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkg ICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAma2V5X2NvdW50KTsKKwlkZWNvbnN0cnVjdF9h cnJheV9idWlsdGluKGtleV9hcnJheSwgVEVYVE9JRCwgJmtleV9kYXR1bXMsICZrZXlfbnVs bHMsICZrZXlfY291bnQpOwogCiAJaWYgKGtleV9jb3VudCA9PSAwKQogCXsKQEAgLTcxOSw4 ICs3MTUsNyBAQCBoc3RvcmVfYWtleXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJZFtpXSA9IFBv aW50ZXJHZXREYXR1bSh0KTsKIAl9CiAKLQlhID0gY29uc3RydWN0X2FycmF5KGQsIGNvdW50 LAotCQkJCQkJVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQpOworCWEgPSBjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbihkLCBjb3VudCwgVEVYVE9JRCk7CiAKIAlQR19SRVRVUk5f UE9JTlRFUihhKTsKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVm dW5jcy5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMKaW5kZXggNjJmMmMx YjMxNS4uOTM3NWQ1NWUxNCAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9idHJl ZWZ1bmNzLmMKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMKQEAgLTQy NSwxMSArNDI1LDcgQEAgYnRfcGFnZV9wcmludF90dXBsZXMoc3RydWN0IHVzZXJfYXJncyAq dWFyZ3MpCiAJCXRpZHNfZGF0dW0gPSAoRGF0dW0gKikgcGFsbG9jKG5wb3N0aW5nICogc2l6 ZW9mKERhdHVtKSk7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbnBvc3Rpbmc7IGkrKykKIAkJ CXRpZHNfZGF0dW1baV0gPSBJdGVtUG9pbnRlckdldERhdHVtKCZ0aWRzW2ldKTsKLQkJdmFs dWVzW2orK10gPSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5KHRpZHNfZGF0dW0s Ci0JCQkJCQkJCQkJCQkJICBucG9zdGluZywKLQkJCQkJCQkJCQkJCQkgIFRJRE9JRCwKLQkJ CQkJCQkJCQkJCQkgIHNpemVvZihJdGVtUG9pbnRlckRhdGEpLAotCQkJCQkJCQkJCQkJCSAg ZmFsc2UsIFRZUEFMSUdOX1NIT1JUKSk7CisJCXZhbHVlc1tqKytdID0gUG9pbnRlckdldERh dHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHRpZHNfZGF0dW0sIG5wb3N0aW5nLCBUSURP SUQpKTsKIAkJcGZyZWUodGlkc19kYXR1bSk7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lu ZnVuY3MuYwppbmRleCAzMWFjYTdiMDAwLi45NTJlOWQ1MWE4IDEwMDY0NAotLS0gYS9jb250 cmliL3BhZ2VpbnNwZWN0L2dpbmZ1bmNzLmMKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9n aW5mdW5jcy5jCkBAIC0xNjYsOSArMTY2LDcgQEAgZ2luX3BhZ2Vfb3BhcXVlX2luZm8oUEdf RlVOQ1RJT05fQVJHUykKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0ob3BhcS0+cmln aHRsaW5rKTsKIAl2YWx1ZXNbMV0gPSBJbnQzMkdldERhdHVtKG9wYXEtPm1heG9mZik7Ci0J dmFsdWVzWzJdID0gUG9pbnRlckdldERhdHVtKGNvbnN0cnVjdF9hcnJheShmbGFncywgbmZs YWdzLAotCQkJCQkJCQkJCQkJVEVYVE9JRCwKLQkJCQkJCQkJCQkJCS0xLCBmYWxzZSwgVFlQ QUxJR05fSU5UKSk7CisJdmFsdWVzWzJdID0gUG9pbnRlckdldERhdHVtKGNvbnN0cnVjdF9h cnJheV9idWlsdGluKGZsYWdzLCBuZmxhZ3MsIFRFWFRPSUQpKTsKIAogCS8qIEJ1aWxkIGFu ZCByZXR1cm4gdGhlIHJlc3VsdCB0dXBsZS4gKi8KIAlyZXN1bHRUdXBsZSA9IGhlYXBfZm9y bV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKQEAgLTI3MywxMSArMjcxLDcgQEAg Z2luX2xlYWZwYWdlX2l0ZW1zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXRpZHNfZGF0dW0gPSAo RGF0dW0gKikgcGFsbG9jKG5kZWNvZGVkICogc2l6ZW9mKERhdHVtKSk7CiAJCWZvciAoaSA9 IDA7IGkgPCBuZGVjb2RlZDsgaSsrKQogCQkJdGlkc19kYXR1bVtpXSA9IEl0ZW1Qb2ludGVy R2V0RGF0dW0oJnRpZHNbaV0pOwotCQl2YWx1ZXNbMl0gPSBQb2ludGVyR2V0RGF0dW0oY29u c3RydWN0X2FycmF5KHRpZHNfZGF0dW0sCi0JCQkJCQkJCQkJCQkJbmRlY29kZWQsCi0JCQkJ CQkJCQkJCQkJVElET0lELAotCQkJCQkJCQkJCQkJCXNpemVvZihJdGVtUG9pbnRlckRhdGEp LAotCQkJCQkJCQkJCQkJCWZhbHNlLCBUWVBBTElHTl9TSE9SVCkpOworCQl2YWx1ZXNbMl0g PSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5X2J1aWx0aW4odGlkc19kYXR1bSwg bmRlY29kZWQsIFRJRE9JRCkpOwogCQlwZnJlZSh0aWRzX2RhdHVtKTsKIAkJcGZyZWUodGlk cyk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMgYi9j b250cmliL3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jCmluZGV4IDljMjlmYmM3YWEuLmZiNDhk NmZlY2EgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMKKysr IGIvY29udHJpYi9wYWdlaW5zcGVjdC9naXN0ZnVuY3MuYwpAQCAtMTA0LDkgKzEwNCw3IEBA IGdpc3RfcGFnZV9vcGFxdWVfaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCXZhbHVlc1swXSA9 IExTTkdldERhdHVtKFBhZ2VHZXRMU04ocGFnZSkpOwogCXZhbHVlc1sxXSA9IExTTkdldERh dHVtKEdpc3RQYWdlR2V0TlNOKHBhZ2UpKTsKIAl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVt KG9wYXEtPnJpZ2h0bGluayk7Ci0JdmFsdWVzWzNdID0gUG9pbnRlckdldERhdHVtKGNvbnN0 cnVjdF9hcnJheShmbGFncywgbmZsYWdzLAotCQkJCQkJCQkJCQkJVEVYVE9JRCwKLQkJCQkJ CQkJCQkJCS0xLCBmYWxzZSwgVFlQQUxJR05fSU5UKSk7CisJdmFsdWVzWzNdID0gUG9pbnRl ckdldERhdHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGZsYWdzLCBuZmxhZ3MsIFRFWFRP SUQpKTsKIAogCS8qIEJ1aWxkIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB0dXBsZS4gKi8KIAly ZXN1bHRUdXBsZSA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMgYi9jb250cmli L3BhZ2VpbnNwZWN0L2hhc2hmdW5jcy5jCmluZGV4IDY5YWY3Yjk2MmYuLjZlNTkyZTM3NzAg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKKysrIGIvY29u dHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYwpAQCAtNTY0LDIxICs1NjQsMTEgQEAgaGFz aF9tZXRhcGFnZV9pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlmb3IgKGkgPSAwOyBpIDwg SEFTSF9NQVhfU1BMSVRQT0lOVFM7IGkrKykKIAkJc3BhcmVzW2ldID0gSW50NjRHZXREYXR1 bSgoaW50NjQpIG1ldGFkLT5oYXNobV9zcGFyZXNbaV0pOwotCXZhbHVlc1tqKytdID0gUG9p bnRlckdldERhdHVtKGNvbnN0cnVjdF9hcnJheShzcGFyZXMsCi0JCQkJCQkJCQkJCQkgIEhB U0hfTUFYX1NQTElUUE9JTlRTLAotCQkJCQkJCQkJCQkJICBJTlQ4T0lELAotCQkJCQkJCQkJ CQkJICBzaXplb2YoaW50NjQpLAotCQkJCQkJCQkJCQkJICBGTE9BVDhQQVNTQllWQUwsCi0J CQkJCQkJCQkJCQkgIFRZUEFMSUdOX0RPVUJMRSkpOworCXZhbHVlc1tqKytdID0gUG9pbnRl ckdldERhdHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHNwYXJlcywgbGVuZ3Rob2Yoc3Bh cmVzKSwgSU5UOE9JRCkpOwogCiAJZm9yIChpID0gMDsgaSA8IEhBU0hfTUFYX0JJVE1BUFM7 IGkrKykKIAkJbWFwcFtpXSA9IEludDY0R2V0RGF0dW0oKGludDY0KSBtZXRhZC0+aGFzaG1f bWFwcFtpXSk7Ci0JdmFsdWVzW2orK10gPSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2Fy cmF5KG1hcHAsCi0JCQkJCQkJCQkJCQkgIEhBU0hfTUFYX0JJVE1BUFMsCi0JCQkJCQkJCQkJ CQkgIElOVDhPSUQsCi0JCQkJCQkJCQkJCQkgIHNpemVvZihpbnQ2NCksCi0JCQkJCQkJCQkJ CQkgIEZMT0FUOFBBU1NCWVZBTCwKLQkJCQkJCQkJCQkJCSAgVFlQQUxJR05fRE9VQkxFKSk7 CisJdmFsdWVzW2orK10gPSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5X2J1aWx0 aW4obWFwcCwgbGVuZ3Rob2YobWFwcCksIElOVDhPSUQpKTsKIAogCXR1cGxlID0gaGVhcF9m b3JtX3R1cGxlKHR1cGxlRGVzYywgdmFsdWVzLCBudWxscyk7CiAKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2hl YXBmdW5jcy5jCmluZGV4IDNkZDFhOWJjMmEuLmE2NTQyMzRjNmIgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMKKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9oZWFwZnVuY3MuYwpAQCAtNTkwLDcgKzU5MCw3IEBAIGhlYXBfdHVwbGVfaW5mb21hc2tf ZmxhZ3MoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIGJ1aWxkIHZhbHVlICovCiAJQXNzZXJ0 KGNudCA8PSBiaXRjbnQpOwotCWEgPSBjb25zdHJ1Y3RfYXJyYXkoZmxhZ3MsIGNudCwgVEVY VE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQpOworCWEgPSBjb25zdHJ1Y3RfYXJyYXlf YnVpbHRpbihmbGFncywgY250LCBURVhUT0lEKTsKIAl2YWx1ZXNbMF0gPSBQb2ludGVyR2V0 RGF0dW0oYSk7CiAKIAkvKgpAQCAtNjEyLDcgKzYxMiw3IEBAIGhlYXBfdHVwbGVfaW5mb21h c2tfZmxhZ3MoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoY250ID09IDApCiAJCWEgPSBjb25z dHJ1Y3RfZW1wdHlfYXJyYXkoVEVYVE9JRCk7CiAJZWxzZQotCQlhID0gY29uc3RydWN0X2Fy cmF5KGZsYWdzLCBjbnQsIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5UKTsKKwkJ YSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGZsYWdzLCBjbnQsIFRFWFRPSUQpOwogCXBm cmVlKGZsYWdzKTsKIAl2YWx1ZXNbMV0gPSBQb2ludGVyR2V0RGF0dW0oYSk7CiAKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgYi9jb250cmliL3BnX3RyZ20vdHJn bV9vcC5jCmluZGV4IGU5Yjc5ODE2MTkuLmNiY2M0ODFhMTcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfdHJnbS90cmdtX29wLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYwpA QCAtOTc3LDEyICs5NzcsNyBAQCBzaG93X3RyZ20oUEdfRlVOQ1RJT05fQVJHUykKIAkJZFtp XSA9IFBvaW50ZXJHZXREYXR1bShpdGVtKTsKIAl9CiAKLQlhID0gY29uc3RydWN0X2FycmF5 KGQsCi0JCQkJCQlBUlJORUxFTSh0cmcpLAotCQkJCQkJVEVYVE9JRCwKLQkJCQkJCS0xLAot CQkJCQkJZmFsc2UsCi0JCQkJCQlUWVBBTElHTl9JTlQpOworCWEgPSBjb25zdHJ1Y3RfYXJy YXlfYnVpbHRpbihkLCBBUlJORUxFTSh0cmcpLCBURVhUT0lEKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBBUlJORUxFTSh0cmcpOyBpKyspCiAJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihkW2ld KSk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL3BncC1wZ3NxbC5jIGIvY29udHJp Yi9wZ2NyeXB0by9wZ3AtcGdzcWwuYwppbmRleCAwNTM2YmZiODkyLi5kOWIxNWIwN2IwIDEw MDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL3BncC1wZ3NxbC5jCisrKyBiL2NvbnRyaWIv cGdjcnlwdG8vcGdwLXBnc3FsLmMKQEAgLTc3NCwxMyArNzc0LDggQEAgcGFyc2Vfa2V5X3Zh bHVlX2FycmF5cyhBcnJheVR5cGUgKmtleV9hcnJheSwgQXJyYXlUeXBlICp2YWxfYXJyYXks CiAJaWYgKG5rZGltcyA9PSAwKQogCQlyZXR1cm4gMDsKIAotCWRlY29uc3RydWN0X2FycmF5 KGtleV9hcnJheSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwK LQkJCQkJICAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9jb3VudCk7Ci0KLQlkZWNv bnN0cnVjdF9hcnJheSh2YWxfYXJyYXksCi0JCQkJCSAgVEVYVE9JRCwgLTEsIGZhbHNlLCBU WVBBTElHTl9JTlQsCi0JCQkJCSAgJnZhbF9kYXR1bXMsICZ2YWxfbnVsbHMsICZ2YWxfY291 bnQpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oa2V5X2FycmF5LCBURVhUT0lELCAm a2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9jb3VudCk7CisJZGVjb25zdHJ1Y3RfYXJy YXlfYnVpbHRpbih2YWxfYXJyYXksIFRFWFRPSUQsICZ2YWxfZGF0dW1zLCAmdmFsX251bGxz LCAmdmFsX2NvdW50KTsKIAogCWlmIChrZXlfY291bnQgIT0gdmFsX2NvdW50KQogCQllcmVw b3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxv cHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYwppbmRl eCA1OTllMTYwY2E2Li4yYjJlZjYzYzM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwpAQCAtMTE3Nyw4ICsxMTc3LDcgQEAgdHJhbnNmb3JtUmVsT3B0aW9u cyhEYXR1bSBvbGRPcHRpb25zLCBMaXN0ICpkZWZMaXN0LCBjb25zdCBjaGFyICpuYW1zcGFj ZSwKIAkJaW50CQkJbm9sZG9wdGlvbnM7CiAJCWludAkJCWk7CiAKLQkJZGVjb25zdHJ1Y3Rf YXJyYXkoYXJyYXksIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkJ ICAmb2xkb3B0aW9ucywgTlVMTCwgJm5vbGRvcHRpb25zKTsKKwkJZGVjb25zdHJ1Y3RfYXJy YXlfYnVpbHRpbihhcnJheSwgVEVYVE9JRCwgJm9sZG9wdGlvbnMsIE5VTEwsICZub2xkb3B0 aW9ucyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IG5vbGRvcHRpb25zOyBpKyspCiAJCXsKQEAg LTEzNDUsOCArMTM0NCw3IEBAIHVudHJhbnNmb3JtUmVsT3B0aW9ucyhEYXR1bSBvcHRpb25z KQogCiAJYXJyYXkgPSBEYXR1bUdldEFycmF5VHlwZVAob3B0aW9ucyk7CiAKLQlkZWNvbnN0 cnVjdF9hcnJheShhcnJheSwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0J CQkJCSAgJm9wdGlvbmRhdHVtcywgTlVMTCwgJm5vcHRpb25zKTsKKwlkZWNvbnN0cnVjdF9h cnJheV9idWlsdGluKGFycmF5LCBURVhUT0lELCAmb3B0aW9uZGF0dW1zLCBOVUxMLCAmbm9w dGlvbnMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5vcHRpb25zOyBpKyspCiAJewpAQCAtMTQz Niw4ICsxNDM0LDcgQEAgcGFyc2VSZWxPcHRpb25zSW50ZXJuYWwoRGF0dW0gb3B0aW9ucywg Ym9vbCB2YWxpZGF0ZSwKIAlpbnQJCQlub3B0aW9uczsKIAlpbnQJCQlpOwogCi0JZGVjb25z dHJ1Y3RfYXJyYXkoYXJyYXksIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAot CQkJCQkgICZvcHRpb25kYXR1bXMsIE5VTEwsICZub3B0aW9ucyk7CisJZGVjb25zdHJ1Y3Rf YXJyYXlfYnVpbHRpbihhcnJheSwgVEVYVE9JRCwgJm9wdGlvbmRhdHVtcywgTlVMTCwgJm5v cHRpb25zKTsKIAogCWZvciAoaSA9IDA7IGkgPCBub3B0aW9uczsgaSsrKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggODM3N2I0ZjdkNC4uMmQyMWRiNDY5 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTIwOTksOCArMjA5 OSw3IEBAIHRleHRhcnJheV90b19zdHJ2YWx1ZWxpc3QoQXJyYXlUeXBlICphcnIpCiAJTGlz dAkgICAqbGlzdCA9IE5JTDsKIAlpbnQJCQlpOwogCi0JZGVjb25zdHJ1Y3RfYXJyYXkoYXJy LCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAmZWxlbXMsICZu dWxscywgJm5lbGVtcyk7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihhcnIsIFRFWFRP SUQsICZlbGVtcywgJm51bGxzLCAmbmVsZW1zKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuZWxl bXM7IGkrKykKIAl7CkBAIC0yMTU2LDggKzIxNTUsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJl c3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJYm9vbAkgICAqbnVsbHM7CiAJCWludAkJCW5lbGVt czsKIAotCQlkZWNvbnN0cnVjdF9hcnJheShuYW1lYXJyLCBURVhUT0lELCAtMSwgZmFsc2Us IFRZUEFMSUdOX0lOVCwKLQkJCQkJCSAgJmVsZW1zLCAmbnVsbHMsICZuZWxlbXMpOworCQlk ZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKG5hbWVhcnIsIFRFWFRPSUQsICZlbGVtcywgJm51 bGxzLCAmbmVsZW1zKTsKIAkJaWYgKG5lbGVtcyAhPSAxKQogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0y MTc0LDggKzIxNzIsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJH UykKIAkJYm9vbAkgICAqbnVsbHM7CiAJCWludAkJCW5lbGVtczsKIAotCQlkZWNvbnN0cnVj dF9hcnJheShuYW1lYXJyLCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwKLQkJ CQkJCSAgJmVsZW1zLCAmbnVsbHMsICZuZWxlbXMpOworCQlkZWNvbnN0cnVjdF9hcnJheV9i dWlsdGluKG5hbWVhcnIsIFRFWFRPSUQsICZlbGVtcywgJm51bGxzLCAmbmVsZW1zKTsKIAkJ aWYgKG5lbGVtcyAhPSAxKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0yMjEzLDggKzIyMTAsNyBAQCBw Z19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJaW50CQkJbmVsZW1z OwogCQlpbnQJCQlpOwogCi0JCWRlY29uc3RydWN0X2FycmF5KGFyZ3NhcnIsIFRFWFRPSUQs IC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkJICAmZWxlbXMsICZudWxscywgJm5l bGVtcyk7CisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oYXJnc2FyciwgVEVYVE9JRCwg JmVsZW1zLCAmbnVsbHMsICZuZWxlbXMpOwogCiAJCWFyZ3MgPSBOSUw7CiAJCWZvciAoaSA9 IDA7IGkgPCBuZWxlbXM7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMK aW5kZXggNDcyZGJkYTIxMS4uNDU0MzY3YTg1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b25zdHJhaW50LmMKQEAgLTExMiw4ICsxMTIsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnko Y29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCWNvbmtleSA9IChEYXR1bSAqKSBwYWxs b2MoY29uc3RyYWludE5LZXlzICogc2l6ZW9mKERhdHVtKSk7CiAJCWZvciAoaSA9IDA7IGkg PCBjb25zdHJhaW50TktleXM7IGkrKykKIAkJCWNvbmtleVtpXSA9IEludDE2R2V0RGF0dW0o Y29uc3RyYWludEtleVtpXSk7Ci0JCWNvbmtleUFycmF5ID0gY29uc3RydWN0X2FycmF5KGNv bmtleSwgY29uc3RyYWludE5LZXlzLAotCQkJCQkJCQkJICBJTlQyT0lELCAyLCB0cnVlLCBU WVBBTElHTl9TSE9SVCk7CisJCWNvbmtleUFycmF5ID0gY29uc3RydWN0X2FycmF5X2J1aWx0 aW4oY29ua2V5LCBjb25zdHJhaW50TktleXMsIElOVDJPSUQpOwogCX0KIAllbHNlCiAJCWNv bmtleUFycmF5ID0gTlVMTDsKQEAgLTEyNSwyNyArMTI0LDIyIEBAIENyZWF0ZUNvbnN0cmFp bnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJZmtkYXR1bXMgPSAoRGF0 dW0gKikgcGFsbG9jKGZvcmVpZ25OS2V5cyAqIHNpemVvZihEYXR1bSkpOwogCQlmb3IgKGkg PSAwOyBpIDwgZm9yZWlnbk5LZXlzOyBpKyspCiAJCQlma2RhdHVtc1tpXSA9IEludDE2R2V0 RGF0dW0oZm9yZWlnbktleVtpXSk7Ci0JCWNvbmZrZXlBcnJheSA9IGNvbnN0cnVjdF9hcnJh eShma2RhdHVtcywgZm9yZWlnbk5LZXlzLAotCQkJCQkJCQkJICAgSU5UMk9JRCwgMiwgdHJ1 ZSwgVFlQQUxJR05fU0hPUlQpOworCQljb25ma2V5QXJyYXkgPSBjb25zdHJ1Y3RfYXJyYXlf YnVpbHRpbihma2RhdHVtcywgZm9yZWlnbk5LZXlzLCBJTlQyT0lEKTsKIAkJZm9yIChpID0g MDsgaSA8IGZvcmVpZ25OS2V5czsgaSsrKQogCQkJZmtkYXR1bXNbaV0gPSBPYmplY3RJZEdl dERhdHVtKHBmRXFPcFtpXSk7Ci0JCWNvbnBmZXFvcEFycmF5ID0gY29uc3RydWN0X2FycmF5 KGZrZGF0dW1zLCBmb3JlaWduTktleXMsCi0JCQkJCQkJCQkJIE9JRE9JRCwgc2l6ZW9mKE9p ZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJCWNvbnBmZXFvcEFycmF5ID0gY29uc3RydWN0 X2FycmF5X2J1aWx0aW4oZmtkYXR1bXMsIGZvcmVpZ25OS2V5cywgT0lET0lEKTsKIAkJZm9y IChpID0gMDsgaSA8IGZvcmVpZ25OS2V5czsgaSsrKQogCQkJZmtkYXR1bXNbaV0gPSBPYmpl Y3RJZEdldERhdHVtKHBwRXFPcFtpXSk7Ci0JCWNvbnBwZXFvcEFycmF5ID0gY29uc3RydWN0 X2FycmF5KGZrZGF0dW1zLCBmb3JlaWduTktleXMsCi0JCQkJCQkJCQkJIE9JRE9JRCwgc2l6 ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJCWNvbnBwZXFvcEFycmF5ID0gY29u c3RydWN0X2FycmF5X2J1aWx0aW4oZmtkYXR1bXMsIGZvcmVpZ25OS2V5cywgT0lET0lEKTsK IAkJZm9yIChpID0gMDsgaSA8IGZvcmVpZ25OS2V5czsgaSsrKQogCQkJZmtkYXR1bXNbaV0g PSBPYmplY3RJZEdldERhdHVtKGZmRXFPcFtpXSk7Ci0JCWNvbmZmZXFvcEFycmF5ID0gY29u c3RydWN0X2FycmF5KGZrZGF0dW1zLCBmb3JlaWduTktleXMsCi0JCQkJCQkJCQkJIE9JRE9J RCwgc2l6ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJCWNvbmZmZXFvcEFycmF5 ID0gY29uc3RydWN0X2FycmF5X2J1aWx0aW4oZmtkYXR1bXMsIGZvcmVpZ25OS2V5cywgT0lE T0lEKTsKIAogCQlpZiAobnVtRmtEZWxldGVTZXRDb2xzID4gMCkKIAkJewogCQkJZm9yIChp ID0gMDsgaSA8IG51bUZrRGVsZXRlU2V0Q29sczsgaSsrKQogCQkJCWZrZGF0dW1zW2ldID0g SW50MTZHZXREYXR1bShma0RlbGV0ZVNldENvbHNbaV0pOwotCQkJY29uZmRlbHNldGNvbHNB cnJheSA9IGNvbnN0cnVjdF9hcnJheShma2RhdHVtcywgbnVtRmtEZWxldGVTZXRDb2xzLAot CQkJCQkJCQkJCSAgIElOVDJPSUQsIDIsIHRydWUsIFRZUEFMSUdOX1NIT1JUKTsKKwkJCWNv bmZkZWxzZXRjb2xzQXJyYXkgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihma2RhdHVtcywg bnVtRmtEZWxldGVTZXRDb2xzLCBJTlQyT0lEKTsKIAkJfQogCQllbHNlCiAJCQljb25mZGVs c2V0Y29sc0FycmF5ID0gTlVMTDsKQEAgLTE2Niw4ICsxNjAsNyBAQCBDcmVhdGVDb25zdHJh aW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCW9wZGF0dW1zID0gKERh dHVtICopIHBhbGxvYyhjb25zdHJhaW50TktleXMgKiBzaXplb2YoRGF0dW0pKTsKIAkJZm9y IChpID0gMDsgaSA8IGNvbnN0cmFpbnROS2V5czsgaSsrKQogCQkJb3BkYXR1bXNbaV0gPSBP YmplY3RJZEdldERhdHVtKGV4Y2xPcFtpXSk7Ci0JCWNvbmV4Y2xvcEFycmF5ID0gY29uc3Ry dWN0X2FycmF5KG9wZGF0dW1zLCBjb25zdHJhaW50TktleXMsCi0JCQkJCQkJCQkJIE9JRE9J RCwgc2l6ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJCWNvbmV4Y2xvcEFycmF5 ID0gY29uc3RydWN0X2FycmF5X2J1aWx0aW4ob3BkYXR1bXMsIGNvbnN0cmFpbnROS2V5cywg T0lET0lEKTsKIAl9CiAJZWxzZQogCQljb25leGNsb3BBcnJheSA9IE5VTEw7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHJvYy5jCmluZGV4IGQ4MjIyMWZkYjguLmE0YTMwYmNjZjYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHJvYy5jCkBAIC0xMTkzLDEwICsxMTkzLDcgQEAgb2lkX2FycmF5X3RvX2xpc3Qo RGF0dW0gZGF0dW0pCiAJaW50CQkJaTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAKLQlk ZWNvbnN0cnVjdF9hcnJheShhcnJheSwKLQkJCQkJICBPSURPSUQsCi0JCQkJCSAgc2l6ZW9m KE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAmdmFsdWVzLCBOVUxMLCAmbmVs ZW1zKTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGFycmF5LCBPSURPSUQsICZ2YWx1 ZXMsIE5VTEwsICZuZWxlbXMpOwogCWZvciAoaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJ cmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCB2YWx1ZXNbaV0pOwogCXJldHVybiByZXN1 bHQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhZGQ1MWNh YWRmLi44ODU2Y2UzYjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmMKQEAgLTI2MCw5ICsyNjAsNyBAQCB0ZXh0YXJyYXlfdG9fc3RyaW5nbGlzdChBcnJheVR5 cGUgKnRleHRhcnJheSkKIAkJCQlpOwogCUxpc3QJICAgKnJlcyA9IE5JTDsKIAotCWRlY29u c3RydWN0X2FycmF5KHRleHRhcnJheSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZ UEFMSUdOX0lOVCwKLQkJCQkJICAmZWxlbXMsIE5VTEwsICZuZWxlbXMpOworCWRlY29uc3Ry dWN0X2FycmF5X2J1aWx0aW4odGV4dGFycmF5LCBURVhUT0lELCAmZWxlbXMsIE5VTEwsICZu ZWxlbXMpOwogCiAJaWYgKG5lbGVtcyA9PSAwKQogCQlyZXR1cm4gTklMOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYW5hbHl6ZS5jCmluZGV4IDMwNTIyNjY5MmEuLjdmODY1MjAxM2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hbmFseXplLmMKQEAgLTE2ODgsMTAgKzE2ODgsNyBAQCB1cGRhdGVfYXR0c3RhdHMo T2lkIHJlbGlkLCBib29sIGluaCwgaW50IG5hdHRzLCBWYWNBdHRyU3RhdHMgKip2YWNhdHRy c3RhdHMpCiAKIAkJCQlmb3IgKG4gPSAwOyBuIDwgbm51bTsgbisrKQogCQkJCQludW1kYXR1 bXNbbl0gPSBGbG9hdDRHZXREYXR1bShzdGF0cy0+c3RhbnVtYmVyc1trXVtuXSk7Ci0JCQkJ LyogWFhYIGtub3dzIG1vcmUgdGhhbiBpdCBzaG91bGQgYWJvdXQgdHlwZSBmbG9hdDQ6ICov Ci0JCQkJYXJyeSA9IGNvbnN0cnVjdF9hcnJheShudW1kYXR1bXMsIG5udW0sCi0JCQkJCQkJ CQkgICBGTE9BVDRPSUQsCi0JCQkJCQkJCQkgICBzaXplb2YoZmxvYXQ0KSwgdHJ1ZSwgVFlQ QUxJR05fSU5UKTsKKwkJCQlhcnJ5ID0gY29uc3RydWN0X2FycmF5X2J1aWx0aW4obnVtZGF0 dW1zLCBubnVtLCBGTE9BVDRPSUQpOwogCQkJCXZhbHVlc1tpKytdID0gUG9pbnRlckdldERh dHVtKGFycnkpOwkvKiBzdGFudW1iZXJzTiAqLwogCQkJfQogCQkJZWxzZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IDQ2NDI1Mjc4ODEuLmY0NmY4NjQ3NGEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTM1MSw4ICszNTEs NyBAQCBmaWx0ZXJfbGlzdF90b19hcnJheShMaXN0ICpmaWx0ZXJsaXN0KQogCQlwZnJlZShy ZXN1bHQpOwogCX0KIAotCXJldHVybiBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5 KGRhdGEsIGwsIFRFWFRPSUQsCi0JCQkJCQkJCQkJICAgLTEsIGZhbHNlLCBUWVBBTElHTl9J TlQpKTsKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGlu KGRhdGEsIGwsIFRFWFRPSUQpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMKaW5kZXggMTAxMzc5MGRiYi4uMTE3ZWQ4MDI0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKQEAgLTIyNTEsOSArMjI1MSw3IEBAIGNvbnZlcnRfcmVxdWlyZXNfdG9fZGF0 dW0oTGlzdCAqcmVxdWlyZXMpCiAJCWRhdHVtc1tuZGF0dW1zKytdID0KIAkJCURpcmVjdEZ1 bmN0aW9uQ2FsbDEobmFtZWluLCBDU3RyaW5nR2V0RGF0dW0oY3VycmVxKSk7CiAJfQotCWEg PSBjb25zdHJ1Y3RfYXJyYXkoZGF0dW1zLCBuZGF0dW1zLAotCQkJCQkJTkFNRU9JRCwKLQkJ CQkJCU5BTUVEQVRBTEVOLCBmYWxzZSwgVFlQQUxJR05fQ0hBUik7CisJYSA9IGNvbnN0cnVj dF9hcnJheV9idWlsdGluKGRhdHVtcywgbmRhdHVtcywgTkFNRU9JRCk7CiAJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShhKTsKIH0KIApAQCAtMjQzMyw5ICsyNDMxLDcgQEAgcGdfZXh0ZW5z aW9uX2NvbmZpZ19kdW1wKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWFycmF5TGVuZ3RoID0gMDsK IAkJYXJyYXlJbmRleCA9IDE7CiAKLQkJYSA9IGNvbnN0cnVjdF9hcnJheSgmZWxlbWVudERh dHVtLCAxLAotCQkJCQkJCU9JRE9JRCwKLQkJCQkJCQlzaXplb2YoT2lkKSwgdHJ1ZSwgVFlQ QUxJR05fSU5UKTsKKwkJYSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKCZlbGVtZW50RGF0 dW0sIDEsIE9JRE9JRCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNDg2LDkgKzI0ODIsNyBAQCBw Z19leHRlbnNpb25fY29uZmlnX2R1bXAoUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKGFycmF5 TGVuZ3RoICE9IDApCiAJCQllbG9nKEVSUk9SLCAiZXh0Y29uZmlnIGFuZCBleHRjb25kaXRp b24gYXJyYXlzIGRvIG5vdCBtYXRjaCIpOwogCi0JCWEgPSBjb25zdHJ1Y3RfYXJyYXkoJmVs ZW1lbnREYXR1bSwgMSwKLQkJCQkJCQlURVhUT0lELAotCQkJCQkJCS0xLCBmYWxzZSwgVFlQ QUxJR05fSU5UKTsKKwkJYSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKCZlbGVtZW50RGF0 dW0sIDEsIFRFWFRPSUQpOwogCX0KIAllbHNlCiAJewpAQCAtMjYzMCwxNCArMjYyNCwxMiBA QCBleHRlbnNpb25fY29uZmlnX3JlbW92ZShPaWQgZXh0ZW5zaW9ub2lkLCBPaWQgdGFibGVv aWQpCiAJCWludAkJCWk7CiAKIAkJLyogV2UgYWxyZWFkeSBjaGVja2VkIHRoZXJlIGFyZSBu byBudWxscyAqLwotCQlkZWNvbnN0cnVjdF9hcnJheShhLCBPSURPSUQsIHNpemVvZihPaWQp LCB0cnVlLCBUWVBBTElHTl9JTlQsCi0JCQkJCQkgICZkdmFsdWVzLCBOVUxMLCAmbmVsZW1z KTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihhLCBPSURPSUQsICZkdmFsdWVzLCBO VUxMLCAmbmVsZW1zKTsKIAogCQlmb3IgKGkgPSBhcnJheUluZGV4OyBpIDwgYXJyYXlMZW5n dGggLSAxOyBpKyspCiAJCQlkdmFsdWVzW2ldID0gZHZhbHVlc1tpICsgMV07CiAKLQkJYSA9 IGNvbnN0cnVjdF9hcnJheShkdmFsdWVzLCBhcnJheUxlbmd0aCAtIDEsCi0JCQkJCQkJT0lE T0lELCBzaXplb2YoT2lkKSwgdHJ1ZSwgVFlQQUxJR05fSU5UKTsKKwkJYSA9IGNvbnN0cnVj dF9hcnJheV9idWlsdGluKGR2YWx1ZXMsIGFycmF5TGVuZ3RoIC0gMSwgT0lET0lEKTsKIAog CQlyZXBsX3ZhbFtBbnVtX3BnX2V4dGVuc2lvbl9leHRjb25maWcgLSAxXSA9IFBvaW50ZXJH ZXREYXR1bShhKTsKIAl9CkBAIC0yNjc2LDE0ICsyNjY4LDEyIEBAIGV4dGVuc2lvbl9jb25m aWdfcmVtb3ZlKE9pZCBleHRlbnNpb25vaWQsIE9pZCB0YWJsZW9pZCkKIAkJaW50CQkJaTsK IAogCQkvKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhlcmUgYXJlIG5vIG51bGxzICovCi0JCWRl Y29uc3RydWN0X2FycmF5KGEsIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAot CQkJCQkJICAmZHZhbHVlcywgTlVMTCwgJm5lbGVtcyk7CisJCWRlY29uc3RydWN0X2FycmF5 X2J1aWx0aW4oYSwgVEVYVE9JRCwgJmR2YWx1ZXMsIE5VTEwsICZuZWxlbXMpOwogCiAJCWZv ciAoaSA9IGFycmF5SW5kZXg7IGkgPCBhcnJheUxlbmd0aCAtIDE7IGkrKykKIAkJCWR2YWx1 ZXNbaV0gPSBkdmFsdWVzW2kgKyAxXTsKIAotCQlhID0gY29uc3RydWN0X2FycmF5KGR2YWx1 ZXMsIGFycmF5TGVuZ3RoIC0gMSwKLQkJCQkJCQlURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFM SUdOX0lOVCk7CisJCWEgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihkdmFsdWVzLCBhcnJh eUxlbmd0aCAtIDEsIFRFWFRPSUQpOwogCiAJCXJlcGxfdmFsW0FudW1fcGdfZXh0ZW5zaW9u X2V4dGNvbmRpdGlvbiAtIDFdID0gUG9pbnRlckdldERhdHVtKGEpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKaW5kZXggMDBhNmQyODJjZi4uYjAxNmVlY2IyYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTQ2OCwxMCArNDY4LDgg QEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9saXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAogCWlmIChvdXRDb3VudCA+IDAgfHwgdmFyQ291bnQgPiAwKQogCXsKLQkJKmFsbFBh cmFtZXRlclR5cGVzID0gY29uc3RydWN0X2FycmF5KGFsbFR5cGVzLCBwYXJhbWV0ZXJDb3Vu dCwgT0lET0lELAotCQkJCQkJCQkJCQkgc2l6ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lO VCk7Ci0JCSpwYXJhbWV0ZXJNb2RlcyA9IGNvbnN0cnVjdF9hcnJheShwYXJhbU1vZGVzLCBw YXJhbWV0ZXJDb3VudCwgQ0hBUk9JRCwKLQkJCQkJCQkJCQkgIDEsIHRydWUsIFRZUEFMSUdO X0NIQVIpOworCQkqYWxsUGFyYW1ldGVyVHlwZXMgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRp bihhbGxUeXBlcywgcGFyYW1ldGVyQ291bnQsIE9JRE9JRCk7CisJCSpwYXJhbWV0ZXJNb2Rl cyA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHBhcmFtTW9kZXMsIHBhcmFtZXRlckNvdW50 LCBDSEFST0lEKTsKIAkJaWYgKG91dENvdW50ID4gMSkKIAkJCSpyZXF1aXJlZFJlc3VsdFR5 cGUgPSBSRUNPUkRPSUQ7CiAJCS8qIG90aGVyd2lzZSB3ZSBzZXQgcmVxdWlyZWRSZXN1bHRU eXBlIGNvcnJlY3RseSBhYm92ZSAqLwpAQCAtNDg5LDggKzQ4Nyw3IEBAIGludGVycHJldF9m dW5jdGlvbl9wYXJhbWV0ZXJfbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlpZiAocGFy YW1OYW1lc1tpXSA9PSBQb2ludGVyR2V0RGF0dW0oTlVMTCkpCiAJCQkJcGFyYW1OYW1lc1tp XSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oIiIpOwogCQl9Ci0JCSpwYXJhbWV0ZXJOYW1lcyA9 IGNvbnN0cnVjdF9hcnJheShwYXJhbU5hbWVzLCBwYXJhbWV0ZXJDb3VudCwgVEVYVE9JRCwK LQkJCQkJCQkJCQkgIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5UKTsKKwkJKnBhcmFtZXRlck5h bWVzID0gY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocGFyYW1OYW1lcywgcGFyYW1ldGVyQ291 bnQsIFRFWFRPSUQpOwogCX0KIAllbHNlCiAJCSpwYXJhbWV0ZXJOYW1lcyA9IE5VTEw7CkBA IC0xMjIyLDggKzEyMTksNyBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJaSA9IDA7CiAJCWZvcmVhY2gobGMsIHRy ZnR5cGVzX2xpc3QpCiAJCQlhcnJbaSsrXSA9IE9iamVjdElkR2V0RGF0dW0obGZpcnN0X29p ZChsYykpOwotCQl0cmZ0eXBlcyA9IGNvbnN0cnVjdF9hcnJheShhcnIsIGxpc3RfbGVuZ3Ro KHRyZnR5cGVzX2xpc3QpLAotCQkJCQkJCQkgICBPSURPSUQsIHNpemVvZihPaWQpLCB0cnVl LCBUWVBBTElHTl9JTlQpOworCQl0cmZ0eXBlcyA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGlu KGFyciwgbGlzdF9sZW5ndGgodHJmdHlwZXNfbGlzdCksIE9JRE9JRCk7CiAJfQogCWVsc2UK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jCmluZGV4IGE1OWVlM2I5NDcuLmQ5ZGZmOWVjYWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jCkBAIC01MDAsOCArNTAwLDcgQEAgUmVtb3ZlUm9s ZUZyb21PYmplY3RQb2xpY3koT2lkIHJvbGVpZCwgT2lkIGNsYXNzaWQsIE9pZCBwb2xpY3lf aWQpCiAJCW1lbXNldChpc251bGwsIDAsIHNpemVvZihpc251bGwpKTsKIAogCQkvKiBUaGlz IGlzIHRoZSBhcnJheSBmb3IgdGhlIG5ldyB0dXBsZSAqLwotCQlyb2xlX2lkcyA9IGNvbnN0 cnVjdF9hcnJheShyb2xlX29pZHMsIG51bV9yb2xlcywgT0lET0lELAotCQkJCQkJCQkgICBz aXplb2YoT2lkKSwgdHJ1ZSwgVFlQQUxJR05fSU5UKTsKKwkJcm9sZV9pZHMgPSBjb25zdHJ1 Y3RfYXJyYXlfYnVpbHRpbihyb2xlX29pZHMsIG51bV9yb2xlcywgT0lET0lEKTsKIAogCQly ZXBsYWNlc1tBbnVtX3BnX3BvbGljeV9wb2xyb2xlcyAtIDFdID0gdHJ1ZTsKIAkJdmFsdWVz W0FudW1fcGdfcG9saWN5X3BvbHJvbGVzIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0ocm9sZV9p ZHMpOwpAQCAtNjE3LDggKzYxNiw3IEBAIENyZWF0ZVBvbGljeShDcmVhdGVQb2xpY3lTdG10 ICpzdG10KQogCiAJLyogQ29sbGVjdCByb2xlIGlkcyAqLwogCXJvbGVfb2lkcyA9IHBvbGlj eV9yb2xlX2xpc3RfdG9fYXJyYXkoc3RtdC0+cm9sZXMsICZuaXRlbXMpOwotCXJvbGVfaWRz ID0gY29uc3RydWN0X2FycmF5KHJvbGVfb2lkcywgbml0ZW1zLCBPSURPSUQsCi0JCQkJCQkJ ICAgc2l6ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJcm9sZV9pZHMgPSBjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbihyb2xlX29pZHMsIG5pdGVtcywgT0lET0lEKTsKIAogCS8q IFBhcnNlIHRoZSBzdXBwbGllZCBjbGF1c2UgKi8KIAlxdWFsX3BzdGF0ZSA9IG1ha2VfcGFy c2VzdGF0ZShOVUxMKTsKQEAgLTgwMSw4ICs3OTksNyBAQCBBbHRlclBvbGljeShBbHRlclBv bGljeVN0bXQgKnN0bXQpCiAJaWYgKHN0bXQtPnJvbGVzICE9IE5VTEwpCiAJewogCQlyb2xl X29pZHMgPSBwb2xpY3lfcm9sZV9saXN0X3RvX2FycmF5KHN0bXQtPnJvbGVzLCAmbml0ZW1z KTsKLQkJcm9sZV9pZHMgPSBjb25zdHJ1Y3RfYXJyYXkocm9sZV9vaWRzLCBuaXRlbXMsIE9J RE9JRCwKLQkJCQkJCQkJICAgc2l6ZW9mKE9pZCksIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJ CXJvbGVfaWRzID0gY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocm9sZV9vaWRzLCBuaXRlbXMs IE9JRE9JRCk7CiAJfQogCiAJLyogR2V0IGlkIG9mIHRhYmxlLiAgQWxzbyBoYW5kbGVzIHBl cm1pc3Npb25zIGNoZWNrcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA4MDcz ODU0N2VkLi42MzNjOWE0MGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC03MjIs OCArNzIyLDYgQEAgYnVpbGRfcmVndHlwZV9hcnJheShPaWQgKnBhcmFtX3R5cGVzLCBpbnQg bnVtX3BhcmFtcykKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmFtczsgaSsrKQogCQl0bXBf YXJ5W2ldID0gT2JqZWN0SWRHZXREYXR1bShwYXJhbV90eXBlc1tpXSk7CiAKLQkvKiBYWFg6 IHRoaXMgaGFyZGNvZGVzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByZWd0eXBlIHR5cGUgKi8K LQlyZXN1bHQgPSBjb25zdHJ1Y3RfYXJyYXkodG1wX2FyeSwgbnVtX3BhcmFtcywgUkVHVFlQ RU9JRCwKLQkJCQkJCQkgNCwgdHJ1ZSwgVFlQQUxJR05fSU5UKTsKKwlyZXN1bHQgPSBjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbih0bXBfYXJ5LCBudW1fcGFyYW1zLCBSRUdUWVBFT0lEKTsK IAlyZXR1cm4gUG9pbnRlckdldERhdHVtKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0 YXRzY21kcy5jCmluZGV4IDU0YTE5MDcyMmQuLmU1NGMyZDkwYzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N0YXRzY21kcy5jCkBAIC00NjYsNyArNDY2LDcgQEAgQ3JlYXRlU3RhdGlzdGljcyhD cmVhdGVTdGF0c1N0bXQgKnN0bXQpCiAJaWYgKGJ1aWxkX2V4cHJlc3Npb25zKQogCQl0eXBl c1tudHlwZXMrK10gPSBDaGFyR2V0RGF0dW0oU1RBVFNfRVhUX0VYUFJFU1NJT05TKTsKIAlB c3NlcnQobnR5cGVzID4gMCAmJiBudHlwZXMgPD0gbGVuZ3Rob2YodHlwZXMpKTsKLQlzdHhr aW5kID0gY29uc3RydWN0X2FycmF5KHR5cGVzLCBudHlwZXMsIENIQVJPSUQsIDEsIHRydWUs IFRZUEFMSUdOX0NIQVIpOworCXN0eGtpbmQgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbih0 eXBlcywgbnR5cGVzLCBDSEFST0lEKTsKIAogCS8qIGNvbnZlcnQgdGhlIGV4cHJlc3Npb25z IChpZiBhbnkpIHRvIGEgdGV4dCBkYXR1bSAqLwogCWlmIChzdHhleHBycyAhPSBOSUwpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggYjk0MjM2Zjc0 ZC4uMmU1ZjdiMGI1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYwpAQCAtNDk0LDggKzQ5NCw3IEBAIHB1YmxpY2F0aW9uTGlzdFRvQXJyYXkoTGlzdCAq cHVibGlzdCkKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCi0JYXJyID0g Y29uc3RydWN0X2FycmF5KGRhdHVtcywgbGlzdF9sZW5ndGgocHVibGlzdCksCi0JCQkJCQkg IFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5UKTsKKwlhcnIgPSBjb25zdHJ1Y3Rf YXJyYXlfYnVpbHRpbihkYXR1bXMsIGxpc3RfbGVuZ3RoKHB1Ymxpc3QpLCBURVhUT0lEKTsK IAogCU1lbW9yeUNvbnRleHREZWxldGUobWVtY3h0KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVj bWRzLmMKaW5kZXggOWI5MmIwNDI0Mi4uNGY1ZTdjN2NjYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jCkBAIC0xODkzLDEyICsxODkzLDkgQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1 Y3RvcnMoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5hbWVzcGFjZSwKIAkvKiBuLWFyZyBjb25z dHJ1Y3RvciAtIHZhcmFyZyAqLwogCWFyZ3R5cGVzID0gYnVpbGRvaWR2ZWN0b3IoJnJhbmdl QXJyYXlPaWQsIDEpOwogCWFsbFBhcmFtVHlwZXMgPSBPYmplY3RJZEdldERhdHVtKHJhbmdl QXJyYXlPaWQpOwotCWFsbFBhcmFtZXRlclR5cGVzID0gY29uc3RydWN0X2FycmF5KCZhbGxQ YXJhbVR5cGVzLAotCQkJCQkJCQkJCTEsIE9JRE9JRCwKLQkJCQkJCQkJCQlzaXplb2YoT2lk KSwgdHJ1ZSwgVFlQQUxJR05fSU5UKTsKKwlhbGxQYXJhbWV0ZXJUeXBlcyA9IGNvbnN0cnVj dF9hcnJheV9idWlsdGluKCZhbGxQYXJhbVR5cGVzLCAxLCBPSURPSUQpOwogCXBhcmFtTW9k ZXMgPSBDaGFyR2V0RGF0dW0oRlVOQ19QQVJBTV9WQVJJQURJQyk7Ci0JcGFyYW1ldGVyTW9k ZXMgPSBjb25zdHJ1Y3RfYXJyYXkoJnBhcmFtTW9kZXMsIDEsIENIQVJPSUQsCi0JCQkJCQkJ CQkgMSwgdHJ1ZSwgVFlQQUxJR05fQ0hBUik7CisJcGFyYW1ldGVyTW9kZXMgPSBjb25zdHJ1 Y3RfYXJyYXlfYnVpbHRpbigmcGFyYW1Nb2RlcywgMSwgQ0hBUk9JRCk7CiAJbXlzZWxmID0g UHJvY2VkdXJlQ3JlYXRlKG5hbWUsCS8qIG5hbWU6IHNhbWUgYXMgbXVsdGlyYW5nZSB0eXBl ICovCiAJCQkJCQkJIG5hbWVzcGFjZSwKIAkJCQkJCQkgZmFsc2UsIC8qIHJlcGxhY2UgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDQxMTZkMWYzYjUuLmExYzYz MjVkNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtMjA2LDkgKzIw Niw3IEBAIFRpZExpc3RFdmFsKFRpZFNjYW5TdGF0ZSAqdGlkc3RhdGUpCiAJCQlpZiAoaXNO dWxsKQogCQkJCWNvbnRpbnVlOwogCQkJaXRlbWFycmF5ID0gRGF0dW1HZXRBcnJheVR5cGVQ KGFycmF5ZGF0dW0pOwotCQkJZGVjb25zdHJ1Y3RfYXJyYXkoaXRlbWFycmF5LAotCQkJCQkJ CSAgVElET0lELCBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSwgZmFsc2UsIFRZUEFMSUdOX1NI T1JULAotCQkJCQkJCSAgJmlwZGF0dW1zLCAmaXBudWxscywgJm5kYXR1bXMpOworCQkJZGVj b25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihpdGVtYXJyYXksIFRJRE9JRCwgJmlwZGF0dW1zLCAm aXBudWxscywgJm5kYXR1bXMpOwogCQkJaWYgKG51bVRpZHMgKyBuZGF0dW1zID4gbnVtQWxs b2NUaWRzKQogCQkJewogCQkJCW51bUFsbG9jVGlkcyA9IG51bVRpZHMgKyBuZGF0dW1zOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKaW5kZXggMzA3MTE0YTMwZC4uZjdhZDY4OTQ1OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCkBAIC00MTEsOSArNDExLDcgQEAgdHlwZW5h bWVUeXBlTW9kKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgVHlwZU5hbWUgKnR5cGVOYW1l LCBUeXBlIHR5cCkKIAkJZGF0dW1zW24rK10gPSBDU3RyaW5nR2V0RGF0dW0oY3N0cik7CiAJ fQogCi0JLyogaGFyZHdpcmVkIGtub3dsZWRnZSBhYm91dCBjc3RyaW5nJ3MgcmVwcmVzZW50 YXRpb24gZGV0YWlscyBoZXJlICovCi0JYXJydHlwbW9kID0gY29uc3RydWN0X2FycmF5KGRh dHVtcywgbiwgQ1NUUklOR09JRCwKLQkJCQkJCQkJLTIsIGZhbHNlLCBUWVBBTElHTl9DSEFS KTsKKwlhcnJ0eXBtb2QgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihkYXR1bXMsIG4sIENT VFJJTkdPSUQpOwogCiAJLyogYXJyYW5nZSB0byByZXBvcnQgbG9jYXRpb24gaWYgdHlwZSdz IHR5cG1vZGluIGZ1bmN0aW9uIGZhaWxzICovCiAJc2V0dXBfcGFyc2VyX2VycnBvc2l0aW9u X2NhbGxiYWNrKCZwY2JzdGF0ZSwgcHN0YXRlLCB0eXBlTmFtZS0+bG9jYXRpb24pOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMWE2NGE1MjI3OS4uZjg4OTcyNmEy OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xNjQyLDkgKzE2NDIs NyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRp b24gc291cmNlX2lkeCwKIAkJCQkJZWxvZyhFUlJPUiwgIm51bGwgY29uZXhjbG9wIGZvciBj b25zdHJhaW50ICV1IiwKIAkJCQkJCSBjb25zdHJhaW50SWQpOwogCi0JCQkJZGVjb25zdHJ1 Y3RfYXJyYXkoRGF0dW1HZXRBcnJheVR5cGVQKGRhdHVtKSwKLQkJCQkJCQkJICBPSURPSUQs IHNpemVvZihPaWQpLCB0cnVlLCBUWVBBTElHTl9JTlQsCi0JCQkJCQkJCSAgJmVsZW1zLCBO VUxMLCAmbkVsZW1zKTsKKwkJCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKERhdHVtR2V0 QXJyYXlUeXBlUChkYXR1bSksIE9JRE9JRCwgJmVsZW1zLCBOVUxMLCAmbkVsZW1zKTsKIAog CQkJCWZvciAoaSA9IDA7IGkgPCBuRWxlbXM7IGkrKykKIAkJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCA2MDU4ZDM2 ZTBkLi43ZmEyYjJjYmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTE3Miw4ICsxNzIsNyBAQCBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25m aXJtLCBib29sIGJpbgogCiAJCUFzc2VydChBUlJfRUxFTVRZUEUoYXJyKSA9PSBURVhUT0lE KTsKIAotCQlkZWNvbnN0cnVjdF9hcnJheShhcnIsIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQ QUxJR05fSU5ULAotCQkJCQkJICAmZGF0dW1fb3B0cywgTlVMTCwgJm5lbGVtcyk7CisJCWRl Y29uc3RydWN0X2FycmF5X2J1aWx0aW4oYXJyLCBURVhUT0lELCAmZGF0dW1fb3B0cywgTlVM TCwgJm5lbGVtcyk7CiAKIAkJaWYgKG5lbGVtcyAlIDIgIT0gMCkKIAkJCWVyZXBvcnQoRVJS T1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRz LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggY2E0 ODM5NWQ1Yy4uN2MwMmZiMjc5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9leHRlbmRlZF9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5k ZWRfc3RhdHMuYwpAQCAtMjM0NSwxMCArMjM0NSw3IEBAIHNlcmlhbGl6ZV9leHByX3N0YXRz KEFubEV4cHJEYXRhICpleHByZGF0YSwgaW50IG5leHBycykKIAogCQkJCWZvciAobiA9IDA7 IG4gPCBubnVtOyBuKyspCiAJCQkJCW51bWRhdHVtc1tuXSA9IEZsb2F0NEdldERhdHVtKHN0 YXRzLT5zdGFudW1iZXJzW2tdW25dKTsKLQkJCQkvKiBYWFgga25vd3MgbW9yZSB0aGFuIGl0 IHNob3VsZCBhYm91dCB0eXBlIGZsb2F0NDogKi8KLQkJCQlhcnJ5ID0gY29uc3RydWN0X2Fy cmF5KG51bWRhdHVtcywgbm51bSwKLQkJCQkJCQkJCSAgIEZMT0FUNE9JRCwKLQkJCQkJCQkJ CSAgIHNpemVvZihmbG9hdDQpLCB0cnVlLCBUWVBBTElHTl9JTlQpOworCQkJCWFycnkgPSBj b25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihudW1kYXR1bXMsIG5udW0sIEZMT0FUNE9JRCk7CiAJ CQkJdmFsdWVzW2krK10gPSBQb2ludGVyR2V0RGF0dW0oYXJyeSk7CS8qIHN0YW51bWJlcnNO ICovCiAJCQl9CiAJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL2Rp Y3QuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jCmluZGV4IDhkYWUyYjhlOTkuLmM2 ZWE5ZjkyNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jCisrKyBi L3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jCkBAIC02OCwxMiArNjgsNyBAQCB0c19sZXhp emUoUEdfRlVOQ1RJT05fQVJHUykKIAkJcHRyKys7CiAJfQogCi0JYSA9IGNvbnN0cnVjdF9h cnJheShkYSwKLQkJCQkJCXB0ciAtIHJlcywKLQkJCQkJCVRFWFRPSUQsCi0JCQkJCQktMSwK LQkJCQkJCWZhbHNlLAotCQkJCQkJVFlQQUxJR05fSU5UKTsKKwlhID0gY29uc3RydWN0X2Fy cmF5X2J1aWx0aW4oZGEsIHB0ciAtIHJlcywgVEVYVE9JRCk7CiAKIAlwdHIgPSByZXM7CiAJ d2hpbGUgKHB0ci0+bGV4ZW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKaW5k ZXggNzhlOTUxYTZiYy4uOWYyMjM0OWEwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlm dW5jcy5jCkBAIC0zMzMwLDYgKzMzMzAsODggQEAgY29uc3RydWN0X2FycmF5KERhdHVtICpl bGVtcywgaW50IG5lbGVtcywKIAkJCQkJCQkgIGVsbXR5cGUsIGVsbWxlbiwgZWxtYnl2YWws IGVsbWFsaWduKTsKIH0KIAorLyoKKyAqIExpa2UgY29uc3RydWN0X2FycmF5KCksIHdoZXJl IGVsbXR5cGUgbXVzdCBiZSBhIGJ1aWx0LWluIHR5cGUsIGFuZAorICogZWxtbGVuL2VsbWJ5 dmFsL2VsbWFsaWduIGlzIGxvb2tlZCB1cCBmcm9tIGhhcmRjb2RlZCBkYXRhLiAgVGhpcyBp cyBvZnRlbgorICogdXNlZnVsIHdoZW4gbWFuaXB1bGF0aW5nIGFycmF5cyBmcm9tL2ZvciBz eXN0ZW0gY2F0YWxvZ3MuCisgKi8KK0FycmF5VHlwZSAqCitjb25zdHJ1Y3RfYXJyYXlfYnVp bHRpbihEYXR1bSAqZWxlbXMsIGludCBuZWxlbXMsIE9pZCBlbG10eXBlKQoreworCWludAkJ CWVsbWxlbjsKKwlib29sCQllbG1ieXZhbDsKKwljaGFyCQllbG1hbGlnbjsKKworCXN3aXRj aCAoZWxtdHlwZSkKKwl7CisJCWNhc2UgQ0hBUk9JRDoKKwkJCWVsbWxlbiA9IDE7CisJCQll bG1ieXZhbCA9IHRydWU7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0NIQVI7CisJCQlicmVh azsKKworCQljYXNlIENTVFJJTkdPSUQ6CisJCQllbG1sZW4gPSAtMjsKKwkJCWVsbWJ5dmFs ID0gZmFsc2U7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0NIQVI7CisJCQlicmVhazsKKwor CQljYXNlIEZMT0FUNE9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihmbG9hdDQpOworCQkJZWxt Ynl2YWwgPSB0cnVlOworCQkJZWxtYWxpZ24gPSBUWVBBTElHTl9JTlQ7CisJCQlicmVhazsK KworCQljYXNlIElOVDJPSUQ6CisJCQllbG1sZW4gPSBzaXplb2YoaW50MTYpOworCQkJZWxt Ynl2YWwgPSB0cnVlOworCQkJZWxtYWxpZ24gPSBUWVBBTElHTl9TSE9SVDsKKwkJCWJyZWFr OworCisJCWNhc2UgSU5UNE9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihpbnQzMik7CisJCQll bG1ieXZhbCA9IHRydWU7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0lOVDsKKwkJCWJyZWFr OworCisJCWNhc2UgSU5UOE9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihpbnQ2NCk7CisJCQll bG1ieXZhbCA9IEZMT0FUOFBBU1NCWVZBTDsKKwkJCWVsbWFsaWduID0gVFlQQUxJR05fRE9V QkxFOworCQkJYnJlYWs7CisKKwkJY2FzZSBOQU1FT0lEOgorCQkJZWxtbGVuID0gTkFNRURB VEFMRU47CisJCQllbG1ieXZhbCA9IGZhbHNlOworCQkJZWxtYWxpZ24gPSBUWVBBTElHTl9D SEFSOworCQkJYnJlYWs7CisKKwkJY2FzZSBPSURPSUQ6CisJCWNhc2UgUkVHVFlQRU9JRDoK KwkJCWVsbWxlbiA9IHNpemVvZihPaWQpOworCQkJZWxtYnl2YWwgPSB0cnVlOworCQkJZWxt YWxpZ24gPSBUWVBBTElHTl9JTlQ7CisJCQlicmVhazsKKworCQljYXNlIFRFWFRPSUQ6CisJ CQllbG1sZW4gPSAtMTsKKwkJCWVsbWJ5dmFsID0gZmFsc2U7CisJCQllbG1hbGlnbiA9IFRZ UEFMSUdOX0lOVDsKKwkJCWJyZWFrOworCisJCWNhc2UgVElET0lEOgorCQkJZWxtbGVuID0g c2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSk7CisJCQllbG1ieXZhbCA9IGZhbHNlOworCQkJZWxt YWxpZ24gPSBUWVBBTElHTl9TSE9SVDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQll bG9nKEVSUk9SLCAidHlwZSAldSBub3Qgc3VwcG9ydGVkIGhlcmUiLCBlbG10eXBlKTsKKwl9 CisKKwlyZXR1cm4gY29uc3RydWN0X2FycmF5KGVsZW1zLCBuZWxlbXMsIGVsbXR5cGUsIGVs bWxlbiwgZWxtYnl2YWwsIGVsbWFsaWduKTsKK30KKwogLyoKICAqIGNvbnN0cnVjdF9tZF9h cnJheQktLS0gc2ltcGxlIG1ldGhvZCBmb3IgY29uc3RydWN0aW5nIGFuIGFycmF5IG9iamVj dAogICoJCQkJCQkJd2l0aCBhcmJpdHJhcnkgZGltZW5zaW9ucyBhbmQgcG9zc2libGUgTlVM THMKQEAgLTM0ODMsOSArMzU2NSw5IEBAIGNvbnN0cnVjdF9lbXB0eV9leHBhbmRlZF9hcnJh eShPaWQgZWxlbWVudF90eXBlLAogICogYmUgcG9pbnRlcnMgaW50byB0aGUgYXJyYXkgb2Jq ZWN0LgogICoKICAqIE5PVEU6IGl0IHdvdWxkIGJlIGNsZWFuZXIgdG8gbG9vayB1cCB0aGUg ZWxtbGVuL2VsbWJ2YWwvZWxtYWxpZ24gaW5mbwotICogZnJvbSB0aGUgc3lzdGVtIGNhdGFs b2dzLCBnaXZlbiB0aGUgZWxtdHlwZS4gIEhvd2V2ZXIsIGluIG1vc3QgY3VycmVudAotICog dXNlcyB0aGUgdHlwZSBpcyBoYXJkLXdpcmVkIGludG8gdGhlIGNhbGxlciBhbmQgc28gd2Ug Y2FuIHNhdmUgYSBsb29rdXAKLSAqIGN5Y2xlIGJ5IGhhcmQtd2lyaW5nIHRoZSB0eXBlIGlu Zm8gYXMgd2VsbC4KKyAqIGZyb20gdGhlIHN5c3RlbSBjYXRhbG9ncywgZ2l2ZW4gdGhlIGVs bXR5cGUuICBIb3dldmVyLCB0aGUgY2FsbGVyIGlzCisgKiBpbiBhIGJldHRlciBwb3NpdGlv biB0byBjYWNoZSB0aGlzIGluZm8gYWNyb3NzIG11bHRpcGxlIHVzZXMsIG9yIGV2ZW4KKyAq IHRvIGhhcmQtd2lyZSB2YWx1ZXMgaWYgdGhlIGVsZW1lbnQgdHlwZSBpcyBoYXJkLXdpcmVk LgogICovCiB2b2lkCiBkZWNvbnN0cnVjdF9hcnJheShBcnJheVR5cGUgKmFycmF5LApAQCAt MzU0OCw2ICszNjMwLDcxIEBAIGRlY29uc3RydWN0X2FycmF5KEFycmF5VHlwZSAqYXJyYXks CiAJfQogfQogCisvKgorICogTGlrZSBkZWNvbnN0cnVjdF9hcnJheSgpLCB3aGVyZSBlbG10 eXBlIG11c3QgYmUgYSBidWlsdC1pbiB0eXBlLCBhbmQKKyAqIGVsbWxlbi9lbG1ieXZhbC9l bG1hbGlnbiBpcyBsb29rZWQgdXAgZnJvbSBoYXJkY29kZWQgZGF0YS4gIFRoaXMgaXMgb2Z0 ZW4KKyAqIHVzZWZ1bCB3aGVuIG1hbmlwdWxhdGluZyBhcnJheXMgZnJvbS9mb3Igc3lzdGVt IGNhdGFsb2dzLgorICovCit2b2lkCitkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKEFycmF5 VHlwZSAqYXJyYXksCisJCQkJCQkgIE9pZCBlbG10eXBlLAorCQkJCQkJICBEYXR1bSAqKmVs ZW1zcCwgYm9vbCAqKm51bGxzcCwgaW50ICpuZWxlbXNwKQoreworCWludAkJCWVsbWxlbjsK Kwlib29sCQllbG1ieXZhbDsKKwljaGFyCQllbG1hbGlnbjsKKworCXN3aXRjaCAoZWxtdHlw ZSkKKwl7CisJCWNhc2UgQ0hBUk9JRDoKKwkJCWVsbWxlbiA9IDE7CisJCQllbG1ieXZhbCA9 IHRydWU7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0NIQVI7CisJCQlicmVhazsKKworCQlj YXNlIENTVFJJTkdPSUQ6CisJCQllbG1sZW4gPSAtMjsKKwkJCWVsbWJ5dmFsID0gZmFsc2U7 CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0NIQVI7CisJCQlicmVhazsKKworCQljYXNlIEZM T0FUOE9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihmbG9hdDgpOworCQkJZWxtYnl2YWwgPSBG TE9BVDhQQVNTQllWQUw7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX0RPVUJMRTsKKwkJCWJy ZWFrOworCisJCWNhc2UgSU5UMk9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihpbnQxNik7CisJ CQllbG1ieXZhbCA9IHRydWU7CisJCQllbG1hbGlnbiA9IFRZUEFMSUdOX1NIT1JUOworCQkJ YnJlYWs7CisKKwkJY2FzZSBPSURPSUQ6CisJCQllbG1sZW4gPSBzaXplb2YoT2lkKTsKKwkJ CWVsbWJ5dmFsID0gdHJ1ZTsKKwkJCWVsbWFsaWduID0gVFlQQUxJR05fSU5UOworCQkJYnJl YWs7CisKKwkJY2FzZSBURVhUT0lEOgorCQkJZWxtbGVuID0gLTE7CisJCQllbG1ieXZhbCA9 IGZhbHNlOworCQkJZWxtYWxpZ24gPSBUWVBBTElHTl9JTlQ7CisJCQlicmVhazsKKworCQlj YXNlIFRJRE9JRDoKKwkJCWVsbWxlbiA9IHNpemVvZihJdGVtUG9pbnRlckRhdGEpOworCQkJ ZWxtYnl2YWwgPSBmYWxzZTsKKwkJCWVsbWFsaWduID0gVFlQQUxJR05fU0hPUlQ7CisJCQli cmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInR5cGUgJXUgbm90IHN1cHBv cnRlZCBoZXJlIiwgZWxtdHlwZSk7CisJfQorCisJZGVjb25zdHJ1Y3RfYXJyYXkoYXJyYXks IGVsbXR5cGUsIGVsbWxlbiwgZWxtYnl2YWwsIGVsbWFsaWduLCBlbGVtc3AsIG51bGxzcCwg bmVsZW1zcCk7Cit9CisKIC8qCiAgKiBhcnJheV9jb250YWluc19udWxscyAtLS0gZGV0ZWN0 IHdoZXRoZXIgYW4gYXJyYXkgaGFzIGFueSBudWxsIGVsZW1lbnRzCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5dXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXV0aWxzLmMKaW5kZXggNDY0YTM3NjQxZS4uMDUxMTY5YTE0OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5dXRpbHMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXl1dGlscy5jCkBAIC0yNDksMTAgKzI0OSw3IEBAIEFy cmF5R2V0SW50ZWdlclR5cG1vZHMoQXJyYXlUeXBlICphcnIsIGludCAqbikKIAkJCQkoZXJy Y29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAogCQkJCSBlcnJtc2coInR5 cG1vZCBhcnJheSBtdXN0IG5vdCBjb250YWluIG51bGxzIikpKTsKIAotCS8qIGhhcmR3aXJl ZCBrbm93bGVkZ2UgYWJvdXQgY3N0cmluZydzIHJlcHJlc2VudGF0aW9uIGRldGFpbHMgaGVy ZSAqLwotCWRlY29uc3RydWN0X2FycmF5KGFyciwgQ1NUUklOR09JRCwKLQkJCQkJICAtMiwg ZmFsc2UsIFRZUEFMSUdOX0NIQVIsCi0JCQkJCSAgJmVsZW1fdmFsdWVzLCBOVUxMLCBuKTsK KwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGFyciwgQ1NUUklOR09JRCwgJmVsZW1fdmFs dWVzLCBOVUxMLCBuKTsKIAogCXJlc3VsdCA9IChpbnQzMiAqKSBwYWxsb2MoKm4gKiBzaXpl b2YoaW50MzIpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2hiYWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaGJhZnVuY3MuYwppbmRleCA5ZmU3YjYy YzlhLi41OTgyNTk3MThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaGJh ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaGJhZnVuY3MuYwpAQCAtMTUx LDcgKzE1MSw3IEBAIGdldF9oYmFfb3B0aW9ucyhIYmFMaW5lICpoYmEpCiAJQXNzZXJ0KG5v cHRpb25zIDw9IE1BWF9IQkFfT1BUSU9OUyk7CiAKIAlpZiAobm9wdGlvbnMgPiAwKQotCQly ZXR1cm4gY29uc3RydWN0X2FycmF5KG9wdGlvbnMsIG5vcHRpb25zLCBURVhUT0lELCAtMSwg ZmFsc2UsIFRZUEFMSUdOX0lOVCk7CisJCXJldHVybiBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRp bihvcHRpb25zLCBub3B0aW9ucywgVEVYVE9JRCk7CiAJZWxzZQogCQlyZXR1cm4gTlVMTDsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDYzNjQ5YmE3MzUuLjczZGQzNWY2ZWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb24uYwpAQCAtMTQ0Nyw5ICsxNDQ3LDcgQEAganNvbl9vYmplY3Qo UEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJIGVycm1zZygid3JvbmcgbnVtYmVyIG9mIGFycmF5 IHN1YnNjcmlwdHMiKSkpOwogCX0KIAotCWRlY29uc3RydWN0X2FycmF5KGluX2FycmF5LAot CQkJCQkgIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZpbl9k YXR1bXMsICZpbl9udWxscywgJmluX2NvdW50KTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWls dGluKGluX2FycmF5LCBURVhUT0lELCAmaW5fZGF0dW1zLCAmaW5fbnVsbHMsICZpbl9jb3Vu dCk7CiAKIAljb3VudCA9IGluX2NvdW50IC8gMjsKIApAQCAtMTUyMywxMyArMTUyMSw4IEBA IGpzb25fb2JqZWN0X3R3b19hcmcoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAobmtkaW1zID09 IDApCiAJCVBHX1JFVFVSTl9EQVRVTShDU3RyaW5nR2V0VGV4dERhdHVtKCJ7fSIpKTsKIAot CWRlY29uc3RydWN0X2FycmF5KGtleV9hcnJheSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFs c2UsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtl eV9jb3VudCk7Ci0KLQlkZWNvbnN0cnVjdF9hcnJheSh2YWxfYXJyYXksCi0JCQkJCSAgVEVY VE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAgJnZhbF9kYXR1bXMsICZ2 YWxfbnVsbHMsICZ2YWxfY291bnQpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oa2V5 X2FycmF5LCBURVhUT0lELCAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9jb3VudCk7 CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbih2YWxfYXJyYXksIFRFWFRPSUQsICZ2YWxf ZGF0dW1zLCAmdmFsX251bGxzLCAmdmFsX2NvdW50KTsKIAogCWlmIChrZXlfY291bnQgIT0g dmFsX2NvdW50KQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwppbmRl eCAyNmQ4MTM2NmM5Li5mNzA1NzZmMWMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwpAQCAt MTM3Niw5ICsxMzc2LDcgQEAganNvbmJfb2JqZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CSBlcnJtc2coIndyb25nIG51bWJlciBvZiBhcnJheSBzdWJzY3JpcHRzIikpKTsKIAl9CiAK LQlkZWNvbnN0cnVjdF9hcnJheShpbl9hcnJheSwKLQkJCQkJICBURVhUT0lELCAtMSwgZmFs c2UsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAmaW5fZGF0dW1zLCAmaW5fbnVsbHMsICZpbl9j b3VudCk7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihpbl9hcnJheSwgVEVYVE9JRCwg JmluX2RhdHVtcywgJmluX251bGxzLCAmaW5fY291bnQpOwogCiAJY291bnQgPSBpbl9jb3Vu dCAvIDI7CiAKQEAgLTE0NjQsMTMgKzE0NjIsOCBAQCBqc29uYl9vYmplY3RfdHdvX2FyZyhQ R19GVU5DVElPTl9BUkdTKQogCWlmIChua2RpbXMgPT0gMCkKIAkJZ290byBjbG9zZV9vYmpl Y3Q7CiAKLQlkZWNvbnN0cnVjdF9hcnJheShrZXlfYXJyYXksCi0JCQkJCSAgVEVYVE9JRCwg LTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAgJmtleV9kYXR1bXMsICZrZXlfbnVs bHMsICZrZXlfY291bnQpOwotCi0JZGVjb25zdHJ1Y3RfYXJyYXkodmFsX2FycmF5LAotCQkJ CQkgIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZ2YWxfZGF0 dW1zLCAmdmFsX251bGxzLCAmdmFsX2NvdW50KTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWls dGluKGtleV9hcnJheSwgVEVYVE9JRCwgJmtleV9kYXR1bXMsICZrZXlfbnVsbHMsICZrZXlf Y291bnQpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4odmFsX2FycmF5LCBURVhUT0lE LCAmdmFsX2RhdHVtcywgJnZhbF9udWxscywgJnZhbF9jb3VudCk7CiAKIAlpZiAoa2V5X2Nv dW50ICE9IHZhbF9jb3VudCkKIAkJZXJlcG9ydChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYl9naW4uYwppbmRleCA1ZWRmMjc4Y2RiLi5jNTMyNWFjZGU0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iX2dpbi5jCkBAIC04ODUsOSArODg1LDcgQEAgZ2luX2V4dHJhY3RfanNv bmJfcXVlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAkJaW50CQkJaSwKIAkJCQkJajsKIAotCQlk ZWNvbnN0cnVjdF9hcnJheShxdWVyeSwKLQkJCQkJCSAgVEVYVE9JRCwgLTEsIGZhbHNlLCBU WVBBTElHTl9JTlQsCi0JCQkJCQkgICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAma2V5X2Nv dW50KTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihxdWVyeSwgVEVYVE9JRCwgJmtl eV9kYXR1bXMsICZrZXlfbnVsbHMsICZrZXlfY291bnQpOwogCiAJCWVudHJpZXMgPSAoRGF0 dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBrZXlfY291bnQpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfb3AuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYl9vcC5jCmluZGV4IGVkMzcyNTJlN2YuLjIwMjM2N2U5OTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9vcC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYl9vcC5jCkBAIC01Myw4ICs1Myw3IEBAIGpzb25iX2V4aXN0c19h bnkoUEdfRlVOQ1RJT05fQVJHUykKIAlib29sCSAgICprZXlfbnVsbHM7CiAJaW50CQkJZWxl bV9jb3VudDsKIAotCWRlY29uc3RydWN0X2FycmF5KGtleXMsIFRFWFRPSUQsIC0xLCBmYWxz ZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAmZWxl bV9jb3VudCk7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihrZXlzLCBURVhUT0lELCAm a2V5X2RhdHVtcywgJmtleV9udWxscywgJmVsZW1fY291bnQpOwogCiAJZm9yIChpID0gMDsg aSA8IGVsZW1fY291bnQ7IGkrKykKIAl7CkBAIC04Niw4ICs4NSw3IEBAIGpzb25iX2V4aXN0 c19hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAlib29sCSAgICprZXlfbnVsbHM7CiAJaW50CQkJ ZWxlbV9jb3VudDsKIAotCWRlY29uc3RydWN0X2FycmF5KGtleXMsIFRFWFRPSUQsIC0xLCBm YWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZrZXlfZGF0dW1zLCAma2V5X251bGxzLCAm ZWxlbV9jb3VudCk7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihrZXlzLCBURVhUT0lE LCAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmVsZW1fY291bnQpOwogCiAJZm9yIChpID0g MDsgaSA8IGVsZW1fY291bnQ7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMKaW5kZXggZDEzNTZkNjQxNi4uMmEzZjY1Njg5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYwpAQCAtMTAwMCw4ICsxMDAwLDcgQEAgZ2V0X3BhdGhfYWxsKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBib29sIGFzX3RleHQpCiAJaWYgKGFycmF5X2NvbnRhaW5zX251 bGxzKHBhdGgpKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCi0JZGVjb25zdHJ1Y3RfYXJyYXko cGF0aCwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAgJnBhdGh0 ZXh0LCAmcGF0aG51bGxzLCAmbnBhdGgpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4o cGF0aCwgVEVYVE9JRCwgJnBhdGh0ZXh0LCAmcGF0aG51bGxzLCAmbnBhdGgpOwogCiAJdHBh dGggPSBwYWxsb2MobnBhdGggKiBzaXplb2YoY2hhciAqKSk7CiAJaXBhdGggPSBwYWxsb2Mo bnBhdGggKiBzaXplb2YoaW50KSk7CkBAIC0xNDU2LDggKzE0NTUsNyBAQCBnZXRfanNvbmJf cGF0aF9hbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCkKIAlpZiAo YXJyYXlfY29udGFpbnNfbnVsbHMocGF0aCkpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CiAKLQlk ZWNvbnN0cnVjdF9hcnJheShwYXRoLCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lO VCwKLQkJCQkJICAmcGF0aHRleHQsICZwYXRobnVsbHMsICZucGF0aCk7CisJZGVjb25zdHJ1 Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAmcGF0aHRleHQsICZwYXRobnVsbHMs ICZucGF0aCk7CiAKIAlyZXMgPSBqc29uYl9nZXRfZWxlbWVudChqYiwgcGF0aHRleHQsIG5w YXRoLCAmaXNudWxsLCBhc190ZXh0KTsKIApAQCAtNDM2OSw4ICs0MzY3LDcgQEAganNvbmJf ZGVsZXRlX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKEpCX1JPT1RfQ09VTlQoaW4p ID09IDApCiAJCVBHX1JFVFVSTl9KU09OQl9QKGluKTsKIAotCWRlY29uc3RydWN0X2FycmF5 KGtleXMsIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZrZXlz X2VsZW1zLCAma2V5c19udWxscywgJmtleXNfbGVuKTsKKwlkZWNvbnN0cnVjdF9hcnJheV9i dWlsdGluKGtleXMsIFRFWFRPSUQsICZrZXlzX2VsZW1zLCAma2V5c19udWxscywgJmtleXNf bGVuKTsKIAogCWlmIChrZXlzX2xlbiA9PSAwKQogCQlQR19SRVRVUk5fSlNPTkJfUChpbik7 CkBAIC00NTIyLDggKzQ1MTksNyBAQCBqc29uYl9zZXQoUEdfRlVOQ1RJT05fQVJHUykKIAlp ZiAoSkJfUk9PVF9DT1VOVChpbikgPT0gMCAmJiAhY3JlYXRlKQogCQlQR19SRVRVUk5fSlNP TkJfUChpbik7CiAKLQlkZWNvbnN0cnVjdF9hcnJheShwYXRoLCBURVhUT0lELCAtMSwgZmFs c2UsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAmcGF0aF9lbGVtcywgJnBhdGhfbnVsbHMsICZw YXRoX2xlbik7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAm cGF0aF9lbGVtcywgJnBhdGhfbnVsbHMsICZwYXRoX2xlbik7CiAKIAlpZiAocGF0aF9sZW4g PT0gMCkKIAkJUEdfUkVUVVJOX0pTT05CX1AoaW4pOwpAQCAtNDYzNCw4ICs0NjMwLDcgQEAg anNvbmJfZGVsZXRlX3BhdGgoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoSkJfUk9PVF9DT1VO VChpbikgPT0gMCkKIAkJUEdfUkVUVVJOX0pTT05CX1AoaW4pOwogCi0JZGVjb25zdHJ1Y3Rf YXJyYXkocGF0aCwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAg JnBhdGhfZWxlbXMsICZwYXRoX251bGxzLCAmcGF0aF9sZW4pOworCWRlY29uc3RydWN0X2Fy cmF5X2J1aWx0aW4ocGF0aCwgVEVYVE9JRCwgJnBhdGhfZWxlbXMsICZwYXRoX251bGxzLCAm cGF0aF9sZW4pOwogCiAJaWYgKHBhdGhfbGVuID09IDApCiAJCVBHX1JFVFVSTl9KU09OQl9Q KGluKTsKQEAgLTQ2ODAsOCArNDY3NSw3IEBAIGpzb25iX2luc2VydChQR19GVU5DVElPTl9B UkdTKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAog CQkJCSBlcnJtc2coImNhbm5vdCBzZXQgcGF0aCBpbiBzY2FsYXIiKSkpOwogCi0JZGVjb25z dHJ1Y3RfYXJyYXkocGF0aCwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0J CQkJCSAgJnBhdGhfZWxlbXMsICZwYXRoX251bGxzLCAmcGF0aF9sZW4pOworCWRlY29uc3Ry dWN0X2FycmF5X2J1aWx0aW4ocGF0aCwgVEVYVE9JRCwgJnBhdGhfZWxlbXMsICZwYXRoX251 bGxzLCAmcGF0aF9sZW4pOwogCiAJaWYgKHBhdGhfbGVuID09IDApCiAJCVBHX1JFVFVSTl9K U09OQl9QKGluKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCAwMjNhMDA0 YWM4Li5kZWRlZTdhZjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9j a2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC01 MzgsMTAgKzUzOCw3IEBAIHBnX2Jsb2NraW5nX3BpZHMoUEdfRlVOQ1RJT05fQVJHUykKIAkv KiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXJyYXllbGVtc1tdICovCiAJQXNzZXJ0KG5h cnJheWVsZW1zIDw9IGxvY2tEYXRhLT5ubG9ja3MpOwogCi0JLyogQ29uc3RydWN0IGFycmF5 LCB1c2luZyBoYXJkd2lyZWQga25vd2xlZGdlIGFib3V0IGludDQgdHlwZSAqLwotCVBHX1JF VFVSTl9BUlJBWVRZUEVfUChjb25zdHJ1Y3RfYXJyYXkoYXJyYXllbGVtcywgbmFycmF5ZWxl bXMsCi0JCQkJCQkJCQkJICBJTlQ0T0lELAotCQkJCQkJCQkJCSAgc2l6ZW9mKGludDMyKSwg dHJ1ZSwgVFlQQUxJR05fSU5UKSk7CisJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0cnVj dF9hcnJheV9idWlsdGluKGFycmF5ZWxlbXMsIG5hcnJheWVsZW1zLCBJTlQ0T0lEKSk7CiB9 CiAKIApAQCAtNTc5LDEwICs1NzYsNyBAQCBwZ19zYWZlX3NuYXBzaG90X2Jsb2NraW5nX3Bp ZHMoUEdfRlVOQ1RJT05fQVJHUykKIAllbHNlCiAJCWJsb2NrZXJfZGF0dW1zID0gTlVMTDsK IAotCS8qIENvbnN0cnVjdCBhcnJheSwgdXNpbmcgaGFyZHdpcmVkIGtub3dsZWRnZSBhYm91 dCBpbnQ0IHR5cGUgKi8KLQlQR19SRVRVUk5fQVJSQVlUWVBFX1AoY29uc3RydWN0X2FycmF5 KGJsb2NrZXJfZGF0dW1zLCBudW1fYmxvY2tlcnMsCi0JCQkJCQkJCQkJICBJTlQ0T0lELAot CQkJCQkJCQkJCSAgc2l6ZW9mKGludDMyKSwgdHJ1ZSwgVFlQQUxJR05fSU5UKSk7CisJUEdf UkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGJsb2NrZXJfZGF0 dW1zLCBudW1fYmxvY2tlcnMsIElOVDRPSUQpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbmFtZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25hbWUu YwppbmRleCBlOGJiYTM2NzBjLi5kMjJlMWYyNzdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbmFtZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uYW1lLmMK QEAgLTMxNCwxMSArMzE0LDcgQEAgY3VycmVudF9zY2hlbWFzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJfQogCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7CiAKLQlhcnJheSA9IGNvbnN0cnVjdF9h cnJheShuYW1lcywgaSwKLQkJCQkJCQlOQU1FT0lELAotCQkJCQkJCU5BTUVEQVRBTEVOLAkv KiBzaXplb2YoTmFtZSkgKi8KLQkJCQkJCQlmYWxzZSwJLyogTmFtZSBpcyBub3QgYnktdmFs ICovCi0JCQkJCQkJVFlQQUxJR05fQ0hBUik7IC8qIGFsaWdubWVudCBvZiBOYW1lICovCisJ YXJyYXkgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihuYW1lcywgaSwgTkFNRU9JRCk7CiAK IAlQR19SRVRVUk5fUE9JTlRFUihhcnJheSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9v cmRlcmVkc2V0YWdncy5jCmluZGV4IDZkNGY2YjdkY2EuLjE4NWIyY2I4NDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCkBAIC03NTksMTIgKzc1OSwxMCBA QCBwZXJjZW50aWxlX2Rpc2NfbXVsdGlfZmluYWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdf UkVUVVJOX05VTEwoKTsKIAlwYXJhbSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgxKTsKIAot CWRlY29uc3RydWN0X2FycmF5KHBhcmFtLCBGTE9BVDhPSUQsCi0JLyogaGFyZC13aXJlZCBp bmZvIG9uIHR5cGUgZmxvYXQ4ICovCi0JCQkJCSAgc2l6ZW9mKGZsb2F0OCksIEZMT0FUOFBB U1NCWVZBTCwgVFlQQUxJR05fRE9VQkxFLAotCQkJCQkgICZwZXJjZW50aWxlc19kYXR1bSwK LQkJCQkJICAmcGVyY2VudGlsZXNfbnVsbCwKLQkJCQkJICAmbnVtX3BlcmNlbnRpbGVzKTsK KwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKHBhcmFtLCBGTE9BVDhPSUQsCisJCQkJCQkJ ICAmcGVyY2VudGlsZXNfZGF0dW0sCisJCQkJCQkJICAmcGVyY2VudGlsZXNfbnVsbCwKKwkJ CQkJCQkgICZudW1fcGVyY2VudGlsZXMpOwogCiAJaWYgKG51bV9wZXJjZW50aWxlcyA9PSAw KQogCQlQR19SRVRVUk5fUE9JTlRFUihjb25zdHJ1Y3RfZW1wdHlfYXJyYXkob3Nhc3RhdGUt PnFzdGF0ZS0+c29ydENvbFR5cGUpKTsKQEAgLTg4MywxMiArODgxLDEwIEBAIHBlcmNlbnRp bGVfY29udF9tdWx0aV9maW5hbF9jb21tb24oRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJ CVBHX1JFVFVSTl9OVUxMKCk7CiAJcGFyYW0gPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoMSk7 CiAKLQlkZWNvbnN0cnVjdF9hcnJheShwYXJhbSwgRkxPQVQ4T0lELAotCS8qIGhhcmQtd2ly ZWQgaW5mbyBvbiB0eXBlIGZsb2F0OCAqLwotCQkJCQkgIHNpemVvZihmbG9hdDgpLCBGTE9B VDhQQVNTQllWQUwsIFRZUEFMSUdOX0RPVUJMRSwKLQkJCQkJICAmcGVyY2VudGlsZXNfZGF0 dW0sCi0JCQkJCSAgJnBlcmNlbnRpbGVzX251bGwsCi0JCQkJCSAgJm51bV9wZXJjZW50aWxl cyk7CisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXJhbSwgRkxPQVQ4T0lELAorCQkJ CQkJCSAgJnBlcmNlbnRpbGVzX2RhdHVtLAorCQkJCQkJCSAgJnBlcmNlbnRpbGVzX251bGws CisJCQkJCQkJICAmbnVtX3BlcmNlbnRpbGVzKTsKIAogCWlmIChudW1fcGVyY2VudGlsZXMg PT0gMCkKIAkJUEdfUkVUVVJOX1BPSU5URVIoY29uc3RydWN0X2VtcHR5X2FycmF5KG9zYXN0 YXRlLT5xc3RhdGUtPnNvcnRDb2xUeXBlKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfdXBncmFkZV9zdXBwb3J0LmMKaW5kZXggNjdiOTY3NWU5Mi4uNjU3NjRkNzhhMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMjE0 LDkgKzIxNCw3IEBAIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdf RlVOQ1RJT05fQVJHUykKIAkJaW50CQkJbmRhdHVtczsKIAkJaW50CQkJaTsKIAotCQlkZWNv bnN0cnVjdF9hcnJheSh0ZXh0QXJyYXksCi0JCQkJCQkgIFRFWFRPSUQsIC0xLCBmYWxzZSwg VFlQQUxJR05fSU5ULAotCQkJCQkJICAmdGV4dERhdHVtcywgTlVMTCwgJm5kYXR1bXMpOwor CQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKHRleHRBcnJheSwgVEVYVE9JRCwgJnRleHRE YXR1bXMsIE5VTEwsICZuZGF0dW1zKTsKIAkJZm9yIChpID0gMDsgaSA8IG5kYXR1bXM7IGkr KykKIAkJewogCQkJY2hhcgkgICAqZXh0TmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcodGV4 dERhdHVtc1tpXSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNWQ0OWY1 NjRhMi4uNGQ3MTQ2NjZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt MjM5OSw5ICsyMzk5LDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25z dHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWlmIChpc251bGwpCiAJCQkJCQll bG9nKEVSUk9SLCAibnVsbCBpbmRrZXkgZm9yIGluZGV4ICV1IiwgaW5kZXhJZCk7CiAKLQkJ CQkJZGVjb25zdHJ1Y3RfYXJyYXkoRGF0dW1HZXRBcnJheVR5cGVQKGNvbHMpLAotCQkJCQkJ CQkJICBJTlQyT0lELCAyLCB0cnVlLCBUWVBBTElHTl9TSE9SVCwKLQkJCQkJCQkJCSAgJmtl eXMsIE5VTEwsICZuS2V5cyk7CisJCQkJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oRGF0 dW1HZXRBcnJheVR5cGVQKGNvbHMpLCBJTlQyT0lELAorCQkJCQkJCQkJCQkgICZrZXlzLCBO VUxMLCAmbktleXMpOwogCiAJCQkJCWZvciAoaiA9IGtleWF0dHM7IGogPCBuS2V5czsgaisr KQogCQkJCQl7CkBAIC0yNTI0LDkgKzI1MjMsOCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93 b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQkJZWxvZyhF UlJPUiwgIm51bGwgY29uZXhjbG9wIGZvciBjb25zdHJhaW50ICV1IiwKIAkJCQkJCSBjb25z dHJhaW50SWQpOwogCi0JCQkJZGVjb25zdHJ1Y3RfYXJyYXkoRGF0dW1HZXRBcnJheVR5cGVQ KHZhbCksCi0JCQkJCQkJCSAgT0lET0lELCBzaXplb2YoT2lkKSwgdHJ1ZSwgVFlQQUxJR05f SU5ULAotCQkJCQkJCQkgICZlbGVtcywgTlVMTCwgJm5FbGVtcyk7CisJCQkJZGVjb25zdHJ1 Y3RfYXJyYXlfYnVpbHRpbihEYXR1bUdldEFycmF5VHlwZVAodmFsKSwgT0lET0lELAorCQkJ CQkJCQkJCSAgJmVsZW1zLCBOVUxMLCAmbkVsZW1zKTsKIAogCQkJCW9wZXJhdG9ycyA9IChP aWQgKikgcGFsbG9jKG5FbGVtcyAqIHNpemVvZihPaWQpKTsKIAkJCQlmb3IgKGkgPSAwOyBp IDwgbkVsZW1zOyBpKyspCkBAIC0yNTgwLDkgKzI1NzgsOCBAQCBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAogCWlu dAkJCWo7CiAKIAkvKiBFeHRyYWN0IGRhdGEgZnJvbSBhcnJheSBvZiBpbnQxNiAqLwotCWRl Y29uc3RydWN0X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChjb2x1bW5faW5kZXhfYXJyYXkp LAotCQkJCQkgIElOVDJPSUQsIDIsIHRydWUsIFRZUEFMSUdOX1NIT1JULAotCQkJCQkgICZr ZXlzLCBOVUxMLCAmbktleXMpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oRGF0dW1H ZXRBcnJheVR5cGVQKGNvbHVtbl9pbmRleF9hcnJheSksIElOVDJPSUQsCisJCQkJCQkJICAm a2V5cywgTlVMTCwgJm5LZXlzKTsKIAogCWZvciAoaiA9IDA7IGogPCBuS2V5czsgaisrKQog CXsKQEAgLTEyNzE1LDkgKzEyNzEyLDggQEAgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBi dWYsIERhdHVtIHJlbG9wdGlvbnMpCiAJaW50CQkJbm9wdGlvbnM7CiAJaW50CQkJaTsKIAot CWRlY29uc3RydWN0X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChyZWxvcHRpb25zKSwKLQkJ CQkJICBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwKLQkJCQkJICAmb3B0aW9u cywgTlVMTCwgJm5vcHRpb25zKTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKERhdHVt R2V0QXJyYXlUeXBlUChyZWxvcHRpb25zKSwgVEVYVE9JRCwKKwkJCQkJCQkgICZvcHRpb25z LCBOVUxMLCAmbm9wdGlvbnMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5vcHRpb25zOyBpKysp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYwppbmRleCBhZGRjMzQ5MTUx Li4xNzg2YzE4Zjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0 b3Jfb3AuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYwpAQCAt MzA4LDggKzMwOCw3IEBAIHRzdmVjdG9yX3NldHdlaWdodF9ieV9maWx0ZXIoUEdfRlVOQ1RJ T05fQVJHUykKIAltZW1jcHkodHNvdXQsIHRzaW4sIFZBUlNJWkUodHNpbikpOwogCWVudHJ5 ID0gQVJSUFRSKHRzb3V0KTsKIAotCWRlY29uc3RydWN0X2FycmF5KGxleGVtZXMsIFRFWFRP SUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkgICZkbGV4ZW1lcywgJm51bGxz LCAmbmxleGVtZXMpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4obGV4ZW1lcywgVEVY VE9JRCwgJmRsZXhlbWVzLCAmbnVsbHMsICZubGV4ZW1lcyk7CiAKIAkvKgogCSAqIEFzc3Vt aW5nIHRoYXQgbGV4ZW1lcyBhcnJheSBpcyBzaWduaWZpY2FudGx5IHNob3J0ZXIgdGhhbiB0 c3ZlY3RvciB3ZQpAQCAtNTg2LDggKzU4NSw3IEBAIHRzdmVjdG9yX2RlbGV0ZV9hcnIoUEdf RlVOQ1RJT05fQVJHUykKIAlEYXR1bQkgICAqZGxleGVtZXM7CiAJYm9vbAkgICAqbnVsbHM7 CiAKLQlkZWNvbnN0cnVjdF9hcnJheShsZXhlbWVzLCBURVhUT0lELCAtMSwgZmFsc2UsIFRZ UEFMSUdOX0lOVCwKLQkJCQkJICAmZGxleGVtZXMsICZudWxscywgJm5sZXgpOworCWRlY29u c3RydWN0X2FycmF5X2J1aWx0aW4obGV4ZW1lcywgVEVYVE9JRCwgJmRsZXhlbWVzLCAmbnVs bHMsICZubGV4KTsKIAogCS8qCiAJICogSW4gdHlwaWNhbCB1c2UgY2FzZSBhcnJheSBvZiBs ZXhlbWVzIHRvIGRlbGV0ZSBpcyByZWxhdGl2ZWx5IHNtYWxsLiBTbwpAQCAtNjk0LDEwICs2 OTIsOCBAQCB0c3ZlY3Rvcl91bm5lc3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJCQkJ CQkJCQkJICAxKSk7CiAJCQl9CiAKLQkJCXZhbHVlc1sxXSA9IFBvaW50ZXJHZXREYXR1bShj b25zdHJ1Y3RfYXJyYXkocG9zaXRpb25zLCBwb3N2LT5ucG9zLAotCQkJCQkJCQkJCQkJCQlJ TlQyT0lELCAyLCB0cnVlLCBUWVBBTElHTl9TSE9SVCkpOwotCQkJdmFsdWVzWzJdID0gUG9p bnRlckdldERhdHVtKGNvbnN0cnVjdF9hcnJheSh3ZWlnaHRzLCBwb3N2LT5ucG9zLAotCQkJ CQkJCQkJCQkJCQlURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCkpOworCQkJdmFs dWVzWzFdID0gUG9pbnRlckdldERhdHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHBvc2l0 aW9ucywgcG9zdi0+bnBvcywgSU5UMk9JRCkpOworCQkJdmFsdWVzWzJdID0gUG9pbnRlckdl dERhdHVtKGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHdlaWdodHMsIHBvc3YtPm5wb3MsIFRF WFRPSUQpKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTczMyw3ICs3MjksNyBAQCB0c3ZlY3Rv cl90b19hcnJheShQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkJCQkJICAgYXJyaW5b aV0ubGVuKSk7CiAJfQogCi0JYXJyYXkgPSBjb25zdHJ1Y3RfYXJyYXkoZWxlbWVudHMsIHRz aW4tPnNpemUsIFRFWFRPSUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5UKTsKKwlhcnJheSA9 IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGVsZW1lbnRzLCB0c2luLT5zaXplLCBURVhUT0lE KTsKIAogCXBmcmVlKGVsZW1lbnRzKTsKIAlQR19GUkVFX0lGX0NPUFkodHNpbiwgMCk7CkBA IC03NTcsNyArNzUzLDcgQEAgYXJyYXlfdG9fdHN2ZWN0b3IoUEdfRlVOQ1RJT05fQVJHUykK IAkJCQlkYXRhbGVuID0gMDsKIAljaGFyCSAgICpjdXI7CiAKLQlkZWNvbnN0cnVjdF9hcnJh eSh2LCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwgJmRsZXhlbWVzLCAmbnVs bHMsICZuaXRlbXMpOworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4odiwgVEVYVE9JRCwg JmRsZXhlbWVzLCAmbnVsbHMsICZuaXRlbXMpOwogCiAJLyoKIAkgKiBSZWplY3QgbnVsbHMg YW5kIHplcm8gbGVuZ3RoIHN0cmluZ3MgKG1heWJlIHdlIHNob3VsZCBqdXN0IGlnbm9yZSB0 aGVtLApAQCAtODMzLDggKzgyOSw3IEBAIHRzdmVjdG9yX2ZpbHRlcihQR19GVU5DVElPTl9B UkdTKQogCWludAkJCWN1cl9wb3MgPSAwOwogCWNoYXIJCW1hc2sgPSAwOwogCi0JZGVjb25z dHJ1Y3RfYXJyYXkod2VpZ2h0cywgQ0hBUk9JRCwgMSwgdHJ1ZSwgVFlQQUxJR05fQ0hBUiwK LQkJCQkJICAmZHdlaWdodHMsICZudWxscywgJm53ZWlnaHRzKTsKKwlkZWNvbnN0cnVjdF9h cnJheV9idWlsdGluKHdlaWdodHMsIENIQVJPSUQsICZkd2VpZ2h0cywgJm51bGxzLCAmbndl aWdodHMpOwogCiAJZm9yIChpID0gMDsgaSA8IG53ZWlnaHRzOyBpKyspCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3htbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3htbC5jCmluZGV4IDFlYzZmMWMyZmQuLjYwYTg1YzQ2OTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC94bWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv eG1sLmMKQEAgLTQwMTcsOSArNDAxNyw5IEBAIHhwYXRoX2ludGVybmFsKHRleHQgKnhwYXRo X2V4cHJfdGV4dCwgeG1sdHlwZSAqZGF0YSwgQXJyYXlUeXBlICpuYW1lc3BhY2VzLAogCiAJ CUFzc2VydChBUlJfRUxFTVRZUEUobmFtZXNwYWNlcykgPT0gVEVYVE9JRCk7CiAKLQkJZGVj b25zdHJ1Y3RfYXJyYXkobmFtZXNwYWNlcywgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElH Tl9JTlQsCi0JCQkJCQkgICZuc19uYW1lc191cmlzLCAmbnNfbmFtZXNfdXJpc19udWxscywK LQkJCQkJCSAgJm5zX2NvdW50KTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihuYW1l c3BhY2VzLCBURVhUT0lELAorCQkJCQkJCQkgICZuc19uYW1lc191cmlzLCAmbnNfbmFtZXNf dXJpc19udWxscywKKwkJCQkJCQkJICAmbnNfY291bnQpOwogCiAJCUFzc2VydCgobnNfY291 bnQgJSAyKSA9PSAwKTsJLyogY2hlY2tlZCBhYm92ZSAqLwogCQluc19jb3VudCAvPSAyOwkJ CS8qIGNvdW50IHBhaXJzIG9ubHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2V2dGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5j CmluZGV4IDNhOWM5ZjBjNTAuLmY3ZjcxNjVmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv ZXZ0Y2FjaGUuYwpAQCAtMjI4LDggKzIyOCw3IEBAIERlY29kZVRleHRBcnJheVRvQml0bWFw c2V0KERhdHVtIGFycmF5KQogCiAJaWYgKEFSUl9ORElNKGFycikgIT0gMSB8fCBBUlJfSEFT TlVMTChhcnIpIHx8IEFSUl9FTEVNVFlQRShhcnIpICE9IFRFWFRPSUQpCiAJCWVsb2coRVJS T1IsICJleHBlY3RlZCAxLUQgdGV4dCBhcnJheSIpOwotCWRlY29uc3RydWN0X2FycmF5KGFy ciwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCSAgJmVsZW1zLCBO VUxMLCAmbmVsZW1zKTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGFyciwgVEVYVE9J RCwgJmVsZW1zLCBOVUxMLCAmbmVsZW1zKTsKIAogCWZvciAoYm1zID0gTlVMTCwgaSA9IDA7 IGkgPCBuZWxlbXM7ICsraSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9m bWdyL2Z1bmNhcGkuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZnVuY2FwaS5jCmluZGV4 IDkxOTdiMGYxZTIuLmExZmU1MGZmY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2ZtZ3IvZnVuY2FwaS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZnVuY2FwaS5j CkBAIC0xMzkwLDkgKzEzOTAsOCBAQCBnZXRfZnVuY19hcmdfaW5mbyhIZWFwVHVwbGUgcHJv Y1R1cCwKIAkJKnBfYXJnbmFtZXMgPSBOVUxMOwogCWVsc2UKIAl7Ci0JCWRlY29uc3RydWN0 X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChwcm9hcmduYW1lcyksCi0JCQkJCQkgIFRFWFRP SUQsIC0xLCBmYWxzZSwgVFlQQUxJR05fSU5ULAotCQkJCQkJICAmZWxlbXMsIE5VTEwsICZu ZWxlbXMpOworCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKERhdHVtR2V0QXJyYXlUeXBl UChwcm9hcmduYW1lcyksIFRFWFRPSUQsCisJCQkJCQkJCSAgJmVsZW1zLCBOVUxMLCAmbmVs ZW1zKTsKIAkJaWYgKG5lbGVtcyAhPSBudW1hcmdzKQkvKiBzaG91bGQgbm90IGhhcHBlbiAq LwogCQkJZWxvZyhFUlJPUiwgInByb2FyZ25hbWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1i ZXIgb2YgZWxlbWVudHMgYXMgdGhlIGZ1bmN0aW9uIGhhcyBhcmd1bWVudHMiKTsKIAkJKnBf YXJnbmFtZXMgPSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogbnVtYXJncyk7 CkBAIC0xNTA2LDggKzE1MDUsNyBAQCBnZXRfZnVuY19pbnB1dF9hcmdfbmFtZXMoRGF0dW0g cHJvYXJnbmFtZXMsIERhdHVtIHByb2FyZ21vZGVzLAogCQlBUlJfSEFTTlVMTChhcnIpIHx8 CiAJCUFSUl9FTEVNVFlQRShhcnIpICE9IFRFWFRPSUQpCiAJCWVsb2coRVJST1IsICJwcm9h cmduYW1lcyBpcyBub3QgYSAxLUQgdGV4dCBhcnJheSBvciBpdCBjb250YWlucyBudWxscyIp OwotCWRlY29uc3RydWN0X2FycmF5KGFyciwgVEVYVE9JRCwgLTEsIGZhbHNlLCBUWVBBTElH Tl9JTlQsCi0JCQkJCSAgJmFyZ25hbWVzLCBOVUxMLCAmbnVtYXJncyk7CisJZGVjb25zdHJ1 Y3RfYXJyYXlfYnVpbHRpbihhcnIsIFRFWFRPSUQsICZhcmduYW1lcywgTlVMTCwgJm51bWFy Z3MpOwogCWlmIChwcm9hcmdtb2RlcyAhPSBQb2ludGVyR2V0RGF0dW0oTlVMTCkpCiAJewog CQlhcnIgPSBEYXR1bUdldEFycmF5VHlwZVAocHJvYXJnbW9kZXMpOwkvKiBlbnN1cmUgbm90 IHRvYXN0ZWQgKi8KQEAgLTE2MjEsOCArMTYxOSw3IEBAIGdldF9mdW5jX3Jlc3VsdF9uYW1l KE9pZCBmdW5jdGlvbklkKQogCQkJQVJSX0VMRU1UWVBFKGFycikgIT0gVEVYVE9JRCkKIAkJ CWVsb2coRVJST1IsICJwcm9hcmduYW1lcyBpcyBub3QgYSAxLUQgdGV4dCBhcnJheSBvZiBs ZW5ndGggJWQgb3IgaXQgY29udGFpbnMgbnVsbHMiLAogCQkJCSBudW1hcmdzKTsKLQkJZGVj b25zdHJ1Y3RfYXJyYXkoYXJyLCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFMSUdOX0lOVCwK LQkJCQkJCSAgJmFyZ25hbWVzLCBOVUxMLCAmbmFyZ25hbWVzKTsKKwkJZGVjb25zdHJ1Y3Rf YXJyYXlfYnVpbHRpbihhcnIsIFRFWFRPSUQsICZhcmduYW1lcywgTlVMTCwgJm5hcmduYW1l cyk7CiAJCUFzc2VydChuYXJnbmFtZXMgPT0gbnVtYXJncyk7CiAKIAkJLyogc2NhbiBmb3Ig b3V0cHV0IGFyZ3VtZW50KHMpICovCkBAIC0xNzcwLDggKzE3NjcsNyBAQCBidWlsZF9mdW5j dGlvbl9yZXN1bHRfdHVwZGVzY19kKGNoYXIgcHJva2luZCwKIAkJCUFSUl9FTEVNVFlQRShh cnIpICE9IFRFWFRPSUQpCiAJCQllbG9nKEVSUk9SLCAicHJvYXJnbmFtZXMgaXMgbm90IGEg MS1EIHRleHQgYXJyYXkgb2YgbGVuZ3RoICVkIG9yIGl0IGNvbnRhaW5zIG51bGxzIiwKIAkJ CQkgbnVtYXJncyk7Ci0JCWRlY29uc3RydWN0X2FycmF5KGFyciwgVEVYVE9JRCwgLTEsIGZh bHNlLCBUWVBBTElHTl9JTlQsCi0JCQkJCQkgICZhcmduYW1lcywgTlVMTCwgJm5hcmduYW1l cyk7CisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oYXJyLCBURVhUT0lELCAmYXJnbmFt ZXMsIE5VTEwsICZuYXJnbmFtZXMpOwogCQlBc3NlcnQobmFyZ25hbWVzID09IG51bWFyZ3Mp OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggOGU5YjcxMzc1Yy4uMjNmMmNiNGY4 ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC05OTU4LDcgKzk5NTgsNyBAQCBwZ19zZXR0 aW5nc19nZXRfZmxhZ3MoUEdfRlVOQ1RJT05fQVJHUykKIAlBc3NlcnQoY250IDw9IE1BWF9H VUNfRkxBR1MpOwogCiAJLyogUmV0dXJucyB0aGUgcmVjb3JkIGFzIERhdHVtICovCi0JYSA9 IGNvbnN0cnVjdF9hcnJheShmbGFncywgY250LCBURVhUT0lELCAtMSwgZmFsc2UsIFRZUEFM SUdOX0lOVCk7CisJYSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGZsYWdzLCBjbnQsIFRF WFRPSUQpOwogCVBHX1JFVFVSTl9BUlJBWVRZUEVfUChhKTsKIH0KIApAQCAtMTE0OTEsOSAr MTE0OTEsNyBAQCBHVUNBcnJheUFkZChBcnJheVR5cGUgKmFycmF5LCBjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIAkJCQkJICBUWVBBTElHTl9JTlQgLyogVEVYVCdz IHR5cGFsaWduICovICk7CiAJfQogCWVsc2UKLQkJYSA9IGNvbnN0cnVjdF9hcnJheSgmZGF0 dW0sIDEsCi0JCQkJCQkJVEVYVE9JRCwKLQkJCQkJCQktMSwgZmFsc2UsIFRZUEFMSUdOX0lO VCk7CisJCWEgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbigmZGF0dW0sIDEsIFRFWFRPSUQp OwogCiAJcmV0dXJuIGE7CiB9CkBAIC0xMTU2MCw5ICsxMTU1OCw3IEBAIEdVQ0FycmF5RGVs ZXRlKEFycmF5VHlwZSAqYXJyYXksIGNvbnN0IGNoYXIgKm5hbWUpCiAJCQkJCQkJCSBmYWxz ZSAvKiBURVhUJ3MgdHlwYnl2YWwgKi8gLAogCQkJCQkJCQkgVFlQQUxJR05fSU5UIC8qIFRF WFQncyB0eXBhbGlnbiAqLyApOwogCQllbHNlCi0JCQluZXdhcnJheSA9IGNvbnN0cnVjdF9h cnJheSgmZCwgMSwKLQkJCQkJCQkJCSAgIFRFWFRPSUQsCi0JCQkJCQkJCQkgICAtMSwgZmFs c2UsIFRZUEFMSUdOX0lOVCk7CisJCQluZXdhcnJheSA9IGNvbnN0cnVjdF9hcnJheV9idWls dGluKCZkLCAxLCBURVhUT0lEKTsKIAogCQlpbmRleCsrOwogCX0KQEAgLTExNjI4LDkgKzEx NjI0LDcgQEAgR1VDQXJyYXlSZXNldChBcnJheVR5cGUgKmFycmF5KQogCQkJCQkJCQkgZmFs c2UgLyogVEVYVCdzIHR5cGJ5dmFsICovICwKIAkJCQkJCQkJIFRZUEFMSUdOX0lOVCAvKiBU RVhUJ3MgdHlwYWxpZ24gKi8gKTsKIAkJZWxzZQotCQkJbmV3YXJyYXkgPSBjb25zdHJ1Y3Rf YXJyYXkoJmQsIDEsCi0JCQkJCQkJCQkgICBURVhUT0lELAotCQkJCQkJCQkJICAgLTEsIGZh bHNlLCBUWVBBTElHTl9JTlQpOworCQkJbmV3YXJyYXkgPSBjb25zdHJ1Y3RfYXJyYXlfYnVp bHRpbigmZCwgMSwgVEVYVE9JRCk7CiAKIAkJaW5kZXgrKzsKIAkJcGZyZWUodmFsKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2FycmF5LmggYi9zcmMvaW5jbHVkZS91dGls cy9hcnJheS5oCmluZGV4IDY1NmM3NjZhOWEuLjJmNzk0ZDExNjggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2FycmF5LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYXJyYXku aApAQCAtMzg3LDYgKzM4Nyw3IEBAIGV4dGVybiB2b2lkIGFycmF5X2JpdG1hcF9jb3B5KGJp dHM4ICpkZXN0Yml0bWFwLCBpbnQgZGVzdG9mZnNldCwKIGV4dGVybiBBcnJheVR5cGUgKmNv bnN0cnVjdF9hcnJheShEYXR1bSAqZWxlbXMsIGludCBuZWxlbXMsCiAJCQkJCQkJCSAgT2lk IGVsbXR5cGUsCiAJCQkJCQkJCSAgaW50IGVsbWxlbiwgYm9vbCBlbG1ieXZhbCwgY2hhciBl bG1hbGlnbik7CitleHRlcm4gQXJyYXlUeXBlICpjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihE YXR1bSAqZWxlbXMsIGludCBuZWxlbXMsIE9pZCBlbG10eXBlKTsKIGV4dGVybiBBcnJheVR5 cGUgKmNvbnN0cnVjdF9tZF9hcnJheShEYXR1bSAqZWxlbXMsCiAJCQkJCQkJCQkgYm9vbCAq bnVsbHMsCiAJCQkJCQkJCQkgaW50IG5kaW1zLApAQCAtNDAxLDYgKzQwMiw5IEBAIGV4dGVy biB2b2lkIGRlY29uc3RydWN0X2FycmF5KEFycmF5VHlwZSAqYXJyYXksCiAJCQkJCQkJICBP aWQgZWxtdHlwZSwKIAkJCQkJCQkgIGludCBlbG1sZW4sIGJvb2wgZWxtYnl2YWwsIGNoYXIg ZWxtYWxpZ24sCiAJCQkJCQkJICBEYXR1bSAqKmVsZW1zcCwgYm9vbCAqKm51bGxzcCwgaW50 ICpuZWxlbXNwKTsKK2V4dGVybiB2b2lkIGRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oQXJy YXlUeXBlICphcnJheSwKKwkJCQkJCQkJCSAgT2lkIGVsbXR5cGUsCisJCQkJCQkJCQkgIERh dHVtICoqZWxlbXNwLCBib29sICoqbnVsbHNwLCBpbnQgKm5lbGVtc3ApOwogZXh0ZXJuIGJv b2wgYXJyYXlfY29udGFpbnNfbnVsbHMoQXJyYXlUeXBlICphcnJheSk7CiAKIGV4dGVybiBB cnJheUJ1aWxkU3RhdGUgKmluaXRBcnJheVJlc3VsdChPaWQgZWxlbWVudF90eXBlLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jsc19ob29rcy90ZXN0X3Jsc19ob29r cy5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jsc19ob29rcy90ZXN0X3Jsc19ob29rcy5j CmluZGV4IDRmODYyZDA4MWIuLjQxYmZjNzc2YWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfcmxzX2hvb2tzL3Rlc3RfcmxzX2hvb2tzLmMKQEAgLTg3LDcgKzg3LDcg QEAgdGVzdF9ybHNfaG9va3NfcGVybWlzc2l2ZShDbWRUeXBlIGNtZHR5cGUsIFJlbGF0aW9u IHJlbGF0aW9uKQogCiAJcG9saWN5LT5wb2xpY3lfbmFtZSA9IHBzdHJkdXAoImV4dGVuc2lv biBwb2xpY3kiKTsKIAlwb2xpY3ktPnBvbGNtZCA9ICcqJzsKLQlwb2xpY3ktPnJvbGVzID0g Y29uc3RydWN0X2FycmF5KCZyb2xlLCAxLCBPSURPSUQsIHNpemVvZihPaWQpLCB0cnVlLCBU WVBBTElHTl9JTlQpOworCXBvbGljeS0+cm9sZXMgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRp bigmcm9sZSwgMSwgT0lET0lEKTsKIAogCS8qCiAJICogcG9saWN5LT5xdWFsID0gKEV4cHIg KikgbWFrZUNvbnN0KEJPT0xPSUQsIC0xLCBJbnZhbGlkT2lkLApAQCAtMTU1LDcgKzE1NSw3 IEBAIHRlc3RfcmxzX2hvb2tzX3Jlc3RyaWN0aXZlKENtZFR5cGUgY21kdHlwZSwgUmVsYXRp b24gcmVsYXRpb24pCiAKIAlwb2xpY3ktPnBvbGljeV9uYW1lID0gcHN0cmR1cCgiZXh0ZW5z aW9uIHBvbGljeSIpOwogCXBvbGljeS0+cG9sY21kID0gJyonOwotCXBvbGljeS0+cm9sZXMg PSBjb25zdHJ1Y3RfYXJyYXkoJnJvbGUsIDEsIE9JRE9JRCwgc2l6ZW9mKE9pZCksIHRydWUs IFRZUEFMSUdOX0lOVCk7CisJcG9saWN5LT5yb2xlcyA9IGNvbnN0cnVjdF9hcnJheV9idWls dGluKCZyb2xlLCAxLCBPSURPSUQpOwogCiAJbiA9IG1ha2VGdW5jQ2FsbChsaXN0X21ha2Uy KG1ha2VTdHJpbmcoInBnX2NhdGFsb2ciKSwKIAkJCQkJCQkJbWFrZVN0cmluZygiY3VycmVu dF91c2VyIikpLAotLSAKMi4zNS4xCgo= --------------Qs66rZhQ6lRcsOgwiKACyfWC--