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 1vR5gr-006FjY-1c for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 09:31:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vR5gq-001wA1-1l for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 09:31:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vR5gp-001w9S-0D for pgsql-hackers@lists.postgresql.org; Thu, 04 Dec 2025 09:31:56 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vR5gh-0034zY-1V for pgsql-hackers@postgresql.org; Thu, 04 Dec 2025 09:31:54 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-47774d3536dso6803735e9.0 for ; Thu, 04 Dec 2025 01:31:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764840707; x=1765445507; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=cE8uF7YN14R14dgJQPpvTx5PGZmvZzUIlamQAFKwzOA=; b=AOrkVXx1fwbCqOTt4eP3rpWPhmHCTo+b/5hVywYwWtM/wS5QPs/619ZcximNHnKYWv rYikpiiY7aVNgzC2P6D+1bOGpxLgzYW4ASWznjZbGzNTPArNPMXYHmmlYe+K0dY7jeY6 8zFNkPx6Q7kJXvoJ5T4tMti5aCSDqTdJlmJ4RezBTQbOsIBpt87p7LFXlODIROu/pfSP xXvOQn3YrDN4OdZYIo6DYhTA+ZmVFCM4KW4XuPaFXPHIiyWYiyeKrmZGKoXTNd3Pqk21 iasPPQ67Yt2HhA/e4z63xua68HpZgUH4aVLAWx3S2GQAqIrbUitxbMk/IDOReZq/Ipg1 JuXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764840707; x=1765445507; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=cE8uF7YN14R14dgJQPpvTx5PGZmvZzUIlamQAFKwzOA=; b=eeIzdXm7HqKHWZOMGPDCfu2n8/HYVq8OVl9IQq/fisbOhMqQ4y6WHrWeptleO05gWB 9ESXpgW3iPVWGRmx80qgy4TfsVNH6EiioGvT1f2lS+HrI9xNOa+GuTmfl70ba9cqATs/ RhqTVKHazz+e6GuSmlkYbGoOSBqx5/69YYM0kG+hEbSbUd3HFdcue4bc9XKaT7Mv179k EHbaQwX4cpcJ6OLgkfcGOpFN6QLM8l+CnQlIQcItDRBaHL6s/h6Do3RcUiHwRoRXMUXa lmjLcgc40VaDPAI1I0vHPOZi38l5ctjJuYvx7DeQqC+OluJv0ucvc3MaPS98oWKi34fq qY9A== X-Forwarded-Encrypted: i=1; AJvYcCX+S067gN+lUzDPAA7mWoUlgRcy8zFRLhbxeLUvKM8sLEHkN3TP+gxeg6xjUyFHAhLweLFFiYNQRyfSiGZI@postgresql.org X-Gm-Message-State: AOJu0Yxs6uC9C5hYjuNYizYHMhIeit1fx0Dr68lkswnXjdxP20GRXInm cpKppQfU6Lwmeg5Gf0qrEX33QGSZRCjR8/OgdjzuTmzB9bD5wD4+ycrp X-Gm-Gg: ASbGnctLnh/meNIw6PNYW4WGzVghdBgmB4R9/t6stGKAWRZll/EGsI5tpzofQmmgMhx EtDsaDhNghY2ij6ZMpclgsn3CMUtY8xxRnl663VHG89ZjBiBptdtu4rRqJDypJAjMTukq/e0ek0 r5VnP/cdD7QaczMqE6c8jtaMGxW0ZYLt9TsUp6syYdlYiQLbvTb5LGCR3WI7l+7b+/jrgMGeCfc fHiYMmWnieEFYe1H5/deDovSD5GowwGHerm0Gz0VZcFHuTLKWBKAEV/+kx8KzGSyiQ6sGTW6r4y gw664rLQfFTeEFYLMm1z1ApT5E/i2rDF0KnG5kZ7xVv7P92nKlTvLWV0CDqpWueDc/dtsl1IrIF 04vQ56kMPXrMY7SYSRnuMp7//v5G4sf24UKX9t1pT8/KyHmoxqNoP7oeNvLgvK0cLWKhUBBg86a 9L9nEUYznf1Q== X-Google-Smtp-Source: AGHT+IE5lrlTUw5y6UqyQmbZRKye1Ss7U168vcGGSaWshyVZRr+hwK3X+FdBtlVR1Daz5eKg3MJTfg== X-Received: by 2002:a05:600c:a11b:b0:477:a71c:d200 with SMTP id 5b1f17b1804b1-4792eb5e5b9mr20060775e9.11.1764840706148; Thu, 04 Dec 2025 01:31:46 -0800 (PST) Received: from [192.168.2.32] ([165.225.27.7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4793093a9dcsm24864255e9.7.2025.12.04.01.31.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Dec 2025 01:31:44 -0800 (PST) Content-Type: multipart/mixed; boundary="------------giIkXAo2250vdCFmrrdP2tgv" Message-ID: <4ab4a12b-49e9-4ebf-9055-225c8055fed0@gmail.com> Date: Thu, 4 Dec 2025 10:31:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Consistently use palloc_object() and palloc_array() To: Tom Lane , Michael Paquier Cc: Thomas Munro , Chao Li , pgsql-hackers References: <524587.1764365323@sss.pgh.pa.us> <1e7f0c17-a965-4d5b-ad88-b435a4d97490@gmail.com> <143d3184-b575-49bd-8bc1-f37f45f010cc@gmail.com> <534126.1764722446@sss.pgh.pa.us> Content-Language: en-US From: David Geier In-Reply-To: <534126.1764722446@sss.pgh.pa.us> 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. --------------giIkXAo2250vdCFmrrdP2tgv Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 03.12.2025 01:40, Tom Lane wrote: > Michael Paquier writes: >> It may be a good idea to split the patch into two parts, at least: >> - One for the bulk of the changes, for the straight-forward changes. >> Most of what you are suggesting are that for palloc_object and >> palloc_array which are dropped-in replacements. Checking that these >> assemble the same before and after offers one extra layer of >> confidence. >> - Second one for the more dubious changes. > > Yeah, I was thinking the same. Some of those might perhaps be bugs > that we want to back-patch, so they need to be looked at in a > different way. > > regards, tom lane Attached are the two patches, rebased on latest master. The first one contains all changes that either result in no changes to the disassembly, or only in changes due to the line counts; because elog.h makes use of __LINE__. The second patch contains the remaining changes, which is only 11 files. contrib/fuzzystrmatch/fuzzystrmatch.c: semantic changes, e.g. palloc(sizeof(char) * strlen(word) + 1); => palloc_array(char, strlen(word) + 1); contrib/pg_buffercache/pg_buffercache_pages.c: semantic change palloc(sizeof(uint64) * os_page_count); => palloc_array(int, os_page_count); src/test/modules/test_rbtree/test_rbtree.c: different way to get pointer return (RBTNode *) palloc(sizeof(IntRBTreeNode)); => return &palloc_object(IntRBTreeNode)->rbtnode; contrib/hstore/hstore_gin.c contrib/hstore/hstore_op.c contrib/pg_trgm/trgm_op.c contrib/postgres_fdw/postgres_fdw.c src/backend/executor/execPartition.c src/backend/partitioning/partprune.c src/backend/statistics/mvdistinct.c src/backend/storage/buffer/bufmgr.c All files contain arithmetic expressions for the count argument of palloc[0]_array(). The parentheses can change the order in which the arguments are evaluated which changes the generated code. -- David Geier --------------giIkXAo2250vdCFmrrdP2tgv Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-Consistently-use-palloc_object-and-palloc_array-diff.patch" Content-Disposition: attachment; filename*0="v2-0002-Consistently-use-palloc_object-and-palloc_array-diff"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSAwNjAwMGQ1MjlmODUwMWVkNDc1NDcyNjhjN2JmZGI0YTZkNGEyOTliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA0IERlYyAyMDI1IDA5OjUxOjUyICswMTAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIENvbnNpc3RlbnRseSB1c2UgcGFsbG9jX29iamVjdCgpIGFuZCBwYWxsb2NfYXJy YXkoKSAtCiBkaWZmZXJlbnQgZ2VuZXJhdGVkIGNvZGUKCi0tLQogY29udHJpYi9mdXp6eXN0 cm1hdGNoL2Z1enp5c3RybWF0Y2guYyAgICAgICAgIHwgIDQgKy0tCiBjb250cmliL2hzdG9y ZS9oc3RvcmVfZ2luLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCiBjb250cmliL2hz dG9yZS9oc3RvcmVfb3AuYyAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKystLS0tLS0K IGNvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyB8ICA4ICsr Ky0tLQogY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYyAgICAgICAgICAgICAgICAgICAgIHwg MjAgKysrKysrLS0tLS0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMg ICAgICAgICAgIHwgMjIgKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAyOCArKysrKysrKy0tLS0tLS0tLS0tCiBzcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgICAgICAgfCAyNCArKysrKysr Ky0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYyAgICAgICAg ICAgfCAxNCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YyAgICAgICAgICAgfCAgOCArKystLS0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUv dGVzdF9yYnRyZWUuYyAgICB8ICAyICstCiAxMSBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRp b25zKCspLCA4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2Z1enp5c3Ry bWF0Y2gvZnV6enlzdHJtYXRjaC5jIGIvY29udHJpYi9mdXp6eXN0cm1hdGNoL2Z1enp5c3Ry bWF0Y2guYwppbmRleCBlN2NjMzE0Yjc2My4uYzhmNzZkZmM4MzMgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMKKysrIGIvY29udHJpYi9mdXp6 eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYwpAQCAtMzcwLDExICszNzAsMTEgQEAgX21ldGFw aG9uZShjaGFyICp3b3JkLAkJCS8qIElOICovCiAJLyotLSBBbGxvY2F0ZSBtZW1vcnkgZm9y IG91ciBwaG9uZWRfcGhyYXNlIC0tKi8KIAlpZiAobWF4X3Bob25lbWVzID09IDApCiAJewkJ CQkJCQkvKiBBc3N1bWUgbGFyZ2VzdCBwb3NzaWJsZSAqLwotCQkqcGhvbmVkX3dvcmQgPSBw YWxsb2Moc2l6ZW9mKGNoYXIpICogc3RybGVuKHdvcmQpICsgMSk7CisJCSpwaG9uZWRfd29y ZCA9IHBhbGxvY19hcnJheShjaGFyLCBzdHJsZW4od29yZCkgKyAxKTsKIAl9CiAJZWxzZQog CXsKLQkJKnBob25lZF93b3JkID0gcGFsbG9jKHNpemVvZihjaGFyKSAqIG1heF9waG9uZW1l cyArIDEpOworCQkqcGhvbmVkX3dvcmQgPSBwYWxsb2NfYXJyYXkoY2hhciwgbWF4X3Bob25l bWVzICsgMSk7CiAJfQogCiAJLyotLSBUaGUgZmlyc3QgcGhvbmVtZSBoYXMgdG8gYmUgcHJv Y2Vzc2VkIHNwZWNpYWxseS4gLS0qLwpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0 b3JlX2dpbi5jIGIvY29udHJpYi9oc3RvcmUvaHN0b3JlX2dpbi5jCmluZGV4IDJlNWZhMTE1 OTI0Li40ZTQzYWVlYjA1ZCAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2dp bi5jCisrKyBiL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9naW4uYwpAQCAtNTMsNyArNTMsNyBA QCBnaW5fZXh0cmFjdF9oc3RvcmUoUEdfRlVOQ1RJT05fQVJHUykKIAogCSpuZW50cmllcyA9 IDIgKiBjb3VudDsKIAlpZiAoY291bnQpCi0JCWVudHJpZXMgPSAoRGF0dW0gKikgcGFsbG9j KHNpemVvZihEYXR1bSkgKiAyICogY291bnQpOworCQllbnRyaWVzID0gcGFsbG9jX2FycmF5 KERhdHVtLCAyICogY291bnQpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCiAJ ewpAQCAtMTAzLDcgKzEwMyw3IEBAIGdpbl9leHRyYWN0X2hzdG9yZV9xdWVyeShQR19GVU5D VElPTl9BUkdTKQogCQl0ZXh0CSAgICppdGVtOwogCiAJCSpuZW50cmllcyA9IDE7Ci0JCWVu dHJpZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQllbnRyaWVzID0g cGFsbG9jX29iamVjdChEYXR1bSk7CiAJCWl0ZW0gPSBtYWtlaXRlbShWQVJEQVRBX0FOWShx dWVyeSksIFZBUlNJWkVfQU5ZX0VYSERSKHF1ZXJ5KSwgS0VZRkxBRyk7CiAJCWVudHJpZXNb MF0gPSBQb2ludGVyR2V0RGF0dW0oaXRlbSk7CiAJfQpAQCAtMTIwLDcgKzEyMCw3IEBAIGdp bl9leHRyYWN0X2hzdG9yZV9xdWVyeShQR19GVU5DVElPTl9BUkdTKQogCiAJCWRlY29uc3Ry dWN0X2FycmF5X2J1aWx0aW4ocXVlcnksIFRFWFRPSUQsICZrZXlfZGF0dW1zLCAma2V5X251 bGxzLCAma2V5X2NvdW50KTsKIAotCQllbnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXpl b2YoRGF0dW0pICoga2V5X2NvdW50KTsKKwkJZW50cmllcyA9IHBhbGxvY19hcnJheShEYXR1 bSwga2V5X2NvdW50KTsKIAogCQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGtleV9jb3VudDsg KytpKQogCQl7CmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfb3AuYyBiL2Nv bnRyaWIvaHN0b3JlL2hzdG9yZV9vcC5jCmluZGV4IGJjYmE3NWY5MjU4Li5jYWI1OTcwMGMw ZCAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX29wLmMKKysrIGIvY29udHJp Yi9oc3RvcmUvaHN0b3JlX29wLmMKQEAgLTEwMSw3ICsxMDEsNyBAQCBoc3RvcmVBcnJheVRv UGFpcnMoQXJyYXlUeXBlICphLCBpbnQgKm5wYWlycykKIAkJCQkgZXJybXNnKCJudW1iZXIg b2YgcGFpcnMgKCVkKSBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVkKSIsCiAJCQkJ CQlrZXlfY291bnQsIChpbnQpIChNYXhBbGxvY1NpemUgLyBzaXplb2YoUGFpcnMpKSkpKTsK IAotCWtleV9wYWlycyA9IHBhbGxvYyhzaXplb2YoUGFpcnMpICoga2V5X2NvdW50KTsKKwlr ZXlfcGFpcnMgPSBwYWxsb2NfYXJyYXkoUGFpcnMsIGtleV9jb3VudCk7CiAKIAlmb3IgKGkg PSAwLCBqID0gMDsgaSA8IGtleV9jb3VudDsgaSsrKQogCXsKQEAgLTU4OCw4ICs1ODgsOCBA QCBoc3RvcmVfc2xpY2VfdG9fYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJO X1BPSU5URVIoYW91dCk7CiAJfQogCi0Jb3V0X2RhdHVtcyA9IHBhbGxvYyhzaXplb2YoRGF0 dW0pICoga2V5X2NvdW50KTsKLQlvdXRfbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICog a2V5X2NvdW50KTsKKwlvdXRfZGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBrZXlfY291 bnQpOworCW91dF9udWxscyA9IHBhbGxvY19hcnJheShib29sLCBrZXlfY291bnQpOwogCiAJ Zm9yIChpID0gMDsgaSA8IGtleV9jb3VudDsgKytpKQogCXsKQEAgLTY0OSw3ICs2NDksNyBA QCBoc3RvcmVfc2xpY2VfdG9faHN0b3JlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyog aHN0b3JlQXJyYXlUb1BhaXJzKCkgY2hlY2tlZCBvdmVyZmxvdyAqLwotCW91dF9wYWlycyA9 IHBhbGxvYyhzaXplb2YoUGFpcnMpICogbmtleXMpOworCW91dF9wYWlycyA9IHBhbGxvY19h cnJheShQYWlycywgbmtleXMpOwogCWJ1ZnNpeiA9IDA7CiAKIAkvKgpAQCAtNzA1LDcgKzcw NSw3IEBAIGhzdG9yZV9ha2V5cyhQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fUE9J TlRFUihhKTsKIAl9CiAKLQlkID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICog Y291bnQpOworCWQgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGNvdW50KTsKIAogCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgKytpKQogCXsKQEAgLTc0MSw4ICs3NDEsOCBAQCBoc3RvcmVfYXZh bHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX1BPSU5URVIoYSk7CiAJfQogCi0J ZCA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGNvdW50KTsKLQludWxscyA9 IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBjb3VudCk7CisJZCA9IHBhbGxvY19h cnJheShEYXR1bSwgY291bnQpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGNvdW50 KTsKIAogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQogCXsKQEAgLTc4Niw4ICs3ODYs OCBAQCBoc3RvcmVfdG9fYXJyYXlfaW50ZXJuYWwoSFN0b3JlICpocywgaW50IG5kaW1zKQog CQlyZXR1cm4gY29uc3RydWN0X2VtcHR5X2FycmF5KFRFWFRPSUQpOwogCiAJb3V0X3NpemVb MF0gPSBjb3VudCAqIDIgLyBuZGltczsKLQlvdXRfZGF0dW1zID0gcGFsbG9jKHNpemVvZihE YXR1bSkgKiBjb3VudCAqIDIpOwotCW91dF9udWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkg KiBjb3VudCAqIDIpOworCW91dF9kYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGNvdW50 ICogMik7CisJb3V0X251bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGNvdW50ICogMik7CiAK IAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKIAl7CmRpZmYgLS1naXQgYS9jb250cmli L3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3BnX2J1 ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKaW5kZXggNzAyMzA3YTQ5ZTIuLjBj NThlNGIyNjVjIDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlX3BhZ2VzLmMKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJj YWNoZV9wYWdlcy5jCkBAIC0xMzQsNyArMTM0LDcgQEAgcGdfYnVmZmVyY2FjaGVfcGFnZXMo UEdfRlVOQ1RJT05fQVJHUykKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCiAJCS8qIENyZWF0ZSBhIHVz ZXIgZnVuY3Rpb24gY29udGV4dCBmb3IgY3Jvc3MtY2FsbCBwZXJzaXN0ZW5jZSAqLwotCQlm Y3R4ID0gKEJ1ZmZlckNhY2hlUGFnZXNDb250ZXh0ICopIHBhbGxvYyhzaXplb2YoQnVmZmVy Q2FjaGVQYWdlc0NvbnRleHQpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QoQnVmZmVyQ2Fj aGVQYWdlc0NvbnRleHQpOwogCiAJCS8qCiAJCSAqIFRvIHNtb290aGx5IHN1cHBvcnQgdXBn cmFkZXMgZnJvbSB2ZXJzaW9uIDEuMCBvZiB0aGlzIGV4dGVuc2lvbgpAQCAtMzgyLDggKzM4 Miw4IEBAIHBnX2J1ZmZlcmNhY2hlX29zX3BhZ2VzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBib29sIGluY2x1ZGVfbnVtYSkKIAkJCW9zX3BhZ2VfY291bnQgPSAoZW5k cHRyIC0gc3RhcnRwdHIpIC8gb3NfcGFnZV9zaXplOwogCiAJCQkvKiBVc2VkIHRvIGRldGVy bWluZSB0aGUgTlVNQSBub2RlIGZvciBhbGwgT1MgcGFnZXMgYXQgb25jZSAqLwotCQkJb3Nf cGFnZV9wdHJzID0gcGFsbG9jMChzaXplb2Yodm9pZCAqKSAqIG9zX3BhZ2VfY291bnQpOwot CQkJb3NfcGFnZV9zdGF0dXMgPSBwYWxsb2Moc2l6ZW9mKHVpbnQ2NCkgKiBvc19wYWdlX2Nv dW50KTsKKwkJCW9zX3BhZ2VfcHRycyA9IHBhbGxvYzBfYXJyYXkodm9pZCAqLCBvc19wYWdl X2NvdW50KTsKKwkJCW9zX3BhZ2Vfc3RhdHVzID0gcGFsbG9jX2FycmF5KGludCwgb3NfcGFn ZV9jb3VudCk7CiAKIAkJCS8qCiAJCQkgKiBGaWxsIHBvaW50ZXJzIGZvciBhbGwgdGhlIG1l bW9yeSBwYWdlcy4gIFRoaXMgbG9vcCBzdG9yZXMgYW5kCkBAIC00MjUsNyArNDI1LDcgQEAg cGdfYnVmZmVyY2FjaGVfb3NfcGFnZXNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGJvb2wgaW5jbHVkZV9udW1hKQogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKIAkJLyogQ3JlYXRl IGEgdXNlciBmdW5jdGlvbiBjb250ZXh0IGZvciBjcm9zcy1jYWxsIHBlcnNpc3RlbmNlICov Ci0JCWZjdHggPSAoQnVmZmVyQ2FjaGVPc1BhZ2VzQ29udGV4dCAqKSBwYWxsb2Moc2l6ZW9m KEJ1ZmZlckNhY2hlT3NQYWdlc0NvbnRleHQpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3Qo QnVmZmVyQ2FjaGVPc1BhZ2VzQ29udGV4dCk7CiAKIAkJaWYgKGdldF9jYWxsX3Jlc3VsdF90 eXBlKGZjaW5mbywgTlVMTCwgJmV4cGVjdGVkX3R1cGxlZGVzYykgIT0gVFlQRUZVTkNfQ09N UE9TSVRFKQogCQkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlw ZSIpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYyBiL2NvbnRyaWIv cGdfdHJnbS90cmdtX29wLmMKaW5kZXggMjliMzllYzhhNGMuLjcyZGQ4YzZkNTA0IDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCisrKyBiL2NvbnRyaWIvcGdfdHJn bS90cmdtX29wLmMKQEAgLTQ1Miw3ICs0NTIsNyBAQCBtYWtlX3Bvc2l0aW9uYWxfdHJnbSh0 cmdtICp0cmcxLCBpbnQgbGVuMSwgdHJnbSAqdHJnMiwgaW50IGxlbjIpCiAJaW50CQkJaSwK IAkJCQlsZW4gPSBsZW4xICsgbGVuMjsKIAotCXJlc3VsdCA9IChwb3NfdHJnbSAqKSBwYWxs b2Moc2l6ZW9mKHBvc190cmdtKSAqIGxlbik7CisJcmVzdWx0ID0gcGFsbG9jX2FycmF5KHBv c190cmdtLCBsZW4pOwogCiAJZm9yIChpID0gMDsgaSA8IGxlbjE7IGkrKykKIAl7CkBAIC01 MzUsNyArNTM1LDcgQEAgaXRlcmF0ZV93b3JkX3NpbWlsYXJpdHkoaW50ICp0cmcyaW5kZXhl cywKIAlsb3dlciA9IChmbGFncyAmIFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QpID8gMCA6IC0x OwogCiAJLyogTWVtb3Jpc2UgbGFzdCBwb3NpdGlvbiBvZiBlYWNoIHRyaWdyYW0gKi8KLQls YXN0cG9zID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBsZW4pOworCWxhc3Rwb3Mg PSBwYWxsb2NfYXJyYXkoaW50LCBsZW4pOwogCW1lbXNldChsYXN0cG9zLCAtMSwgc2l6ZW9m KGludCkgKiBsZW4pOwogCiAJZm9yIChpID0gMDsgaSA8IGxlbjI7IGkrKykKQEAgLTY5MCwx MCArNjkwLDEwIEBAIGNhbGNfd29yZF9zaW1pbGFyaXR5KGNoYXIgKnN0cjEsIGludCBzbGVu MSwgY2hhciAqc3RyMiwgaW50IHNsZW4yLAogCXByb3RlY3Rfb3V0X29mX21lbShzbGVuMSAr IHNsZW4yKTsKIAogCS8qIE1ha2UgcG9zaXRpb25hbCB0cmlncmFtcyAqLwotCXRyZzEgPSAo dHJnbSAqKSBwYWxsb2Moc2l6ZW9mKHRyZ20pICogKHNsZW4xIC8gMiArIDEpICogMyk7Ci0J dHJnMiA9ICh0cmdtICopIHBhbGxvYyhzaXplb2YodHJnbSkgKiAoc2xlbjIgLyAyICsgMSkg KiAzKTsKKwl0cmcxID0gcGFsbG9jX2FycmF5KHRyZ20sIChzbGVuMSAvIDIgKyAxKSAqIDMp OworCXRyZzIgPSBwYWxsb2NfYXJyYXkodHJnbSwgKHNsZW4yIC8gMiArIDEpICogMyk7CiAJ aWYgKGZsYWdzICYgV09SRF9TSU1JTEFSSVRZX1NUUklDVCkKLQkJYm91bmRzID0gKFRyZ21C b3VuZCAqKSBwYWxsb2MwKHNpemVvZihUcmdtQm91bmQpICogKHNsZW4yIC8gMiArIDEpICog Myk7CisJCWJvdW5kcyA9IHBhbGxvYzBfYXJyYXkoVHJnbUJvdW5kLCAoc2xlbjIgLyAyICsg MSkgKiAzKTsKIAllbHNlCiAJCWJvdW5kcyA9IE5VTEw7CiAKQEAgLTcxMSw4ICs3MTEsOCBA QCBjYWxjX3dvcmRfc2ltaWxhcml0eShjaGFyICpzdHIxLCBpbnQgc2xlbjEsIGNoYXIgKnN0 cjIsIGludCBzbGVuMiwKIAkgKiBNZXJnZSBwb3NpdGlvbmFsIHRyaWdyYW1zIGFycmF5OiBl bnVtZXJhdGUgZWFjaCB0cmlncmFtIGFuZCBmaW5kIGl0cwogCSAqIHByZXNlbmNlIGluIHJl cXVpcmVkIHdvcmQuCiAJICovCi0JdHJnMmluZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXpl b2YoaW50KSAqIGxlbjIpOwotCWZvdW5kID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2YoYm9v bCkgKiBsZW4pOworCXRyZzJpbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbGVuMik7CisJ Zm91bmQgPSBwYWxsb2MwX2FycmF5KGJvb2wsIGxlbik7CiAKIAl1bGVuMSA9IDA7CiAJaiA9 IDA7CkBAIC05MzgsNyArOTM4LDcgQEAgZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBj aGFyICpzdHIsIGludCBzbGVuKQogCXRwdHIgPSBHRVRBUlIodHJnKTsKIAogCS8qIEFsbG9j YXRlIGEgYnVmZmVyIGZvciBibGFuay1wYWRkZWQsIGJ1dCBub3QgeWV0IGNhc2UtZm9sZGVk LCB3b3JkcyAqLwotCWJ1ZiA9IHBhbGxvYyhzaXplb2YoY2hhcikgKiAoc2xlbiArIDQpKTsK KwlidWYgPSBwYWxsb2NfYXJyYXkoY2hhciwgc2xlbiArIDQpOwogCiAJLyoKIAkgKiBFeHRy YWN0IHRyaWdyYW1zIGZyb20gZWFjaCBzdWJzdHJpbmcgZXh0cmFjdGVkIGJ5IGdldF93aWxk Y2FyZF9wYXJ0LgpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgc2hvd190cmdtKFBHX0ZVTkNUSU9O X0FSR1MpCiAJaW50CQkJaTsKIAogCXRyZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlko aW4pLCBWQVJTSVpFX0FOWV9FWEhEUihpbikpOwotCWQgPSAoRGF0dW0gKikgcGFsbG9jKHNp emVvZihEYXR1bSkgKiAoMSArIEFSUk5FTEVNKHRyZykpKTsKKwlkID0gcGFsbG9jX2FycmF5 KERhdHVtLCAxICsgQVJSTkVMRU0odHJnKSk7CiAKIAlmb3IgKGkgPSAwLCBwdHIgPSBHRVRB UlIodHJnKTsgaSA8IEFSUk5FTEVNKHRyZyk7IGkrKywgcHRyKyspCiAJewpAQCAtMTEzNiw3 ICsxMTM2LDcgQEAgdHJnbV9wcmVzZW5jZV9tYXAoVFJHTSAqcXVlcnksIFRSR00gKmtleSkK IAkJCQlsZW5rID0gQVJSTkVMRU0oa2V5KSwKIAkJCQlpOwogCi0JcmVzdWx0ID0gKGJvb2wg KikgcGFsbG9jMChsZW5xICogc2l6ZW9mKGJvb2wpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX2Fy cmF5KGJvb2wsIGxlbnEpOwogCiAJLyogZm9yIGVhY2ggcXVlcnkgdHJpZ3JhbSwgZG8gYSBi aW5hcnkgc2VhcmNoIGluIHRoZSBrZXkgYXJyYXkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbGVu cTsgaSsrKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAwNmI1MmM2 NTMwMC4uYjI5M2E3OTA0ZmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5j CkBAIC02MzMsNyArNjMzLDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduUmVsU2l6ZShQbGFubmVy SW5mbyAqcm9vdCwKIAkgKiBXZSB1c2UgUGdGZHdSZWxhdGlvbkluZm8gdG8gcGFzcyB2YXJp b3VzIGluZm9ybWF0aW9uIHRvIHN1YnNlcXVlbnQKIAkgKiBmdW5jdGlvbnMuCiAJICovCi0J ZnBpbmZvID0gKFBnRmR3UmVsYXRpb25JbmZvICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3UmVs YXRpb25JbmZvKSk7CisJZnBpbmZvID0gcGFsbG9jMF9vYmplY3QoUGdGZHdSZWxhdGlvbklu Zm8pOwogCWJhc2VyZWwtPmZkd19wcml2YXRlID0gZnBpbmZvOwogCiAJLyogQmFzZSBmb3Jl aWduIHRhYmxlcyBuZWVkIHRvIGJlIHB1c2hlZCBkb3duIGFsd2F5cy4gKi8KQEAgLTE1MTcs NyArMTUxNyw3IEBAIHBvc3RncmVzQmVnaW5Gb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRl ICpub2RlLCBpbnQgZWZsYWdzKQogCS8qCiAJICogV2UnbGwgc2F2ZSBwcml2YXRlIHN0YXRl IGluIG5vZGUtPmZkd19zdGF0ZS4KIAkgKi8KLQlmc3N0YXRlID0gKFBnRmR3U2NhblN0YXRl ICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3U2NhblN0YXRlKSk7CisJZnNzdGF0ZSA9IHBhbGxv YzBfb2JqZWN0KFBnRmR3U2NhblN0YXRlKTsKIAlub2RlLT5mZHdfc3RhdGUgPSBmc3N0YXRl OwogCiAJLyoKQEAgLTI2NjMsNyArMjY2Myw3IEBAIHBvc3RncmVzQmVnaW5EaXJlY3RNb2Rp ZnkoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkvKgogCSAqIFdlJ2xs IHNhdmUgcHJpdmF0ZSBzdGF0ZSBpbiBub2RlLT5mZHdfc3RhdGUuCiAJICovCi0JZG1zdGF0 ZSA9IChQZ0Zkd0RpcmVjdE1vZGlmeVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFBnRmR3RGly ZWN0TW9kaWZ5U3RhdGUpKTsKKwlkbXN0YXRlID0gcGFsbG9jMF9vYmplY3QoUGdGZHdEaXJl Y3RNb2RpZnlTdGF0ZSk7CiAJbm9kZS0+ZmR3X3N0YXRlID0gZG1zdGF0ZTsKIAogCS8qCkBA IC0zOTc3LDcgKzM5NzcsNyBAQCBjcmVhdGVfZm9yZWlnbl9tb2RpZnkoRVN0YXRlICplc3Rh dGUsCiAJTGlzdENlbGwgICAqbGM7CiAKIAkvKiBCZWdpbiBjb25zdHJ1Y3RpbmcgUGdGZHdN b2RpZnlTdGF0ZS4gKi8KLQlmbXN0YXRlID0gKFBnRmR3TW9kaWZ5U3RhdGUgKikgcGFsbG9j MChzaXplb2YoUGdGZHdNb2RpZnlTdGF0ZSkpOworCWZtc3RhdGUgPSBwYWxsb2MwX29iamVj dChQZ0Zkd01vZGlmeVN0YXRlKTsKIAlmbXN0YXRlLT5yZWwgPSByZWw7CiAKIAkvKiBJZGVu dGlmeSB3aGljaCB1c2VyIHRvIGRvIHRoZSByZW1vdGUgYWNjZXNzIGFzLiAqLwpAQCAtNDAx NCw3ICs0MDE0LDcgQEAgY3JlYXRlX2ZvcmVpZ25fbW9kaWZ5KEVTdGF0ZSAqZXN0YXRlLAog CiAJLyogUHJlcGFyZSBmb3Igb3V0cHV0IGNvbnZlcnNpb24gb2YgcGFyYW1ldGVycyB1c2Vk IGluIHByZXBhcmVkIHN0bXQuICovCiAJbl9wYXJhbXMgPSBsaXN0X2xlbmd0aChmbXN0YXRl LT50YXJnZXRfYXR0cnMpICsgMTsKLQlmbXN0YXRlLT5wX2ZsaW5mbyA9IChGbWdySW5mbyAq KSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykgKiBuX3BhcmFtcyk7CisJZm1zdGF0ZS0+cF9m bGluZm8gPSBwYWxsb2MwX2FycmF5KEZtZ3JJbmZvLCBuX3BhcmFtcyk7CiAJZm1zdGF0ZS0+ cF9udW1zID0gMDsKIAogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVyYXRp b24gPT0gQ01EX0RFTEVURSkKQEAgLTQyNTYsNyArNDI1Niw3IEBAIGNvbnZlcnRfcHJlcF9z dG10X3BhcmFtcyhQZ0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlLAogCiAJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmbXN0YXRlLT50ZW1wX2N4dCk7CiAKLQlwX3ZhbHVl cyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiBmbXN0YXRlLT5w X251bXMgKiBudW1TbG90cyk7CisJcF92YWx1ZXMgPSBwYWxsb2NfYXJyYXkoY29uc3QgY2hh ciAqLCBmbXN0YXRlLT5wX251bXMgKiBudW1TbG90cyk7IAogCiAJLyogY3RpZCBpcyBwcm92 aWRlZCBvbmx5IGZvciBVUERBVEUvREVMRVRFLCB3aGljaCBkb24ndCBhbGxvdyBiYXRjaGlu ZyAqLwogCUFzc2VydCghKHR1cGxlaWQgIT0gTlVMTCAmJiBudW1TbG90cyA+IDEpKTsKQEAg LTQ4MTQsNyArNDgxNCw3IEBAIHByZXBhcmVfcXVlcnlfcGFyYW1zKFBsYW5TdGF0ZSAqbm9k ZSwKIAlBc3NlcnQobnVtUGFyYW1zID4gMCk7CiAKIAkvKiBQcmVwYXJlIGZvciBvdXRwdXQg Y29udmVyc2lvbiBvZiBwYXJhbWV0ZXJzIHVzZWQgaW4gcmVtb3RlIHF1ZXJ5LiAqLwotCSpw YXJhbV9mbGluZm8gPSAoRm1nckluZm8gKikgcGFsbG9jMChzaXplb2YoRm1nckluZm8pICog bnVtUGFyYW1zKTsKKwkqcGFyYW1fZmxpbmZvID0gcGFsbG9jMF9hcnJheShGbWdySW5mbywg bnVtUGFyYW1zKTsKIAogCWkgPSAwOwogCWZvcmVhY2gobGMsIGZkd19leHBycykKQEAgLTYy OTcsNyArNjI5Nyw3IEBAIHBvc3RncmVzR2V0Rm9yZWlnbkpvaW5QYXRocyhQbGFubmVySW5m byAqcm9vdCwKIAkgKiBpZiBmb3VuZCBzYWZlLiBPbmNlIHdlIGtub3cgdGhhdCB0aGlzIGpv aW4gY2FuIGJlIHB1c2hlZCBkb3duLCB3ZSBmaWxsCiAJICogdGhlIGVudHJ5LgogCSAqLwot CWZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBwYWxsb2MwKHNpemVvZihQZ0Zkd1Jl bGF0aW9uSW5mbykpOworCWZwaW5mbyA9IHBhbGxvYzBfb2JqZWN0KFBnRmR3UmVsYXRpb25J bmZvKTsKIAlmcGluZm8tPnB1c2hkb3duX3NhZmUgPSBmYWxzZTsKIAlqb2lucmVsLT5mZHdf cHJpdmF0ZSA9IGZwaW5mbzsKIAkvKiBhdHRyc191c2VkIGlzIG9ubHkgZm9yIGJhc2UgcmVs YXRpb25zLiAqLwpAQCAtNjY2Niw3ICs2NjY2LDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduVXBw ZXJQYXRocyhQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQgc3RhZ2UsCiAJ CW91dHB1dF9yZWwtPmZkd19wcml2YXRlKQogCQlyZXR1cm47CiAKLQlmcGluZm8gPSAoUGdG ZHdSZWxhdGlvbkluZm8gKikgcGFsbG9jMChzaXplb2YoUGdGZHdSZWxhdGlvbkluZm8pKTsK KwlmcGluZm8gPSBwYWxsb2MwX29iamVjdChQZ0Zkd1JlbGF0aW9uSW5mbyk7CiAJZnBpbmZv LT5wdXNoZG93bl9zYWZlID0gZmFsc2U7CiAJZnBpbmZvLT5zdGFnZSA9IHN0YWdlOwogCW91 dHB1dF9yZWwtPmZkd19wcml2YXRlID0gZnBpbmZvOwpAQCAtNjg5MSw3ICs2ODkxLDcgQEAg YWRkX2ZvcmVpZ25fb3JkZXJlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqaW5wdXRfcmVsLAogCWZwaW5mby0+cHVzaGRvd25fc2FmZSA9IHRydWU7CiAKIAkvKiBD b25zdHJ1Y3QgUGdGZHdQYXRoRXh0cmFEYXRhICovCi0JZnBleHRyYSA9IChQZ0Zkd1BhdGhF eHRyYURhdGEgKikgcGFsbG9jMChzaXplb2YoUGdGZHdQYXRoRXh0cmFEYXRhKSk7CisJZnBl eHRyYSA9IHBhbGxvYzBfb2JqZWN0KFBnRmR3UGF0aEV4dHJhRGF0YSk7CiAJZnBleHRyYS0+ dGFyZ2V0ID0gcm9vdC0+dXBwZXJfdGFyZ2V0c1tVUFBFUlJFTF9PUkRFUkVEXTsKIAlmcGV4 dHJhLT5oYXNfZmluYWxfc29ydCA9IHRydWU7CiAKQEAgLTcxMjUsNyArNzEyNSw3IEBAIGFk ZF9mb3JlaWduX2ZpbmFsX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpp bnB1dF9yZWwsCiAJZnBpbmZvLT5wdXNoZG93bl9zYWZlID0gdHJ1ZTsKIAogCS8qIENvbnN0 cnVjdCBQZ0Zkd1BhdGhFeHRyYURhdGEgKi8KLQlmcGV4dHJhID0gKFBnRmR3UGF0aEV4dHJh RGF0YSAqKSBwYWxsb2MwKHNpemVvZihQZ0Zkd1BhdGhFeHRyYURhdGEpKTsKKwlmcGV4dHJh ID0gcGFsbG9jMF9vYmplY3QoUGdGZHdQYXRoRXh0cmFEYXRhKTsKIAlmcGV4dHJhLT50YXJn ZXQgPSByb290LT51cHBlcl90YXJnZXRzW1VQUEVSUkVMX0ZJTkFMXTsKIAlmcGV4dHJhLT5o YXNfZmluYWxfc29ydCA9IGhhc19maW5hbF9zb3J0OwogCWZwZXh0cmEtPmhhc19saW1pdCA9 IGV4dHJhLT5saW1pdF9uZWVkZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKaW5kZXggYjM5NjBiYjcxNTEuLmUzMGRiMTIxMTNiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0yMjcsNyArMjI3LDcgQEAgRXhlY1NldHVwUGFydGl0 aW9uVHVwbGVSb3V0aW5nKEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiByZWwpCiAJICogVGhl IHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGEgY29tbW9uIGNhc2UgaXMgZm9yIElOU0VSVCB0 byBpbnNlcnQgYQogCSAqIHNpbmdsZSB0dXBsZSBpbnRvIGEgcGFydGl0aW9uZWQgdGFibGUg YW5kIHRoaXMgbXVzdCBiZSBmYXN0LgogCSAqLwotCXByb3V0ZSA9IChQYXJ0aXRpb25UdXBs ZVJvdXRpbmcgKikgcGFsbG9jMChzaXplb2YoUGFydGl0aW9uVHVwbGVSb3V0aW5nKSk7CisJ cHJvdXRlID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9uVHVwbGVSb3V0aW5nKTsKIAlwcm91 dGUtPnBhcnRpdGlvbl9yb290ID0gcmVsOwogCXByb3V0ZS0+bWVtY3h0ID0gQ3VycmVudE1l bW9yeUNvbnRleHQ7CiAJLyogUmVzdCBvZiBtZW1iZXJzIGluaXRpYWxpemVkIGJ5IHplcm9p bmcgKi8KQEAgLTExOTgsMTAgKzExOTgsOCBAQCBFeGVjSW5pdFJvdXRpbmdJbmZvKE1vZGlm eVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCWlmIChwcm91dGUtPm1heF9wYXJ0aXRpb25zID09 IDApCiAJCXsKIAkJCXByb3V0ZS0+bWF4X3BhcnRpdGlvbnMgPSA4OwotCQkJcHJvdXRlLT5w YXJ0aXRpb25zID0gKFJlc3VsdFJlbEluZm8gKiopCi0JCQkJcGFsbG9jKHNpemVvZihSZXN1 bHRSZWxJbmZvICopICogcHJvdXRlLT5tYXhfcGFydGl0aW9ucyk7Ci0JCQlwcm91dGUtPmlz X2JvcnJvd2VkX3JlbCA9IChib29sICopCi0JCQkJcGFsbG9jKHNpemVvZihib29sKSAqIHBy b3V0ZS0+bWF4X3BhcnRpdGlvbnMpOworCQkJcHJvdXRlLT5wYXJ0aXRpb25zID0gcGFsbG9j X2FycmF5KFJlc3VsdFJlbEluZm8gKiwgcHJvdXRlLT5tYXhfcGFydGl0aW9ucyk7CisJCQlw cm91dGUtPmlzX2JvcnJvd2VkX3JlbCA9IHBhbGxvY19hcnJheShib29sLCBwcm91dGUtPm1h eF9wYXJ0aXRpb25zKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTEzMTYsMTAgKzEzMTQsOCBA QCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkJaWYg KHByb3V0ZS0+bWF4X2Rpc3BhdGNoID09IDApCiAJCXsKIAkJCXByb3V0ZS0+bWF4X2Rpc3Bh dGNoID0gNDsKLQkJCXByb3V0ZS0+cGFydGl0aW9uX2Rpc3BhdGNoX2luZm8gPSAoUGFydGl0 aW9uRGlzcGF0Y2ggKikKLQkJCQlwYWxsb2Moc2l6ZW9mKFBhcnRpdGlvbkRpc3BhdGNoKSAq IHByb3V0ZS0+bWF4X2Rpc3BhdGNoKTsKLQkJCXByb3V0ZS0+bm9ubGVhZl9wYXJ0aXRpb25z ID0gKFJlc3VsdFJlbEluZm8gKiopCi0JCQkJcGFsbG9jKHNpemVvZihSZXN1bHRSZWxJbmZv ICopICogcHJvdXRlLT5tYXhfZGlzcGF0Y2gpOworCQkJcHJvdXRlLT5wYXJ0aXRpb25fZGlz cGF0Y2hfaW5mbyA9IHBhbGxvY19hcnJheShQYXJ0aXRpb25EaXNwYXRjaCwgcHJvdXRlLT5t YXhfZGlzcGF0Y2gpOworCQkJcHJvdXRlLT5ub25sZWFmX3BhcnRpdGlvbnMgPSBwYWxsb2Nf YXJyYXkoUmVzdWx0UmVsSW5mbyAqLCBwcm91dGUtPm1heF9kaXNwYXRjaCk7CiAJCX0KIAkJ ZWxzZQogCQl7CkBAIC0yMjExLDcgKzIyMDcsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKIAkJ CSAqIGFycmF5cyBhcmUgaW4gcGFydGl0aW9uIGJvdW5kcyBvcmRlci4KIAkJCSAqLwogCQkJ cHBydW5lLT5ucGFydHMgPSBwYXJ0ZGVzYy0+bnBhcnRzOwotCQkJcHBydW5lLT5zdWJwbGFu X21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOworCQkJcHBy dW5lLT5zdWJwbGFuX21hcCA9IHBhbGxvY19hcnJheShpbnQsIHBhcnRkZXNjLT5ucGFydHMp OwogCiAJCQlpZiAocGFydGRlc2MtPm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzICYmCiAJCQkJ bWVtY21wKHBhcnRkZXNjLT5vaWRzLCBwaW5mby0+cmVsaWRfbWFwLApAQCAtMjIzOCw4ICsy MjM0LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFy dGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJCQkJICogYXR0YWNoZWQuICBDb3BlIHdp dGggdGhhdCBieSBjcmVhdGluZyBhIG1hcCB0aGF0IHNraXBzIGFueQogCQkJCSAqIG1pc21h dGNoZXMuCiAJCQkJICovCi0JCQkJcHBydW5lLT5zdWJwYXJ0X21hcCA9IHBhbGxvYyhzaXpl b2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOwotCQkJCXBwcnVuZS0+bGVhZnBhcnRfcnRp X21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOworCQkJCXBw cnVuZS0+c3VicGFydF9tYXAgPSBwYWxsb2NfYXJyYXkoaW50LCBwYXJ0ZGVzYy0+bnBhcnRz KTsKKwkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXAgPSBwYWxsb2NfYXJyYXkoaW50LCBw YXJ0ZGVzYy0+bnBhcnRzKTsKIAogCQkJCWZvciAocHBfaWR4ID0gMDsgcHBfaWR4IDwgcGFy dGRlc2MtPm5wYXJ0czsgcHBfaWR4KyspCiAJCQkJewpAQCAtMjM5MCwxNiArMjM4NiwxNCBA QCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29u dGV4dCwKIAljb250ZXh0LT5wYXJ0c3VwZnVuYyA9IHBhcnRrZXktPnBhcnRzdXBmdW5jOwog CiAJLyogV2UnbGwgbG9vayB1cCB0eXBlLXNwZWNpZmljIHN1cHBvcnQgZnVuY3Rpb25zIGFz IG5lZWRlZCAqLwotCWNvbnRleHQtPnN0ZXBjbXBmdW5jcyA9IChGbWdySW5mbyAqKQotCQlw YWxsb2MwKHNpemVvZihGbWdySW5mbykgKiBuX3N0ZXBzICogcGFydG5hdHRzKTsKKwljb250 ZXh0LT5zdGVwY21wZnVuY3MgPSBwYWxsb2MwX2FycmF5KEZtZ3JJbmZvLCBuX3N0ZXBzICog cGFydG5hdHRzKTsKIAogCWNvbnRleHQtPnBwY2NvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29u dGV4dDsKIAljb250ZXh0LT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CiAJY29udGV4dC0+ZXhw cmNvbnRleHQgPSBlY29udGV4dDsKIAogCS8qIEluaXRpYWxpemUgZXhwcmVzc2lvbiBzdGF0 ZSBmb3IgZWFjaCBleHByZXNzaW9uIHdlIG5lZWQgKi8KLQljb250ZXh0LT5leHByc3RhdGVz ID0gKEV4cHJTdGF0ZSAqKikKLQkJcGFsbG9jMChzaXplb2YoRXhwclN0YXRlICopICogbl9z dGVwcyAqIHBhcnRuYXR0cyk7CisJY29udGV4dC0+ZXhwcnN0YXRlcyA9IHBhbGxvYzBfYXJy YXkoRXhwclN0YXRlICosIG5fc3RlcHMgKiBwYXJ0bmF0dHMpOwogCWZvcmVhY2gobGMsIHBy dW5pbmdfc3RlcHMpCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqc3RlcCA9IChQYXJ0 aXRpb25QcnVuZVN0ZXBPcCAqKSBsZmlyc3QobGMpOwpAQCAtMjUwMCw3ICsyNDk0LDcgQEAg SW5pdEV4ZWNQYXJ0aXRpb25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGUsCiAJCSAqIGluZGV4ZXMgdG8gbmV3IG9uZXMuICBGb3IgY29udmVuaWVuY2Ug b2YgaW5pdGlhbGl6YXRpb24sIHdlIHVzZQogCQkgKiAxLWJhc2VkIGluZGV4ZXMgaW4gdGhp cyBhcnJheSBhbmQgbGVhdmUgcHJ1bmVkIGl0ZW1zIGFzIDAuCiAJCSAqLwotCQluZXdfc3Vi cGxhbl9pbmRleGVzID0gKGludCAqKSBwYWxsb2MwKHNpemVvZihpbnQpICogbl90b3RhbF9z dWJwbGFucyk7CisJCW5ld19zdWJwbGFuX2luZGV4ZXMgPSBwYWxsb2MwX2FycmF5KGludCwg bl90b3RhbF9zdWJwbGFucyk7CiAJCW5ld2lkeCA9IDE7CiAJCWkgPSAtMTsKIAkJd2hpbGUg KChpID0gYm1zX25leHRfbWVtYmVyKGluaXRpYWxseV92YWxpZF9zdWJwbGFucywgaSkpID49 IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMg Yi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNmZmZjQwMzRj MjQuLmJmM2Y2ZDgwYzdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5j CkBAIC0yNDYsNyArMjQ2LDcgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJICogdGhhdCB6ZXJvIGNhbiBy ZXByZXNlbnQgYW4gdW4tZmlsbGVkIGFycmF5IGVudHJ5LgogCSAqLwogCWFsbHBhcnRyZWxp ZHMgPSBOSUw7Ci0JcmVsaWRfc3VicGxhbl9tYXAgPSBwYWxsb2MwKHNpemVvZihpbnQpICog cm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplKTsKKwlyZWxpZF9zdWJwbGFuX21hcCA9IHBh bGxvYzBfYXJyYXkoaW50LCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9 IDE7CiAJZm9yZWFjaChsYywgc3VicGF0aHMpCkBAIC00NjUsNyArNDY1LDcgQEAgbWFrZV9w YXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkgKiBJbiB0aGlzIHBoYXNlIHdlIGRpc2NvdmVyIHdoZXRoZXIgcnVu dGltZSBwcnVuaW5nIGlzIG5lZWRlZCBhdCBhbGw7IGlmCiAJICogbm90LCB3ZSBjYW4gYXZv aWQgZG9pbmcgZnVydGhlciB3b3JrLgogCSAqLwotCXJlbGlkX3N1YnBhcnRfbWFwID0gcGFs bG9jMChzaXplb2YoaW50KSAqIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7CisJcmVs aWRfc3VicGFydF9tYXAgPSBwYWxsb2MwX2FycmF5KGludCwgcm9vdC0+c2ltcGxlX3JlbF9h cnJheV9zaXplKTsKIAogCWkgPSAxOwogCXJ0aSA9IC0xOwpAQCAtODE4LDkgKzgxOCw5IEBA IHBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhSZWxPcHRJbmZvICpyZWwpCiAJY29udGV4 dC5ib3VuZGluZm8gPSByZWwtPmJvdW5kaW5mbzsKIAljb250ZXh0LnBhcnRjb2xsYXRpb24g PSByZWwtPnBhcnRfc2NoZW1lLT5wYXJ0Y29sbGF0aW9uOwogCWNvbnRleHQucGFydHN1cGZ1 bmMgPSByZWwtPnBhcnRfc2NoZW1lLT5wYXJ0c3VwZnVuYzsKLQljb250ZXh0LnN0ZXBjbXBm dW5jcyA9IChGbWdySW5mbyAqKSBwYWxsb2MwKHNpemVvZihGbWdySW5mbykgKgotCQkJCQkJ CQkJCQkJY29udGV4dC5wYXJ0bmF0dHMgKgotCQkJCQkJCQkJCQkJbGlzdF9sZW5ndGgocHJ1 bmluZ19zdGVwcykpOworCWNvbnRleHQuc3RlcGNtcGZ1bmNzID0gcGFsbG9jMF9hcnJheShG bWdySW5mbywKKwkJCQkJCQkJCQkJIGNvbnRleHQucGFydG5hdHRzICoKKwkJCQkJCQkJCQkJ CSBsaXN0X2xlbmd0aChwcnVuaW5nX3N0ZXBzKSk7CiAJY29udGV4dC5wcGNjb250ZXh0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7CiAKIAkvKiBUaGVzZSBhcmUgbm90IHZhbGlkIHdoZW4g YmVpbmcgY2FsbGVkIGZyb20gdGhlIHBsYW5uZXIgKi8KQEAgLTE4OTAsNyArMTg5MCw3IEBA IG1hdGNoX2NsYXVzZV90b19wYXJ0aXRpb25fa2V5KEdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29u dGV4dCAqY29udGV4dCwKIAkJCXJldHVybiBQQVJUQ0xBVVNFX01BVENIX1NURVBTOwogCQl9 CiAKLQkJcGFydGNsYXVzZSA9IChQYXJ0Q2xhdXNlSW5mbyAqKSBwYWxsb2Moc2l6ZW9mKFBh cnRDbGF1c2VJbmZvKSk7CisJCXBhcnRjbGF1c2UgPSBwYWxsb2Nfb2JqZWN0KFBhcnRDbGF1 c2VJbmZvKTsKIAkJcGFydGNsYXVzZS0+a2V5bm8gPSBwYXJ0a2V5aWR4OwogCQkvKiBEbyBw cnVuaW5nIHdpdGggdGhlIEJvb2xlYW4gZXF1YWxpdHkgb3BlcmF0b3IuICovCiAJCXBhcnRj bGF1c2UtPm9wbm8gPSBCb29sZWFuRXF1YWxPcGVyYXRvcjsKQEAgLTIxNDcsNyArMjE0Nyw3 IEBAIG1hdGNoX2NsYXVzZV90b19wYXJ0aXRpb25fa2V5KEdlbmVyYXRlUHJ1bmluZ1N0ZXBz Q29udGV4dCAqY29udGV4dCwKIAkJLyoKIAkJICogQnVpbGQgdGhlIGNsYXVzZSwgcGFzc2lu ZyB0aGUgbmVnYXRvciBpZiBhcHBsaWNhYmxlLgogCQkgKi8KLQkJcGFydGNsYXVzZSA9IChQ YXJ0Q2xhdXNlSW5mbyAqKSBwYWxsb2Moc2l6ZW9mKFBhcnRDbGF1c2VJbmZvKSk7CisJCXBh cnRjbGF1c2UgPSBwYWxsb2Nfb2JqZWN0KFBhcnRDbGF1c2VJbmZvKTsKIAkJcGFydGNsYXVz ZS0+a2V5bm8gPSBwYXJ0a2V5aWR4OwogCQlpZiAoaXNfb3BuZV9saXN0cCkKIAkJewpAQCAt MjY5Myw3ICsyNjkzLDcgQEAgZ2V0X21hdGNoaW5nX2hhc2hfYm91bmRzKFBhcnRpdGlvblBy dW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCSBTdHJhdGVneU51bWJlciBvcHN0cmF0ZWd5 LCBjb25zdCBEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywKIAkJCQkJCSBGbWdySW5mbyAq cGFydHN1cGZ1bmMsIEJpdG1hcHNldCAqbnVsbGtleXMpCiB7Ci0JUHJ1bmVTdGVwUmVzdWx0 ICpyZXN1bHQgPSAoUHJ1bmVTdGVwUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKFBydW5lU3Rl cFJlc3VsdCkpOworCVBydW5lU3RlcFJlc3VsdCAqcmVzdWx0ID0gcGFsbG9jMF9vYmplY3Qo UHJ1bmVTdGVwUmVzdWx0KTsKIAlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gY29u dGV4dC0+Ym91bmRpbmZvOwogCWludAkJICAgKnBhcnRpbmRpY2VzID0gYm91bmRpbmZvLT5p bmRleGVzOwogCWludAkJCXBhcnRuYXR0cyA9IGNvbnRleHQtPnBhcnRuYXR0czsKQEAgLTI3 NzAsNyArMjc3MCw3IEBAIGdldF9tYXRjaGluZ19saXN0X2JvdW5kcyhQYXJ0aXRpb25QcnVu ZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkgU3RyYXRlZ3lOdW1iZXIgb3BzdHJhdGVneSwg RGF0dW0gdmFsdWUsIGludCBudmFsdWVzLAogCQkJCQkJIEZtZ3JJbmZvICpwYXJ0c3VwZnVu YywgQml0bWFwc2V0ICpudWxsa2V5cykKIHsKLQlQcnVuZVN0ZXBSZXN1bHQgKnJlc3VsdCA9 IChQcnVuZVN0ZXBSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoUHJ1bmVTdGVwUmVzdWx0KSk7 CisJUHJ1bmVTdGVwUmVzdWx0ICpyZXN1bHQgPSBwYWxsb2MwX29iamVjdChQcnVuZVN0ZXBS ZXN1bHQpOwogCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBjb250ZXh0LT5ib3Vu ZGluZm87CiAJaW50CQkJb2ZmLAogCQkJCW1pbm9mZiwKQEAgLTI5ODEsNyArMjk4MSw3IEBA IGdldF9tYXRjaGluZ19yYW5nZV9ib3VuZHMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250 ZXh0LAogCQkJCQkJICBTdHJhdGVneU51bWJlciBvcHN0cmF0ZWd5LCBjb25zdCBEYXR1bSAq dmFsdWVzLCBpbnQgbnZhbHVlcywKIAkJCQkJCSAgRm1nckluZm8gKnBhcnRzdXBmdW5jLCBC aXRtYXBzZXQgKm51bGxrZXlzKQogewotCVBydW5lU3RlcFJlc3VsdCAqcmVzdWx0ID0gKFBy dW5lU3RlcFJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihQcnVuZVN0ZXBSZXN1bHQpKTsKKwlQ cnVuZVN0ZXBSZXN1bHQgKnJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KFBydW5lU3RlcFJlc3Vs dCk7CiAJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IGNvbnRleHQtPmJvdW5kaW5m bzsKIAlPaWQJCSAgICpwYXJ0Y29sbGF0aW9uID0gY29udGV4dC0+cGFydGNvbGxhdGlvbjsK IAlpbnQJCQlwYXJ0bmF0dHMgPSBjb250ZXh0LT5wYXJ0bmF0dHM7CkBAIC0zNTA0LDcgKzM1 MDQsNyBAQCBwZXJmb3JtX3BydW5pbmdfYmFzZV9zdGVwKFBhcnRpdGlvblBydW5lQ29udGV4 dCAqY29udGV4dCwKIAkJCXsKIAkJCQlQcnVuZVN0ZXBSZXN1bHQgKnJlc3VsdDsKIAotCQkJ CXJlc3VsdCA9IChQcnVuZVN0ZXBSZXN1bHQgKikgcGFsbG9jKHNpemVvZihQcnVuZVN0ZXBS ZXN1bHQpKTsKKwkJCQlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBydW5lU3RlcFJlc3VsdCk7 CiAJCQkJcmVzdWx0LT5ib3VuZF9vZmZzZXRzID0gTlVMTDsKIAkJCQlyZXN1bHQtPnNjYW5f ZGVmYXVsdCA9IGZhbHNlOwogCQkJCXJlc3VsdC0+c2Nhbl9udWxsID0gZmFsc2U7CkBAIC0z NTkzLDcgKzM1OTMsNyBAQCBwZXJmb3JtX3BydW5pbmdfY29tYmluZV9zdGVwKFBhcnRpdGlv blBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgUGFydGl0aW9uUHJ1bmVTdGVwQ29t YmluZSAqY3N0ZXAsCiAJCQkJCQkJIFBydW5lU3RlcFJlc3VsdCAqKnN0ZXBfcmVzdWx0cykK IHsKLQlQcnVuZVN0ZXBSZXN1bHQgKnJlc3VsdCA9IChQcnVuZVN0ZXBSZXN1bHQgKikgcGFs bG9jMChzaXplb2YoUHJ1bmVTdGVwUmVzdWx0KSk7CisJUHJ1bmVTdGVwUmVzdWx0ICpyZXN1 bHQgPSBwYWxsb2MwX29iamVjdChQcnVuZVN0ZXBSZXN1bHQpOwogCWJvb2wJCWZpcnN0c3Rl cDsKIAlMaXN0Q2VsbCAgICpsYzE7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3MvbXZkaXN0aW5jdC5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0 LmMKaW5kZXggZmU0NTJmNTNhZTQuLjU4MDQ2ZDJiZDYyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL212ZGlzdGluY3QuYwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRleHRfbmRpc3RpbmN0 X2J1aWxkKGRvdWJsZSB0b3RhbHJvd3MsIFN0YXRzQnVpbGREYXRhICpkYXRhKQogCQkJTVZO RGlzdGluY3RJdGVtICppdGVtID0gJnJlc3VsdC0+aXRlbXNbaXRlbWNudF07CiAJCQlpbnQJ CQlqOwogCi0JCQlpdGVtLT5hdHRyaWJ1dGVzID0gcGFsbG9jKHNpemVvZihBdHRyTnVtYmVy KSAqIGspOworCQkJaXRlbS0+YXR0cmlidXRlcyA9IHBhbGxvY19hcnJheShBdHRyTnVtYmVy LCBrKTsKIAkJCWl0ZW0tPm5hdHRyaWJ1dGVzID0gazsKIAogCQkJLyogdHJhbnNsYXRlIHRo ZSBpbmRleGVzIHRvIGF0dG51bXMgKi8KQEAgLTM1OSw5ICszNTksOSBAQCBuZGlzdGluY3Rf Zm9yX2NvbWJpbmF0aW9uKGRvdWJsZSB0b3RhbHJvd3MsIFN0YXRzQnVpbGREYXRhICpkYXRh LAogCSAqIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29sdW1uIGNvbWJpbmF0aW9uIGFzIGRpbWVu c2lvbnMuICBXZSBjb3VsZCB0cnkgdG8KIAkgKiBzb3J0IGluIHBsYWNlLCBidXQgaXQnZCBw cm9iYWJseSBiZSBtb3JlIGNvbXBsZXggYW5kIGJ1Zy1wcm9uZS4KIAkgKi8KLQlpdGVtcyA9 IChTb3J0SXRlbSAqKSBwYWxsb2MobnVtcm93cyAqIHNpemVvZihTb3J0SXRlbSkpOwotCXZh bHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBudW1yb3dzICogayk7 Ci0JaXNudWxsID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2YoYm9vbCkgKiBudW1yb3dzICog ayk7CisJaXRlbXMgPSBwYWxsb2NfYXJyYXkoU29ydEl0ZW0sIG51bXJvd3MpOworCXZhbHVl cyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0sIG51bXJvd3MgKiBrKTsKKwlpc251bGwgPSBwYWxs b2MwX2FycmF5KGJvb2wsIG51bXJvd3MgKiBrKTsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1y b3dzOyBpKyspCiAJewpAQCAtNTA4LDEyICs1MDgsMTIgQEAgZ2VuZXJhdG9yX2luaXQoaW50 IG4sIGludCBrKQogCUFzc2VydCgobiA+PSBrKSAmJiAoayA+IDApKTsKIAogCS8qIGFsbG9j YXRlIHRoZSBnZW5lcmF0b3Igc3RhdGUgYXMgYSBzaW5nbGUgY2h1bmsgb2YgbWVtb3J5ICov Ci0Jc3RhdGUgPSAoQ29tYmluYXRpb25HZW5lcmF0b3IgKikgcGFsbG9jKHNpemVvZihDb21i aW5hdGlvbkdlbmVyYXRvcikpOworCXN0YXRlID0gcGFsbG9jX29iamVjdChDb21iaW5hdGlv bkdlbmVyYXRvcik7CiAKIAlzdGF0ZS0+bmNvbWJpbmF0aW9ucyA9IG5fY2hvb3NlX2sobiwg ayk7CiAKIAkvKiBwcmUtYWxsb2NhdGUgc3BhY2UgZm9yIGFsbCBjb21iaW5hdGlvbnMgKi8K LQlzdGF0ZS0+Y29tYmluYXRpb25zID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBr ICogc3RhdGUtPm5jb21iaW5hdGlvbnMpOworCXN0YXRlLT5jb21iaW5hdGlvbnMgPSBwYWxs b2NfYXJyYXkoaW50LCBrICogc3RhdGUtPm5jb21iaW5hdGlvbnMpOwogCiAJc3RhdGUtPmN1 cnJlbnQgPSAwOwogCXN0YXRlLT5rID0gazsKQEAgLTYwNiw3ICs2MDYsNyBAQCBnZW5lcmF0 ZV9jb21iaW5hdGlvbnNfcmVjdXJzZShDb21iaW5hdGlvbkdlbmVyYXRvciAqc3RhdGUsCiBz dGF0aWMgdm9pZAogZ2VuZXJhdGVfY29tYmluYXRpb25zKENvbWJpbmF0aW9uR2VuZXJhdG9y ICpzdGF0ZSkKIHsKLQlpbnQJCSAgICpjdXJyZW50ID0gKGludCAqKSBwYWxsb2MwKHNpemVv ZihpbnQpICogc3RhdGUtPmspOworCWludAkJICAgKmN1cnJlbnQgPSBwYWxsb2MwX2FycmF5 KGludCwgc3RhdGUtPmspOwogCiAJZ2VuZXJhdGVfY29tYmluYXRpb25zX3JlY3Vyc2Uoc3Rh dGUsIDAsIDAsIGN1cnJlbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CmluZGV4IGYzNzNjZWFkOTVmLi4xNWNhYjA2MDlmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMKQEAgLTQ2NzYsNyArNDY3Niw3IEBAIERyb3BSZWxhdGlvbnNBbGxC dWZmZXJzKFNNZ3JSZWxhdGlvbiAqc21ncl9yZWxuLCBpbnQgbmxvY2F0b3JzKQogCWlmIChu bG9jYXRvcnMgPT0gMCkKIAkJcmV0dXJuOwogCi0JcmVscyA9IHBhbGxvYyhzaXplb2YoU01n clJlbGF0aW9uKSAqIG5sb2NhdG9ycyk7CS8qIG5vbi1sb2NhbCByZWxhdGlvbnMgKi8KKwly ZWxzID0gcGFsbG9jX2FycmF5KFNNZ3JSZWxhdGlvbiwgbmxvY2F0b3JzKTsJLyogbm9uLWxv Y2FsIHJlbGF0aW9ucyAqLwogCiAJLyogSWYgaXQncyBhIGxvY2FsIHJlbGF0aW9uLCBpdCdz IGxvY2FsYnVmLmMncyBwcm9ibGVtLiAqLwogCWZvciAoaSA9IDA7IGkgPCBubG9jYXRvcnM7 IGkrKykKQEAgLTQ3MDUsNyArNDcwNSw3IEBAIERyb3BSZWxhdGlvbnNBbGxCdWZmZXJzKFNN Z3JSZWxhdGlvbiAqc21ncl9yZWxuLCBpbnQgbmxvY2F0b3JzKQogCSAqIGZvcmtzLgogCSAq LwogCWJsb2NrID0gKEJsb2NrTnVtYmVyICgqKVtNQVhfRk9SS05VTSArIDFdKQotCQlwYWxs b2Moc2l6ZW9mKEJsb2NrTnVtYmVyKSAqIG4gKiAoTUFYX0ZPUktOVU0gKyAxKSk7CisJCXBh bGxvY19hcnJheShCbG9ja051bWJlciwgbiAqIChNQVhfRk9SS05VTSArIDEpKTsKIAogCS8q CiAJICogV2UgY2FuIGF2b2lkIHNjYW5uaW5nIHRoZSBlbnRpcmUgYnVmZmVyIHBvb2wgaWYg d2Uga25vdyB0aGUgZXhhY3Qgc2l6ZQpAQCAtNDc1OCw3ICs0NzU4LDcgQEAgRHJvcFJlbGF0 aW9uc0FsbEJ1ZmZlcnMoU01nclJlbGF0aW9uICpzbWdyX3JlbG4sIGludCBubG9jYXRvcnMp CiAJfQogCiAJcGZyZWUoYmxvY2spOwotCWxvY2F0b3JzID0gcGFsbG9jKHNpemVvZihSZWxG aWxlTG9jYXRvcikgKiBuKTsJLyogbm9uLWxvY2FsIHJlbGF0aW9ucyAqLworCWxvY2F0b3Jz ID0gcGFsbG9jX2FycmF5KFJlbEZpbGVMb2NhdG9yLCBuKTsJLyogbm9uLWxvY2FsIHJlbGF0 aW9ucyAqLwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAJCWxvY2F0b3JzW2ldID0gcmVs c1tpXS0+c21ncl9ybG9jYXRvci5sb2NhdG9yOwogCkBAIC01MDM3LDcgKzUwMzcsNyBAQCBG bHVzaFJlbGF0aW9uc0FsbEJ1ZmZlcnMoU01nclJlbGF0aW9uICpzbWdycywgaW50IG5yZWxz KQogCQlyZXR1cm47CiAKIAkvKiBmaWxsLWluIGFycmF5IGZvciBxc29ydCAqLwotCXNyZWxz ID0gcGFsbG9jKHNpemVvZihTTWdyU29ydEFycmF5KSAqIG5yZWxzKTsKKwlzcmVscyA9IHBh bGxvY19hcnJheShTTWdyU29ydEFycmF5LCBucmVscyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwg bnJlbHM7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmJ0 cmVlL3Rlc3RfcmJ0cmVlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmJ0cmVlL3Rlc3Rf cmJ0cmVlLmMKaW5kZXggOTExM2YxYzhkNTIuLjc4N2MzYTYwNjA5IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmJ0cmVlL3Rlc3RfcmJ0cmVlLmMKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3JidHJlZS90ZXN0X3JidHJlZS5jCkBAIC02Myw3ICs2Myw3IEBA IGlyYnRfY29tYmluZShSQlROb2RlICpleGlzdGluZywgY29uc3QgUkJUTm9kZSAqbmV3ZGF0 YSwgdm9pZCAqYXJnKQogc3RhdGljIFJCVE5vZGUgKgogaXJidF9hbGxvYyh2b2lkICphcmcp CiB7Ci0JcmV0dXJuIChSQlROb2RlICopIHBhbGxvYyhzaXplb2YoSW50UkJUcmVlTm9kZSkp OworCXJldHVybiAmcGFsbG9jX29iamVjdChJbnRSQlRyZWVOb2RlKS0+cmJ0bm9kZTsKIH0K IAogLyogTm9kZSBmcmVlciAqLwotLSAKMi41MS4wCgo= --------------giIkXAo2250vdCFmrrdP2tgv Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Consistently-use-palloc_object-and-palloc_array-iden.patch" Content-Disposition: attachment; filename*0="v2-0001-Consistently-use-palloc_object-and-palloc_array-iden"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSBjYjhiNGU5MTQwZjc2NTNmNWM1YmQ1NGI1NDExZDQ3ZWY2NGZmMzBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA0IERlYyAyMDI1IDA5OjUwOjIyICswMTAwClN1YmplY3Q6IFtQQVRD SCAxLzJdIENvbnNpc3RlbnRseSB1c2UgcGFsbG9jX29iamVjdCgpIGFuZCBwYWxsb2NfYXJy YXkoKSAtCiBpZGVudGljYWwgZ2VuZXJhdGVkIGNvZGUKCi0tLQogY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9naW4uYyAgICAgICAgICAgICAgICAgIHwgMTIgKy0tCiBjb250cmliL2FtY2hl Y2svdmVyaWZ5X2hlYXBhbS5jICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9hbWNo ZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9iYXNlYmFj a3VwX3RvX3NoZWxsL2Jhc2ViYWNrdXBfdG9fc2hlbGwuYyB8ICAyICstCiBjb250cmliL2Js b29tL2JsaW5zZXJ0LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9i bG9vbS9ibHNjYW4uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIv Ymxvb20vYmx1dGlscy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmli L2Jsb29tL2JsdmFjdXVtLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogY29udHJp Yi9idHJlZV9naW4vYnRyZWVfZ2luLmMgICAgICAgICAgICAgICAgIHwgMjAgKystLQogY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIGNv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMgICAgICAgICAgICAgICB8ICAyICstCiBj b250cmliL2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jICAgICAgICAgICAgICAgfCAgMiArLQog Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYyAgICAgICAgICAgICAgIHwgIDIgKy0K IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYyAgICAgICAgICAgICB8ICAyICst CiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMgICAgICAgICAgICAgfCAgMiAr LQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2luZXQuYyAgICAgICAgICAgICAgIHwgIDYg Ky0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMgICAgICAgICAgICAgICB8ICAy ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jICAgICAgICAgICAgICAgfCAg MiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYyAgICAgICAgICAgICAgIHwg IDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jICAgICAgICAgICB8 ICA4ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jICAgICAgICAgICAg fCAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgICAgICAgICAg IHwgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYyAgICAgICAgICAgICAg ICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jICAgICAgICAgICAg ICAgfCAgNiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMgICAgICAgICAgICAg ICAgIHwgMTAgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYyAgICAg ICAgICB8ICA0ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmMgICAg ICAgICAgfCAgOCArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYyAgICAgICAg ICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvY3ViZS9jdWJlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBjb250cmliL2RpY3RfaW50L2RpY3RfaW50LmMgICAgICAgICAg ICAgICAgICAgfCAgNCArLQogY29udHJpYi9kaWN0X3hzeW4vZGljdF94c3luLmMgICAgICAg ICAgICAgICAgIHwgIDggKy0KIGNvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYyAgICAgICAg ICAgICAgICAgICB8ICA0ICstCiBjb250cmliL2hzdG9yZS9oc3RvcmVfZ2lzdC5jICAgICAg ICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9oc3RvcmUvaHN0b3JlX2lvLmMgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvaW50YXJyYXkvX2ludF9ib29sLmMgICAg ICAgICAgICAgICAgICB8ICA4ICstCiBjb250cmliL2ludGFycmF5L19pbnRfZ2luLmMgICAg ICAgICAgICAgICAgICAgfCAgNCArLQogY29udHJpYi9pbnRhcnJheS9faW50X2dpc3QuYyAg ICAgICAgICAgICAgICAgIHwgMTIgKy0tCiBjb250cmliL2ludGFycmF5L19pbnRiaWdfZ2lz dC5jICAgICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9qc29uYl9wbHBlcmwvanNvbmJf cGxwZXJsLmMgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvanNvbmJfcGxweXRob24vanNv bmJfcGxweXRob24uYyAgICAgICB8ICAyICstCiBjb250cmliL2x0cmVlL19sdHJlZV9naXN0 LmMgICAgICAgICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9sdHJlZS9fbHRyZWVfb3Au YyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvbHRyZWUvbHRyZWVfZ2lz dC5jICAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBjb250cmliL2x0cmVlL2x0cmVlX2lv LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLQogY29udHJpYi9sdHJlZS9sdHJlZV9v cC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvbHRyZWUvbHR4dHF1 ZXJ5X2lvLmMgICAgICAgICAgICAgICAgICB8ICA4ICstCiBjb250cmliL3BhZ2VpbnNwZWN0 L2JyaW5mdW5jcy5jICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9wYWdlaW5zcGVj dC9idHJlZWZ1bmNzLmMgICAgICAgICAgICAgIHwgIDYgKy0KIGNvbnRyaWIvcGFnZWluc3Bl Y3QvZ2luZnVuY3MuYyAgICAgICAgICAgICAgICB8ICAyICstCiBjb250cmliL3BhZ2VpbnNw ZWN0L2hhc2hmdW5jcy5jICAgICAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9wYWdlaW5z cGVjdC9oZWFwZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvcGdfb3Zl cmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYyAgICAgICB8ICAyICstCiBjb250cmliL3BnX3Ry Z20vdHJnbV9naW4uYyAgICAgICAgICAgICAgICAgICAgfCAgOCArLQogY29udHJpYi9wZ190 cmdtL3RyZ21fZ2lzdC5jICAgICAgICAgICAgICAgICAgIHwgMTAgKy0KIGNvbnRyaWIvcGdf dHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAgICAgICAgICB8IDIyICsrLS0tCiBjb250cmli L3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jICAgICAgICAgfCAgMiArLQogY29udHJp Yi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYyAgICAgICAgIHwgIDUgKy0KIGNvbnRy aWIvcGdjcnlwdG8vbWJ1Zi5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICstCiBjb250 cmliL3BnY3J5cHRvL29wZW5zc2wuYyAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogY29u dHJpYi9wZ2NyeXB0by9wZ3AtY2ZiLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGNv bnRyaWIvcGdjcnlwdG8vcGdwLWNvbXByZXNzLmMgICAgICAgICAgICAgICB8ICA0ICstCiBj b250cmliL3BnY3J5cHRvL3BncC1kZWNyeXB0LmMgICAgICAgICAgICAgICAgfCAgNCArLQog Y29udHJpYi9wZ2NyeXB0by9wZ3AtZW5jcnlwdC5jICAgICAgICAgICAgICAgIHwgIDQgKy0K IGNvbnRyaWIvcGdjcnlwdG8vcGdwLXBnc3FsLmMgICAgICAgICAgICAgICAgICB8ICA2ICst CiBjb250cmliL3BnY3J5cHRvL3BncC1wdWJrZXkuYyAgICAgICAgICAgICAgICAgfCAgMiAr LQogY29udHJpYi9wZ2NyeXB0by9weC1obWFjLmMgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGNvbnRyaWIvcGdjcnlwdG8vcHguYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBjb250cmliL3NlZy9zZWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MCArLQogY29udHJpYi9zZXBnc3FsL2xhYmVsLmMgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0KIGNvbnRyaWIvc2VwZ3NxbC91YXZjLmMgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBjb250cmliL3NwaS9yZWZpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogY29udHJpYi9zc2xpbmZvL3NzbGluZm8uYyAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGNvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jICAgICAgICAgICAgICAg ICB8ICA0ICstCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAg ICAgfCAgMiArLQogY29udHJpYi90c21fc3lzdGVtX3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMg ICAgIHwgIDIgKy0KIGNvbnRyaWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1fdGltZS5j ICAgICB8ICAyICstCiBjb250cmliL3VuYWNjZW50L3VuYWNjZW50LmMgICAgICAgICAgICAg ICAgICAgfCAgOCArLQogY29udHJpYi94bWwyL3hwYXRoLmMgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDMgKy0KIGNvbnRyaWIveG1sMi94c2x0X3Byb2MuYyAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBkb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgfCAgOCArLQogZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIGRvYy9zcmMvc2dtbC94dHlwZXMuc2dtbCAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAg ICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5t YXhfbXVsdGkuYyAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2 bWFwLmMgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1 cGxlLmMgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYXR0 bWFwLmMgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hl YXB0dXBsZS5jICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9w cmludHR1cC5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3RpZHN0b3JlLmMgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi90b2FzdF9pbnRlcm5hbHMuYyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwY29udmVydC5jICAgICAgICB8IDIwICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmJ0cmVlLmMgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5idWxrLmMgICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZGF0YXBhZ2UuYyAgICAgICAgICB8IDE0ICstLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5lbnRyeXBhZ2UuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luZ2V0LmMgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAxNiArKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbnNjYW4uYyAgICAgICAgICAgICAgfCAxMyArLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jICAgICAgICAgICAgICB8IDEwICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jICAgICAgICAgICAgfCAgOCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jICAgICAgICAgICAgICAgIHwgMjIgKystLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICAgICAgICB8IDEwICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMgICAgfCAxNCArLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rwcm9jLmMgICAgICAgICAgICB8IDI2ICsr LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jICAgICAgICAgICAgfCAg NiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNwbGl0LmMgICAgICAgICAgIHwg IDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgICAgICAgICAgICB8 ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMgICAgICAgICAg fCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAg IHwgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMgICAgICAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAg ICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg ICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAg ICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyAgICAg ICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YyAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2Vy dC5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdl LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVl LmMgICAgICAgICAgICB8ICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNl YXJjaC5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMgICAgICAgICAgIHwgMzIgKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzcGxpdGxvYy5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ2RvaW5zZXJ0LmMgICAgICAgfCAzMyArKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ2luc2VydC5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGdrZHRyZWVwcm9jLmMgICAgIHwgMTQgKy0tCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3Byb2MuYyAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGdxdWFkdHJlZXByb2MuYyAgIHwgMjIgKystLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jICAgICAgICAgICB8IDI5ICsrKy0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd0ZXh0cHJvYy5jICAgICAgIHwgMTkgKystLQog c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jICAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgICB8ICA2ICst CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyAgICAgICAgfCAg MyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwg IDcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgICAgICAgICB8 ICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgICAg fCAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAg ICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIu YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5j ICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYyAgICAgICAg ICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2NvcHkuYyAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9nemlwLmMg ICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVt ZW50YWwuYyAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2x6NC5j ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9wcm9n cmVzcy5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfc2Vy dmVyLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rh cmdldC5jICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90 aHJvdHRsZS5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBf enN0ZC5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2JhY2t1cC93YWxzdW1tYXJ5 LmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0 cmFwLmMgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRl bmN5LmMgICAgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j ICAgICAgICAgICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1l c3BhY2UuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5jICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19kZXBlbmQuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv cGdfZW51bS5jICAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zaGRlcGVuZC5jICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NsdXN0ZXIuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb20uYyAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvZGJjb21tYW5kcy5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgICB8IDI0ICsrLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9kci5jICAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuYyAgICAgICAgICB8ICA3ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMgICAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9vcGNsYXNzY21kcy5jICAgICAgICAgICAgfCAxMiAr LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jICAgICAgICAgICAgICAgICB8ICA2 ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAg NiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYyAgICAgICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8 ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCAzNiArKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAg ICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHNlYXJjaGNtZHMuYyAgICAg ICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAg ICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy91c2VyLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YyAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAg ICAgICAgICAgICB8IDk0ICsrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNHcm91cGluZy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgMTggKystLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgICAgICB8ICA4ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVHVwbGVzLmMgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8IDQyICsrKystLS0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYyAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgNiAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgICAgIHwgIDUg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgICAgICB8ICAz ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgICAgfCAg OCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgICAgIHwg IDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICAgICB8 ICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAg fCAxMyArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAg ICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAg ICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICAgICAgICAgfCAyMSArKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvdHF1ZXVlLmMgICAg ICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3RzdG9yZVJlY2Vp dmVyLmMgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAg ICAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5j ICAgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRf ZGVmb3JtLmMgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWpp dF9leHByLmMgICAgICAgICAgIHwgMTAgKy0KIHNyYy9iYWNrZW5kL2xpYi9iaXBhcnRpdGVf bWF0Y2guYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9saWIvZHNoYXNoLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvbGliL2ludGVnZXJz ZXQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2xpYi9wYWlyaW5n aGVhcC5jICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9saWIvcmJ0cmVl LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbGlicHEvYXV0 aC1vYXV0aC5jICAgICAgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2F1 dGgtc2NyYW0uYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9saWJwcS9o YmEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvbGlicHEv cHFjb21tLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9ub2Rl cy9xdWVyeWp1bWJsZWZ1bmNzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbm9k ZXMvdGlkYml0bWFwLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL29w dGltaXplci9nZXFvL2dlcW9fZXJ4LmMgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL2dlcW8vZ2Vxb19wbXguYyAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5k L29wdGltaXplci9nZXFvL2dlcW9fcG9vbC5jICAgICAgICB8IDEwICstCiAuLi4vb3B0aW1p emVyL2dlcW8vZ2Vxb19yZWNvbWJpbmF0aW9uLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvY2xhdXNlc2VsLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICAgICAgICAgfCAgNyArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgICAgICAgIHwgIDMgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jICAgICB8ICAzICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAzNCArKystLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgICAgfCAgNiAr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICA1 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAgICAgfCAg NiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgICAgIHwg IDcgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICAgICAg fCAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICAg IHwgIDYgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2V4dGVuZHBsYW4uYyAgICAg ICB8IDE1ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAg ICAgIHwgNDUgKysrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVz dC5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9k ZS5jICAgICAgICAgIHwgMTQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC90bGlz dC5jICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMg ICAgICAgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCA5MiArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX25vZGUuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9wYXJhbS5jICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAgICAgICAgfCAxMCArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8IDUzICsrKysrLS0t LS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyAgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwg IDYgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAg ICB8ICA0ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAg ICAgICB8ICAzICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMg ICAgICAgfCAgNCArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYyAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWwuYyAgICAgfCAgMiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNz LmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYyAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMgICAgfCAgOCArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1 ZmZlci5jICAgICAgIHwgMTcgKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9zbG90c3luYy5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc25hcGJ1aWxkLmMgICB8ICA1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3N5bmN1dGlscy5jICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMgICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z eW5jcmVwLmMgICAgICAgICAgICAgfCAgOSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlTWFuaXAuYyAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3Nub3diYWxs L2RpY3Rfc25vd2JhbGwuYyAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2RlcGVuZGVuY2llcy5jICAgICAgICAgfCAyNiArKystLQogc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9leHRlbmRlZF9zdGF0cy5jICAgICAgIHwgMTUgKystCiBzcmMvYmFja2VuZC9z dGF0aXN0aWNzL21jdi5jICAgICAgICAgICAgICAgICAgfCAyNCArKy0tLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyAgICAgICAgICAgIHwgMTAgKy0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYyAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8IDE2ICsrLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAgICB8ICA4ICstCiBz cmMvYmFja2VuZC9zdG9yYWdlL3NtZ3IvYnVsa193cml0ZS5jICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvZGljdC5jICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfaXNwZWxsLmMgICAgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X3NpbXBsZS5jICAgICAgICAgICAgIHwg IDYgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9zeW5vbnltLmMgICAgICAgICAgICB8 ICA4ICstCiBzcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVzLmMgICAgICAgICAg fCAyNiArKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jICAgICAgICAgICAgICAg ICAgIHwgMjIgKystLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdG9fdHNhbnkuYyAgICAgICAg ICAgICAgICB8IDE0ICstLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c19wYXJzZS5jICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNfc2VsZnVuY3MuYyAg ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUu YyAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c191dGlscy5jICAg ICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlci5jICAg ICAgICAgICAgICAgICB8IDE2ICsrLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9k ZWYuYyAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3JlbGF0aW9uLmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3dhaXRfZXZlbnQuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYWNs LmMgICAgICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5X3NlbGZ1bmNzLmMgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9h cnJheV90eXBhbmFseXplLmMgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv YXJyYXlfdXNlcmZ1bmNzLmMgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheWZ1bmNzLmMgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5c3Vicy5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9kYXRlLmMgICAgICAgICAgICAgICAgICB8IDI0ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZGF0ZXRpbWUuYyAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9nZW9fb3BzLmMgICAgICAgICAgICAgICB8IDk0ICsrKysrKysrKy0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fc3BnaXN0LmMgICAgICAgICAgICB8 IDQwICsrKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYyAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgICAgICAgICAg ICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAg ICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyAg ICAgICAgICAgICB8IDE5ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGls LmMgICAgICAgICAgICB8IDIwICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVu Y3MuYyAgICAgICAgICAgICB8IDY0ICsrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29ucGF0aF9leGVjLmMgICAgICAgICB8IDI3ICsrKy0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueSAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvbWFjLmMgICAgICAgICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tYWM4LmMgICAgICAgICAgICAgICAgICB8IDE4ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jICAgICAgIHwgIDggKy0KIC4u Li91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1bmNzLmMgICAgICB8ICA0ICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVuY3MuYyAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYyAgICAgICAgICAgICAgIHwgMjQgKyst LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrX2dpc3QuYyAgICAgICAgICB8IDEw ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29ya19zcGdpc3QuYyAgICAgICAgfCAg NiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyAgICAgICAgICAgICAgIHwg MTMgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYyAgICAgICAg fCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgICAgICAg IHwgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19uZGlzdGluY3QuYyAgICAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jICAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5jICAg ICAgIHwgMTUgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zZWxmdW5j cy5jICAgfCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc3BnaXN0 LmMgICAgIHwgMTggKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfdHlw YW5hbHl6ZS5jIHwgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdleHAuYyAgICAg ICAgICAgICAgICB8IDIwICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yb3d0eXBlcy5j ICAgICAgICAgICAgICB8IDI0ICsrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1 bmNzLmMgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9za2lw c3VwcG9ydC5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGlk LmMgICAgICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Rp bWVzdGFtcC5jICAgICAgICAgICAgIHwgNDYgKysrKystLS0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvdHNnaW5pZHguYyAgICAgICAgICAgICAgfCAxMCArLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3RzZ2lzdGlkeC5jICAgICAgICAgICAgIHwgMTAgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC90c3F1ZXJ5LmMgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzcXVlcnlfY2xlYW51cC5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC90c3F1ZXJ5X2dpc3QuYyAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNxdWVyeV9vcC5jICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC90c3F1ZXJ5X3V0aWwuYyAgICAgICAgICB8IDE4ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC90c3JhbmsuYyAgICAgICAgICAgICAgICB8IDEzICsrLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yLmMgICAgICAgICAgICAgIHwgIDQgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jICAgICAgICAgICB8IDEwICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMgICAgICAgfCAgNiArLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYyAgICAgICAgICAgICAgICAgIHwgIDQgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMgICAgICAgICAgICAgICAgICAgfCAgNiAr LQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYyAgICAgICAgICAgIHwgIDQg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jICAgICAgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwg IDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BhcnRjYWNoZS5jICAgICAgICAgICB8 IDI0ICsrLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAg ICAgfCAxNSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg ICAgICB8IDMwICsrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyAgICAg ICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYyAg ICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j ICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYyAg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2NvbmZmaWxl cy5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMtZmls ZS5sICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMg ICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2luamVj dGlvbl9wb2ludC5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVy eWVudmlyb25tZW50LmMgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvdHpw YXJzZXIuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL2Rz YS5jICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9s b2d0YXBlLmMgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQv c2hhcmVkdHVwbGVzdG9yZS5jICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0 L3R1cGxlc29ydC5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXNvcnR2YXJpYW50cy5jICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC91dGlscy9z b3J0L3R1cGxlc3RvcmUuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMv dGltZS9zbmFwbWdyLmMgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcGdfYmFzZWJh Y2t1cC9hc3RyZWFtZXJfaW5qZWN0LmMgICAgICB8ICAyICstCiBzcmMvYmluL3BnX2NvbWJp bmViYWNrdXAvbG9hZF9tYW5pZmVzdC5jICAgICAgfCAgMiArLQogc3JjL2Jpbi9wZ19kdW1w L2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcGdfZHVt cC9kdW1wdXRpbHMuYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC9hc3RyZWFtZXJfdmVyaWZ5LmMgICAgfCAgMiArLQogc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgICAgIHwgIDIgKy0KIHNyYy9iaW4vc2Ny aXB0cy92YWN1dW1pbmcuYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvY29tbW9u L2Jsa3JlZnRhYmxlLmMgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKy0tLQogc3JjL2Nv bW1vbi9wYXJzZV9tYW5pZmVzdC5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9j b21tb24vcGdmbmFtZXMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiBzcmMv Y29tbW9uL3JtdHJlZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L2NvbW1vbi9zdHJpbmdpbmZvLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9mZV91dGlscy9hc3RyZWFtZXJfZmlsZS5jICAgICAgICAgICAgICAgICB8ICA0ICstCiBz cmMvZmVfdXRpbHMvYXN0cmVhbWVyX2d6aXAuYyAgICAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9sejQuYyAgICAgICAgICAgICAgICAgIHwgIDQgKy0K IHNyYy9mZV91dGlscy9hc3RyZWFtZXJfdGFyLmMgICAgICAgICAgICAgICAgICB8ICA2ICst CiBzcmMvZmVfdXRpbHMvYXN0cmVhbWVyX3pzdGQuYyAgICAgICAgICAgICAgICAgfCAgNCAr LQogc3JjL2luY2x1ZGUvbGliL3JhZGl4dHJlZS5oICAgICAgICAgICAgICAgICAgIHwgIDgg Ky0KIHNyYy9wbC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDEy ICstLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2NvbXAuYyAgICAgICAgICAgICAgICAgIHwg MzIgKysrLS0tLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAg ICAgIHwgIDkgKy0KIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkgICAgICAgICAgICAg ICAgICB8IDkyICsrKysrKysrKy0tLS0tLS0tLQogc3JjL3BsL3BscHl0aG9uL3BscHlfcHJv Y2VkdXJlLmMgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Nw aS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvcGwvcGxweXRob24vcGxweV90 eXBlaW8uYyAgICAgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9wbC90Y2wvcGx0Y2wuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiAuLi4vbW9kdWxlcy9kdW1teV9p bmRleF9hbS9kdW1teV9pbmRleF9hbS5jICAgfCAgMiArLQogLi4uL21vZHVsZXMvc3BnaXN0 X25hbWVfb3BzL3NwZ2lzdF9uYW1lX29wcy5jIHwgMTAgKy0KIC4uLi9tb2R1bGVzL3Rlc3Rf Yml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMgICB8ICAyICstCiAuLi4vbW9kdWxlcy90ZXN0 X2ludGVnZXJzZXQvdGVzdF9pbnRlZ2Vyc2V0LmMgfCAgMiArLQogLi4uL3Rlc3RfanNvbl9w YXJzZXJfaW5jcmVtZW50YWwuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9wYXJzZXIvdGVzdF9wYXJzZXIuYyAgICB8ICA0ICstCiAuLi4vbW9kdWxlcy90 ZXN0X3JhZGl4dHJlZS90ZXN0X3JhZGl4dHJlZS5jICAgfCAgMiArLQogc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3JlZ2V4L3Rlc3RfcmVnZXguYyAgICAgIHwgMTQgKystCiAuLi4vdGVzdF9y ZXNvd25lci90ZXN0X3Jlc293bmVyX21hbnkuYyAgICAgICAgfCAgMiArLQogLi4uL21vZHVs ZXMvdGVzdF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYyAgIHwgIDQgKy0KIHNyYy90ZXN0 L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8ICAyICstCiBzcmMvdGVz dC9yZWdyZXNzL3JlZ3Jlc3MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL3Rp bWV6b25lL3BndHouYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy90 dXRvcmlhbC9jb21wbGV4LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMv dHV0b3JpYWwvZnVuY3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogNDU4 IGZpbGVzIGNoYW5nZWQsIDE2OTkgaW5zZXJ0aW9ucygrKSwgMTgxMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9naW4uYwppbmRleCA1YzNlYjRkMGZkNC4uNjk2YTExNzZhNjMgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfZ2luLmMKKysrIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9naW4uYwpAQCAtMTE3LDcgKzExNyw3IEBAIGdpblJlYWRUdXBsZVdp dGhvdXRTdGF0ZShJbmRleFR1cGxlIGl0dXAsIGludCAqbml0ZW1zKQogCX0KIAllbHNlCiAJ ewotCQlpcGQgPSAoSXRlbVBvaW50ZXIpIHBhbGxvYyhzaXplb2YoSXRlbVBvaW50ZXJEYXRh KSAqIG5pcGQpOworCQlpcGQgPSBwYWxsb2NfYXJyYXkoSXRlbVBvaW50ZXJEYXRhLCBuaXBk KTsKIAkJbWVtY3B5KGlwZCwgcHRyLCBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSAqIG5pcGQp OwogCX0KIAkqbml0ZW1zID0gbmlwZDsKQEAgLTE1Miw3ICsxNTIsNyBAQCBnaW5fY2hlY2tf cG9zdGluZ190cmVlX3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgcG9zdGluZwogCWxlYWZkZXB0aCA9IC0xOwogCiAJLyogU3RhcnQgdGhlIHNj YW4gYXQgdGhlIHJvb3QgcGFnZSAqLwotCXN0YWNrID0gKEdpblBvc3RpbmdUcmVlU2Nhbkl0 ZW0gKikgcGFsbG9jMChzaXplb2YoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSkpOworCXN0YWNr ID0gcGFsbG9jMF9vYmplY3QoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSk7CiAJc3RhY2stPmRl cHRoID0gMDsKIAlJdGVtUG9pbnRlclNldEludmFsaWQoJnN0YWNrLT5wYXJlbnRrZXkpOwog CXN0YWNrLT5wYXJlbnRibGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0zNTQsNyArMzU0 LDcgQEAgZ2luX2NoZWNrX3Bvc3RpbmdfdHJlZV9wYXJlbnRfa2V5c19jb25zaXN0ZW5jeShS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIHBvc3RpbmcKIAkJCQkJCQkJCXN0YWNrLT5ibGtu bywgaSkpKTsKIAogCQkJCS8qIFRoaXMgaXMgYW4gaW50ZXJuYWwgcGFnZSwgcmVjdXJzZSBp bnRvIHRoZSBjaGlsZC4gKi8KLQkJCQlwdHIgPSAoR2luUG9zdGluZ1RyZWVTY2FuSXRlbSAq KSBwYWxsb2Moc2l6ZW9mKEdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0pKTsKKwkJCQlwdHIgPSBw YWxsb2Nfb2JqZWN0KEdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0pOwogCQkJCXB0ci0+ZGVwdGgg PSBzdGFjay0+ZGVwdGggKyAxOwogCiAJCQkJLyoKQEAgLTQxMiw3ICs0MTIsNyBAQCBnaW5f Y2hlY2tfcGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVsYXRpb24gcmVsLAogCWxlYWZkZXB0 aCA9IC0xOwogCiAJLyogU3RhcnQgdGhlIHNjYW4gYXQgdGhlIHJvb3QgcGFnZSAqLwotCXN0 YWNrID0gKEdpblNjYW5JdGVtICopIHBhbGxvYzAoc2l6ZW9mKEdpblNjYW5JdGVtKSk7CisJ c3RhY2sgPSBwYWxsb2MwX29iamVjdChHaW5TY2FuSXRlbSk7CiAJc3RhY2stPmRlcHRoID0g MDsKIAlzdGFjay0+cGFyZW50dHVwID0gTlVMTDsKIAlzdGFjay0+cGFyZW50YmxrID0gSW52 YWxpZEJsb2NrTnVtYmVyOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGdpbl9jaGVja19wYXJlbnRf a2V5c19jb25zaXN0ZW5jeShSZWxhdGlvbiByZWwsCiAKIAkJCQllbG9nKERFQlVHMywgInNw bGl0IGRldGVjdGVkIGZvciBibGs6ICV1LCBwYXJlbnQgYmxrOiAldSIsIHN0YWNrLT5ibGtu bywgc3RhY2stPnBhcmVudGJsayk7CiAKLQkJCQlwdHIgPSAoR2luU2Nhbkl0ZW0gKikgcGFs bG9jKHNpemVvZihHaW5TY2FuSXRlbSkpOworCQkJCXB0ciA9IHBhbGxvY19vYmplY3QoR2lu U2Nhbkl0ZW0pOwogCQkJCXB0ci0+ZGVwdGggPSBzdGFjay0+ZGVwdGg7CiAJCQkJcHRyLT5w YXJlbnR0dXAgPSBDb3B5SW5kZXhUdXBsZShzdGFjay0+cGFyZW50dHVwKTsKIAkJCQlwdHIt PnBhcmVudGJsayA9IHN0YWNrLT5wYXJlbnRibGs7CkBAIC02MDEsNyArNjAxLDcgQEAgZ2lu X2NoZWNrX3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwKIAkJCXsKIAkJ CQlHaW5TY2FuSXRlbSAqcHRyOwogCi0JCQkJcHRyID0gKEdpblNjYW5JdGVtICopIHBhbGxv YyhzaXplb2YoR2luU2Nhbkl0ZW0pKTsKKwkJCQlwdHIgPSBwYWxsb2Nfb2JqZWN0KEdpblNj YW5JdGVtKTsKIAkJCQlwdHItPmRlcHRoID0gc3RhY2stPmRlcHRoICsgMTsKIAkJCQkvKiBs YXN0IHR1cGxlIGluIGxheWVyIGhhcyBubyBoaWdoIGtleSAqLwogCQkJCWlmIChpID09IG1h eG9mZiAmJiByaWdodGxpbmsgPT0gSW52YWxpZEJsb2NrTnVtYmVyKQpkaWZmIC0tZ2l0IGEv Y29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJp ZnlfaGVhcGFtLmMKaW5kZXggNDk2M2U5MjQ1Y2IuLmEwOTBlMThjNjk3IDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCisrKyBiL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfaGVhcGFtLmMKQEAgLTE4MzgsNyArMTgzOCw3IEBAIGNoZWNrX3R1cGxlX2F0 dHJpYnV0ZShIZWFwQ2hlY2tDb250ZXh0ICpjdHgpCiAJewogCQlUb2FzdGVkQXR0cmlidXRl ICp0YTsKIAotCQl0YSA9IChUb2FzdGVkQXR0cmlidXRlICopIHBhbGxvYzAoc2l6ZW9mKFRv YXN0ZWRBdHRyaWJ1dGUpKTsKKwkJdGEgPSBwYWxsb2MwX29iamVjdChUb2FzdGVkQXR0cmli dXRlKTsKIAogCQlWQVJBVFRfRVhURVJOQUxfR0VUX1BPSU5URVIodGEtPnRvYXN0X3BvaW50 ZXIsIGF0dHIpOwogCQl0YS0+Ymxrbm8gPSBjdHgtPmJsa25vOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlf bmJ0cmVlLmMKaW5kZXggNzU3NTFlMmExZTkuLmE3ODdjMjk5NzliIDEwMDY0NAotLS0gYS9j b250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKQEAgLTQwMCw3ICs0MDAsNyBAQCBidF9jaGVja19ldmVyeV9sZXZl bChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAog CS8qCiAJICogSW5pdGlhbGl6ZSBzdGF0ZSBmb3IgZW50aXJlIHZlcmlmaWNhdGlvbiBvcGVy YXRpb24KIAkgKi8KLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEJ0cmVlQ2hlY2tTdGF0ZSkp OworCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoQnRyZWVDaGVja1N0YXRlKTsKIAlzdGF0ZS0+ cmVsID0gcmVsOwogCXN0YXRlLT5oZWFwcmVsID0gaGVhcHJlbDsKIAlzdGF0ZS0+aGVhcGtl eXNwYWNlID0gaGVhcGtleXNwYWNlOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9iYXNlYmFja3Vw X3RvX3NoZWxsL2Jhc2ViYWNrdXBfdG9fc2hlbGwuYyBiL2NvbnRyaWIvYmFzZWJhY2t1cF90 b19zaGVsbC9iYXNlYmFja3VwX3RvX3NoZWxsLmMKaW5kZXggODcyMGY1YTQzNzIuLjM0NWQz ZWQ4OTVkIDEwMDY0NAotLS0gYS9jb250cmliL2Jhc2ViYWNrdXBfdG9fc2hlbGwvYmFzZWJh Y2t1cF90b19zaGVsbC5jCisrKyBiL2NvbnRyaWIvYmFzZWJhY2t1cF90b19zaGVsbC9iYXNl YmFja3VwX3RvX3NoZWxsLmMKQEAgLTEzNiw3ICsxMzYsNyBAQCBzaGVsbF9nZXRfc2luayhi YnNpbmsgKm5leHRfc2luaywgdm9pZCAqZGV0YWlsX2FyZykKIAkgKiBXZSByZW1lbWJlciB0 aGUgY3VycmVudCB2YWx1ZSBvZiBiYXNlYmFja3VwX3RvX3NoZWxsLnNoZWxsX2NvbW1hbmQg dG8KIAkgKiBiZSBjZXJ0YWluIHRoYXQgaXQgY2FuJ3QgY2hhbmdlIHVuZGVyIHVzIGR1cmlu ZyB0aGUgYmFja3VwLgogCSAqLwotCXNpbmsgPSBwYWxsb2MwKHNpemVvZihiYnNpbmtfc2hl bGwpKTsKKwlzaW5rID0gcGFsbG9jMF9vYmplY3QoYmJzaW5rX3NoZWxsKTsKIAkqKChjb25z dCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFzZS5iYnNfb3BzKSA9ICZiYnNpbmtfc2hlbGxf b3BzOwogCXNpbmstPmJhc2UuYmJzX25leHQgPSBuZXh0X3Npbms7CiAJc2luay0+dGFyZ2V0 X2RldGFpbCA9IGRldGFpbF9hcmc7CmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2JsaW5z ZXJ0LmMgYi9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMKaW5kZXggNzg2NjQzODEyMmYuLmMx MWUwNmMzNGVlIDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMKKysrIGIv Y29udHJpYi9ibG9vbS9ibGluc2VydC5jCkBAIC0xNTEsNyArMTUxLDcgQEAgYmxidWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAK IAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUudG1wQ3R4KTsKIAotCXJlc3VsdCA9 IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJcmVzdWx0 LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1 aWxkc3RhdGUuaW5kdHVwbGVzOwogCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2Jsc2Nh bi5jIGIvY29udHJpYi9ibG9vbS9ibHNjYW4uYwppbmRleCBkMDcyZjQ3ZmUyOC4uMGQ3MWVk YmU5MWMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMKKysrIGIvY29udHJp Yi9ibG9vbS9ibHNjYW4uYwpAQCAtMjksNyArMjksNyBAQCBibGJlZ2luc2NhbihSZWxhdGlv biByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCiAKIAlzY2FuID0gUmVsYXRpb25HZXRJ bmRleFNjYW4ociwgbmtleXMsIG5vcmRlcmJ5cyk7CiAKLQlzbyA9IChCbG9vbVNjYW5PcGFx dWUpIHBhbGxvYyhzaXplb2YoQmxvb21TY2FuT3BhcXVlRGF0YSkpOworCXNvID0gKEJsb29t U2Nhbk9wYXF1ZSkgcGFsbG9jX29iamVjdChCbG9vbVNjYW5PcGFxdWVEYXRhKTsKIAlpbml0 Qmxvb21TdGF0ZSgmc28tPnN0YXRlLCBzY2FuLT5pbmRleFJlbGF0aW9uKTsKIAlzby0+c2ln biA9IE5VTEw7CiAKQEAgLTg2LDcgKzg2LDcgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVz YyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAkJLyogTmV3IHNlYXJjaDogaGF2ZSB0byBjYWxj dWxhdGUgc2VhcmNoIHNpZ25hdHVyZSAqLwogCQlTY2FuS2V5CQlza2V5ID0gc2Nhbi0+a2V5 RGF0YTsKIAotCQlzby0+c2lnbiA9IHBhbGxvYzAoc2l6ZW9mKEJsb29tU2lnbmF0dXJlV29y ZCkgKiBzby0+c3RhdGUub3B0cy5ibG9vbUxlbmd0aCk7CisJCXNvLT5zaWduID0gcGFsbG9j MF9hcnJheShCbG9vbVNpZ25hdHVyZVdvcmQsIHNvLT5zdGF0ZS5vcHRzLmJsb29tTGVuZ3Ro KTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgc2Nhbi0+bnVtYmVyT2ZLZXlzOyBpKyspCiAJCXsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jIGIvY29udHJpYi9ibG9vbS9i bHV0aWxzLmMKaW5kZXggMmMwZTcxZWVkYzYuLmJhMTQ2NWMyNTdmIDEwMDY0NAotLS0gYS9j b250cmliL2Jsb29tL2JsdXRpbHMuYworKysgYi9jb250cmliL2Jsb29tL2JsdXRpbHMuYwpA QCAtODYsNyArODYsNyBAQCBtYWtlRGVmYXVsdEJsb29tT3B0aW9ucyh2b2lkKQogCUJsb29t T3B0aW9ucyAqb3B0czsKIAlpbnQJCQlpOwogCi0Jb3B0cyA9IChCbG9vbU9wdGlvbnMgKikg cGFsbG9jMChzaXplb2YoQmxvb21PcHRpb25zKSk7CisJb3B0cyA9IHBhbGxvYzBfb2JqZWN0 KEJsb29tT3B0aW9ucyk7CiAJLyogQ29udmVydCBERUZBVUxUX0JMT09NX0xFTkdUSCBmcm9t ICMgb2YgYml0cyB0byAjIG9mIHdvcmRzICovCiAJb3B0cy0+Ymxvb21MZW5ndGggPSAoREVG QVVMVF9CTE9PTV9MRU5HVEggKyBTSUdOV09SREJJVFMgLSAxKSAvIFNJR05XT1JEQklUUzsK IAlmb3IgKGkgPSAwOyBpIDwgSU5ERVhfTUFYX0tFWVM7IGkrKykKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvYmxvb20vYmx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRl eCA5ZTVmMDU3NGZhZC4uZTkwYTRiZmIxNzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20v Ymx2YWN1dW0uYworKysgYi9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTQyLDcgKzQy LDcgQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOwogCiAJ aWYgKHN0YXRzID09IE5VTEwpCi0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq KSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBw YWxsb2MwX29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCiAJaW5pdEJsb29tU3Rh dGUoJnN0YXRlLCBpbmRleCk7CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBibHZhY3V1bWNsZWFu dXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz KQogCQlyZXR1cm4gc3RhdHM7CiAKIAlpZiAoc3RhdHMgPT0gTlVMTCkKLQkJc3RhdHMgPSAo SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0ZVJl c3VsdCk7CiAKIAkvKgogCSAqIEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXM6IGluc2VydCBkZWxl dGVkIHBhZ2VzIGludG8gRlNNIGFuZCBjb2xsZWN0CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpbi9idHJlZV9naW4uYyBiL2NvbnRyaWIvYnRyZWVfZ2luL2J0cmVlX2dpbi5jCmlu ZGV4IDk2NmI3NmU1OTFiLi5hZmI4YjM4MjBhZiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naW4vYnRyZWVfZ2luLmMKKysrIGIvY29udHJpYi9idHJlZV9naW4vYnRyZWVfZ2luLmMK QEAgLTUyLDcgKzUyLDcgQEAgZ2luX2J0cmVlX2V4dHJhY3RfdmFsdWUoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sIGJvb2wgaXNfdmFybGVuYSkKIHsKIAlEYXR1bQkJZGF0dW0gPSBQR19H RVRBUkdfREFUVU0oMCk7CiAJaW50MzIJICAgKm5lbnRyaWVzID0gKGludDMyICopIFBHX0dF VEFSR19QT0lOVEVSKDEpOwotCURhdHVtCSAgICplbnRyaWVzID0gKERhdHVtICopIHBhbGxv YyhzaXplb2YoRGF0dW0pKTsKKwlEYXR1bQkgICAqZW50cmllcyA9IHBhbGxvY19vYmplY3Qo RGF0dW0pOwogCiAJLyogRW5zdXJlIHRoYXQgdmFsdWVzIHN0b3JlZCBpbiB0aGUgaW5kZXgg YXJlIG5vdCB0b2FzdGVkICovCiAJaWYgKGlzX3ZhcmxlbmEpCkBAIC03NSw5ICs3NSw5IEBA IGdpbl9idHJlZV9leHRyYWN0X3F1ZXJ5KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCVN0 cmF0ZWd5TnVtYmVyIHN0cmF0ZWd5ID0gUEdfR0VUQVJHX1VJTlQxNigyKTsKIAlib29sCSAg KipwYXJ0aWFsbWF0Y2ggPSAoYm9vbCAqKikgUEdfR0VUQVJHX1BPSU5URVIoMyk7CiAJUG9p bnRlciAgICoqZXh0cmFfZGF0YSA9IChQb2ludGVyICoqKSBQR19HRVRBUkdfUE9JTlRFUig0 KTsKLQlEYXR1bQkgICAqZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVt KSk7Ci0JUXVlcnlJbmZvICAqZGF0YSA9IChRdWVyeUluZm8gKikgcGFsbG9jKHNpemVvZihR dWVyeUluZm8pKTsKLQlib29sCSAgICpwdHJfcGFydGlhbG1hdGNoID0gKGJvb2wgKikgcGFs bG9jKHNpemVvZihib29sKSk7CisJRGF0dW0JICAgKmVudHJpZXMgPSBwYWxsb2Nfb2JqZWN0 KERhdHVtKTsKKwlRdWVyeUluZm8gICpkYXRhID0gcGFsbG9jX29iamVjdChRdWVyeUluZm8p OworCWJvb2wJICAgKnB0cl9wYXJ0aWFsbWF0Y2ggPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOwog CWludAkJCWJ0cmVlX3N0cmF0LAogCQkJCXJoc19jb2RlOwogCkBAIC0xNDAsNyArMTQwLDcg QEAgZ2luX2J0cmVlX2V4dHJhY3RfcXVlcnkoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJ ZGF0YS0+b3JpZ19kYXR1bSA9IGRhdHVtOwogCWRhdGEtPmVudHJ5X2RhdHVtID0gZW50cmll c1swXTsKIAlkYXRhLT50eXBlY21wID0gY21wX2Zuc1tyaHNfY29kZV07Ci0JKmV4dHJhX2Rh dGEgPSAoUG9pbnRlciAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50ZXIpKTsKKwkqZXh0cmFfZGF0 YSA9IHBhbGxvY19vYmplY3QoUG9pbnRlcik7CiAJKipleHRyYV9kYXRhID0gKFBvaW50ZXIp IGRhdGE7CiAKIAlQR19SRVRVUk5fUE9JTlRFUihlbnRyaWVzKTsKQEAgLTU3OSw3ICs1Nzks NyBAQCBHSU5fU1VQUE9SVCh0aW1lLCBsZWZ0bW9zdHZhbHVlX3RpbWUsIHRpbWVfcmhzX2lz X3ZhcmxlbmEsIE5VTEwsIHRpbWVfY21wX2ZucykKIHN0YXRpYyBEYXR1bQogbGVmdG1vc3R2 YWx1ZV90aW1ldHoodm9pZCkKIHsKLQlUaW1lVHpBRFQgICp2ID0gcGFsbG9jKHNpemVvZihU aW1lVHpBRFQpKTsKKwlUaW1lVHpBRFQgICp2ID0gcGFsbG9jX29iamVjdChUaW1lVHpBRFQp OwogCiAJdi0+dGltZSA9IDA7CiAJdi0+em9uZSA9IC0yNCAqIDM2MDA7CQkvKiBYWFggaXMg dGhhdCB0cnVlPyAqLwpAQCAtNjM5LDcgKzYzOSw3IEBAIEdJTl9TVVBQT1JUKGRhdGUsIGxl ZnRtb3N0dmFsdWVfZGF0ZSwgZGF0ZV9yaHNfaXNfdmFybGVuYSwgZGF0ZV9jdnRfZm5zLCBk YXRlX2NtCiBzdGF0aWMgRGF0dW0KIGxlZnRtb3N0dmFsdWVfaW50ZXJ2YWwodm9pZCkKIHsK LQlJbnRlcnZhbCAgICp2ID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCUludGVydmFs ICAgKnYgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAogCUlOVEVSVkFMX05PQkVHSU4o dik7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBHSU5fU1VQUE9SVChpbnRlcnZhbCwgbGVmdG1v c3R2YWx1ZV9pbnRlcnZhbCwgaW50ZXJ2YWxfcmhzX2lzX3ZhcmxlbmEsIE5VTEwsIGludAog c3RhdGljIERhdHVtCiBsZWZ0bW9zdHZhbHVlX21hY2FkZHIodm9pZCkKIHsKLQltYWNhZGRy ICAgICp2ID0gcGFsbG9jMChzaXplb2YobWFjYWRkcikpOworCW1hY2FkZHIgICAgKnYgPSBw YWxsb2MwX29iamVjdChtYWNhZGRyKTsKIAogCXJldHVybiBNYWNhZGRyUEdldERhdHVtKHYp OwogfQpAQCAtNjczLDcgKzY3Myw3IEBAIEdJTl9TVVBQT1JUKG1hY2FkZHIsIGxlZnRtb3N0 dmFsdWVfbWFjYWRkciwgbWFjYWRkcl9yaHNfaXNfdmFybGVuYSwgTlVMTCwgbWFjYWRkCiBz dGF0aWMgRGF0dW0KIGxlZnRtb3N0dmFsdWVfbWFjYWRkcjgodm9pZCkKIHsKLQltYWNhZGRy OCAgICp2ID0gcGFsbG9jMChzaXplb2YobWFjYWRkcjgpKTsKKwltYWNhZGRyOCAgICp2ID0g cGFsbG9jMF9vYmplY3QobWFjYWRkcjgpOwogCiAJcmV0dXJuIE1hY2FkZHI4UEdldERhdHVt KHYpOwogfQpAQCAtOTEwLDcgKzkxMCw3IEBAIGxlZnRtb3N0dmFsdWVfdXVpZCh2b2lkKQog CSAqIHBhbGxvYzAgd2lsbCBjcmVhdGUgdGhlIFVVSUQgd2l0aCBhbGwgemVyb2VzOgogCSAq ICIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiCiAJICovCi0JcGdfdXVp ZF90ICAqcmV0dmFsID0gKHBnX3V1aWRfdCAqKSBwYWxsb2MwKHNpemVvZihwZ191dWlkX3Qp KTsKKwlwZ191dWlkX3QgICpyZXR2YWwgPSBwYWxsb2MwX29iamVjdChwZ191dWlkX3QpOwog CiAJcmV0dXJuIFVVSURQR2V0RGF0dW0ocmV0dmFsKTsKIH0KZGlmZiAtLWdpdCBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9ib29sLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Ym9vbC5jCmluZGV4IDM0NGYwNTljNzhmLi41OWFkNjBkYTViZSAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYworKysgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfYm9vbC5jCkBAIC0xMjgsNyArMTI4LDcgQEAgRGF0dW0KIGdidF9ib29sX3VuaW9u KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChH aXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0 ID0gcGFsbG9jKHNpemVvZihib29sS0VZKSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jX29i amVjdChib29sS0VZKTsKIAogCSooaW50ICopIFBHX0dFVEFSR19QT0lOVEVSKDEpID0gc2l6 ZW9mKGJvb2xLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBl bnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9j YXNoLmMKaW5kZXggMjgyZDVjNTczMWYuLmY4NGIzNWY1MTYxIDEwMDY0NAotLS0gYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9jYXNoLmMKQEAgLTE3Nyw3ICsxNzcsNyBAQCBEYXR1bQogZ2J0X2Nhc2hfdW5pb24o UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdp c3RFbnRyeVZlY3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQg PSBwYWxsb2Moc2l6ZW9mKGNhc2hLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2Jq ZWN0KGNhc2hLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXpl b2YoY2FzaEtFWSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVu dHJ5dmVjLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Rh dGUuYwppbmRleCAxZjFhM2YzMmI1Ni4uOGNiZmJiMTljNWEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2RhdGUuYwpAQCAtMTkyLDcgKzE5Miw3IEBAIERhdHVtCiBnYnRfZGF0ZV91bmlvbihQ R19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lz dEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9 IHBhbGxvYyhzaXplb2YoZGF0ZUtFWSkpOworCXZvaWQJICAgKm91dCA9IHBhbGxvY19vYmpl Y3QoZGF0ZUtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVv ZihkYXRlS0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50 cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51 bS5jCmluZGV4IDhmMWZmZmY0Njk2Li42MDBlODQwOWU4OCAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZW51bS5jCkBAIC0xNDcsNyArMTQ3LDcgQEAgRGF0dW0KIGdidF9lbnVtX3VuaW9uKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0 RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0g cGFsbG9jKHNpemVvZihvaWRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0 KG9pZEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihv aWRLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBlbnRyeXZl YywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2Zsb2F0NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 NC5jCmluZGV4IGQ5Yzg1OTgzNWRhLi5iOTg1MDNiOTM0ZiAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9mbG9hdDQuYwpAQCAtMTcxLDcgKzE3MSw3IEBAIERhdHVtCiBnYnRfZmxvYXQ0X3Vu aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9 IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAq b3V0ID0gcGFsbG9jKHNpemVvZihmbG9hdDRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxs b2Nfb2JqZWN0KGZsb2F0NEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigx KSA9IHNpemVvZihmbG9hdDRLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5p b24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jIGIvY29udHJpYi9idHJlZV9n aXN0L2J0cmVlX2Zsb2F0OC5jCmluZGV4IDU2N2JlZWRlMTc4Li5jODJmOWY4MmIyZCAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jCisrKyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDguYwpAQCAtMTc5LDcgKzE3OSw3IEBAIERhdHVt CiBnYnRfZmxvYXQ4X3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVj dG9yICplbnRyeXZlYyA9IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIo MCk7Ci0Jdm9pZAkgICAqb3V0ID0gcGFsbG9jKHNpemVvZihmbG9hdDhLRVkpKTsKKwl2b2lk CSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KGZsb2F0OEtFWSk7CiAKIAkqKGludCAqKSBQR19H RVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihmbG9hdDhLRVkpOwogCVBHX1JFVFVSTl9QT0lO VEVSKGdidF9udW1fdW5pb24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5m bykpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2luZXQuYyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKaW5kZXggNTJiZjNlMjQ0NmUuLmZlODgx NmVjYjYwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5jCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKQEAgLTk3LDEwICs5NywxMCBA QCBnYnRfaW5ldF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKGVudHJ5LT5s ZWFma2V5KQogCXsKLQkJaW5ldEtFWSAgICAqciA9IChpbmV0S0VZICopIHBhbGxvYyhzaXpl b2YoaW5ldEtFWSkpOworCQlpbmV0S0VZICAgICpyID0gcGFsbG9jX29iamVjdChpbmV0S0VZ KTsKIAkJYm9vbAkJZmFpbHVyZSA9IGZhbHNlOwogCi0JCXJldHZhbCA9IHBhbGxvYyhzaXpl b2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsK IAkJci0+bG93ZXIgPSBjb252ZXJ0X25ldHdvcmtfdG9fc2NhbGFyKGVudHJ5LT5rZXksIElO RVRPSUQsICZmYWlsdXJlKTsKIAkJQXNzZXJ0KCFmYWlsdXJlKTsKIAkJci0+dXBwZXIgPSBy LT5sb3dlcjsKQEAgLTE0NSw3ICsxNDUsNyBAQCBEYXR1bQogZ2J0X2luZXRfdW5pb24oUEdf RlVOQ1RJT05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RF bnRyeVZlY3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBw YWxsb2Moc2l6ZW9mKGluZXRLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0 KGluZXRLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2Yo aW5ldEtFWSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5 dmVjLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50Mi5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIu YwppbmRleCBmYWY0NTY5OTdiYi4uM2UzYjE1M2ZkMDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDIuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIERhdHVtCiBnYnRfaW50Ml91bmlvbihQR19G VU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lzdEVu dHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9IHBh bGxvYyhzaXplb2YoaW50MTZLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0 KGludDE2S0VZKTsKIAogCSooaW50ICopIFBHX0dFVEFSR19QT0lOVEVSKDEpID0gc2l6ZW9m KGludDE2S0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50 cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 NC5jCmluZGV4IDBiZGI5ZTU4YzU2Li5kYjQ5NzE0MzlmMSAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2ludDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfaW50NC5jCkBAIC0xNzQsNyArMTc0LDcgQEAgRGF0dW0KIGdidF9pbnQ0X3VuaW9uKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9IChHaXN0 RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0Jdm9pZAkgICAqb3V0ID0g cGFsbG9jKHNpemVvZihpbnQzMktFWSkpOworCXZvaWQJICAgKm91dCA9IHBhbGxvY19vYmpl Y3QoaW50MzJLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXpl b2YoaW50MzJLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5pb24ob3V0LCBl bnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2ludDguYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ4LmMKaW5kZXggYTlhN2I1NjkyNzguLjVhNTFmMmRkZDAxIDEwMDY0NAotLS0gYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnQ4LmMKQEAgLTE3Niw3ICsxNzYsNyBAQCBEYXR1bQogZ2J0X2ludDhfdW5pb24o UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdp c3RFbnRyeVZlY3RvciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQg PSBwYWxsb2Moc2l6ZW9mKGludDY0S0VZKSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jX29i amVjdChpbnQ2NEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNp emVvZihpbnQ2NEtFWSk7CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQs IGVudHJ5dmVjLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnRlcnZhbC5jCmluZGV4IDE5ZWVmYzYwY2RlLi43NzRjYWQ3YmVmZSAxMDA2NDQK LS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludGVydmFsLmMKKysrIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2ludGVydmFsLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBnYnRf aW50dl9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCXsKIAkJY2hhcgkgICAqciA9IChj aGFyICopIHBhbGxvYygyICogSU5URVJWQUxTSVpFKTsKIAotCQlyZXR2YWwgPSBwYWxsb2Mo c2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRS WSk7CiAKIAkJaWYgKGVudHJ5LT5sZWFma2V5KQogCQl7CkBAIC0xOTAsMTAgKzE5MCwxMCBA QCBnYnRfaW50dl9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoSU5URVJW QUxTSVpFICE9IHNpemVvZihJbnRlcnZhbCkpCiAJewotCQlpbnR2S0VZICAgICpyID0gcGFs bG9jKHNpemVvZihpbnR2S0VZKSk7CisJCWludHZLRVkgICAgKnIgPSBwYWxsb2Nfb2JqZWN0 KGludHZLRVkpOwogCQljaGFyCSAgICprZXkgPSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtl eSk7CiAKLQkJcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFs ID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQltZW1jcHkoJnItPmxvd2VyLCBrZXks IElOVEVSVkFMU0laRSk7CiAJCW1lbWNweSgmci0+dXBwZXIsIGtleSArIElOVEVSVkFMU0la RSwgSU5URVJWQUxTSVpFKTsKIApAQCAtMjUwLDcgKzI1MCw3IEBAIERhdHVtCiBnYnRfaW50 dl91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2 ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCXZvaWQJ ICAgKm91dCA9IHBhbGxvYyhzaXplb2YoaW50dktFWSkpOworCXZvaWQJICAgKm91dCA9IHBh bGxvY19vYmplY3QoaW50dktFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigx KSA9IHNpemVvZihpbnR2S0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9u KG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMgYi9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfbWFjYWRkci5jCmluZGV4IGM0NDRhNzA5ODUzLi5kODUwM2IxMzY2ZiAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHIuYworKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jCkBAIC0xNDcsNyArMTQ3LDcgQEAgRGF0 dW0KIGdidF9tYWNhZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZl Y3RvciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVS KDApOwotCXZvaWQJICAgKm91dCA9IHBhbGxvYzAoc2l6ZW9mKG1hY0tFWSkpOworCXZvaWQJ ICAgKm91dCA9IHBhbGxvYzBfb2JqZWN0KG1hY0tFWSk7CiAKIAkqKGludCAqKSBQR19HRVRB UkdfUE9JTlRFUigxKSA9IHNpemVvZihtYWNLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdi dF9udW1fdW5pb24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwppbmRleCA2ZDk4MzdkOTBhMy4uNGYw ZDBmYjcxNDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRy OC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCkBAIC0xNDUs NyArMTQ1LDcgQEAgRGF0dW0KIGdidF9tYWNhZDhfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZlY3RvciAqKSBQ R19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxsb2MwKHNpemVvZiht YWM4S0VZKSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jMF9vYmplY3QobWFjOEtFWSk7CiAK IAkqKGludCAqKSBQR19HRVRBUkdfUE9JTlRFUigxKSA9IHNpemVvZihtYWM4S0VZKTsKIAlQ R19SRVRVUk5fUE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywg ZmNpbmZvLT5mbGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9vaWQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYwppbmRleCBiOGYyZjY2 MTA3Ni4uNzZkN2M1NWEzMDggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9vaWQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfb2lkLmMKQEAgLTE3Niw3 ICsxNzYsNyBAQCBEYXR1bQogZ2J0X29pZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewog CUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dF VEFSR19QT0lOVEVSKDApOwotCXZvaWQJICAgKm91dCA9IHBhbGxvYyhzaXplb2Yob2lkS0VZ KSk7CisJdm9pZAkgICAqb3V0ID0gcGFsbG9jX29iamVjdChvaWRLRVkpOwogCiAJKihpbnQg KikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2Yob2lkS0VZKTsKIAlQR19SRVRVUk5f UE9JTlRFUihnYnRfbnVtX3VuaW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5m bGluZm8pKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMg Yi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCmluZGV4IDk0ODM4NDZjNDczLi44 YzQ1NjcyODgyMCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUu YworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCkBAIC0xNjIsMTEgKzE2 MiwxMSBAQCBnYnRfdGltZXR6X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAo ZW50cnktPmxlYWZrZXkpCiAJewotCQl0aW1lS0VZICAgICpyID0gKHRpbWVLRVkgKikgcGFs bG9jKHNpemVvZih0aW1lS0VZKSk7CisJCXRpbWVLRVkgICAgKnIgPSBwYWxsb2Nfb2JqZWN0 KHRpbWVLRVkpOwogCQlUaW1lVHpBRFQgICp0eiA9IERhdHVtR2V0VGltZVR6QURUUChlbnRy eS0+a2V5KTsKIAkJVGltZUFEVAkJdG1wOwogCi0JCXJldHZhbCA9IHBhbGxvYyhzaXplb2Yo R0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAog CQkvKiBXZSBhcmUgdXNpbmcgdGhlIHRpbWUgKyB6b25lIG9ubHkgdG8gY29tcHJlc3MgKi8K IAkJdG1wID0gdHotPnRpbWUgKyAodHotPnpvbmUgKiBJTlQ2NENPTlNUKDEwMDAwMDApKTsK QEAgLTI1Niw3ICsyNTYsNyBAQCBEYXR1bQogZ2J0X3RpbWVfdW5pb24oUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZlY3Rv ciAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKLQl2b2lkCSAgICpvdXQgPSBwYWxsb2Moc2l6 ZW9mKHRpbWVLRVkpKTsKKwl2b2lkCSAgICpvdXQgPSBwYWxsb2Nfb2JqZWN0KHRpbWVLRVkp OwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5URVIoMSkgPSBzaXplb2YodGltZUtFWSk7 CiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X251bV91bmlvbihvdXQsIGVudHJ5dmVjLCAmdGlu Zm8sIGZjaW5mby0+ZmxpbmZvKSk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdHMuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCmluZGV4IGI3YmJh ZTJmNGQ2Li5iN2M0M2MyMGI5MSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX3RzLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMKQEAgLTE0Niw3 ICsxNDYsNyBAQCB0c19kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoVElNRVNUQU1Q X05PVF9GSU5JVEUoYSkgfHwgVElNRVNUQU1QX05PVF9GSU5JVEUoYikpCiAJewotCQlJbnRl cnZhbCAgICpwID0gcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCQlJbnRlcnZhbCAgICpw ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAkJcC0+ZGF5ID0gSU5UX01BWDsKIAkJ cC0+bW9udGggPSBJTlRfTUFYOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHRzdHpfZGlzdChQR19G VU5DVElPTl9BUkdTKQogCiAJaWYgKFRJTUVTVEFNUF9OT1RfRklOSVRFKGEpIHx8IFRJTUVT VEFNUF9OT1RfRklOSVRFKGIpKQogCXsKLQkJSW50ZXJ2YWwgICAqcCA9IHBhbGxvYyhzaXpl b2YoSW50ZXJ2YWwpKTsKKwkJSW50ZXJ2YWwgICAqcCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2 YWwpOwogCiAJCXAtPmRheSA9IElOVF9NQVg7CiAJCXAtPm1vbnRoID0gSU5UX01BWDsKQEAg LTIxMiwxMyArMjEyLDEzIEBAIGdidF90c3R6X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlpZiAoZW50cnktPmxlYWZrZXkpCiAJewotCQl0c0tFWQkgICAqciA9ICh0c0tFWSAq KSBwYWxsb2Moc2l6ZW9mKHRzS0VZKSk7CisJCXRzS0VZCSAgICpyID0gcGFsbG9jX29iamVj dCh0c0tFWSk7CiAJCVRpbWVzdGFtcFR6IHRzID0gRGF0dW1HZXRUaW1lc3RhbXBUeihlbnRy eS0+a2V5KTsKIAkJVGltZXN0YW1wCWdtdDsKIAogCQlnbXQgPSB0c3R6X3RvX3RzX2dtdCh0 cyk7CiAKLQkJcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFs ID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlyLT5sb3dlciA9IHItPnVwcGVyID0g Z210OwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyKSwKIAkJ CQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKQEAgLTMyNSw3ICszMjUsNyBAQCBEYXR1 bQogZ2J0X3RzX3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9y ICplbnRyeXZlYyA9IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7 Ci0Jdm9pZAkgICAqb3V0ID0gcGFsbG9jKHNpemVvZih0c0tFWSkpOworCXZvaWQJICAgKm91 dCA9IHBhbGxvY19vYmplY3QodHNLRVkpOwogCiAJKihpbnQgKikgUEdfR0VUQVJHX1BPSU5U RVIoMSkgPSBzaXplb2YodHNLRVkpOwogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF9udW1fdW5p b24ob3V0LCBlbnRyeXZlYywgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCmluZGV4IDliYTk3Zjk2ZmJmLi41MWM4ODM2ZjI3 YSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYwpAQCAtODksNyArODks NyBAQCBnYnRfbnVtX2NvbXByZXNzKEdJU1RFTlRSWSAqZW50cnksIGNvbnN0IGdidHJlZV9u aW5mbyAqdGluZm8pCiAKIAkJbWVtY3B5KCZyWzBdLCBsZWFmLCB0aW5mby0+c2l6ZSk7CiAJ CW1lbWNweSgmclt0aW5mby0+c2l6ZV0sIGxlYWYsIHRpbmZvLT5zaXplKTsKLQkJcmV0dmFs ID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVj dChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1 bShyKSwgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwg ZmFsc2UpOwogCX0KQEAgLTE1Niw3ICsxNTYsNyBAQCBnYnRfbnVtX2ZldGNoKEdJU1RFTlRS WSAqZW50cnksIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8pCiAJCQlkYXR1bSA9IGVudHJ5 LT5rZXk7CiAJfQogCi0JcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwly ZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJZ2lzdGVudHJ5aW5pdCgqcmV0 dmFsLCBkYXR1bSwgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsIGVudHJ5LT5vZmZzZXQsCiAJ CQkJICBmYWxzZSk7CiAJcmV0dXJuIHJldHZhbDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91 dGlsc192YXIuYwppbmRleCBmYjQ2NmU1YWEzMi4uMmY2OTM4OWVkNjkgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYworKysgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmMKQEAgLTQwLDcgKzQwLDcgQEAgZ2J0X3Zhcl9k ZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoa2V5ICE9IChHQlRfVkFSS0VZ ICopIERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KSkKIAl7Ci0JCUdJU1RFTlRSWSAgKnJl dHZhbCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJR0lT VEVOVFJZICAqcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCiAJCWdpc3Rl bnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnkt PnJlbCwgZW50cnktPnBhZ2UsCkBAIC0yODksNyArMjg5LDcgQEAgZ2J0X3Zhcl9jb21wcmVz cyhHSVNURU5UUlkgKmVudHJ5LCBjb25zdCBnYnRyZWVfdmluZm8gKnRpbmZvKQogCiAJCXIg PSBnYnRfdmFyX2tleV9mcm9tX2RhdHVtKGxlYWYpOwogCi0JCXJldHZhbCA9IHBhbGxvYyhz aXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZ KTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0ociksCiAJCQkJ CSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgdHJ1 ZSk7CkBAIC0zMDksNyArMzA5LDcgQEAgZ2J0X3Zhcl9mZXRjaChQR19GVU5DVElPTl9BUkdT KQogCUdCVF9WQVJLRVlfUiByID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5KTsKIAlHSVNU RU5UUlkgICpyZXR2YWw7CiAKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkp OworCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAlnaXN0ZW50cnlpbml0 KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyLmxvd2VyKSwKIAkJCQkgIGVudHJ5LT5yZWws IGVudHJ5LT5wYWdlLAogCQkJCSAgZW50cnktPm9mZnNldCwgdHJ1ZSk7CkBAIC00NzYsNyAr NDc2LDcgQEAgZ2J0X3Zhcl9waWNrc3BsaXQoY29uc3QgR2lzdEVudHJ5VmVjdG9yICplbnRy eXZlYywgR0lTVF9TUExJVFZFQyAqdiwKIAl2LT5zcGxfbmxlZnQgPSAwOwogCXYtPnNwbF9u cmlnaHQgPSAwOwogCi0Jc3YgPSBwYWxsb2Moc2l6ZW9mKGJ5dGVhICopICogKG1heG9mZiAr IDEpKTsKKwlzdiA9IHBhbGxvY19hcnJheShieXRlYSAqLCAobWF4b2ZmICsgMSkpOwogCiAJ LyogU29ydCBlbnRyaWVzICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dWlkLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCmluZGV4IDA3 ZjMwNGYzOWYxLi5kNDIzYWVhMTVjMSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX3V1aWQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCkBA IC0xMDgsNyArMTA4LDcgQEAgZ2J0X3V1aWRfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykK IAkJY2hhcgkgICAqciA9IChjaGFyICopIHBhbGxvYygyICogVVVJRF9MRU4pOwogCQlwZ191 dWlkX3QgICprZXkgPSBEYXR1bUdldFVVSURQKGVudHJ5LT5rZXkpOwogCi0JCXJldHZhbCA9 IHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3Qo R0lTVEVOVFJZKTsKIAogCQltZW1jcHkociwga2V5LCBVVUlEX0xFTik7CiAJCW1lbWNweShy ICsgVVVJRF9MRU4sIGtleSwgVVVJRF9MRU4pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIERhdHVt CiBnYnRfdXVpZF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3Rv ciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDAp OwotCXZvaWQJICAgKm91dCA9IHBhbGxvYyhzaXplb2YodXVpZEtFWSkpOworCXZvaWQJICAg Km91dCA9IHBhbGxvY19vYmplY3QodXVpZEtFWSk7CiAKIAkqKGludCAqKSBQR19HRVRBUkdf UE9JTlRFUigxKSA9IHNpemVvZih1dWlkS0VZKTsKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRf bnVtX3VuaW9uKG91dCwgZW50cnl2ZWMsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvY3ViZS9jdWJlLmMgYi9jb250cmliL2N1YmUvY3ViZS5jCmlu ZGV4IGFhNDdlMTQxZjgxLi4zNjAwNDU3Y2JjMCAxMDA2NDQKLS0tIGEvY29udHJpYi9jdWJl L2N1YmUuYworKysgYi9jb250cmliL2N1YmUvY3ViZS5jCkBAIC00NzEsNyArNDcxLDcgQEAg Z19jdWJlX2RlY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAogCWlmIChrZXkgIT0gRGF0 dW1HZXROREJPWFAoZW50cnktPmtleSkpCiAJewotCQlHSVNURU5UUlkgICpyZXR2YWwgPSAo R0lTVEVOVFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCUdJU1RFTlRSWSAg KnJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAogCQlnaXN0ZW50cnlpbml0 KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShrZXkpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVu dHJ5LT5wYWdlLApkaWZmIC0tZ2l0IGEvY29udHJpYi9kaWN0X2ludC9kaWN0X2ludC5jIGIv Y29udHJpYi9kaWN0X2ludC9kaWN0X2ludC5jCmluZGV4IGJkYWQ1MmQyMDI4Li41ZDk1MjNh MWE2MyAxMDA2NDQKLS0tIGEvY29udHJpYi9kaWN0X2ludC9kaWN0X2ludC5jCisrKyBiL2Nv bnRyaWIvZGljdF9pbnQvZGljdF9pbnQuYwpAQCAtMzgsNyArMzgsNyBAQCBkaW50ZGljdF9p bml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJRGljdEludCAgICAqZDsKIAlMaXN0Q2VsbCAgICps OwogCi0JZCA9IChEaWN0SW50ICopIHBhbGxvYzAoc2l6ZW9mKERpY3RJbnQpKTsKKwlkID0g cGFsbG9jMF9vYmplY3QoRGljdEludCk7CiAJZC0+bWF4bGVuID0gNjsKIAlkLT5yZWplY3Rs b25nID0gZmFsc2U7CiAJZC0+YWJzdmFsID0gZmFsc2U7CkBAIC04Myw3ICs4Myw3IEBAIGRp bnRkaWN0X2xleGl6ZShQR19GVU5DVElPTl9BUkdTKQogCWNoYXIJICAgKmluID0gKGNoYXIg KikgUEdfR0VUQVJHX1BPSU5URVIoMSk7CiAJaW50CQkJbGVuID0gUEdfR0VUQVJHX0lOVDMy KDIpOwogCWNoYXIJICAgKnR4dDsKLQlUU0xleGVtZSAgICpyZXMgPSBwYWxsb2MwKHNpemVv ZihUU0xleGVtZSkgKiAyKTsKKwlUU0xleGVtZSAgICpyZXMgPSBwYWxsb2MwX2FycmF5KFRT TGV4ZW1lLCAyKTsKIAogCXJlc1sxXS5sZXhlbWUgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9j b250cmliL2RpY3RfeHN5bi9kaWN0X3hzeW4uYyBiL2NvbnRyaWIvZGljdF94c3luL2RpY3Rf eHN5bi5jCmluZGV4IDFlYzUyODVkNmQxLi5iYmIyZmQ4NTBmZCAxMDA2NDQKLS0tIGEvY29u dHJpYi9kaWN0X3hzeW4vZGljdF94c3luLmMKKysrIGIvY29udHJpYi9kaWN0X3hzeW4vZGlj dF94c3luLmMKQEAgLTEwOSw5ICsxMDksOSBAQCByZWFkX2RpY3Rpb25hcnkoRGljdFN5biAq ZCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQl7CiAJCQkJZC0+bGVuID0gKGQtPmxlbiA+ IDApID8gMiAqIGQtPmxlbiA6IDE2OwogCQkJCWlmIChkLT5zeW4pCi0JCQkJCWQtPnN5biA9 IChTeW4gKikgcmVwYWxsb2MoZC0+c3luLCBzaXplb2YoU3luKSAqIGQtPmxlbik7CisJCQkJ CWQtPnN5biA9IHJlcGFsbG9jX2FycmF5KGQtPnN5biwgU3luLCBkLT5sZW4pOwogCQkJCWVs c2UKLQkJCQkJZC0+c3luID0gKFN5biAqKSBwYWxsb2Moc2l6ZW9mKFN5bikgKiBkLT5sZW4p OworCQkJCQlkLT5zeW4gPSBwYWxsb2NfYXJyYXkoU3luLCBkLT5sZW4pOwogCQkJfQogCiAJ CQkvKiBTYXZlIGZpcnN0IHdvcmQgb25seSBpZiB3ZSB3aWxsIG1hdGNoIGl0ICovCkBAIC0x NTAsNyArMTUwLDcgQEAgZHhzeW5faW5pdChQR19GVU5DVElPTl9BUkdTKQogCUxpc3RDZWxs ICAgKmw7CiAJY2hhcgkgICAqZmlsZW5hbWUgPSBOVUxMOwogCi0JZCA9IChEaWN0U3luICop IHBhbGxvYzAoc2l6ZW9mKERpY3RTeW4pKTsKKwlkID0gcGFsbG9jMF9vYmplY3QoRGljdFN5 bik7CiAJZC0+bGVuID0gMDsKIAlkLT5zeW4gPSBOVUxMOwogCWQtPm1hdGNob3JpZyA9IHRy dWU7CkBAIC0yMzUsNyArMjM1LDcgQEAgZHhzeW5fbGV4aXplKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCWNoYXIJICAgKmVuZDsKIAkJaW50CQkJbnN5bnMgPSAwOwogCi0JCXJlcyA9IHBhbGxv YyhzaXplb2YoVFNMZXhlbWUpKTsKKwkJcmVzID0gcGFsbG9jX29iamVjdChUU0xleGVtZSk7 CiAKIAkJcG9zID0gdmFsdWU7CiAJCXdoaWxlICgoc3luID0gZmluZF93b3JkKHBvcywgJmVu ZCkpICE9IE5VTEwpCmRpZmYgLS1naXQgYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMg Yi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKaW5kZXggNzA1NjRhNjhiMTMuLmU5Y2Rh M2M0N2QxIDEwMDY0NAotLS0gYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKKysrIGIv Y29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCkBAIC01MzEsNyArNTMxLDcgQEAgZmlsZUdl dEZvcmVpZ25SZWxTaXplKFBsYW5uZXJJbmZvICpyb290LAogCSAqIHdlIG1pZ2h0IGFzIHdl bGwgZ2V0IGV2ZXJ5dGhpbmcgYW5kIG5vdCBuZWVkIHRvIHJlLWZldGNoIGl0IGxhdGVyIGlu CiAJICogcGxhbm5pbmcuCiAJICovCi0JZmR3X3ByaXZhdGUgPSAoRmlsZUZkd1BsYW5TdGF0 ZSAqKSBwYWxsb2Moc2l6ZW9mKEZpbGVGZHdQbGFuU3RhdGUpKTsKKwlmZHdfcHJpdmF0ZSA9 IHBhbGxvY19vYmplY3QoRmlsZUZkd1BsYW5TdGF0ZSk7CiAJZmlsZUdldE9wdGlvbnMoZm9y ZWlnbnRhYmxlaWQsCiAJCQkJICAgJmZkd19wcml2YXRlLT5maWxlbmFtZSwKIAkJCQkgICAm ZmR3X3ByaXZhdGUtPmlzX3Byb2dyYW0sCkBAIC03MTIsNyArNzEyLDcgQEAgZmlsZUJlZ2lu Rm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkgKiBT YXZlIHN0YXRlIGluIG5vZGUtPmZkd19zdGF0ZS4gIFdlIG11c3Qgc2F2ZSBlbm91Z2ggaW5m b3JtYXRpb24gdG8gY2FsbAogCSAqIEJlZ2luQ29weUZyb20oKSBhZ2Fpbi4KIAkgKi8KLQlm ZXN0YXRlID0gKEZpbGVGZHdFeGVjdXRpb25TdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEZpbGVG ZHdFeGVjdXRpb25TdGF0ZSkpOworCWZlc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEZpbGVGZHdF eGVjdXRpb25TdGF0ZSk7CiAJZmVzdGF0ZS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKIAlmZXN0 YXRlLT5pc19wcm9ncmFtID0gaXNfcHJvZ3JhbTsKIAlmZXN0YXRlLT5vcHRpb25zID0gb3B0 aW9uczsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9naXN0LmMgYi9jb250 cmliL2hzdG9yZS9oc3RvcmVfZ2lzdC5jCmluZGV4IDY5NTE1ZGMzZDNmLi4zNjgyNWVmODY3 YiAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2dpc3QuYworKysgYi9jb250 cmliL2hzdG9yZS9oc3RvcmVfZ2lzdC5jCkBAIC0xNzUsNyArMTc1LDcgQEAgZ2hzdG9yZV9j b21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQkJfQogCQl9CiAKLQkJcmV0dmFsID0gKEdJ U1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxs b2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRl ckdldERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJCQkJ CSAgZW50cnktPm9mZnNldCwKQEAgLTE5NSw3ICsxOTUsNyBAQCBnaHN0b3JlX2NvbXByZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJcmVzID0gZ2hzdG9yZV9hbGxvYyh0cnVlLCBzaWds ZW4sIE5VTEwpOwogCi0JCXJldHZhbCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihH SVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQln aXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyZXMpLAogCQkJCQkgIGVu dHJ5LT5yZWwsIGVudHJ5LT5wYWdlLAogCQkJCQkgIGVudHJ5LT5vZmZzZXQsCkBAIC00Mjks NyArNDI5LDcgQEAgZ2hzdG9yZV9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW1h eG9mZiA9IE9mZnNldE51bWJlck5leHQobWF4b2ZmKTsKIAkvKiBzb3J0IGJlZm9yZSAuLi4g Ki8KLQljb3N0dmVjdG9yID0gKFNQTElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElUQ09T VCkgKiBtYXhvZmYpOworCWNvc3R2ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NULCBt YXhvZmYpOwogCWZvciAoaiA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9 IE9mZnNldE51bWJlck5leHQoaikpCiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3MgPSBq OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX2lvLmMgYi9jb250cmliL2hz dG9yZS9oc3RvcmVfaW8uYwppbmRleCA5YzUzODc3YzRhNS4uNmIwMWYyN2M1YTQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9pby5jCisrKyBiL2NvbnRyaWIvaHN0b3Jl L2hzdG9yZV9pby5jCkBAIC0yMjEsNyArMjIxLDcgQEAgcGFyc2VfaHN0b3JlKEhTUGFyc2Vy ICpzdGF0ZSkKIAlib29sCQllc2NhcGVkID0gZmFsc2U7CiAKIAlzdGF0ZS0+cGxlbiA9IDE2 OwotCXN0YXRlLT5wYWlycyA9IChQYWlycyAqKSBwYWxsb2Moc2l6ZW9mKFBhaXJzKSAqIHN0 YXRlLT5wbGVuKTsKKwlzdGF0ZS0+cGFpcnMgPSBwYWxsb2NfYXJyYXkoUGFpcnMsIHN0YXRl LT5wbGVuKTsKIAlzdGF0ZS0+cGN1ciA9IDA7CiAJc3RhdGUtPnB0ciA9IHN0YXRlLT5iZWdp bjsKIAlzdGF0ZS0+d29yZCA9IE5VTEw7CmRpZmYgLS1naXQgYS9jb250cmliL2ludGFycmF5 L19pbnRfYm9vbC5jIGIvY29udHJpYi9pbnRhcnJheS9faW50X2Jvb2wuYwppbmRleCAyYjJj M2Y0MDI5ZS4uZjQ1ZGY4NmQ2MGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2lu dF9ib29sLmMKKysrIGIvY29udHJpYi9pbnRhcnJheS9faW50X2Jvb2wuYwpAQCAtMTM1LDcg KzEzNSw3IEBAIGdldHRva2VuKFdPUktTVEFURSAqc3RhdGUsIGludDMyICp2YWwpCiBzdGF0 aWMgdm9pZAogcHVzaHF1ZXJ5KFdPUktTVEFURSAqc3RhdGUsIGludDMyIHR5cGUsIGludDMy IHZhbCkKIHsKLQlOT0RFCSAgICp0bXAgPSAoTk9ERSAqKSBwYWxsb2Moc2l6ZW9mKE5PREUp KTsKKwlOT0RFCSAgICp0bXAgPSBwYWxsb2Nfb2JqZWN0KE5PREUpOwogCiAJdG1wLT50eXBl ID0gdHlwZTsKIAl0bXAtPnZhbCA9IHZhbDsKQEAgLTM0Niw3ICszNDYsNyBAQCBnaW5fYm9v bF9jb25zaXN0ZW50KFFVRVJZVFlQRSAqcXVlcnksIGJvb2wgKmNoZWNrKQogCSAqIGV4dHJh Y3Rpb24gY29kZSBpbiBnaW5pbnQ0X3F1ZXJ5ZXh0cmFjdC4KIAkgKi8KIAlnY3YuZmlyc3Qg PSBpdGVtczsKLQlnY3YubWFwcGVkX2NoZWNrID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihi b29sKSAqIHF1ZXJ5LT5zaXplKTsKKwlnY3YubWFwcGVkX2NoZWNrID0gcGFsbG9jX2FycmF5 KGJvb2wsIHF1ZXJ5LT5zaXplKTsKIAlmb3IgKGkgPSAwOyBpIDwgcXVlcnktPnNpemU7IGkr KykKIAl7CiAJCWlmIChpdGVtc1tpXS50eXBlID09IFZBTCkKQEAgLTYxMyw3ICs2MTMsNyBA QCBpbmZpeChJTkZJWCAqaW4sIGJvb2wgZmlyc3QpCiAKIAkJbnJtLmN1cnBvbCA9IGluLT5j dXJwb2w7CiAJCW5ybS5idWZsZW4gPSAxNjsKLQkJbnJtLmN1ciA9IG5ybS5idWYgPSAoY2hh ciAqKSBwYWxsb2Moc2l6ZW9mKGNoYXIpICogbnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIgPSBu cm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5idWZsZW4pOwogCiAJCS8qIGdldCBy aWdodCBvcGVyYW5kICovCiAJCWluZml4KCZucm0sIGZhbHNlKTsKQEAgLTY1MSw3ICs2NTEs NyBAQCBicWFycl9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5ybS5jdXJwb2wgPSBHRVRR VUVSWShxdWVyeSkgKyBxdWVyeS0+c2l6ZSAtIDE7CiAJbnJtLmJ1ZmxlbiA9IDMyOwotCW5y bS5jdXIgPSBucm0uYnVmID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5ybS5i dWZsZW4pOworCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5i dWZsZW4pOwogCSoobnJtLmN1cikgPSAnXDAnOwogCWluZml4KCZucm0sIHRydWUpOwogCmRp ZmYgLS1naXQgYS9jb250cmliL2ludGFycmF5L19pbnRfZ2luLmMgYi9jb250cmliL2ludGFy cmF5L19pbnRfZ2luLmMKaW5kZXggYjc5NThkOGVjYTUuLmM2MDYxNmMzZjc3IDEwMDY0NAot LS0gYS9jb250cmliL2ludGFycmF5L19pbnRfZ2luLmMKKysrIGIvY29udHJpYi9pbnRhcnJh eS9faW50X2dpbi5jCkBAIC00Miw3ICs0Miw3IEBAIGdpbmludDRfcXVlcnlleHRyYWN0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCS8qCiAJCSAqIEV4dHJhY3QgYWxsIHRoZSBWQUwgaXRlbXMg YXMgdGhpbmdzIHdlIHdhbnQgR0lOIHRvIGNoZWNrIGZvci4KIAkJICovCi0JCXJlcyA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIHF1ZXJ5LT5zaXplKTsKKwkJcmVzID0g cGFsbG9jX2FycmF5KERhdHVtLCBxdWVyeS0+c2l6ZSk7CiAJCSpuZW50cmllcyA9IDA7CiAK IAkJZm9yIChpID0gMDsgaSA8IHF1ZXJ5LT5zaXplOyBpKyspCkBAIC02NSw3ICs2NSw3IEBA IGdpbmludDRfcXVlcnlleHRyYWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlpbnQzMgkgICAq YXJyOwogCQkJaW50MzIJCWk7CiAKLQkJCXJlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9m KERhdHVtKSAqICgqbmVudHJpZXMpKTsKKwkJCXJlcyA9IHBhbGxvY19hcnJheShEYXR1bSwg Km5lbnRyaWVzKTsKIAogCQkJYXJyID0gQVJSUFRSKHF1ZXJ5KTsKIAkJCWZvciAoaSA9IDA7 IGkgPCAqbmVudHJpZXM7IGkrKykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvX2lu dF9naXN0LmMgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2lzdC5jCmluZGV4IGEwOWI3ZmE4 MTJjLi45MGNmMTFjMDFhNSAxMDA2NDQKLS0tIGEvY29udHJpYi9pbnRhcnJheS9faW50X2dp c3QuYworKysgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2lzdC5jCkBAIC0xODYsNyArMTg2 LDcgQEAgZ19pbnRfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJIGVycm1zZygi aW5wdXQgYXJyYXkgaXMgdG9vIGJpZyAoJWQgbWF4aW11bSBhbGxvd2VkLCAlZCBjdXJyZW50 KSwgdXNlIGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIiwKIAkJCQkJCQkyICog bnVtX3JhbmdlcyAtIDEsIEFSUk5FTEVNUyhyKSkpKTsKIAotCQlyZXR2YWwgPSBwYWxsb2Mo c2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRS WSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHIpLAogCQkJ CQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAK QEAgLTI3Niw3ICsyNzYsNyBAQCBnX2ludF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQog CQkJCQkgZXJybXNnKCJkYXRhIGlzIHRvbyBzcGFyc2UsIHJlY3JlYXRlIGluZGV4IHVzaW5n IGdpc3RfX2ludGJpZ19vcHMgb3BjbGFzcyBpbnN0ZWFkIikpKTsKIAogCQlyID0gcmVzaXpl X2ludEFycmF5VHlwZShyLCBsZW4pOwotCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RF TlRSWSkpOworCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3Rl bnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdldERhdHVtKHIpLAogCQkJCQkgIGVudHJ5LT5y ZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAJCVBHX1JFVFVSTl9Q T0lOVEVSKHJldHZhbCk7CkBAIC0zMDYsNyArMzA2LDcgQEAgZ19pbnRfZGVjb21wcmVzcyhQ R19GVU5DVElPTl9BUkdTKQogCXsKIAkJaWYgKGluICE9IChBcnJheVR5cGUgKikgRGF0dW1H ZXRQb2ludGVyKGVudHJ5LT5rZXkpKQogCQl7Ci0JCQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9m KEdJU1RFTlRSWSkpOworCQkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwog CQkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0oaW4pLAogCQkJCQkJ ICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwgZW50cnktPm9mZnNldCwgZmFsc2UpOwogCQkJ UEdfUkVUVVJOX1BPSU5URVIocmV0dmFsKTsKQEAgLTMyMSw3ICszMjEsNyBAQCBnX2ludF9k ZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewkJCQkJCQkvKiBub3QgY29tcHJlc3Nl ZCB2YWx1ZSAqLwogCQlpZiAoaW4gIT0gKEFycmF5VHlwZSAqKSBEYXR1bUdldFBvaW50ZXIo ZW50cnktPmtleSkpCiAJCXsKLQkJCXJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZ KSk7CisJCQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCQlnaXN0ZW50 cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShpbiksCiAJCQkJCQkgIGVudHJ5LT5y ZWwsIGVudHJ5LT5wYWdlLCBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAKQEAgLTM1MCw3ICsz NTAsNyBAQCBnX2ludF9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoaW4g IT0gKEFycmF5VHlwZSAqKSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSkpCiAJCXBmcmVl KGluKTsKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCXJldHZhbCA9 IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBv aW50ZXJHZXREYXR1bShyKSwKIAkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLCBlbnRy eS0+b2Zmc2V0LCBmYWxzZSk7CiAKQEAgLTUzNSw3ICs1MzUsNyBAQCBnX2ludF9waWNrc3Bs aXQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKgogCSAqIHNvcnQgZW50cmllcwogCSAqLwotCWNv c3R2ZWN0b3IgPSAoU1BMSVRDT1NUICopIHBhbGxvYyhzaXplb2YoU1BMSVRDT1NUKSAqIG1h eG9mZik7CisJY29zdHZlY3RvciA9IHBhbGxvY19hcnJheShTUExJVENPU1QsIG1heG9mZik7 CiAJZm9yIChpID0gRmlyc3RPZmZzZXROdW1iZXI7IGkgPD0gbWF4b2ZmOyBpID0gT2Zmc2V0 TnVtYmVyTmV4dChpKSkKIAl7CiAJCWNvc3R2ZWN0b3JbaSAtIDFdLnBvcyA9IGk7CmRpZmYg LS1naXQgYS9jb250cmliL2ludGFycmF5L19pbnRiaWdfZ2lzdC5jIGIvY29udHJpYi9pbnRh cnJheS9faW50YmlnX2dpc3QuYwppbmRleCA5Njk5ZmJmM2I0Zi4uMGFmYThhNzNiNjggMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvaW50YXJyYXkvX2ludGJpZ19naXN0LmMKKysrIGIvY29udHJp Yi9pbnRhcnJheS9faW50YmlnX2dpc3QuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIGdfaW50Ymln X2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlwdHIrKzsKIAkJfQogCi0JCXJldHZh bCA9IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFs ID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWws IFBvaW50ZXJHZXREYXR1bShyZXMpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdl LAogCQkJCQkgIGVudHJ5LT5vZmZzZXQsIGZhbHNlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBn X2ludGJpZ19jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQl9CiAKIAkJcmVzID0gX2lu dGJpZ19hbGxvYyh0cnVlLCBzaWdsZW4sIHNpZ24pOwotCQlyZXR2YWwgPSAoR0lTVEVOVFJZ ICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmpl Y3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0 dW0ocmVzKSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBlbnRy eS0+b2Zmc2V0LCBmYWxzZSk7CkBAIC0zODUsNyArMzg1LDcgQEAgZ19pbnRiaWdfcGlja3Nw bGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAltYXhvZmYgPSBPZmZzZXROdW1iZXJOZXh0KG1h eG9mZik7CiAJLyogc29ydCBiZWZvcmUgLi4uICovCi0JY29zdHZlY3RvciA9IChTUExJVENP U1QgKikgcGFsbG9jKHNpemVvZihTUExJVENPU1QpICogbWF4b2ZmKTsKKwljb3N0dmVjdG9y ID0gcGFsbG9jX2FycmF5KFNQTElUQ09TVCwgbWF4b2ZmKTsKIAlmb3IgKGogPSBGaXJzdE9m ZnNldE51bWJlcjsgaiA8PSBtYXhvZmY7IGogPSBPZmZzZXROdW1iZXJOZXh0KGopKQogCXsK IAkJY29zdHZlY3RvcltqIC0gMV0ucG9zID0gajsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvanNv bmJfcGxwZXJsL2pzb25iX3BscGVybC5jIGIvY29udHJpYi9qc29uYl9wbHBlcmwvanNvbmJf cGxwZXJsLmMKaW5kZXggYzAyZTJkNDFhZjEuLmE3MDhkOWZkODJlIDEwMDY0NAotLS0gYS9j b250cmliL2pzb25iX3BscGVybC9qc29uYl9wbHBlcmwuYworKysgYi9jb250cmliL2pzb25i X3BscGVybC9qc29uYl9wbHBlcmwuYwpAQCAtMjY2LDcgKzI2Niw3IEBAIFNWX3RvX0pzb25i VmFsdWUoU1YgKmluLCBKc29uYlBhcnNlU3RhdGUgKipqc29uYl9zdGF0ZSwgYm9vbCBpc19l bGVtKQogCS8qIFB1c2ggcmVzdWx0IGludG8gJ2pzb25iX3N0YXRlJyB1bmxlc3MgaXQgaXMg YSByYXcgc2NhbGFyLiAqLwogCXJldHVybiAqanNvbmJfc3RhdGUKIAkJPyBwdXNoSnNvbmJW YWx1ZShqc29uYl9zdGF0ZSwgaXNfZWxlbSA/IFdKQl9FTEVNIDogV0pCX1ZBTFVFLCAmb3V0 KQotCQk6IG1lbWNweShwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKSwgJm91dCwgc2l6ZW9m KEpzb25iVmFsdWUpKTsKKwkJOiBtZW1jcHkocGFsbG9jX29iamVjdChKc29uYlZhbHVlKSwg Jm91dCwgc2l6ZW9mKEpzb25iVmFsdWUpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9jb250cmli L2pzb25iX3BscHl0aG9uL2pzb25iX3BscHl0aG9uLmMgYi9jb250cmliL2pzb25iX3BscHl0 aG9uL2pzb25iX3BscHl0aG9uLmMKaW5kZXggOTM4MzYxNWFiYmYuLjI4OTJlODhjNThiIDEw MDY0NAotLS0gYS9jb250cmliL2pzb25iX3BscHl0aG9uL2pzb25iX3BscHl0aG9uLmMKKysr IGIvY29udHJpYi9qc29uYl9wbHB5dGhvbi9qc29uYl9wbHB5dGhvbi5jCkBAIC00MTksNyAr NDE5LDcgQEAgUEx5T2JqZWN0X1RvSnNvbmJWYWx1ZShQeU9iamVjdCAqb2JqLCBKc29uYlBh cnNlU3RhdGUgKipqc29uYl9zdGF0ZSwgYm9vbCBpc19lbGUKIAkJCXJldHVybiBQTHlNYXBw aW5nX1RvSnNvbmJWYWx1ZShvYmosIGpzb25iX3N0YXRlKTsKIAl9CiAKLQlvdXQgPSBwYWxs b2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKwlvdXQgPSBwYWxsb2Nfb2JqZWN0KEpzb25iVmFs dWUpOwogCiAJaWYgKG9iaiA9PSBQeV9Ob25lKQogCQlvdXQtPnR5cGUgPSBqYnZOdWxsOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jIGIvY29udHJpYi9sdHJl ZS9fbHRyZWVfZ2lzdC5jCmluZGV4IDMwZDUxNmU2MGJjLi5jZWI5MmE2MzA0ZCAxMDA2NDQK LS0tIGEvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jCisrKyBiL2NvbnRyaWIvbHRyZWUv X2x0cmVlX2dpc3QuYwpAQCAtNzksNyArNzksNyBAQCBfbHRyZWVfY29tcHJlc3MoUEdfRlVO Q1RJT05fQVJHUykKIAkJCWl0ZW0gPSBORVhUVkFMKGl0ZW0pOwogCQl9CiAKLQkJcmV0dmFs ID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwg PSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwg UG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2Us CiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtOTcsNyArOTcsNyBAQCBfbHRy ZWVfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJfQogCiAJCWtleSA9IGx0cmVlX2dp c3RfYWxsb2ModHJ1ZSwgc2lnbiwgc2lnbGVuLCBOVUxMLCBOVUxMKTsKLQkJcmV0dmFsID0g KEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlyZXR2YWwgPSBw YWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9p bnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCiAJ CQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMzEwLDcgKzMxMCw3IEBAIF9sdHJl ZV9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW1heG9mZiA9IE9mZnNldE51bWJl ck5leHQobWF4b2ZmKTsKIAkvKiBzb3J0IGJlZm9yZSAuLi4gKi8KLQljb3N0dmVjdG9yID0g KFNQTElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElUQ09TVCkgKiBtYXhvZmYpOworCWNv c3R2ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NULCBtYXhvZmYpOwogCWZvciAoaiA9 IEZpcnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5leHQo aikpCiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3MgPSBqOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9sdHJlZS9fbHRyZWVfb3AuYyBiL2NvbnRyaWIvbHRyZWUvX2x0cmVlX29wLmMKaW5k ZXggYjRhODA5NzMyOGQuLjRkNTRhZDM0YmI2IDEwMDY0NAotLS0gYS9jb250cmliL2x0cmVl L19sdHJlZV9vcC5jCisrKyBiL2NvbnRyaWIvbHRyZWUvX2x0cmVlX29wLmMKQEAgLTMwNyw3 ICszMDcsNyBAQCBfbGNhKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKIAkJCQkgZXJybXNnKCJhcnJheSBtdXN0IG5v dCBjb250YWluIG51bGxzIikpKTsKIAotCWEgPSAobHRyZWUgKiopIHBhbGxvYyhzaXplb2Yo bHRyZWUgKikgKiBudW0pOworCWEgPSBwYWxsb2NfYXJyYXkobHRyZWUgKiwgbnVtKTsKIAl3 aGlsZSAobnVtID4gMCkKIAl7CiAJCW51bS0tOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9sdHJl ZS9sdHJlZV9naXN0LmMgYi9jb250cmliL2x0cmVlL2x0cmVlX2dpc3QuYwppbmRleCA5MzJm NjliZmYyZC4uYmI3ZjQ2MzQ3MjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbHRyZWUvbHRyZWVf Z2lzdC5jCisrKyBiL2NvbnRyaWIvbHRyZWUvbHRyZWVfZ2lzdC5jCkBAIC0xMDEsNyArMTAx LDcgQEAgbHRyZWVfY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJbHRyZWUJICAgKnZh bCA9IERhdHVtR2V0THRyZWVQKGVudHJ5LT5rZXkpOwogCQlsdHJlZV9naXN0ICprZXkgPSBs dHJlZV9naXN0X2FsbG9jKGZhbHNlLCBOVUxMLCAwLCB2YWwsIDApOwogCi0JCXJldHZhbCA9 IChHSVNURU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0g cGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBv aW50ZXJHZXREYXR1bShrZXkpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLAog CQkJCQkgIGVudHJ5LT5vZmZzZXQsIGZhbHNlKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBsdHJl ZV9kZWNvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoUG9pbnRlckdldERhdHVt KGtleSkgIT0gZW50cnktPmtleSkKIAl7Ci0JCUdJU1RFTlRSWSAgKnJldHZhbCA9IChHSVNU RU5UUlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJR0lTVEVOVFJZICAqcmV0 dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOwogCiAJCWdpc3RlbnRyeWluaXQoKnJl dHZhbCwgUG9pbnRlckdldERhdHVtKGtleSksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnkt PnBhZ2UsCkBAIC0zMTgsNyArMzE4LDcgQEAgbHRyZWVfcGlja3NwbGl0KFBHX0ZVTkNUSU9O X0FSR1MpCiAJdi0+c3BsX3JpZ2h0ID0gKE9mZnNldE51bWJlciAqKSBwYWxsb2MobmJ5dGVz KTsKIAl2LT5zcGxfbmxlZnQgPSAwOwogCXYtPnNwbF9ucmlnaHQgPSAwOwotCWFycmF5ID0g KFJJWCAqKSBwYWxsb2Moc2l6ZW9mKFJJWCkgKiAobWF4b2ZmICsgMSkpOworCWFycmF5ID0g cGFsbG9jX2FycmF5KFJJWCwgbWF4b2ZmICsgMSk7CiAKIAkvKiBjb3B5IHRoZSBkYXRhIGlu dG8gUklYZXMsIGFuZCBzb3J0IHRoZSBSSVhlcyAqLwogCWZvciAoaiA9IEZpcnN0T2Zmc2V0 TnVtYmVyOyBqIDw9IG1heG9mZjsgaiA9IE9mZnNldE51bWJlck5leHQoaikpCmRpZmYgLS1n aXQgYS9jb250cmliL2x0cmVlL2x0cmVlX2lvLmMgYi9jb250cmliL2x0cmVlL2x0cmVlX2lv LmMKaW5kZXggYjU0YTE1ZDZjNjguLjU5YzQ0NjJkZjgwIDEwMDY0NAotLS0gYS9jb250cmli L2x0cmVlL2x0cmVlX2lvLmMKKysrIGIvY29udHJpYi9sdHJlZS9sdHJlZV9pby5jCkBAIC02 NSw3ICs2NSw3IEBAIHBhcnNlX2x0cmVlKGNvbnN0IGNoYXIgKmJ1Ziwgc3RydWN0IE5vZGUg KmVzY29udGV4dCkKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVE RUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBsdHJlZSBsYWJlbHMgKCVkKSBleGNlZWRz IHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVkKSIsCiAJCQkJCQludW0gKyAxLCBMVFJFRV9NQVhf TEVWRUxTKSkpOwotCWxpc3QgPSBscHRyID0gKG5vZGVpdGVtICopIHBhbGxvYyhzaXplb2Yo bm9kZWl0ZW0pICogKG51bSArIDEpKTsKKwlsaXN0ID0gbHB0ciA9IHBhbGxvY19hcnJheShu b2RlaXRlbSwgbnVtICsgMSk7CiAJcHRyID0gYnVmOwogCXdoaWxlICgqcHRyKQogCXsKQEAg LTMxOCwxNCArMzE4LDE0IEBAIHBhcnNlX2xxdWVyeShjb25zdCBjaGFyICpidWYsIHN0cnVj dCBOb2RlICplc2NvbnRleHQpCiAJCQljYXNlIExRUFJTX1dBSVRMRVZFTDoKIAkJCQlpZiAo SVNMQUJFTChwdHIpKQogCQkJCXsKLQkJCQkJR0VUVkFSKGN1cnFsZXZlbCkgPSBscHRyID0g KG5vZGVpdGVtICopIHBhbGxvYzAoc2l6ZW9mKG5vZGVpdGVtKSAqIChudW1PUiArIDEpKTsK KwkJCQkJR0VUVkFSKGN1cnFsZXZlbCkgPSBscHRyID0gcGFsbG9jMF9hcnJheShub2RlaXRl bSwgbnVtT1IgKyAxKTsKIAkJCQkJbHB0ci0+c3RhcnQgPSBwdHI7CiAJCQkJCXN0YXRlID0g TFFQUlNfV0FJVERFTElNOwogCQkJCQljdXJxbGV2ZWwtPm51bXZhciA9IDE7CiAJCQkJfQog CQkJCWVsc2UgaWYgKHRfaXNlcShwdHIsICchJykpCiAJCQkJewotCQkJCQlHRVRWQVIoY3Vy cWxldmVsKSA9IGxwdHIgPSAobm9kZWl0ZW0gKikgcGFsbG9jMChzaXplb2Yobm9kZWl0ZW0p ICogKG51bU9SICsgMSkpOworCQkJCQlHRVRWQVIoY3VycWxldmVsKSA9IGxwdHIgPSBwYWxs b2MwX2FycmF5KG5vZGVpdGVtLCBudW1PUiArIDEpOwogCQkJCQlscHRyLT5zdGFydCA9IHB0 ciArIDE7CiAJCQkJCWxwdHItPndsZW4gPSAtMTsJLyogY29tcGVuc2F0ZSBmb3IgY291bnRp bmcgISBiZWxvdyAqLwogCQkJCQlzdGF0ZSA9IExRUFJTX1dBSVRERUxJTTsKZGlmZiAtLWdp dCBhL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYyBiL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3Au YwppbmRleCBlM2E4NGRiMzdmZi4uYzFmYzc3ZmM4MDQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv bHRyZWUvbHRyZWVfb3AuYworKysgYi9jb250cmliL2x0cmVlL2x0cmVlX29wLmMKQEAgLTU2 Niw3ICs1NjYsNyBAQCBsY2EoUEdfRlVOQ1RJT05fQVJHUykKIAlsdHJlZQkgICoqYSwKIAkJ CSAgICpyZXM7CiAKLQlhID0gKGx0cmVlICoqKSBwYWxsb2Moc2l6ZW9mKGx0cmVlICopICog ZmNpbmZvLT5uYXJncyk7CisJYSA9IHBhbGxvY19hcnJheShsdHJlZSAqLCBmY2luZm8tPm5h cmdzKTsKIAlmb3IgKGkgPSAwOyBpIDwgZmNpbmZvLT5uYXJnczsgaSsrKQogCQlhW2ldID0g UEdfR0VUQVJHX0xUUkVFX1AoaSk7CiAJcmVzID0gbGNhX2lubmVyKGEsIChpbnQpIGZjaW5m by0+bmFyZ3MpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9sdHJlZS9sdHh0cXVlcnlfaW8uYyBi L2NvbnRyaWIvbHRyZWUvbHR4dHF1ZXJ5X2lvLmMKaW5kZXggZWMzMzE2MDc3OTMuLjNhMmFh MjIzYzNlIDEwMDY0NAotLS0gYS9jb250cmliL2x0cmVlL2x0eHRxdWVyeV9pby5jCisrKyBi L2NvbnRyaWIvbHRyZWUvbHR4dHF1ZXJ5X2lvLmMKQEAgLTE1NCw3ICsxNTQsNyBAQCBnZXR0 b2tlbl9xdWVyeShRUFJTX1NUQVRFICpzdGF0ZSwgaW50MzIgKnZhbCwgaW50MzIgKmxlbnZh bCwgY2hhciAqKnN0cnZhbCwgdWludAogc3RhdGljIGJvb2wKIHB1c2hxdWVyeShRUFJTX1NU QVRFICpzdGF0ZSwgaW50MzIgdHlwZSwgaW50MzIgdmFsLCBpbnQzMiBkaXN0YW5jZSwgaW50 MzIgbGVudmFsLCB1aW50MTYgZmxhZykKIHsKLQlOT0RFCSAgICp0bXAgPSAoTk9ERSAqKSBw YWxsb2Moc2l6ZW9mKE5PREUpKTsKKwlOT0RFCSAgICp0bXAgPSBwYWxsb2Nfb2JqZWN0KE5P REUpOwogCiAJdG1wLT50eXBlID0gdHlwZTsKIAl0bXAtPnZhbCA9IHZhbDsKQEAgLTU0Myw3 ICs1NDMsNyBAQCBpbmZpeChJTkZJWCAqaW4sIGJvb2wgZmlyc3QpCiAJCW5ybS5jdXJwb2wg PSBpbi0+Y3VycG9sOwogCQlucm0ub3AgPSBpbi0+b3A7CiAJCW5ybS5idWZsZW4gPSAxNjsK LQkJbnJtLmN1ciA9IG5ybS5idWYgPSAoY2hhciAqKSBwYWxsb2Moc2l6ZW9mKGNoYXIpICog bnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIs IG5ybS5idWZsZW4pOwogCiAJCS8qIGdldCByaWdodCBvcGVyYW5kICovCiAJCWluZml4KCZu cm0sIGZhbHNlKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBsdHh0cV9vdXQoUEdfRlVOQ1RJT05f QVJHUykKIAogCW5ybS5jdXJwb2wgPSBHRVRRVUVSWShxdWVyeSk7CiAJbnJtLmJ1ZmxlbiA9 IDMyOwotCW5ybS5jdXIgPSBucm0uYnVmID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFy KSAqIG5ybS5idWZsZW4pOworCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNo YXIsIG5ybS5idWZsZW4pOwogCSoobnJtLmN1cikgPSAnXDAnOwogCW5ybS5vcCA9IEdFVE9Q RVJBTkQocXVlcnkpOwogCWluZml4KCZucm0sIHRydWUpOwpAQCAtNjE1LDcgKzYxNSw3IEBA IGx0eHRxX3NlbmQoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5ybS5jdXJwb2wgPSBHRVRRVUVS WShxdWVyeSk7CiAJbnJtLmJ1ZmxlbiA9IDMyOwotCW5ybS5jdXIgPSBucm0uYnVmID0gKGNo YXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5ybS5idWZsZW4pOworCW5ybS5jdXIgPSBu cm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5idWZsZW4pOwogCSoobnJtLmN1cikg PSAnXDAnOwogCW5ybS5vcCA9IEdFVE9QRVJBTkQocXVlcnkpOwogCWluZml4KCZucm0sIHRy dWUpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9icmluZnVuY3MuYyBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKaW5kZXggOTkwYzk2NWFhOTIuLmM1Y2Vi Y2QyODBiIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5jCisr KyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKQEAgLTE4Niw3ICsxODYsNyBA QCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBJbml0aWFsaXplIG91 dHB1dCBmdW5jdGlvbnMgZm9yIGFsbCBpbmRleGVkIGRhdGF0eXBlczsgc2ltcGxpZmllcwog CSAqIGNhbGxpbmcgdGhlbSBsYXRlci4KIAkgKi8KLQljb2x1bW5zID0gcGFsbG9jKHNpemVv ZihicmluX2NvbHVtbl9zdGF0ZSAqKSAqIFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWwpLT5u YXR0cyk7CisJY29sdW1ucyA9IHBhbGxvY19hcnJheShicmluX2NvbHVtbl9zdGF0ZSAqLCBS ZWxhdGlvbkdldERlc2NyKGluZGV4UmVsKS0+bmF0dHMpOyAKIAlmb3IgKGF0dG5vID0gMTsg YXR0bm8gPD0gYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBhdHRubysrKQogCXsKIAkJT2lk CQkJb3V0cHV0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNz LmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwppbmRleCAyZTY3YzlhZGY1 YS4uN2ZmNmRjMDg5MzQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVm dW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jCkBAIC0zNzks NyArMzc5LDcgQEAgYnRfbXVsdGlfcGFnZV9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQogCQkv KiBTYXZlIGFyZ3VtZW50cyBmb3IgcmV1c2UgKi8KIAkJbWN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0gcGFs bG9jKHNpemVvZih1YV9wYWdlX3N0YXRzKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVjdCh1 YV9wYWdlX3N0YXRzKTsKIAogCQl1YXJncy0+cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bCk7CiAJCXVhcmdzLT5ibGtubyA9IGJsa25vOwpAQCAtNjYwLDcgKzY2MCw3IEBAIGJ0X3Bh Z2VfaXRlbXNfaW50ZXJuYWwoUEdfRlVOQ1RJT05fQVJHUywgZW51bSBwYWdlaW5zcGVjdF92 ZXJzaW9uIGV4dF92ZXJzaW9uKQogCQkgKi8KIAkJbWN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0gcGFsbG9j KHNpemVvZih1YV9wYWdlX2l0ZW1zKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVjdCh1YV9w YWdlX2l0ZW1zKTsKIAogCQl1YXJncy0+cGFnZSA9IHBhbGxvYyhCTENLU1opOwogCQltZW1j cHkodWFyZ3MtPnBhZ2UsIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgQkxDS1NaKTsKQEAgLTc1 Miw3ICs3NTIsNyBAQCBidF9wYWdlX2l0ZW1zX2J5dGVhKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CWZjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKIAkJbWN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhmY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOwogCi0JCXVhcmdzID0gcGFs bG9jKHNpemVvZih1YV9wYWdlX2l0ZW1zKSk7CisJCXVhcmdzID0gcGFsbG9jX29iamVjdCh1 YV9wYWdlX2l0ZW1zKTsKIAogCQl1YXJncy0+cGFnZSA9IGdldF9wYWdlX2Zyb21fcmF3KHJh d19wYWdlKTsKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5jcy5j IGIvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5jcy5jCmluZGV4IDA5YTkwOTU3MDgxLi5m NjE2OGQ4ZTg5NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5jcy5j CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYwpAQCAtMjIyLDcgKzIyMiw3 IEBAIGdpbl9sZWFmcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCSAgIG9w YXEtPmZsYWdzLAogCQkJCQkJCSAgIChHSU5fREFUQSB8IEdJTl9MRUFGIHwgR0lOX0NPTVBS RVNTRUQpKSkpOwogCi0JCWludGVyX2NhbGxfZGF0YSA9IHBhbGxvYyhzaXplb2YoZ2luX2xl YWZwYWdlX2l0ZW1zX3N0YXRlKSk7CisJCWludGVyX2NhbGxfZGF0YSA9IHBhbGxvY19vYmpl Y3QoZ2luX2xlYWZwYWdlX2l0ZW1zX3N0YXRlKTsKIAogCQkvKiBCdWlsZCBhIHR1cGxlIGRl c2NyaXB0b3IgZm9yIG91ciByZXN1bHQgdHlwZSAqLwogCQlpZiAoZ2V0X2NhbGxfcmVzdWx0 X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQpk aWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYyBiL2NvbnRyaWIv cGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKaW5kZXggY2E3ZjFmNmU3NDEuLjBlODk4ODg5ZmE1 IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2hhc2hmdW5jcy5jCisrKyBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBoYXNo X3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlwYWdlID0gdmVyaWZ5X2hhc2hf cGFnZShyYXdfcGFnZSwgTEhfQlVDS0VUX1BBR0UgfCBMSF9PVkVSRkxPV19QQUdFKTsKIAot CQl1YXJncyA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IHVzZXJfYXJncykpOworCQl1YXJncyA9 IHBhbGxvY19vYmplY3Qoc3RydWN0IHVzZXJfYXJncyk7CiAKIAkJdWFyZ3MtPnBhZ2UgPSBw YWdlOwogCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2hlYXBmdW5jcy5jIGIv Y29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVuY3MuYwppbmRleCBjMTNmMDc2NTVjNC4uYjM4 YzRkMTU5ZjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMK KysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVuY3MuYwpAQCAtMTU0LDcgKzE1NCw3 IEBAIGhlYXBfcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQlmY3R4ID0gU1JGX0ZJ UlNUQ0FMTF9JTklUKCk7CiAJCW1jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZmN0eC0+ bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAotCQlpbnRlcl9jYWxsX2RhdGEgPSBwYWxsb2Mo c2l6ZW9mKGhlYXBfcGFnZV9pdGVtc19zdGF0ZSkpOworCQlpbnRlcl9jYWxsX2RhdGEgPSBw YWxsb2Nfb2JqZWN0KGhlYXBfcGFnZV9pdGVtc19zdGF0ZSk7CiAKIAkJLyogQnVpbGQgYSB0 dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KIAkJaWYgKGdldF9jYWxs X3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBP U0lURSkKQEAgLTU1Myw3ICs1NTMsNyBAQCBoZWFwX3R1cGxlX2luZm9tYXNrX2ZsYWdzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyogYnVpbGQgc2V0IG9mIHJhdyBmbGFncyAqLwot CWZsYWdzID0gKERhdHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIGJpdGNudCk7CisJ ZmxhZ3MgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBiaXRjbnQpOyAKIAogCS8qIGRlY29kZSB0 X2luZm9tYXNrICovCiAJaWYgKCh0X2luZm9tYXNrICYgSEVBUF9IQVNOVUxMKSAhPSAwKQpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19vdmVyZXhwbGFpbi9wZ19vdmVyZXhwbGFpbi5jIGIv Y29udHJpYi9wZ19vdmVyZXhwbGFpbi9wZ19vdmVyZXhwbGFpbi5jCmluZGV4IGJkNzBiNmQ5 ZDVlLi5mY2RjMTcwMTJkYSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19vdmVyZXhwbGFpbi9w Z19vdmVyZXhwbGFpbi5jCisrKyBiL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4 cGxhaW4uYwpAQCAtOTUsNyArOTUsNyBAQCBvdmVyZXhwbGFpbl9lbnN1cmVfb3B0aW9ucyhF eHBsYWluU3RhdGUgKmVzKQogCiAJaWYgKG9wdGlvbnMgPT0gTlVMTCkKIAl7Ci0JCW9wdGlv bnMgPSBwYWxsb2MwKHNpemVvZihvdmVyZXhwbGFpbl9vcHRpb25zKSk7CisJCW9wdGlvbnMg PSBwYWxsb2MwX29iamVjdChvdmVyZXhwbGFpbl9vcHRpb25zKTsKIAkJU2V0RXhwbGFpbkV4 dGVuc2lvblN0YXRlKGVzLCBlc19leHRlbnNpb25faWQsIG9wdGlvbnMpOwogCX0KIApkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMgYi9jb250cmliL3BnX3RyZ20v dHJnbV9naW4uYwppbmRleCAyOWE1MmVhYzdhZi4uMzRhOTFjZjk3ODkgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCisrKyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X2dpbi5jCkBAIC01MSw3ICs1MSw3IEBAIGdpbl9leHRyYWN0X3ZhbHVlX3RyZ20oUEdfRlVO Q1RJT05fQVJHUykKIAkJaW50MzIJCWk7CiAKIAkJKm5lbnRyaWVzID0gdHJnbGVuOwotCQll bnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogdHJnbGVuKTsKKwkJ ZW50cmllcyA9IHBhbGxvY19hcnJheShEYXR1bSwgdHJnbGVuKTsKIAogCQlwdHIgPSBHRVRB UlIodHJnKTsKIAkJZm9yIChpID0gMDsgaSA8IHRyZ2xlbjsgaSsrKQpAQCAtMTIzLDcgKzEy Myw3IEBAIGdpbl9leHRyYWN0X3F1ZXJ5X3RyZ20oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkg KiBQb2ludGVycywgYnV0IHdlIGp1c3QgcHV0IHRoZSBzYW1lIHZhbHVlIGluIGVhY2ggZWxl bWVudC4KIAkJCQkgKi8KIAkJCQl0cmdsZW4gPSBBUlJORUxFTSh0cmcpOwotCQkJCSpleHRy YV9kYXRhID0gKFBvaW50ZXIgKikgcGFsbG9jKHNpemVvZihQb2ludGVyKSAqIHRyZ2xlbik7 CisJCQkJKmV4dHJhX2RhdGEgPSBwYWxsb2NfYXJyYXkoUG9pbnRlciwgdHJnbGVuKTsKIAkJ CQlmb3IgKGkgPSAwOyBpIDwgdHJnbGVuOyBpKyspCiAJCQkJCSgqZXh0cmFfZGF0YSlbaV0g PSAoUG9pbnRlcikgZ3JhcGg7CiAJCQl9CkBAIC0xNDYsNyArMTQ2LDcgQEAgZ2luX2V4dHJh Y3RfcXVlcnlfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKHRyZ2xlbiA+IDApCiAJ ewotCQllbnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogdHJnbGVu KTsKKwkJZW50cmllcyA9IHBhbGxvY19hcnJheShEYXR1bSwgdHJnbGVuKTsKIAkJcHRyID0g R0VUQVJSKHRyZyk7CiAJCWZvciAoaSA9IDA7IGkgPCB0cmdsZW47IGkrKykKIAkJewpAQCAt MzM5LDcgKzMzOSw3IEBAIGdpbl90cmdtX3RyaWNvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkgKiBmdW5jdGlvbiwgcHJvbW90aW5nIGFsbCBHSU5fTUFZQkUga2V5cyB0byBH SU5fVFJVRSB3aWxsCiAJCQkJICogZ2l2ZSBhIGNvbnNlcnZhdGl2ZSByZXN1bHQuCiAJCQkJ ICovCi0JCQkJYm9vbGNoZWNrID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIG5r ZXlzKTsKKwkJCQlib29sY2hlY2sgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmtleXMpOwogCQkJ CWZvciAoaSA9IDA7IGkgPCBua2V5czsgaSsrKQogCQkJCQlib29sY2hlY2tbaV0gPSAoY2hl Y2tbaV0gIT0gR0lOX0ZBTFNFKTsKIAkJCQlpZiAoIXRyaWdyYW1zTWF0Y2hHcmFwaCgoVHJn bVBhY2tlZEdyYXBoICopIGV4dHJhX2RhdGFbMF0sCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3RyZ20vdHJnbV9naXN0LmMgYi9jb250cmliL3BnX3RyZ20vdHJnbV9naXN0LmMKaW5kZXgg NWJhODk1MjE3YjAuLjVjN2RlYjEwM2E2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20v dHJnbV9naXN0LmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCkBAIC0xMjQs NyArMTI0LDcgQEAgZ3RyZ21fY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJdGV4dAkg ICAqdmFsID0gRGF0dW1HZXRUZXh0UFAoZW50cnktPmtleSk7CiAKIAkJcmVzID0gZ2VuZXJh dGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FOWV9FWEhEUih2YWwpKTsKLQkJ cmV0dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQly ZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJl dHZhbCwgUG9pbnRlckdldERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnkt PnBhZ2UsCiAJCQkJCSAgZW50cnktPm9mZnNldCwgZmFsc2UpOwpAQCAtMTQzLDcgKzE0Myw3 IEBAIGd0cmdtX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCX0KIAogCQlyZXMgPSBn dHJnbV9hbGxvYyh0cnVlLCBzaWdsZW4sIHNpZ24pOwotCQlyZXR2YWwgPSAoR0lTVEVOVFJZ ICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmpl Y3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0 dW0ocmVzKSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBlbnRy eS0+b2Zmc2V0LCBmYWxzZSk7CkBAIC0xNjMsNyArMTYzLDcgQEAgZ3RyZ21fZGVjb21wcmVz cyhQR19GVU5DVElPTl9BUkdTKQogCWlmIChrZXkgIT0gKHRleHQgKikgRGF0dW1HZXRQb2lu dGVyKGVudHJ5LT5rZXkpKQogCXsKIAkJLyogbmVlZCB0byBwYXNzIGJhY2sgdGhlIGRlY29t cHJlc3NlZCBpdGVtICovCi0JCXJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7 CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5p dCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0oa2V5KSwKIAkJCQkJICBlbnRyeS0+cmVsLCBl bnRyeS0+cGFnZSwgZW50cnktPm9mZnNldCwgZW50cnktPmxlYWZrZXkpOwogCQlQR19SRVRV Uk5fUE9JTlRFUihyZXR2YWwpOwpAQCAtODIwLDcgKzgyMCw3IEBAIGd0cmdtX3BpY2tzcGxp dChQR19GVU5DVElPTl9BUkdTKQogCVNQTElUQ09TVCAgKmNvc3R2ZWN0b3I7CiAKIAkvKiBj YWNoZSB0aGUgc2lnbiBkYXRhIGZvciBlYWNoIGV4aXN0aW5nIGl0ZW0gKi8KLQljYWNoZSA9 IChDQUNIRVNJR04gKikgcGFsbG9jKHNpemVvZihDQUNIRVNJR04pICogKG1heG9mZiArIDEp KTsKKwljYWNoZSA9IHBhbGxvY19hcnJheShDQUNIRVNJR04sIG1heG9mZiArIDEpOwogCWNh Y2hlX3NpZ24gPSBwYWxsb2Moc2lnbGVuICogKG1heG9mZiArIDEpKTsKIAogCWZvciAoayA9 IEZpcnN0T2Zmc2V0TnVtYmVyOyBrIDw9IG1heG9mZjsgayA9IE9mZnNldE51bWJlck5leHQo aykpCkBAIC04NjQsNyArODY0LDcgQEAgZ3RyZ21fcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJdW5pb25fciA9IEdFVFNJR04oZGF0dW1fcik7CiAKIAkvKiBzb3J0IGJlZm9yZSAu Li4gKi8KLQljb3N0dmVjdG9yID0gKFNQTElUQ09TVCAqKSBwYWxsb2Moc2l6ZW9mKFNQTElU Q09TVCkgKiBtYXhvZmYpOworCWNvc3R2ZWN0b3IgPSBwYWxsb2NfYXJyYXkoU1BMSVRDT1NU LCBtYXhvZmYpOwogCWZvciAoaiA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBqIDw9IG1heG9mZjsg aiA9IE9mZnNldE51bWJlck5leHQoaikpCiAJewogCQljb3N0dmVjdG9yW2ogLSAxXS5wb3Mg PSBqOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMgYi9jb250 cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYwppbmRleCAxNDlmOWViMjU5Yy4uMWE3Njc5NGM0 MjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCisrKyBiL2Nv bnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCkBAIC03OTEsMTIgKzc5MSwxMSBAQCBnZXRD b2xvckluZm8ocmVnZXhfdCAqcmVnZXgsIFRyZ21ORkEgKnRyZ21ORkEpCiAKIAkJY29sb3JJ bmZvLT5leHBhbmRhYmxlID0gdHJ1ZTsKIAkJY29sb3JJbmZvLT5jb250YWluc05vbldvcmQg PSBmYWxzZTsKLQkJY29sb3JJbmZvLT53b3JkQ2hhcnMgPSAodHJnbV9tYl9jaGFyICopCi0J CQlwYWxsb2Moc2l6ZW9mKHRyZ21fbWJfY2hhcikgKiBjaGFyc0NvdW50KTsKKwkJY29sb3JJ bmZvLT53b3JkQ2hhcnMgPSBwYWxsb2NfYXJyYXkodHJnbV9tYl9jaGFyLCBjaGFyc0NvdW50 KTsKIAkJY29sb3JJbmZvLT53b3JkQ2hhcnNDb3VudCA9IDA7CiAKIAkJLyogRXh0cmFjdCBh bGwgdGhlIGNoYXJzIGluIHRoaXMgY29sb3IgKi8KLQkJY2hhcnMgPSAocGdfd2NoYXIgKikg cGFsbG9jKHNpemVvZihwZ193Y2hhcikgKiBjaGFyc0NvdW50KTsKKwkJY2hhcnMgPSBwYWxs b2NfYXJyYXkocGdfd2NoYXIsIGNoYXJzQ291bnQpOwogCQlwZ19yZWdfZ2V0Y2hhcmFjdGVy cyhyZWdleCwgaSwgY2hhcnMsIGNoYXJzQ291bnQpOwogCiAJCS8qCkBAIC0xMDYzLDcgKzEw NjIsNyBAQCBhZGRLZXkoVHJnbU5GQSAqdHJnbU5GQSwgVHJnbVN0YXRlICpzdGF0ZSwgVHJn bVN0YXRlS2V5ICprZXkpCiAJICogb3JpZ2luYWwgTkZBLgogCSAqLwogCWFyY3NDb3VudCA9 IHBnX3JlZ19nZXRudW1vdXRhcmNzKHRyZ21ORkEtPnJlZ2V4LCBrZXktPm5zdGF0ZSk7Ci0J YXJjcyA9IChyZWdleF9hcmNfdCAqKSBwYWxsb2Moc2l6ZW9mKHJlZ2V4X2FyY190KSAqIGFy Y3NDb3VudCk7CisJYXJjcyA9IHBhbGxvY19hcnJheShyZWdleF9hcmNfdCwgYXJjc0NvdW50 KTsKIAlwZ19yZWdfZ2V0b3V0YXJjcyh0cmdtTkZBLT5yZWdleCwga2V5LT5uc3RhdGUsIGFy Y3MsIGFyY3NDb3VudCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYXJjc0NvdW50OyBpKyspCkBA IC0xMTc3LDcgKzExNzYsNyBAQCBhZGRLZXkoVHJnbU5GQSAqdHJnbU5GQSwgVHJnbVN0YXRl ICpzdGF0ZSwgVHJnbVN0YXRlS2V5ICprZXkpCiBzdGF0aWMgdm9pZAogYWRkS2V5VG9RdWV1 ZShUcmdtTkZBICp0cmdtTkZBLCBUcmdtU3RhdGVLZXkgKmtleSkKIHsKLQlUcmdtU3RhdGVL ZXkgKmtleUNvcHkgPSAoVHJnbVN0YXRlS2V5ICopIHBhbGxvYyhzaXplb2YoVHJnbVN0YXRl S2V5KSk7CisJVHJnbVN0YXRlS2V5ICprZXlDb3B5ID0gcGFsbG9jX29iamVjdChUcmdtU3Rh dGVLZXkpOwogCiAJbWVtY3B5KGtleUNvcHksIGtleSwgc2l6ZW9mKFRyZ21TdGF0ZUtleSkp OwogCXRyZ21ORkEtPmtleXNRdWV1ZSA9IGxhcHBlbmQodHJnbU5GQS0+a2V5c1F1ZXVlLCBr ZXlDb3B5KTsKQEAgLTEyMTUsNyArMTIxNCw3IEBAIGFkZEFyY3MoVHJnbU5GQSAqdHJnbU5G QSwgVHJnbVN0YXRlICpzdGF0ZSkKIAkJVHJnbVN0YXRlS2V5ICprZXkgPSAoVHJnbVN0YXRl S2V5ICopIGxmaXJzdChjZWxsKTsKIAogCQlhcmNzQ291bnQgPSBwZ19yZWdfZ2V0bnVtb3V0 YXJjcyh0cmdtTkZBLT5yZWdleCwga2V5LT5uc3RhdGUpOwotCQlhcmNzID0gKHJlZ2V4X2Fy Y190ICopIHBhbGxvYyhzaXplb2YocmVnZXhfYXJjX3QpICogYXJjc0NvdW50KTsKKwkJYXJj cyA9IHBhbGxvY19hcnJheShyZWdleF9hcmNfdCwgYXJjc0NvdW50KTsKIAkJcGdfcmVnX2dl dG91dGFyY3ModHJnbU5GQS0+cmVnZXgsIGtleS0+bnN0YXRlLCBhcmNzLCBhcmNzQ291bnQp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBhcmNzQ291bnQ7IGkrKykKQEAgLTEzMTEsNyArMTMx MCw3IEBAIGFkZEFyYyhUcmdtTkZBICp0cmdtTkZBLCBUcmdtU3RhdGUgKnN0YXRlLCBUcmdt U3RhdGVLZXkgKmtleSwKIAl9CiAKIAkvKiBDaGVja3Mgd2VyZSBzdWNjZXNzZnVsLCBhZGQg bmV3IGFyYyAqLwotCWFyYyA9IChUcmdtQXJjICopIHBhbGxvYyhzaXplb2YoVHJnbUFyYykp OworCWFyYyA9IHBhbGxvY19vYmplY3QoVHJnbUFyYyk7CiAJYXJjLT50YXJnZXQgPSBnZXRT dGF0ZSh0cmdtTkZBLCBkZXN0S2V5KTsKIAlhcmMtPmN0cmdtLmNvbG9yc1swXSA9IGtleS0+ cHJlZml4LmNvbG9yc1swXTsKIAlhcmMtPmN0cmdtLmNvbG9yc1sxXSA9IGtleS0+cHJlZml4 LmNvbG9yc1sxXTsKQEAgLTE0NjcsNyArMTQ2Niw3IEBAIHNlbGVjdENvbG9yVHJpZ3JhbXMo VHJnbU5GQSAqdHJnbU5GQSkKIAlpbnQJCQljbnVtYmVyOwogCiAJLyogQ29sbGVjdCBjb2xv ciB0cmlncmFtcyBmcm9tIGFsbCBhcmNzICovCi0JY29sb3JUcmdtcyA9IChDb2xvclRyZ21J bmZvICopIHBhbGxvYzAoc2l6ZW9mKENvbG9yVHJnbUluZm8pICogYXJjc0NvdW50KTsKKwlj b2xvclRyZ21zID0gcGFsbG9jMF9hcnJheShDb2xvclRyZ21JbmZvLCBhcmNzQ291bnQpOwog CXRyZ21ORkEtPmNvbG9yVHJnbXMgPSBjb2xvclRyZ21zOwogCiAJaSA9IDA7CkBAIC0xNDc5 LDcgKzE0NzgsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1zKFRyZ21ORkEgKnRyZ21ORkEpCiAJ CWZvcmVhY2goY2VsbCwgc3RhdGUtPmFyY3MpCiAJCXsKIAkJCVRyZ21BcmMgICAgKmFyYyA9 IChUcmdtQXJjICopIGxmaXJzdChjZWxsKTsKLQkJCVRyZ21BcmNJbmZvICphcmNJbmZvID0g KFRyZ21BcmNJbmZvICopIHBhbGxvYyhzaXplb2YoVHJnbUFyY0luZm8pKTsKKwkJCVRyZ21B cmNJbmZvICphcmNJbmZvID0gcGFsbG9jX29iamVjdChUcmdtQXJjSW5mbyk7CiAJCQlDb2xv clRyZ21JbmZvICp0cmdtSW5mbyA9ICZjb2xvclRyZ21zW2ldOwogCiAJCQlhcmNJbmZvLT5z b3VyY2UgPSBzdGF0ZTsKQEAgLTE5NjQsOCArMTk2Myw3IEBAIHBhY2tHcmFwaChUcmdtTkZB ICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCX0KIAogCS8qIENvbGxlY3Qg YXJyYXkgb2YgYWxsIGFyY3MgKi8KLQlhcmNzID0gKFRyZ21QYWNrQXJjSW5mbyAqKQotCQlw YWxsb2Moc2l6ZW9mKFRyZ21QYWNrQXJjSW5mbykgKiB0cmdtTkZBLT5hcmNzQ291bnQpOwor CWFyY3MgPSBwYWxsb2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0cmdtTkZBLT5hcmNzQ291 bnQpOwogCWFyY0luZGV4ID0gMDsKIAloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJn bU5GQS0+c3RhdGVzKTsKIAl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKQEAgLTIxNDcsNyArMjE0NSw3IEBA IHByaW50U291cmNlTkZBKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtQ29sb3JJbmZvICpjb2xvcnMs IGludCBuY29sb3JzKQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICI7XG4iKTsK IAogCQlhcmNzQ291bnQgPSBwZ19yZWdfZ2V0bnVtb3V0YXJjcyhyZWdleCwgc3RhdGUpOwot CQlhcmNzID0gKHJlZ2V4X2FyY190ICopIHBhbGxvYyhzaXplb2YocmVnZXhfYXJjX3QpICog YXJjc0NvdW50KTsKKwkJYXJjcyA9IHBhbGxvY19hcnJheShyZWdleF9hcmNfdCwgYXJjc0Nv dW50KTsKIAkJcGdfcmVnX2dldG91dGFyY3MocmVnZXgsIHN0YXRlLCBhcmNzLCBhcmNzQ291 bnQpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBhcmNzQ291bnQ7IGkrKykKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgYi9jb250cmliL3BnX3Zp c2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCmluZGV4IGQ3OWVmMzUwMDZiLi43MDQ2YzFiNWY4 ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYwor KysgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCkBAIC03NDEsNyAr NzQxLDcgQEAgY29sbGVjdF9jb3JydXB0X2l0ZW1zKE9pZCByZWxpZCwgYm9vbCBhbGxfdmlz aWJsZSwgYm9vbCBhbGxfZnJvemVuKQogCSAqIG51bWJlciBvZiBlbnRyaWVzIGFsbG9jYXRl ZC4gIFdlJ2xsIHJlcHVycG9zZSB0aGVzZSBmaWVsZHMgYmVmb3JlCiAJICogcmV0dXJuaW5n LgogCSAqLwotCWl0ZW1zID0gcGFsbG9jMChzaXplb2YoY29ycnVwdF9pdGVtcykpOworCWl0 ZW1zID0gcGFsbG9jMF9vYmplY3QoY29ycnVwdF9pdGVtcyk7CiAJaXRlbXMtPm5leHQgPSAw OwogCWl0ZW1zLT5jb3VudCA9IDY0OwogCWl0ZW1zLT50aWRzID0gcGFsbG9jKGl0ZW1zLT5j b3VudCAqIHNpemVvZihJdGVtUG9pbnRlckRhdGEpKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMgYi9jb250cmliL3BnX3dhbGluc3BlY3Qv cGdfd2FsaW5zcGVjdC5jCmluZGV4IDNjNWU0YTg1NmE3Li42OTQ1YmFjMTMwNiAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYworKysgYi9jb250 cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jCkBAIC0xMDksOCArMTA5LDcgQEAg SW5pdFhMb2dSZWFkZXJTdGF0ZShYTG9nUmVjUHRyIGxzbikKIAkJCQkgZXJybXNnKCJjb3Vs ZCBub3QgcmVhZCBXQUwgYXQgTFNOICVYLyUwOFgiLAogCQkJCQkJTFNOX0ZPUk1BVF9BUkdT KGxzbikpKSk7CiAKLQlwcml2YXRlX2RhdGEgPSAoUmVhZExvY2FsWExvZ1BhZ2VOb1dhaXRQ cml2YXRlICopCi0JCXBhbGxvYzAoc2l6ZW9mKFJlYWRMb2NhbFhMb2dQYWdlTm9XYWl0UHJp dmF0ZSkpOworCXByaXZhdGVfZGF0YSA9IHBhbGxvYzBfb2JqZWN0KFJlYWRMb2NhbFhMb2dQ YWdlTm9XYWl0UHJpdmF0ZSk7CiAKIAl4bG9ncmVhZGVyID0gWExvZ1JlYWRlckFsbG9jYXRl KHdhbF9zZWdtZW50X3NpemUsIE5VTEwsCiAJCQkJCQkJCQlYTF9ST1VUSU5FKC5wYWdlX3Jl YWQgPSAmcmVhZF9sb2NhbF94bG9nX3BhZ2Vfbm9fd2FpdCwKQEAgLTMxMCw3ICszMDksNyBA QCBHZXRXQUxCbG9ja0luZm8oRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkLAogCQkJLyogQ29uc3RydWN0IGFuZCBzYXZlIGJsb2NrX2ZwaV9pbmZv ICovCiAJCQliaXRjbnQgPSBwZ19wb3Bjb3VudCgoY29uc3QgY2hhciAqKSAmYmxrLT5iaW1n X2luZm8sCiAJCQkJCQkJCSBzaXplb2YodWludDgpKTsKLQkJCWZsYWdzID0gKERhdHVtICop IHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIGJpdGNudCk7CisJCQlmbGFncyA9IHBhbGxvYzBf YXJyYXkoRGF0dW0sIGJpdGNudCk7CiAJCQlpZiAoKGJsay0+YmltZ19pbmZvICYgQktQSU1B R0VfSEFTX0hPTEUpICE9IDApCiAJCQkJZmxhZ3NbY250KytdID0gQ1N0cmluZ0dldFRleHRE YXR1bSgiSEFTX0hPTEUiKTsKIAkJCWlmIChibGstPmFwcGx5X2ltYWdlKQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ2NyeXB0by9tYnVmLmMgYi9jb250cmliL3BnY3J5cHRvL21idWYuYwpp bmRleCA4ZGZjMWIzOWQ0OC4uNmEyM2FkOTk3MDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdj cnlwdG8vbWJ1Zi5jCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vbWJ1Zi5jCkBAIC0xMTUsNyAr MTE1LDcgQEAgbWJ1Zl9jcmVhdGUoaW50IGxlbikKIAlpZiAoIWxlbikKIAkJbGVuID0gODE5 MjsKIAotCW1idWYgPSBwYWxsb2Moc2l6ZW9mICptYnVmKTsKKwltYnVmID0gcGFsbG9jX29i amVjdChNQnVmKTsKIAltYnVmLT5kYXRhID0gcGFsbG9jKGxlbik7CiAJbWJ1Zi0+YnVmX2Vu ZCA9IG1idWYtPmRhdGEgKyBsZW47CiAJbWJ1Zi0+ZGF0YV9lbmQgPSBtYnVmLT5kYXRhOwpA QCAtMTMyLDcgKzEzMiw3IEBAIG1idWZfY3JlYXRlX2Zyb21fZGF0YSh1aW50OCAqZGF0YSwg aW50IGxlbikKIHsKIAlNQnVmCSAgICptYnVmOwogCi0JbWJ1ZiA9IHBhbGxvYyhzaXplb2Yg Km1idWYpOworCW1idWYgPSBwYWxsb2Nfb2JqZWN0KE1CdWYpOwogCW1idWYtPmRhdGEgPSBk YXRhOwogCW1idWYtPmJ1Zl9lbmQgPSBtYnVmLT5kYXRhICsgbGVuOwogCW1idWYtPmRhdGFf ZW5kID0gbWJ1Zi0+ZGF0YSArIGxlbjsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWxsZl9jcmVh dGUoUHVsbEZpbHRlciAqKnBmX3AsIGNvbnN0IFB1bGxGaWx0ZXJPcHMgKm9wLCB2b2lkICpp bml0X2FyZywgUHVsbEZpbAogCQlyZXMgPSAwOwogCX0KIAotCXBmID0gcGFsbG9jMChzaXpl b2YoKnBmKSk7CisJcGYgPSBwYWxsb2MwX29iamVjdChQdWxsRmlsdGVyKTsKIAlwZi0+YnVm bGVuID0gcmVzOwogCXBmLT5vcCA9IG9wOwogCXBmLT5wcml2ID0gcHJpdjsKQEAgLTM3Miw3 ICszNzIsNyBAQCBwdXNoZl9jcmVhdGUoUHVzaEZpbHRlciAqKm1wX3AsIGNvbnN0IFB1c2hG aWx0ZXJPcHMgKm9wLCB2b2lkICppbml0X2FyZywgUHVzaEZpbAogCQlyZXMgPSAwOwogCX0K IAotCW1wID0gcGFsbG9jMChzaXplb2YoKm1wKSk7CisJbXAgPSBwYWxsb2MwX29iamVjdChQ dXNoRmlsdGVyKTsKIAltcC0+YmxvY2tfc2l6ZSA9IHJlczsKIAltcC0+b3AgPSBvcDsKIAlt cC0+cHJpdiA9IHByaXY7CmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL29wZW5zc2wu YyBiL2NvbnRyaWIvcGdjcnlwdG8vb3BlbnNzbC5jCmluZGV4IGYxNzllODBjODQyLi5kM2Mx MmU3ZmRhMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ2NyeXB0by9vcGVuc3NsLmMKKysrIGIv Y29udHJpYi9wZ2NyeXB0by9vcGVuc3NsLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQCBweF9maW5k X2RpZ2VzdChjb25zdCBjaGFyICpuYW1lLCBQWF9NRCAqKnJlcykKIAlSZXNvdXJjZU93bmVy UmVtZW1iZXJPU1NMRGlnZXN0KGRpZ2VzdC0+b3duZXIsIGRpZ2VzdCk7CiAKIAkvKiBUaGUg UFhfTUQgb2JqZWN0IGlzIGFsbG9jYXRlZCBpbiB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4 dC4gKi8KLQloID0gcGFsbG9jKHNpemVvZigqaCkpOworCWggPSBwYWxsb2Nfb2JqZWN0KFBY X01EKTsKIAloLT5yZXN1bHRfc2l6ZSA9IGRpZ2VzdF9yZXN1bHRfc2l6ZTsKIAloLT5ibG9j a19zaXplID0gZGlnZXN0X2Jsb2NrX3NpemU7CiAJaC0+cmVzZXQgPSBkaWdlc3RfcmVzZXQ7 CkBAIC04MTMsNyArODEzLDcgQEAgcHhfZmluZF9jaXBoZXIoY29uc3QgY2hhciAqbmFtZSwg UFhfQ2lwaGVyICoqcmVzKQogCQlvZC0+ZXZwX2NpcGggPSBpLT5jaXBoLT5jaXBoZXJfZnVu YygpOwogCiAJLyogVGhlIFBYX0NpcGhlciBpcyBhbGxvY2F0ZWQgaW4gY3VycmVudCBtZW1v cnkgY29udGV4dCAqLwotCWMgPSBwYWxsb2Moc2l6ZW9mKCpjKSk7CisJYyA9IHBhbGxvY19v YmplY3QoUFhfQ2lwaGVyKTsKIAljLT5ibG9ja19zaXplID0gZ2VuX29zc2xfYmxvY2tfc2l6 ZTsKIAljLT5rZXlfc2l6ZSA9IGdlbl9vc3NsX2tleV9zaXplOwogCWMtPml2X3NpemUgPSBn ZW5fb3NzbF9pdl9zaXplOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtY2Zi LmMgYi9jb250cmliL3BnY3J5cHRvL3BncC1jZmIuYwppbmRleCBkZTQxZTgyNWIwYy4uZDhm MWFmYzNhYmEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWNmYi5jCisrKyBi L2NvbnRyaWIvcGdjcnlwdG8vcGdwLWNmYi5jCkBAIC02Nyw3ICs2Nyw3IEBAIHBncF9jZmJf Y3JlYXRlKFBHUF9DRkIgKipjdHhfcCwgaW50IGFsZ28sIGNvbnN0IHVpbnQ4ICprZXksIGlu dCBrZXlfbGVuLAogCQlyZXR1cm4gcmVzOwogCX0KIAotCWN0eCA9IHBhbGxvYzAoc2l6ZW9m KCpjdHgpKTsKKwljdHggPSBwYWxsb2MwX29iamVjdChQR1BfQ0ZCKTsKIAljdHgtPmNpcGgg PSBjaXBoOwogCWN0eC0+YmxvY2tfc2l6ZSA9IHB4X2NpcGhlcl9ibG9ja19zaXplKGNpcGgp OwogCWN0eC0+cmVzeW5jID0gcmVzeW5jOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0 by9wZ3AtY29tcHJlc3MuYyBiL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWNvbXByZXNzLmMKaW5k ZXggOTYxY2YyMWU3NDguLmNhYTgwZWNkYjQ1IDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5 cHRvL3BncC1jb21wcmVzcy5jCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vcGdwLWNvbXByZXNz LmMKQEAgLTgwLDcgKzgwLDcgQEAgY29tcHJlc3NfaW5pdChQdXNoRmlsdGVyICpuZXh0LCB2 b2lkICppbml0X2FyZywgdm9pZCAqKnByaXZfcCkKIAkvKgogCSAqIGluaXQKIAkgKi8KLQlz dCA9IHBhbGxvYzAoc2l6ZW9mKCpzdCkpOworCXN0ID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0 IFppcFN0YXQpOwogCXN0LT5idWZfbGVuID0gWklQX09VVF9CVUY7CiAJc3QtPnN0cmVhbS56 YWxsb2MgPSB6X2FsbG9jOwogCXN0LT5zdHJlYW0uemZyZWUgPSB6X2ZyZWU7CkBAIC0yMTEs NyArMjExLDcgQEAgZGVjb21wcmVzc19pbml0KHZvaWQgKipwcml2X3AsIHZvaWQgKmFyZywg UHVsbEZpbHRlciAqc3JjKQogCQkmJiBjdHgtPmNvbXByZXNzX2FsZ28gIT0gUEdQX0NPTVBS X1pJUCkKIAkJcmV0dXJuIFBYRV9QR1BfVU5TVVBQT1JURURfQ09NUFI7CiAKLQlkZWMgPSBw YWxsb2MwKHNpemVvZigqZGVjKSk7CisJZGVjID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IERl Y29tcHJEYXRhKTsKIAlkZWMtPmJ1Zl9sZW4gPSBaSVBfT1VUX0JVRjsKIAkqcHJpdl9wID0g ZGVjOwogCmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL3BncC1kZWNyeXB0LmMgYi9j b250cmliL3BnY3J5cHRvL3BncC1kZWNyeXB0LmMKaW5kZXggZTFlYTViM2U1OGQuLjUyY2E3 ODQwYzZkIDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL3BncC1kZWNyeXB0LmMKKysr IGIvY29udHJpYi9wZ2NyeXB0by9wZ3AtZGVjcnlwdC5jCkBAIC0yMjQsNyArMjI0LDcgQEAg cGdwX2NyZWF0ZV9wa3RfcmVhZGVyKFB1bGxGaWx0ZXIgKipwZl9wLCBQdWxsRmlsdGVyICpz cmMsIGludCBsZW4sCiAJCQkJCSAgaW50IHBrdHR5cGUsIFBHUF9Db250ZXh0ICpjdHgpCiB7 CiAJaW50CQkJcmVzOwotCXN0cnVjdCBQa3REYXRhICpwa3QgPSBwYWxsb2Moc2l6ZW9mKCpw a3QpKTsKKwlzdHJ1Y3QgUGt0RGF0YSAqcGt0ID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgUGt0 RGF0YSk7CiAKIAlwa3QtPnR5cGUgPSBwa3R0eXBlOwogCXBrdC0+bGVuID0gbGVuOwpAQCAt NDQ4LDcgKzQ0OCw3IEBAIG1kY2J1Zl9pbml0KHZvaWQgKipwcml2X3AsIHZvaWQgKmFyZywg UHVsbEZpbHRlciAqc3JjKQogCVBHUF9Db250ZXh0ICpjdHggPSBhcmc7CiAJc3RydWN0IE1E Q0J1ZkRhdGEgKnN0OwogCi0Jc3QgPSBwYWxsb2MwKHNpemVvZigqc3QpKTsKKwlzdCA9IHBh bGxvYzBfb2JqZWN0KHN0cnVjdCBNRENCdWZEYXRhKTsKIAlzdC0+YnVmbGVuID0gc2l6ZW9m KHN0LT5idWYpOwogCXN0LT5jdHggPSBjdHg7CiAJKnByaXZfcCA9IHN0OwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtZW5jcnlwdC5jIGIvY29udHJpYi9wZ2NyeXB0by9w Z3AtZW5jcnlwdC5jCmluZGV4IGY3NDY3YzliMWNiLi4yYzA1OTgwNDcwNiAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtZW5jcnlwdC5jCisrKyBiL2NvbnRyaWIvcGdjcnlw dG8vcGdwLWVuY3J5cHQuYwpAQCAtMTc4LDcgKzE3OCw3IEBAIGVuY3J5cHRfaW5pdChQdXNo RmlsdGVyICpuZXh0LCB2b2lkICppbml0X2FyZywgdm9pZCAqKnByaXZfcCkKIAlpZiAocmVz IDwgMCkKIAkJcmV0dXJuIHJlczsKIAotCXN0ID0gcGFsbG9jMChzaXplb2YoKnN0KSk7CisJ c3QgPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgRW5jU3RhdCk7CiAJc3QtPmNpcGggPSBjaXBo OwogCiAJKnByaXZfcCA9IHN0OwpAQCAtMjQwLDcgKzI0MCw3IEBAIHBrdF9zdHJlYW1faW5p dChQdXNoRmlsdGVyICpuZXh0LCB2b2lkICppbml0X2FyZywgdm9pZCAqKnByaXZfcCkKIHsK IAlzdHJ1Y3QgUGt0U3RyZWFtU3RhdCAqc3Q7CiAKLQlzdCA9IHBhbGxvYyhzaXplb2YoKnN0 KSk7CisJc3QgPSBwYWxsb2Nfb2JqZWN0KHN0cnVjdCBQa3RTdHJlYW1TdGF0KTsKIAlzdC0+ ZmluYWxfZG9uZSA9IDA7CiAJc3QtPnBrdF9ibG9jayA9IDEgPDwgU1RSRUFNX0JMT0NLX1NI SUZUOwogCSpwcml2X3AgPSBzdDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vcGdw LXBnc3FsLmMgYi9jb250cmliL3BnY3J5cHRvL3BncC1wZ3NxbC5jCmluZGV4IDdjOWY0Yzdi MzliLi44Y2ZiMWY2MGYwOCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtcGdz cWwuYworKysgYi9jb250cmliL3BnY3J5cHRvL3BncC1wZ3NxbC5jCkBAIC03ODIsOCArNzgy LDggQEAgcGFyc2Vfa2V5X3ZhbHVlX2FycmF5cyhBcnJheVR5cGUgKmtleV9hcnJheSwgQXJy YXlUeXBlICp2YWxfYXJyYXksCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9BUlJBWV9TVUJTQ1JJ UFRfRVJST1IpLAogCQkJCSBlcnJtc2coIm1pc21hdGNoZWQgYXJyYXkgZGltZW5zaW9ucyIp KSk7CiAKLQlrZXlzID0gKGNoYXIgKiopIHBhbGxvYyhzaXplb2YoY2hhciAqKSAqIGtleV9j b3VudCk7Ci0JdmFsdWVzID0gKGNoYXIgKiopIHBhbGxvYyhzaXplb2YoY2hhciAqKSAqIHZh bF9jb3VudCk7CisJa2V5cyA9IChjaGFyICoqKSBwYWxsb2NfYXJyYXkoY2hhciAqLCBrZXlf Y291bnQpOworCXZhbHVlcyA9IChjaGFyICoqKSBwYWxsb2NfYXJyYXkoY2hhciAqLCB2YWxf Y291bnQpOwogCiAJZm9yIChpID0gMDsgaSA8IGtleV9jb3VudDsgaSsrKQogCXsKQEAgLTkz Nyw3ICs5MzcsNyBAQCBwZ3BfYXJtb3JfaGVhZGVycyhQR19GVU5DVElPTl9BUkdTKQogCQlh dHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1ldGFkYXRhKHR1cGRlc2MpOwogCQlmdW5j Y3R4LT5hdHRpbm1ldGEgPSBhdHRpbm1ldGE7CiAKLQkJc3RhdGUgPSAocGdwX2FybW9yX2hl YWRlcnNfc3RhdGUgKikgcGFsbG9jKHNpemVvZihwZ3BfYXJtb3JfaGVhZGVyc19zdGF0ZSkp OworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QocGdwX2FybW9yX2hlYWRlcnNfc3RhdGUpOwog CiAJCXJlcyA9IHBncF9leHRyYWN0X2FybW9yX2hlYWRlcnMoKHVpbnQ4ICopIFZBUkRBVEFf QU5ZKGRhdGEpLAogCQkJCQkJCQkJCVZBUlNJWkVfQU5ZX0VYSERSKGRhdGEpLApkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ2NyeXB0by9wZ3AtcHVia2V5LmMgYi9jb250cmliL3BnY3J5cHRv L3BncC1wdWJrZXkuYwppbmRleCA5YTY1NjFjYWY5ZC4uNmYxMTg4NjU5MTcgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdjcnlwdG8vcGdwLXB1YmtleS5jCisrKyBiL2NvbnRyaWIvcGdjcnlw dG8vcGdwLXB1YmtleS5jCkBAIC0zOSw3ICszOSw3IEBAIHBncF9rZXlfYWxsb2MoUEdQX1B1 YktleSAqKnBrX3ApCiB7CiAJUEdQX1B1YktleSAqcGs7CiAKLQlwayA9IHBhbGxvYzAoc2l6 ZW9mKCpwaykpOworCXBrID0gcGFsbG9jMF9vYmplY3QoUEdQX1B1YktleSk7CiAJKnBrX3Ag PSBwazsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vcHgt aG1hYy5jIGIvY29udHJpYi9wZ2NyeXB0by9weC1obWFjLmMKaW5kZXggOTkxNzRkMjY1NTEu LjY4ZTVjZmY2ZDZhIDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL3B4LWhtYWMuYwor KysgYi9jb250cmliL3BnY3J5cHRvL3B4LWhtYWMuYwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB4 X2ZpbmRfaG1hYyhjb25zdCBjaGFyICpuYW1lLCBQWF9ITUFDICoqcmVzKQogCQlyZXR1cm4g UFhFX0hBU0hfVU5VU0FCTEVfRk9SX0hNQUM7CiAJfQogCi0JaCA9IHBhbGxvYyhzaXplb2Yo KmgpKTsKKwloID0gcGFsbG9jX29iamVjdChQWF9ITUFDKTsKIAloLT5wLmlwYWQgPSBwYWxs b2MoYnMpOwogCWgtPnAub3BhZCA9IHBhbGxvYyhicyk7CiAJaC0+bWQgPSBtZDsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vcHguYyBiL2NvbnRyaWIvcGdjcnlwdG8vcHguYwpp bmRleCBkMzVjY2NhNzc3NC4uNGQ2NjhkNGU0OTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdj cnlwdG8vcHguYworKysgYi9jb250cmliL3BnY3J5cHRvL3B4LmMKQEAgLTI5MSw3ICsyOTEs NyBAQCBweF9maW5kX2NvbWJvKGNvbnN0IGNoYXIgKm5hbWUsIFBYX0NvbWJvICoqcmVzKQog CiAJUFhfQ29tYm8gICAqY3g7CiAKLQljeCA9IHBhbGxvYzAoc2l6ZW9mKCpjeCkpOworCWN4 ID0gcGFsbG9jMF9vYmplY3QoUFhfQ29tYm8pOwogCWJ1ZiA9IHBzdHJkdXAobmFtZSk7CiAK IAllcnIgPSBwYXJzZV9jaXBoZXJfbmFtZShidWYsICZzX2NpcGhlciwgJnNfcGFkKTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvc2VnL3NlZy5jIGIvY29udHJpYi9zZWcvc2VnLmMKaW5kZXgg YjVkZTJhNWUxYmUuLjJkM2EwNDhjNzNlIDEwMDY0NAotLS0gYS9jb250cmliL3NlZy9zZWcu YworKysgYi9jb250cmliL3NlZy9zZWcuYwpAQCAtMTA3LDcgKzEwNyw3IEBAIERhdHVtCiBz ZWdfaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdf Q1NUUklORygwKTsKLQlTRUcJCSAgICpyZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKFNFRykpOwor CVNFRwkJICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoU0VHKTsKIAl5eXNjYW5fdAlzY2Fu bmVyOwogCiAJc2VnX3NjYW5uZXJfaW5pdChzdHIsICZzY2FubmVyKTsKQEAgLTM3MCw3ICsz NzAsNyBAQCBnc2VnX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCS8qCiAJICogRW1p dCBzZWdtZW50cyB0byB0aGUgbGVmdCBvdXRwdXQgcGFnZSwgYW5kIGNvbXB1dGUgaXRzIGJv dW5kaW5nIGJveC4KIAkgKi8KLQlzZWdfbCA9IChTRUcgKikgcGFsbG9jKHNpemVvZihTRUcp KTsKKwlzZWdfbCA9IHBhbGxvY19vYmplY3QoU0VHKTsKIAltZW1jcHkoc2VnX2wsIHNvcnRf aXRlbXNbMF0uZGF0YSwgc2l6ZW9mKFNFRykpOwogCSpsZWZ0KysgPSBzb3J0X2l0ZW1zWzBd LmluZGV4OwogCXYtPnNwbF9ubGVmdCsrOwpAQCAtMzg4LDcgKzM4OCw3IEBAIGdzZWdfcGlj a3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyoKIAkgKiBMaWtld2lzZSBmb3IgdGhlIHJp Z2h0IHBhZ2UuCiAJICovCi0Jc2VnX3IgPSAoU0VHICopIHBhbGxvYyhzaXplb2YoU0VHKSk7 CisJc2VnX3IgPSBwYWxsb2Nfb2JqZWN0KFNFRyk7CiAJbWVtY3B5KHNlZ19yLCBzb3J0X2l0 ZW1zW2ZpcnN0cmlnaHRdLmRhdGEsIHNpemVvZihTRUcpKTsKIAkqcmlnaHQrKyA9IHNvcnRf aXRlbXNbZmlyc3RyaWdodF0uaW5kZXg7CiAJdi0+c3BsX25yaWdodCsrOwpAQCAtNjMyLDcg KzYzMiw3IEBAIHNlZ191bmlvbihQR19GVU5DVElPTl9BUkdTKQogCVNFRwkJICAgKmIgPSBQ R19HRVRBUkdfU0VHX1AoMSk7CiAJU0VHCQkgICAqbjsKIAotCW4gPSAoU0VHICopIHBhbGxv YyhzaXplb2YoKm4pKTsKKwluID0gcGFsbG9jX29iamVjdChTRUcpOwogCiAJLyogdGFrZSBt YXggb2YgdXBwZXIgZW5kcG9pbnRzICovCiAJaWYgKGEtPnVwcGVyID4gYi0+dXBwZXIpCkBA IC02NzIsNyArNjcyLDcgQEAgc2VnX2ludGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJU0VHCQkg ICAqYiA9IFBHX0dFVEFSR19TRUdfUCgxKTsKIAlTRUcJCSAgICpuOwogCi0JbiA9IChTRUcg KikgcGFsbG9jKHNpemVvZigqbikpOworCW4gPSBwYWxsb2Nfb2JqZWN0KFNFRyk7CiAKIAkv KiB0YWtlIG1pbiBvZiB1cHBlciBlbmRwb2ludHMgKi8KIAlpZiAoYS0+dXBwZXIgPCBiLT51 cHBlcikKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2VwZ3NxbC9sYWJlbC5jIGIvY29udHJpYi9z ZXBnc3FsL2xhYmVsLmMKaW5kZXggYTM3ZDg5YTNmMWMuLjkzMWNkMDhiZGFkIDEwMDY0NAot LS0gYS9jb250cmliL3NlcGdzcWwvbGFiZWwuYworKysgYi9jb250cmliL3NlcGdzcWwvbGFi ZWwuYwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHNlcGdzcWxfc2V0X2NsaWVudF9sYWJlbChjb25z dCBjaGFyICpuZXdfbGFiZWwpCiAJICovCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEN1clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKLQlwbGFiZWwgPSBwYWxsb2MwKHNpemVv ZihwZW5kaW5nX2xhYmVsKSk7CisJcGxhYmVsID0gcGFsbG9jMF9vYmplY3QocGVuZGluZ19s YWJlbCk7CiAJcGxhYmVsLT5zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7 CiAJaWYgKG5ld19sYWJlbCkKIAkJcGxhYmVsLT5sYWJlbCA9IHBzdHJkdXAobmV3X2xhYmVs KTsKQEAgLTMyNiw3ICszMjYsNyBAQCBzZXBnc3FsX2ZtZ3JfaG9vayhGbWdySG9va0V2ZW50 VHlwZSBldmVudCwKIAkJCQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAogCQkJCW9sZGN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmbGluZm8tPmZuX21jeHQpOwotCQkJCXN0YWNrID0g cGFsbG9jKHNpemVvZigqc3RhY2spKTsKKwkJCQlzdGFjayA9IHBhbGxvY19vYmplY3Qoc2Vw Z3NxbF9wcm9jX3N0YWNrKTsKIAkJCQlzdGFjay0+b2xkX2xhYmVsID0gTlVMTDsKIAkJCQlz dGFjay0+bmV3X2xhYmVsID0gc2VwZ3NxbF9hdmNfdHJ1c3RlZF9wcm9jKGZsaW5mby0+Zm5f b2lkKTsKIAkJCQlzdGFjay0+bmV4dF9wcml2YXRlID0gMDsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvc2VwZ3NxbC91YXZjLmMgYi9jb250cmliL3NlcGdzcWwvdWF2Yy5jCmluZGV4IGQ5Y2Ni YzM4YmM1Li41ZTU3OTcxYmI0ZCAxMDA2NDQKLS0tIGEvY29udHJpYi9zZXBnc3FsL3VhdmMu YworKysgYi9jb250cmliL3NlcGdzcWwvdWF2Yy5jCkBAIC0yNTcsNyArMjU3LDcgQEAgc2Vw Z3NxbF9hdmNfY29tcHV0ZShjb25zdCBjaGFyICpzY29udGV4dCwgY29uc3QgY2hhciAqdGNv bnRleHQsIHVpbnQxNiB0Y2xhc3MpCiAJICovCiAJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGF2Y19tZW1fY3h0KTsKIAotCWNhY2hlID0gcGFsbG9jMChzaXplb2YoYXZjX2Nh Y2hlKSk7CisJY2FjaGUgPSBwYWxsb2MwX29iamVjdChhdmNfY2FjaGUpOwogCiAJY2FjaGUt Pmhhc2ggPSBoYXNoOwogCWNhY2hlLT5zY29udGV4dCA9IHBzdHJkdXAoc2NvbnRleHQpOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9zcGkvcmVmaW50LmMgYi9jb250cmliL3NwaS9yZWZpbnQu YwppbmRleCA4OTg5OGNhZDdiMC4uZmJiZDU1OGNhMWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv c3BpL3JlZmludC5jCisrKyBiL2NvbnRyaWIvc3BpL3JlZmludC5jCkBAIC02NTEsNyArNjUx LDcgQEAgZmluZF9wbGFuKGNoYXIgKmlkZW50LCBFUGxhbiAqKmVwbGFuLCBpbnQgKm5wbGFu cykKIAl9CiAJZWxzZQogCXsKLQkJbmV3cCA9ICplcGxhbiA9IChFUGxhbiAqKSBwYWxsb2Mo c2l6ZW9mKEVQbGFuKSk7CisJCW5ld3AgPSAqZXBsYW4gPSBwYWxsb2Nfb2JqZWN0KEVQbGFu KTsKIAkJKCpucGxhbnMpID0gaSA9IDA7CiAJfQogCmRpZmYgLS1naXQgYS9jb250cmliL3Nz bGluZm8vc3NsaW5mby5jIGIvY29udHJpYi9zc2xpbmZvL3NzbGluZm8uYwppbmRleCBkYTcw MjAxMTE5My4uMmI5ZWI5MGIwOTMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc3NsaW5mby9zc2xp bmZvLmMKKysrIGIvY29udHJpYi9zc2xpbmZvL3NzbGluZm8uYwpAQCAtMzc0LDcgKzM3NCw3 IEBAIHNzbF9leHRlbnNpb25faW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0 eCk7CiAKIAkJLyogQ3JlYXRlIGEgdXNlciBmdW5jdGlvbiBjb250ZXh0IGZvciBjcm9zcy1j YWxsIHBlcnNpc3RlbmNlICovCi0JCWZjdHggPSAoU1NMRXh0ZW5zaW9uSW5mb0NvbnRleHQg KikgcGFsbG9jKHNpemVvZihTU0xFeHRlbnNpb25JbmZvQ29udGV4dCkpOworCQlmY3R4ID0g cGFsbG9jX29iamVjdChTU0xFeHRlbnNpb25JbmZvQ29udGV4dCk7CiAKIAkJLyogQ29uc3Ry dWN0IHR1cGxlIGRlc2NyaXB0b3IgKi8KIAkJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZj aW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKZGlmZiAtLWdp dCBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jIGIvY29udHJpYi90YWJsZWZ1bmMv dGFibGVmdW5jLmMKaW5kZXggNzRhZmRjMDk3N2YuLmM0MGZkMzZkYzk2IDEwMDY0NAotLS0g YS9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYworKysgYi9jb250cmliL3RhYmxlZnVu Yy90YWJsZWZ1bmMuYwpAQCAtMjA3LDcgKzIwNyw3IEBAIG5vcm1hbF9yYW5kKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCWZ1bmNjdHgtPm1heF9jYWxscyA9IG51bV90dXBsZXM7CiAKIAkJLyog YWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJZmN0eCA9IChub3JtYWxf cmFuZF9mY3R4ICopIHBhbGxvYyhzaXplb2Yobm9ybWFsX3JhbmRfZmN0eCkpOworCQlmY3R4 ID0gcGFsbG9jX29iamVjdChub3JtYWxfcmFuZF9mY3R4KTsKIAogCQkvKgogCQkgKiBVc2Ug ZmN0eCB0byBrZWVwIHRyYWNrIG9mIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgZnJvbSBjYWxs IHRvIGNhbGwuCkBAIC03NjYsNyArNzY2LDcgQEAgbG9hZF9jYXRlZ29yaWVzX2hhc2goY2hh ciAqY2F0c19zcWwsIE1lbW9yeUNvbnRleHQgcGVyX3F1ZXJ5X2N0eCkKIAogCQkJU1BJY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcXVlcnlfY3R4KTsKIAotCQkJY2F0 ZGVzYyA9IChjcm9zc3RhYl9jYXRfZGVzYyAqKSBwYWxsb2Moc2l6ZW9mKGNyb3NzdGFiX2Nh dF9kZXNjKSk7CisJCQljYXRkZXNjID0gcGFsbG9jX29iamVjdChjcm9zc3RhYl9jYXRfZGVz Yyk7CiAJCQljYXRkZXNjLT5jYXRuYW1lID0gY2F0bmFtZTsKIAkJCWNhdGRlc2MtPmF0dGlk eCA9IGk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29k aW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCmluZGV4IDM2 ZTc3YzY5ZTFjLi40NzA5NGY4NmY1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29k aW5nL3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9k ZWNvZGluZy5jCkBAIC0xNjMsNyArMTYzLDcgQEAgcGdfZGVjb2RlX3N0YXJ0dXAoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJVGVz dERlY29kaW5nRGF0YSAqZGF0YTsKIAlib29sCQllbmFibGVfc3RyZWFtaW5nID0gZmFsc2U7 CiAKLQlkYXRhID0gcGFsbG9jMChzaXplb2YoVGVzdERlY29kaW5nRGF0YSkpOworCWRhdGEg PSBwYWxsb2MwX29iamVjdChUZXN0RGVjb2RpbmdEYXRhKTsKIAlkYXRhLT5jb250ZXh0ID0g QWxsb2NTZXRDb250ZXh0Q3JlYXRlKGN0eC0+Y29udGV4dCwKIAkJCQkJCQkJCQkgICJ0ZXh0 IGNvbnZlcnNpb24gY29udGV4dCIsCiAJCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJ WkVTKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdHNtX3N5c3RlbV9yb3dzL3RzbV9zeXN0ZW1f cm93cy5jIGIvY29udHJpYi90c21fc3lzdGVtX3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMKaW5k ZXggZjQwMWVmYTIxMzEuLmVmMTQ1ZmE2NzQ3IDEwMDY0NAotLS0gYS9jb250cmliL3RzbV9z eXN0ZW1fcm93cy90c21fc3lzdGVtX3Jvd3MuYworKysgYi9jb250cmliL3RzbV9zeXN0ZW1f cm93cy90c21fc3lzdGVtX3Jvd3MuYwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN5c3RlbV9yb3dz X3NhbXBsZXNjYW5nZXRzYW1wbGVzaXplKFBsYW5uZXJJbmZvICpyb290LAogc3RhdGljIHZv aWQKIHN5c3RlbV9yb3dzX2luaXRzYW1wbGVzY2FuKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSwg aW50IGVmbGFncykKIHsKLQlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwKHNpemVvZihTeXN0 ZW1Sb3dzU2FtcGxlckRhdGEpKTsKKwlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwX29iamVj dChTeXN0ZW1Sb3dzU2FtcGxlckRhdGEpOwogCS8qIE5vdGUgdGhlIGFib3ZlIGxlYXZlcyB0 c21fc3RhdGUtPnN0ZXAgZXF1YWwgdG8gemVybyAqLwogfQogCmRpZmYgLS1naXQgYS9jb250 cmliL3RzbV9zeXN0ZW1fdGltZS90c21fc3lzdGVtX3RpbWUuYyBiL2NvbnRyaWIvdHNtX3N5 c3RlbV90aW1lL3RzbV9zeXN0ZW1fdGltZS5jCmluZGV4IGM5YzcxZDhjM2FmLi4xMDQxMjU4 ZWExYSAxMDA2NDQKLS0tIGEvY29udHJpYi90c21fc3lzdGVtX3RpbWUvdHNtX3N5c3RlbV90 aW1lLmMKKysrIGIvY29udHJpYi90c21fc3lzdGVtX3RpbWUvdHNtX3N5c3RlbV90aW1lLmMK QEAgLTE3OSw3ICsxNzksNyBAQCBzeXN0ZW1fdGltZV9zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6 ZShQbGFubmVySW5mbyAqcm9vdCwKIHN0YXRpYyB2b2lkCiBzeXN0ZW1fdGltZV9pbml0c2Ft cGxlc2NhbihTYW1wbGVTY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiB7Ci0Jbm9kZS0+ dHNtX3N0YXRlID0gcGFsbG9jMChzaXplb2YoU3lzdGVtVGltZVNhbXBsZXJEYXRhKSk7CisJ bm9kZS0+dHNtX3N0YXRlID0gcGFsbG9jMF9vYmplY3QoU3lzdGVtVGltZVNhbXBsZXJEYXRh KTsKIAkvKiBOb3RlIHRoZSBhYm92ZSBsZWF2ZXMgdHNtX3N0YXRlLT5zdGVwIGVxdWFsIHRv IHplcm8gKi8KIH0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi91bmFjY2VudC91bmFjY2VudC5j IGIvY29udHJpYi91bmFjY2VudC91bmFjY2VudC5jCmluZGV4IDMzNmJhMzEwNDdhLi42ODI1 MTY2MDg4NyAxMDA2NDQKLS0tIGEvY29udHJpYi91bmFjY2VudC91bmFjY2VudC5jCisrKyBi L2NvbnRyaWIvdW5hY2NlbnQvdW5hY2NlbnQuYwpAQCAtNjAsNyArNjAsNyBAQCBwbGFjZUNo YXIoVHJpZUNoYXIgKm5vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0ciwgaW50IGxlbnN0 ciwKIAlUcmllQ2hhciAgICpjdXJub2RlOwogCiAJaWYgKCFub2RlKQotCQlub2RlID0gKFRy aWVDaGFyICopIHBhbGxvYzAoc2l6ZW9mKFRyaWVDaGFyKSAqIDI1Nik7CisJCW5vZGUgPSBw YWxsb2MwX2FycmF5KFRyaWVDaGFyLCAyNTYpOwogCiAJQXNzZXJ0KGxlbnN0ciA+IDApOwkJ CS8qIGVsc2Ugc3RyWzBdIGRvZXNuJ3QgZXhpc3QgKi8KIApAQCAtMjM5LDcgKzIzOSw3IEBA IGluaXRUcmllKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCQkJCWlmICh0cmdxdW90ZWQgJiYg c3RhdGUgPiAwKQogCQkJCXsKIAkJCQkJLyogSWdub3JlIGZpcnN0IGFuZCBlbmQgcXVvdGVz ICovCi0JCQkJCXRyZ3N0b3JlID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqICh0 cmdsZW4gLSAyKSk7CisJCQkJCXRyZ3N0b3JlID0gcGFsbG9jX2FycmF5KGNoYXIsIHRyZ2xl biAtIDIpOwogCQkJCQl0cmdzdG9yZWxlbiA9IDA7CiAJCQkJCWZvciAoaW50IGkgPSAxOyBp IDwgdHJnbGVuIC0gMTsgaSsrKQogCQkJCQl7CkBAIC0yNTIsNyArMjUyLDcgQEAgaW5pdFRy aWUoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7Ci0JCQkJ CXRyZ3N0b3JlID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIHRyZ2xlbik7CisJ CQkJCXRyZ3N0b3JlID0gcGFsbG9jX2FycmF5KGNoYXIsIHRyZ2xlbik7CiAJCQkJCXRyZ3N0 b3JlbGVuID0gdHJnbGVuOwogCQkJCQltZW1jcHkodHJnc3RvcmUsIHRyZywgdHJnc3RvcmVs ZW4pOwogCQkJCX0KQEAgLTQyMSw3ICs0MjEsNyBAQCB1bmFjY2VudF9sZXhpemUoUEdfRlVO Q1RJT05fQVJHUykKIAkvKiByZXR1cm4gYSByZXN1bHQgb25seSBpZiB3ZSBtYWRlIGF0IGxl YXN0IG9uZSBzdWJzdGl0dXRpb24gKi8KIAlpZiAoYnVmLmRhdGEgIT0gTlVMTCkKIAl7Ci0J CXJlcyA9IChUU0xleGVtZSAqKSBwYWxsb2MwKHNpemVvZihUU0xleGVtZSkgKiAyKTsKKwkJ cmVzID0gcGFsbG9jMF9hcnJheShUU0xleGVtZSwgMik7CiAJCXJlcy0+bGV4ZW1lID0gYnVm LmRhdGE7CiAJCXJlcy0+ZmxhZ3MgPSBUU0xfRklMVEVSOwogCX0KZGlmZiAtLWdpdCBhL2Nv bnRyaWIveG1sMi94cGF0aC5jIGIvY29udHJpYi94bWwyL3hwYXRoLmMKaW5kZXggNGFjMjkx YzgyNTEuLjY2MmQ3ZDAyZjI3IDEwMDY0NAotLS0gYS9jb250cmliL3htbDIveHBhdGguYwor KysgYi9jb250cmliL3htbDIveHBhdGguYwpAQCAtNDg1LDggKzQ4NSw3IEBAIHBneG1sX3hw YXRoKHRleHQgKmRvY3VtZW50LCB4bWxDaGFyICp4cGF0aCwgUGdYbWxFcnJvckNvbnRleHQg KnhtbGVycmN4dCkKIHsKIAlpbnQzMgkJZG9jc2l6ZSA9IFZBUlNJWkVfQU5ZX0VYSERSKGRv Y3VtZW50KTsKIAl4bWxYUGF0aENvbXBFeHByUHRyIGNvbXBwYXRoOwotCXhwYXRoX3dvcmtz cGFjZSAqd29ya3NwYWNlID0gKHhwYXRoX3dvcmtzcGFjZSAqKQotCQlwYWxsb2MwKHNpemVv Zih4cGF0aF93b3Jrc3BhY2UpKTsKKwl4cGF0aF93b3Jrc3BhY2UgKndvcmtzcGFjZSA9IHBh bGxvYzBfb2JqZWN0KHhwYXRoX3dvcmtzcGFjZSk7CiAKIAl3b3Jrc3BhY2UtPmRvY3RyZWUg PSBOVUxMOwogCXdvcmtzcGFjZS0+Y3R4dCA9IE5VTEw7CmRpZmYgLS1naXQgYS9jb250cmli L3htbDIveHNsdF9wcm9jLmMgYi9jb250cmliL3htbDIveHNsdF9wcm9jLmMKaW5kZXggMzY1 NzhiODJlNGQuLjJiZTg3YmVjMGNkIDEwMDY0NAotLS0gYS9jb250cmliL3htbDIveHNsdF9w cm9jLmMKKysrIGIvY29udHJpYi94bWwyL3hzbHRfcHJvYy5jCkBAIC02OSw3ICs2OSw3IEBA IHhzbHRfcHJvY2VzcyhQR19GVU5DVElPTl9BUkdTKQogCWVsc2UKIAl7CiAJCS8qIE5vIHBh cmFtZXRlcnMgKi8KLQkJcGFyYW1zID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYyhzaXplb2Yo Y2hhciAqKSk7CisJCXBhcmFtcyA9IHBhbGxvY19vYmplY3QoY29uc3QgY2hhciAqKTsKIAkJ cGFyYW1zWzBdID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9naXN0 LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCmluZGV4IGVlODZlMTcwMDU1Li41Y2Jl YThjM2Q1NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZ2lzdC5zZ21sCkBAIC01MDYsMTEgKzUwNiwxMSBAQCBteV9jb21wcmVzcyhQ R19GVU5DVElPTl9BUkdTKQogICAgIGlmIChlbnRyeS0mZ3Q7bGVhZmtleSkKICAgICB7CiAg ICAgICAgIC8qIHJlcGxhY2UgZW50cnktJmd0O2tleSB3aXRoIGEgY29tcHJlc3NlZCB2ZXJz aW9uICovCi0gICAgICAgIGNvbXByZXNzZWRfZGF0YV90eXBlICpjb21wcmVzc2VkX2RhdGEg PSBwYWxsb2Moc2l6ZW9mKGNvbXByZXNzZWRfZGF0YV90eXBlKSk7CisgICAgICAgIGNvbXBy ZXNzZWRfZGF0YV90eXBlICpjb21wcmVzc2VkX2RhdGEgPSBwYWxsb2Nfb2JqZWN0KGNvbXBy ZXNzZWRfZGF0YV90eXBlKTsKIAogICAgICAgICAvKiBmaWxsICpjb21wcmVzc2VkX2RhdGEg ZnJvbSBlbnRyeS0mZ3Q7a2V5IC4uLiAqLwogCi0gICAgICAgIHJldHZhbCA9IHBhbGxvYyhz aXplb2YoR0lTVEVOVFJZKSk7CisgICAgICAgIHJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lT VEVOVFJZKTsKICAgICAgICAgZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0 dW0oY29tcHJlc3NlZF9kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0mZ3Q7 cmVsLCBlbnRyeS0mZ3Q7cGFnZSwgZW50cnktJmd0O29mZnNldCwgRkFMU0UpOwogICAgIH0K QEAgLTkyMSw4ICs5MjEsOCBAQCBteV9mZXRjaChQR19GVU5DVElPTl9BUkdTKQogICAgIGZl dGNoZWRfZGF0YV90eXBlICpmZXRjaGVkX2RhdGE7CiAgICAgR0lTVEVOVFJZICAqcmV0dmFs OwogCi0gICAgcmV0dmFsID0gcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKLSAgICBmZXRj aGVkX2RhdGEgPSBwYWxsb2Moc2l6ZW9mKGZldGNoZWRfZGF0YV90eXBlKSk7CisgICAgcmV0 dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5UUlkpOworICAgIGZldGNoZWRfZGF0YSA9IHBh bGxvY19vYmplY3QoZmV0Y2hlZF9kYXRhX3R5cGUpOwogCiAgICAgLyoKICAgICAgKiBDb252 ZXJ0ICdmZXRjaGVkX2RhdGEnIGludG8gdGhlIGEgRGF0dW0gb2YgdGhlIG9yaWdpbmFsIGRh dGF0eXBlLgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3Jj L3NnbWwveGZ1bmMuc2dtbAppbmRleCA1MzdlZTZmYTI1NC4uMmRjOThkZjI5YzQgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVu Yy5zZ21sCkBAIC0yNDkxLDcgKzI0OTEsNyBAQCBtYWtlcG9pbnQoUEdfRlVOQ1RJT05fQVJH UykKICAgICAvKiBIZXJlLCB0aGUgcGFzcy1ieS1yZWZlcmVuY2UgbmF0dXJlIG9mIFBvaW50 IGlzIG5vdCBoaWRkZW4uICovCiAgICAgUG9pbnQgICAgICpwb2ludHggPSBQR19HRVRBUkdf UE9JTlRfUCgwKTsKICAgICBQb2ludCAgICAgKnBvaW50eSA9IFBHX0dFVEFSR19QT0lOVF9Q KDEpOwotICAgIFBvaW50ICAgICAqbmV3X3BvaW50ID0gKFBvaW50ICopIHBhbGxvYyhzaXpl b2YoUG9pbnQpKTsKKyAgICBQb2ludCAgICAgKm5ld19wb2ludCA9IHBhbGxvY19vYmplY3Qo UG9pbnQpOwogCiAgICAgbmV3X3BvaW50LT54ID0gcG9pbnR4LT54OwogICAgIG5ld19wb2lu dC0+eSA9IHBvaW50eS0+eTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94dHlwZXMuc2dt bCBiL2RvYy9zcmMvc2dtbC94dHlwZXMuc2dtbAppbmRleCBlNjdlNWJkZjRjNC4uZGY1NmQx YzNhY2UgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94dHlwZXMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwveHR5cGVzLnNnbWwKQEAgLTg5LDcgKzg5LDcgQEAgY29tcGxleF9pbihQR19G VU5DVElPTl9BUkdTKQogICAgICAgICAgICAgICAgICBlcnJtc2coImludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLAogICAgICAgICAgICAgICAgICAgICAgICAg ImNvbXBsZXgiLCBzdHIpKSk7CiAKLSAgICByZXN1bHQgPSAoQ29tcGxleCAqKSBwYWxsb2Mo c2l6ZW9mKENvbXBsZXgpKTsKKyAgICByZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KENvbXBsZXgp OwogICAgIHJlc3VsdC0+eCA9IHg7CiAgICAgcmVzdWx0LT55ID0geTsKICAgICBQR19SRVRV Uk5fUE9JTlRFUihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IGNiMzMz MTkyMWNiLi4yNmNiNzUwNThkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMzE4 LDcgKzMxOCw3IEBAIGluaXRpYWxpemVfYnJpbl9pbnNlcnRzdGF0ZShSZWxhdGlvbiBpZHhS ZWwsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJ b2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluZGV4SW5mby0+aWlfQ29udGV4dCk7 Ci0JYmlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEJyaW5JbnNlcnRTdGF0ZSkpOworCWJpc3Rh dGUgPSBwYWxsb2MwX29iamVjdChCcmluSW5zZXJ0U3RhdGUpOwogCWJpc3RhdGUtPmJpc19k ZXNjID0gYnJpbl9idWlsZF9kZXNjKGlkeFJlbCk7CiAJYmlzdGF0ZS0+YmlzX3JtQWNjZXNz ID0gYnJpblJldm1hcEluaXRpYWxpemUoaWR4UmVsLAogCQkJCQkJCQkJCQkJICZiaXN0YXRl LT5iaXNfcGFnZXNfcGVyX3JhbmdlKTsKQEAgLTExODUsNyArMTE4NSw3IEBAIGJyaW5idWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJewogCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCi0JCWNvb3JkaW5hdGUgPSAo U29ydENvb3JkaW5hdGUpIHBhbGxvYzAoc2l6ZW9mKFNvcnRDb29yZGluYXRlRGF0YSkpOwor CQljb29yZGluYXRlID0gcGFsbG9jMF9vYmplY3QoU29ydENvb3JkaW5hdGVEYXRhKTsKIAkJ Y29vcmRpbmF0ZS0+aXNXb3JrZXIgPSBmYWxzZTsKIAkJY29vcmRpbmF0ZS0+blBhcnRpY2lw YW50cyA9CiAJCQlzdGF0ZS0+YnNfbGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzOwpA QCAtMjM4NCw3ICsyMzg0LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVNpemUJ CWVzdHNvcnQ7CiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFy ZWRzb3J0OwotCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIgPSAoQnJpbkxlYWRlciAqKSBwYWxs b2MwKHNpemVvZihCcmluTGVhZGVyKSk7CisJQnJpbkxlYWRlciAqYnJpbmxlYWRlciA9IHBh bGxvYzBfb2JqZWN0KEJyaW5MZWFkZXIpOwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1 ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOwpAQCAtMjgyOCw3ICsyODI4LDcgQEAgX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVp bGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAog CS8qIEluaXRpYWxpemUgbG9jYWwgdHVwbGVzb3J0IGNvb3JkaW5hdGlvbiBzdGF0ZSAqLwot CWNvb3JkaW5hdGUgPSBwYWxsb2MwKHNpemVvZihTb3J0Q29vcmRpbmF0ZURhdGEpKTsKKwlj b29yZGluYXRlID0gcGFsbG9jMF9vYmplY3QoU29ydENvb3JkaW5hdGVEYXRhKTsKIAljb29y ZGluYXRlLT5pc1dvcmtlciA9IHRydWU7CiAJY29vcmRpbmF0ZS0+blBhcnRpY2lwYW50cyA9 IC0xOwogCWNvb3JkaW5hdGUtPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMKaW5kZXggZjhhMTE0NDRk NjYuLjAyOThhOWRhOGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heF9tdWx0aS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f bWlubWF4X211bHRpLmMKQEAgLTEzNDAsNyArMTM0MCw3IEBAIGJ1aWxkX2Rpc3RhbmNlcyhG bWdySW5mbyAqZGlzdGFuY2VGbiwgT2lkIGNvbGxvaWQsCiAJCXJldHVybiBOVUxMOwogCiAJ bmRpc3RhbmNlcyA9IChuZXJhbmdlcyAtIDEpOwotCWRpc3RhbmNlcyA9IChEaXN0YW5jZVZh bHVlICopIHBhbGxvYzAoc2l6ZW9mKERpc3RhbmNlVmFsdWUpICogbmRpc3RhbmNlcyk7CisJ ZGlzdGFuY2VzID0gcGFsbG9jMF9hcnJheShEaXN0YW5jZVZhbHVlLCBuZGlzdGFuY2VzKTsK IAogCS8qCiAJICogV2FsayB0aHJvdWdoIHRoZSByYW5nZXMgb25jZSBhbmQgY29tcHV0ZSB0 aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUKQEAgLTE1MDQsNyArMTUwNCw3IEBAIHJlZHVjZV9l eHBhbmRlZF9yYW5nZXMoRXhwYW5kZWRSYW5nZSAqZXJhbmdlcywgaW50IG5lcmFuZ2VzLAog CiAJLyogYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBib3VuZGFyeSB2YWx1ZXMgKi8KIAludmFs dWVzID0gMDsKLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBt YXhfdmFsdWVzKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG1heF92YWx1ZXMp OwogCiAJLyogYWRkIHRoZSBnbG9iYWwgbWluL21heCB2YWx1ZXMsIGZyb20gdGhlIGZpcnN0 L2xhc3QgcmFuZ2UgKi8KIAl2YWx1ZXNbbnZhbHVlcysrXSA9IGVyYW5nZXNbMF0ubWludmFs OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKaW5kZXggNGUzODBlY2M3 MTAuLjY0NGY5ODg5YThhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX3Jldm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFw LmMKQEAgLTc5LDcgKzc5LDcgQEAgYnJpblJldm1hcEluaXRpYWxpemUoUmVsYXRpb24gaWR4 cmVsLCBCbG9ja051bWJlciAqcGFnZXNQZXJSYW5nZSkKIAlwYWdlID0gQnVmZmVyR2V0UGFn ZShtZXRhKTsKIAltZXRhZGF0YSA9IChCcmluTWV0YVBhZ2VEYXRhICopIFBhZ2VHZXRDb250 ZW50cyhwYWdlKTsKIAotCXJldm1hcCA9IHBhbGxvYyhzaXplb2YoQnJpblJldm1hcCkpOwor CXJldm1hcCA9IHBhbGxvY19vYmplY3QoQnJpblJldm1hcCk7CiAJcmV2bWFwLT5ybV9pcmVs ID0gaWR4cmVsOwogCXJldm1hcC0+cm1fcGFnZXNQZXJSYW5nZSA9IG1ldGFkYXRhLT5wYWdl c1BlclJhbmdlOwogCXJldm1hcC0+cm1fbGFzdFJldm1hcFBhZ2UgPSBtZXRhZGF0YS0+bGFz dFJldm1hcFBhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X3R1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKaW5kZXgg ODYxZjM5N2U2ZGIuLjQ3OTZkOTRkYThkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluX3R1cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl90dXBsZS5jCkBAIC0xMTksMTMgKzExOSwxMyBAQCBicmluX2Zvcm1fdHVwbGUoQnJpbkRl c2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIEJyaW5NZW1UdXBsZSAqdHVwbGUsCiAK IAlBc3NlcnQoYnJkZXNjLT5iZF90b3RhbHN0b3JlZCA+IDApOwogCi0JdmFsdWVzID0gKERh dHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogYnJkZXNjLT5iZF90b3RhbHN0b3JlZCk7 Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MwKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRf dG90YWxzdG9yZWQpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgYnJkZXNjLT5i ZF90b3RhbHN0b3JlZCk7CisJbnVsbHMgPSBwYWxsb2MwX2FycmF5KGJvb2wsIGJyZGVzYy0+ YmRfdG90YWxzdG9yZWQpOwogCXBob255X251bGxiaXRtYXAgPSAoYml0czggKikKLQkJcGFs bG9jKHNpemVvZihiaXRzOCkgKiBCSVRNQVBMRU4oYnJkZXNjLT5iZF90b3RhbHN0b3JlZCkp OworCQlwYWxsb2NfYXJyYXkoYml0czgsIEJJVE1BUExFTihicmRlc2MtPmJkX3RvdGFsc3Rv cmVkKSk7CiAKICNpZmRlZiBUT0FTVF9JTkRFWF9IQUNLCi0JdW50b2FzdGVkX3ZhbHVlcyA9 IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGJyZGVzYy0+YmRfdG90YWxzdG9y ZWQpOworCXVudG9hc3RlZF92YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGJyZGVzYy0+ YmRfdG90YWxzdG9yZWQpOwogI2VuZGlmCiAKIAkvKgpAQCAtNDg4LDkgKzQ4OCw5IEBAIGJy aW5fbmV3X21lbXR1cGxlKEJyaW5EZXNjICpicmRlc2MpCiAJCQkJCQlzaXplb2YoQnJpblZh bHVlcykgKiBicmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzKTsKIAlkdHVwID0gcGFsbG9jMChi YXNlc2l6ZSArIHNpemVvZihEYXR1bSkgKiBicmRlc2MtPmJkX3RvdGFsc3RvcmVkKTsKIAot CWR0dXAtPmJ0X3ZhbHVlcyA9IHBhbGxvYyhzaXplb2YoRGF0dW0pICogYnJkZXNjLT5iZF90 b3RhbHN0b3JlZCk7Ci0JZHR1cC0+YnRfYWxsbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wp ICogYnJkZXNjLT5iZF90dXBkZXNjLT5uYXR0cyk7Ci0JZHR1cC0+YnRfaGFzbnVsbHMgPSBw YWxsb2Moc2l6ZW9mKGJvb2wpICogYnJkZXNjLT5iZF90dXBkZXNjLT5uYXR0cyk7CisJZHR1 cC0+YnRfdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBicmRlc2MtPmJkX3RvdGFsc3Rv cmVkKTsgCisJZHR1cC0+YnRfYWxsbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgYnJkZXNj LT5iZF90dXBkZXNjLT5uYXR0cyk7CisJZHR1cC0+YnRfaGFzbnVsbHMgPSBwYWxsb2NfYXJy YXkoYm9vbCwgYnJkZXNjLT5iZF90dXBkZXNjLT5uYXR0cyk7CiAKIAlkdHVwLT5idF9lbXB0 eV9yYW5nZSA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vYXR0bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2F0dG1hcC5jCmluZGV4 IDQ5MDFlYmVjZWY3Li40Y2ZhOWVlNzhmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9hdHRtYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2F0 dG1hcC5jCkBAIC00MSw5ICs0MSw5IEBAIG1ha2VfYXR0cm1hcChpbnQgbWFwbGVuKQogewog CUF0dHJNYXAgICAgKnJlczsKIAotCXJlcyA9IChBdHRyTWFwICopIHBhbGxvYzAoc2l6ZW9m KEF0dHJNYXApKTsKKwlyZXMgPSBwYWxsb2MwX29iamVjdChBdHRyTWFwKTsKIAlyZXMtPm1h cGxlbiA9IG1hcGxlbjsKLQlyZXMtPmF0dG51bXMgPSAoQXR0ck51bWJlciAqKSBwYWxsb2Mw KHNpemVvZihBdHRyTnVtYmVyKSAqIG1hcGxlbik7CisJcmVzLT5hdHRudW1zID0gcGFsbG9j MF9hcnJheShBdHRyTnVtYmVyLCBtYXBsZW4pOwogCXJldHVybiByZXM7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCmluZGV4IDc0YTUyZDg3MDY3Li42OTQ0 ZjcwYzQzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVw bGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0x MjMwLDggKzEyMzAsOCBAQCBoZWFwX21vZGlmeV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJ ICogTyhOXjIpIGlmIHRoZXJlIGFyZSBtYW55IG5vbi1yZXBsYWNlZCBjb2x1bW5zLCBzbyBp dCBzZWVtcyBiZXR0ZXIgdG8KIAkgKiBlcnIgb24gdGhlIHNpZGUgb2YgbGluZWFyIGNvc3Qu CiAJICovCi0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMg KiBzaXplb2YoRGF0dW0pKTsKLQlpc251bGwgPSAoYm9vbCAqKSBwYWxsb2MobnVtYmVyT2ZB dHRyaWJ1dGVzICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIG51bWJlck9mQXR0cmlidXRlcyk7CisJaXNudWxsID0gcGFsbG9jX2FycmF5KGJvb2ws IG51bWJlck9mQXR0cmlidXRlcyk7CiAKIAloZWFwX2RlZm9ybV90dXBsZSh0dXBsZSwgdHVw bGVEZXNjLCB2YWx1ZXMsIGlzbnVsbCk7CiAKQEAgLTEyOTIsOCArMTI5Miw4IEBAIGhlYXBf bW9kaWZ5X3R1cGxlX2J5X2NvbHMoSGVhcFR1cGxlIHR1cGxlLAogCSAqIGFsbG9jYXRlIGFu ZCBmaWxsIHZhbHVlcyBhbmQgaXNudWxsIGFycmF5cyBmcm9tIHRoZSB0dXBsZSwgdGhlbiBy ZXBsYWNlCiAJICogc2VsZWN0ZWQgY29sdW1ucyBmcm9tIHRoZSBpbnB1dCBhcnJheXMuCiAJ ICovCi0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMgKiBz aXplb2YoRGF0dW0pKTsKLQlpc251bGwgPSAoYm9vbCAqKSBwYWxsb2MobnVtYmVyT2ZBdHRy aWJ1dGVzICogc2l6ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0s IG51bWJlck9mQXR0cmlidXRlcyk7CisJaXNudWxsID0gcGFsbG9jX2FycmF5KGJvb2wsIG51 bWJlck9mQXR0cmlidXRlcyk7CiAKIAloZWFwX2RlZm9ybV90dXBsZSh0dXBsZSwgdHVwbGVE ZXNjLCB2YWx1ZXMsIGlzbnVsbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9jb21tb24vcHJpbnR0dXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0 dXAuYwppbmRleCA5ZjA1ZTFkMTViZC4uNDVlNzdhMjdmNDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0dXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3ByaW50dHVwLmMKQEAgLTcxLDcgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QK IERlc3RSZWNlaXZlciAqCiBwcmludHR1cF9jcmVhdGVfRFIoQ29tbWFuZERlc3QgZGVzdCkK IHsKLQlEUl9wcmludHR1cCAqc2VsZiA9IChEUl9wcmludHR1cCAqKSBwYWxsb2MwKHNpemVv ZihEUl9wcmludHR1cCkpOworCURSX3ByaW50dHVwICpzZWxmID0gcGFsbG9jMF9vYmplY3Qo RFJfcHJpbnR0dXApOwogCiAJc2VsZi0+cHViLnJlY2VpdmVTbG90ID0gcHJpbnR0dXA7CS8q IG1pZ2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCiAJc2VsZi0+cHViLnJTdGFydHVwID0gcHJp bnR0dXBfc3RhcnR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMK aW5kZXggOWUyODhkZmVjYmYuLjMxOTI2ZDhhMzY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3JlbG9wdGlvbnMuYwpAQCAtNzc2LDcgKzc3Niw3IEBAIHJlZ2lzdGVyX3JlbG9w dGlvbnNfdmFsaWRhdG9yKGxvY2FsX3JlbG9wdHMgKnJlbG9wdHMsIHJlbG9wdHNfdmFsaWRh dG9yIHZhbGlkYXRvCiBzdGF0aWMgdm9pZAogYWRkX2xvY2FsX3JlbG9wdGlvbihsb2NhbF9y ZWxvcHRzICpyZWxvcHRzLCByZWxvcHRfZ2VuICpuZXdvcHRpb24sIGludCBvZmZzZXQpCiB7 Ci0JbG9jYWxfcmVsb3B0ICpvcHQgPSBwYWxsb2Moc2l6ZW9mKCpvcHQpKTsKKwlsb2NhbF9y ZWxvcHQgKm9wdCA9IHBhbGxvY19vYmplY3QobG9jYWxfcmVsb3B0KTsKIAogCUFzc2VydChv ZmZzZXQgPCByZWxvcHRzLT5yZWxvcHRfc3RydWN0X3NpemUpOwogCkBAIC0xNTcwLDcgKzE1 NzAsNyBAQCBzdGF0aWMgcmVsb3B0X3ZhbHVlICoKIHBhcnNlTG9jYWxSZWxPcHRpb25zKGxv Y2FsX3JlbG9wdHMgKnJlbG9wdHMsIERhdHVtIG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpCiB7 CiAJaW50CQkJbm9wdHMgPSBsaXN0X2xlbmd0aChyZWxvcHRzLT5vcHRpb25zKTsKLQlyZWxv cHRfdmFsdWUgKnZhbHVlcyA9IHBhbGxvYyhzaXplb2YoKnZhbHVlcykgKiBub3B0cyk7CisJ cmVsb3B0X3ZhbHVlICp2YWx1ZXMgPSBwYWxsb2NfYXJyYXkocmVsb3B0X3ZhbHVlLCBub3B0 cyk7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaSA9IDA7CiAKQEAgLTE5OTEsNyArMTk5 MSw3IEBAIHZvaWQgKgogYnVpbGRfbG9jYWxfcmVsb3B0aW9ucyhsb2NhbF9yZWxvcHRzICpy ZWxvcHRzLCBEYXR1bSBvcHRpb25zLCBib29sIHZhbGlkYXRlKQogewogCWludAkJCW5vcHRp b25zID0gbGlzdF9sZW5ndGgocmVsb3B0cy0+b3B0aW9ucyk7Ci0JcmVsb3B0X3BhcnNlX2Vs dCAqZWxlbXMgPSBwYWxsb2Moc2l6ZW9mKCplbGVtcykgKiBub3B0aW9ucyk7CisJcmVsb3B0 X3BhcnNlX2VsdCAqZWxlbXMgPSBwYWxsb2NfYXJyYXkocmVsb3B0X3BhcnNlX2VsdCwgbm9w dGlvbnMpOwogCXJlbG9wdF92YWx1ZSAqdmFsczsKIAl2b2lkCSAgICpvcHRzOwogCWludAkJ CWkgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90aWRzdG9y ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90aWRzdG9yZS5jCmluZGV4IGZiODA3 ZDlmZTU5Li42ZmFlNDFlN2I2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90aWRzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdGlkc3Rv cmUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIFRpZFN0b3JlQ3JlYXRlTG9jYWwoc2l6ZV90IG1h eF9ieXRlcywgYm9vbCBpbnNlcnRfb25seSkKIAlzaXplX3QJCW1pbkNvbnRleHRTaXplID0g QUxMT0NTRVRfREVGQVVMVF9NSU5TSVpFOwogCXNpemVfdAkJbWF4QmxvY2tTaXplID0gQUxM T0NTRVRfREVGQVVMVF9NQVhTSVpFOwogCi0JdHMgPSBwYWxsb2MwKHNpemVvZihUaWRTdG9y ZSkpOworCXRzID0gcGFsbG9jMF9vYmplY3QoVGlkU3RvcmUpOwogCiAJLyogY2hvb3NlIHRo ZSBtYXhCbG9ja1NpemUgdG8gYmUgbm8gbGFyZ2VyIHRoYW4gMS8xNiBvZiBtYXhfYnl0ZXMg Ki8KIAl3aGlsZSAoMTYgKiBtYXhCbG9ja1NpemUgPiBtYXhfYnl0ZXMpCkBAIC0yMTIsNyAr MjEyLDcgQEAgVGlkU3RvcmVDcmVhdGVTaGFyZWQoc2l6ZV90IG1heF9ieXRlcywgaW50IHRy YW5jaGVfaWQpCiAJc2l6ZV90CQlkc2FfaW5pdF9zaXplID0gRFNBX0RFRkFVTFRfSU5JVF9T RUdNRU5UX1NJWkU7CiAJc2l6ZV90CQlkc2FfbWF4X3NpemUgPSBEU0FfTUFYX1NFR01FTlRf U0laRTsKIAotCXRzID0gcGFsbG9jMChzaXplb2YoVGlkU3RvcmUpKTsKKwl0cyA9IHBhbGxv YzBfb2JqZWN0KFRpZFN0b3JlKTsKIAogCS8qCiAJICogQ2hvb3NlIHRoZSBpbml0aWFsIGFu ZCBtYXhpbXVtIERTQSBzZWdtZW50IHNpemVzIHRvIGJlIG5vIGxvbmdlciB0aGFuCkBAIC0y NTAsNyArMjUwLDcgQEAgVGlkU3RvcmVBdHRhY2goZHNhX2hhbmRsZSBhcmVhX2hhbmRsZSwg ZHNhX3BvaW50ZXIgaGFuZGxlKQogCUFzc2VydChEc2FQb2ludGVySXNWYWxpZChoYW5kbGUp KTsKIAogCS8qIGNyZWF0ZSBwZXItYmFja2VuZCBzdGF0ZSAqLwotCXRzID0gcGFsbG9jMChz aXplb2YoVGlkU3RvcmUpKTsKKwl0cyA9IHBhbGxvYzBfb2JqZWN0KFRpZFN0b3JlKTsKIAog CWFyZWEgPSBkc2FfYXR0YWNoKGFyZWFfaGFuZGxlKTsKIApAQCAtNDcyLDcgKzQ3Miw3IEBA IFRpZFN0b3JlQmVnaW5JdGVyYXRlKFRpZFN0b3JlICp0cykKIHsKIAlUaWRTdG9yZUl0ZXIg Kml0ZXI7CiAKLQlpdGVyID0gcGFsbG9jMChzaXplb2YoVGlkU3RvcmVJdGVyKSk7CisJaXRl ciA9IHBhbGxvYzBfb2JqZWN0KFRpZFN0b3JlSXRlcik7CiAJaXRlci0+dHMgPSB0czsKIAog CWlmIChUaWRTdG9yZUlzU2hhcmVkKHRzKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vdG9hc3RfaW50ZXJuYWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3RvYXN0X2ludGVybmFscy5jCmluZGV4IDYzYjg0ODQ3M2Y4Li5kMDZhZjgyZGUxNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5jCkBA IC01NjgsNyArNTY4LDcgQEAgdG9hc3Rfb3Blbl9pbmRleGVzKFJlbGF0aW9uIHRvYXN0cmVs LAogCSpudW1faW5kZXhlcyA9IGxpc3RfbGVuZ3RoKGluZGV4bGlzdCk7CiAKIAkvKiBPcGVu IGFsbCB0aGUgaW5kZXggcmVsYXRpb25zICovCi0JKnRvYXN0aWR4cyA9IChSZWxhdGlvbiAq KSBwYWxsb2MoKm51bV9pbmRleGVzICogc2l6ZW9mKFJlbGF0aW9uKSk7CisJKnRvYXN0aWR4 cyA9IHBhbGxvY19hcnJheShSZWxhdGlvbiwgKm51bV9pbmRleGVzKTsKIAlmb3JlYWNoKGxj LCBpbmRleGxpc3QpCiAJCSgqdG9hc3RpZHhzKVtpKytdID0gaW5kZXhfb3BlbihsZmlyc3Rf b2lkKGxjKSwgbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwY29udmVydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBjb252ZXJ0 LmMKaW5kZXggMWRmMGMyZDJmOTguLjk5YzE5N2UzNjFmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3R1cGNvbnZlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3R1cGNvbnZlcnQuYwpAQCAtNzUsMTcgKzc1LDE3IEBAIGNvbnZlcnRfdHVw bGVzX2J5X3Bvc2l0aW9uKFR1cGxlRGVzYyBpbmRlc2MsCiAJfQogCiAJLyogUHJlcGFyZSB0 aGUgbWFwIHN0cnVjdHVyZSAqLwotCW1hcCA9IChUdXBsZUNvbnZlcnNpb25NYXAgKikgcGFs bG9jKHNpemVvZihUdXBsZUNvbnZlcnNpb25NYXApKTsKKwltYXAgPSBwYWxsb2Nfb2JqZWN0 KFR1cGxlQ29udmVyc2lvbk1hcCk7CiAJbWFwLT5pbmRlc2MgPSBpbmRlc2M7CiAJbWFwLT5v dXRkZXNjID0gb3V0ZGVzYzsKIAltYXAtPmF0dHJNYXAgPSBhdHRyTWFwOwogCS8qIHByZWFs bG9jYXRlIHdvcmtzcGFjZSBmb3IgRGF0dW0gYXJyYXlzICovCiAJbiA9IG91dGRlc2MtPm5h dHRzICsgMTsJCS8qICsxIGZvciBOVUxMICovCi0JbWFwLT5vdXR2YWx1ZXMgPSAoRGF0dW0g KikgcGFsbG9jKG4gKiBzaXplb2YoRGF0dW0pKTsKLQltYXAtPm91dGlzbnVsbCA9IChib29s ICopIHBhbGxvYyhuICogc2l6ZW9mKGJvb2wpKTsKKwltYXAtPm91dHZhbHVlcyA9IHBhbGxv Y19hcnJheShEYXR1bSwgbik7CisJbWFwLT5vdXRpc251bGwgPSBwYWxsb2NfYXJyYXkoYm9v bCwgbik7CiAJbiA9IGluZGVzYy0+bmF0dHMgKyAxOwkJLyogKzEgZm9yIE5VTEwgKi8KLQlt YXAtPmludmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuICogc2l6ZW9mKERhdHVtKSk7Ci0J bWFwLT5pbmlzbnVsbCA9IChib29sICopIHBhbGxvYyhuICogc2l6ZW9mKGJvb2wpKTsKKwlt YXAtPmludmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuKTsKKwltYXAtPmluaXNudWxs ID0gcGFsbG9jX2FycmF5KGJvb2wsIG4pOwogCW1hcC0+aW52YWx1ZXNbMF0gPSAoRGF0dW0p IDA7CS8qIHNldCB1cCB0aGUgTlVMTCBlbnRyeSAqLwogCW1hcC0+aW5pc251bGxbMF0gPSB0 cnVlOwogCkBAIC0xMzIsMTYgKzEzMiwxNiBAQCBjb252ZXJ0X3R1cGxlc19ieV9uYW1lX2F0 dHJtYXAoVHVwbGVEZXNjIGluZGVzYywKIAlBc3NlcnQoYXR0ck1hcCAhPSBOVUxMKTsKIAog CS8qIFByZXBhcmUgdGhlIG1hcCBzdHJ1Y3R1cmUgKi8KLQltYXAgPSAoVHVwbGVDb252ZXJz aW9uTWFwICopIHBhbGxvYyhzaXplb2YoVHVwbGVDb252ZXJzaW9uTWFwKSk7CisJbWFwID0g cGFsbG9jX29iamVjdChUdXBsZUNvbnZlcnNpb25NYXApOwogCW1hcC0+aW5kZXNjID0gaW5k ZXNjOwogCW1hcC0+b3V0ZGVzYyA9IG91dGRlc2M7CiAJbWFwLT5hdHRyTWFwID0gYXR0ck1h cDsKIAkvKiBwcmVhbGxvY2F0ZSB3b3Jrc3BhY2UgZm9yIERhdHVtIGFycmF5cyAqLwotCW1h cC0+b3V0dmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuICogc2l6ZW9mKERhdHVtKSk7Ci0J bWFwLT5vdXRpc251bGwgPSAoYm9vbCAqKSBwYWxsb2MobiAqIHNpemVvZihib29sKSk7CisJ bWFwLT5vdXR2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG4pOworCW1hcC0+b3V0aXNu dWxsID0gcGFsbG9jX2FycmF5KGJvb2wsIG4pOwogCW4gPSBpbmRlc2MtPm5hdHRzICsgMTsJ CS8qICsxIGZvciBOVUxMICovCi0JbWFwLT5pbnZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2Mo biAqIHNpemVvZihEYXR1bSkpOwotCW1hcC0+aW5pc251bGwgPSAoYm9vbCAqKSBwYWxsb2Mo biAqIHNpemVvZihib29sKSk7CisJbWFwLT5pbnZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1 bSwgbik7CisJbWFwLT5pbmlzbnVsbCA9IHBhbGxvY19hcnJheShib29sLCBuKTsKIAltYXAt PmludmFsdWVzWzBdID0gKERhdHVtKSAwOwkvKiBzZXQgdXAgdGhlIE5VTEwgZW50cnkgKi8K IAltYXAtPmluaXNudWxsWzBdID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1 cGRlc2MuYwppbmRleCBkNzE1YzM0NWRkOC4uYmNkMWRkY2M2OGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vdHVwZGVzYy5jCkBAIC0zNjEsNyArMzYxLDcgQEAgQ3JlYXRlVHVwbGVE ZXNjQ29weUNvbnN0cihUdXBsZURlc2MgdHVwZGVzYykKIAkvKiBDb3B5IHRoZSBUdXBsZUNv bnN0ciBkYXRhIHN0cnVjdHVyZSwgaWYgYW55ICovCiAJaWYgKGNvbnN0cikKIAl7Ci0JCVR1 cGxlQ29uc3RyICpjcHkgPSAoVHVwbGVDb25zdHIgKikgcGFsbG9jMChzaXplb2YoVHVwbGVD b25zdHIpKTsKKwkJVHVwbGVDb25zdHIgKmNweSA9IHBhbGxvYzBfb2JqZWN0KFR1cGxlQ29u c3RyKTsKIAogCQljcHktPmhhc19ub3RfbnVsbCA9IGNvbnN0ci0+aGFzX25vdF9udWxsOwog CQljcHktPmhhc19nZW5lcmF0ZWRfc3RvcmVkID0gY29uc3RyLT5oYXNfZ2VuZXJhdGVkX3N0 b3JlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYwppbmRleCA2NDRkNDg0ZWE1My4u NDdmODgxYWU1OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRy ZWUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKQEAgLTg1LDcg Kzg1LDcgQEAgZ2luRmluZExlYWZQYWdlKEdpbkJ0cmVlIGJ0cmVlLCBib29sIHNlYXJjaE1v ZGUsCiB7CiAJR2luQnRyZWVTdGFjayAqc3RhY2s7CiAKLQlzdGFjayA9IChHaW5CdHJlZVN0 YWNrICopIHBhbGxvYyhzaXplb2YoR2luQnRyZWVTdGFjaykpOworCXN0YWNrID0gcGFsbG9j X29iamVjdChHaW5CdHJlZVN0YWNrKTsKIAlzdGFjay0+Ymxrbm8gPSBidHJlZS0+cm9vdEJs a25vOwogCXN0YWNrLT5idWZmZXIgPSBSZWFkQnVmZmVyKGJ0cmVlLT5pbmRleCwgYnRyZWUt PnJvb3RCbGtubyk7CiAJc3RhY2stPnBhcmVudCA9IE5VTEw7CkBAIC0xNTIsNyArMTUyLDcg QEAgZ2luRmluZExlYWZQYWdlKEdpbkJ0cmVlIGJ0cmVlLCBib29sIHNlYXJjaE1vZGUsCiAJ CX0KIAkJZWxzZQogCQl7Ci0JCQlHaW5CdHJlZVN0YWNrICpwdHIgPSAoR2luQnRyZWVTdGFj ayAqKSBwYWxsb2Moc2l6ZW9mKEdpbkJ0cmVlU3RhY2spKTsKKwkJCUdpbkJ0cmVlU3RhY2sg KnB0ciA9IHBhbGxvY19vYmplY3QoR2luQnRyZWVTdGFjayk7CiAKIAkJCXB0ci0+cGFyZW50 ID0gc3RhY2s7CiAJCQlzdGFjayA9IHB0cjsKQEAgLTI0Niw3ICsyNDYsNyBAQCBnaW5GaW5k UGFyZW50cyhHaW5CdHJlZSBidHJlZSwgR2luQnRyZWVTdGFjayAqc3RhY2spCiAJYmxrbm8g PSByb290LT5ibGtubzsKIAlidWZmZXIgPSByb290LT5idWZmZXI7CiAKLQlwdHIgPSAoR2lu QnRyZWVTdGFjayAqKSBwYWxsb2Moc2l6ZW9mKEdpbkJ0cmVlU3RhY2spKTsKKwlwdHIgPSBw YWxsb2Nfb2JqZWN0KEdpbkJ0cmVlU3RhY2spOwogCiAJZm9yICg7OykKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ1bGsuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luYnVsay5jCmluZGV4IDMwMmNiMjA5MmE5Li5mNzNlZTdiMWZhNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5idWxrLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW5idWxrLmMKQEAgLTkzLDcgKzkzLDcgQEAgZ2luQWxsb2NF bnRyeUFjY3VtdWxhdG9yKHZvaWQgKmFyZykKIAkgKi8KIAlpZiAoYWNjdW0tPmVudHJ5YWxs b2NhdG9yID09IE5VTEwgfHwgYWNjdW0tPmVhc191c2VkID49IERFRl9ORU5UUlkpCiAJewot CQlhY2N1bS0+ZW50cnlhbGxvY2F0b3IgPSBwYWxsb2Moc2l6ZW9mKEdpbkVudHJ5QWNjdW11 bGF0b3IpICogREVGX05FTlRSWSk7CisJCWFjY3VtLT5lbnRyeWFsbG9jYXRvciA9IHBhbGxv Y19hcnJheShHaW5FbnRyeUFjY3VtdWxhdG9yLCBERUZfTkVOVFJZKTsKIAkJYWNjdW0tPmFs bG9jYXRlZE1lbW9yeSArPSBHZXRNZW1vcnlDaHVua1NwYWNlKGFjY3VtLT5lbnRyeWFsbG9j YXRvcik7CiAJCWFjY3VtLT5lYXNfdXNlZCA9IDA7CiAJfQpAQCAtMTc3LDggKzE3Nyw3IEBA IGdpbkluc2VydEJBRW50cnkoQnVpbGRBY2N1bXVsYXRvciAqYWNjdW0sCiAJCWVhLT5tYXhj b3VudCA9IERFRl9OUFRSOwogCQllYS0+Y291bnQgPSAxOwogCQllYS0+c2hvdWxkU29ydCA9 IGZhbHNlOwotCQllYS0+bGlzdCA9Ci0JCQkoSXRlbVBvaW50ZXJEYXRhICopIHBhbGxvYyhz aXplb2YoSXRlbVBvaW50ZXJEYXRhKSAqIERFRl9OUFRSKTsKKwkJZWEtPmxpc3QgPSBwYWxs b2NfYXJyYXkoSXRlbVBvaW50ZXJEYXRhLCBERUZfTlBUUik7CiAJCWVhLT5saXN0WzBdID0g KmhlYXBwdHI7CiAJCWFjY3VtLT5hbGxvY2F0ZWRNZW1vcnkgKz0gR2V0TWVtb3J5Q2h1bmtT cGFjZShlYS0+bGlzdCk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9naW5kYXRhcGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5j CmluZGV4IGFiMTlhODU0Y2Q3Li42MzY0MDdjNGI5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2luZGF0YXBhZ2UuYwpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgZGF0YVNwbGl0UGFnZUlu dGVybmFsKEdpbkJ0cmVlIGJ0cmVlLCBCdWZmZXIgb3JpZ2J1ZiwKIHN0YXRpYyB2b2lkICoK IGRhdGFQcmVwYXJlRG93bmxpbmsoR2luQnRyZWUgYnRyZWUsIEJ1ZmZlciBsYnVmKQogewot CVBvc3RpbmdJdGVtICpwaXRlbSA9IHBhbGxvYyhzaXplb2YoUG9zdGluZ0l0ZW0pKTsKKwlQ b3N0aW5nSXRlbSAqcGl0ZW0gPSBwYWxsb2Nfb2JqZWN0KFBvc3RpbmdJdGVtKTsKIAlQYWdl CQlscGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CiAKIAlQb3N0aW5nSXRlbVNldEJsb2Nr TnVtYmVyKHBpdGVtLCBCdWZmZXJHZXRCbG9ja051bWJlcihsYnVmKSk7CkBAIC0xMzc0LDcg KzEzNzQsNyBAQCBkaXNhc3NlbWJsZUxlYWYoUGFnZSBwYWdlKQogCVBvaW50ZXIJCXNlZ2Jl Z2luOwogCVBvaW50ZXIJCXNlZ2VuZDsKIAotCWxlYWYgPSBwYWxsb2MwKHNpemVvZihkaXNh c3NlbWJsZWRMZWFmKSk7CisJbGVhZiA9IHBhbGxvYzBfb2JqZWN0KGRpc2Fzc2VtYmxlZExl YWYpOwogCWRsaXN0X2luaXQoJmxlYWYtPnNlZ21lbnRzKTsKIAogCWlmIChHaW5QYWdlSXND b21wcmVzc2VkKHBhZ2UpKQpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgZGlzYXNzZW1ibGVMZWFm KFBhZ2UgcGFnZSkKIAkJc2VnZW5kID0gc2VnYmVnaW4gKyBHaW5EYXRhTGVhZlBhZ2VHZXRQ b3N0aW5nTGlzdFNpemUocGFnZSk7CiAJCXdoaWxlICgoUG9pbnRlcikgc2VnIDwgc2VnZW5k KQogCQl7Ci0JCQlsZWFmU2VnbWVudEluZm8gKnNlZ2luZm8gPSBwYWxsb2Moc2l6ZW9mKGxl YWZTZWdtZW50SW5mbykpOworCQkJbGVhZlNlZ21lbnRJbmZvICpzZWdpbmZvID0gcGFsbG9j X29iamVjdChsZWFmU2VnbWVudEluZm8pOwogCiAJCQlzZWdpbmZvLT5hY3Rpb24gPSBHSU5f U0VHTUVOVF9VTk1PRElGSUVEOwogCQkJc2VnaW5mby0+c2VnID0gc2VnOwpAQCAtMTQxNCw3 ICsxNDE0LDcgQEAgZGlzYXNzZW1ibGVMZWFmKFBhZ2UgcGFnZSkKIAogCQlpZiAobnVuY29t cHJlc3NlZCA+IDApCiAJCXsKLQkJCXNlZ2luZm8gPSBwYWxsb2Moc2l6ZW9mKGxlYWZTZWdt ZW50SW5mbykpOworCQkJc2VnaW5mbyA9IHBhbGxvY19vYmplY3QobGVhZlNlZ21lbnRJbmZv KTsKIAogCQkJc2VnaW5mby0+YWN0aW9uID0gR0lOX1NFR01FTlRfUkVQTEFDRTsKIAkJCXNl Z2luZm8tPnNlZyA9IE5VTEw7CkBAIC0xNDU1LDcgKzE0NTUsNyBAQCBhZGRJdGVtc1RvTGVh ZihkaXNhc3NlbWJsZWRMZWFmICpsZWFmLCBJdGVtUG9pbnRlciBuZXdJdGVtcywgaW50IG5O ZXdJdGVtcykKIAkgKi8KIAlpZiAoZGxpc3RfaXNfZW1wdHkoJmxlYWYtPnNlZ21lbnRzKSkK IAl7Ci0JCW5ld3NlZyA9IHBhbGxvYyhzaXplb2YobGVhZlNlZ21lbnRJbmZvKSk7CisJCW5l d3NlZyA9IHBhbGxvY19vYmplY3QobGVhZlNlZ21lbnRJbmZvKTsKIAkJbmV3c2VnLT5zZWcg PSBOVUxMOwogCQluZXdzZWctPml0ZW1zID0gbmV3SXRlbXM7CiAJCW5ld3NlZy0+bml0ZW1z ID0gbk5ld0l0ZW1zOwpAQCAtMTUxMiw3ICsxNTEyLDcgQEAgYWRkSXRlbXNUb0xlYWYoZGlz YXNzZW1ibGVkTGVhZiAqbGVhZiwgSXRlbVBvaW50ZXIgbmV3SXRlbXMsIGludCBuTmV3SXRl bXMpCiAJCQljdXItPnNlZyAhPSBOVUxMICYmCiAJCQlTaXplT2ZHaW5Qb3N0aW5nTGlzdChj dXItPnNlZykgPj0gR2luUG9zdGluZ0xpc3RTZWdtZW50VGFyZ2V0U2l6ZSkKIAkJewotCQkJ bmV3c2VnID0gcGFsbG9jKHNpemVvZihsZWFmU2VnbWVudEluZm8pKTsKKwkJCW5ld3NlZyA9 IHBhbGxvY19vYmplY3QobGVhZlNlZ21lbnRJbmZvKTsKIAkJCW5ld3NlZy0+c2VnID0gTlVM TDsKIAkJCW5ld3NlZy0+aXRlbXMgPSBuZXh0bmV3OwogCQkJbmV3c2VnLT5uaXRlbXMgPSBu dGhpczsKQEAgLTE2MjksNyArMTYyOSw3IEBAIGxlYWZSZXBhY2tJdGVtcyhkaXNhc3NlbWJs ZWRMZWFmICpsZWFmLCBJdGVtUG9pbnRlciByZW1haW5pbmcpCiAJCQkJCWlmIChzZWdpbmZv LT5hY3Rpb24gIT0gR0lOX1NFR01FTlRfSU5TRVJUKQogCQkJCQkJc2VnaW5mby0+YWN0aW9u ID0gR0lOX1NFR01FTlRfUkVQTEFDRTsKIAotCQkJCQluZXh0c2VnID0gcGFsbG9jKHNpemVv ZihsZWFmU2VnbWVudEluZm8pKTsKKwkJCQkJbmV4dHNlZyA9IHBhbGxvY19vYmplY3QobGVh ZlNlZ21lbnRJbmZvKTsKIAkJCQkJbmV4dHNlZy0+YWN0aW9uID0gR0lOX1NFR01FTlRfSU5T RVJUOwogCQkJCQluZXh0c2VnLT5zZWcgPSBOVUxMOwogCQkJCQluZXh0c2VnLT5pdGVtcyA9 ICZzZWdpbmZvLT5pdGVtc1tucGFja2VkXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luZW50cnlwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmVu dHJ5cGFnZS5jCmluZGV4IGMwNTkyMzY3NzAwLi42MzQxM2FmYTAwYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5lbnRyeXBhZ2UuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmVudHJ5cGFnZS5jCkBAIC0xODMsNyArMTgzLDcgQEAgZ2luUmVh ZFR1cGxlKEdpblN0YXRlICpnaW5zdGF0ZSwgT2Zmc2V0TnVtYmVyIGF0dG51bSwgSW5kZXhU dXBsZSBpdHVwLAogCX0KIAllbHNlCiAJewotCQlpcGQgPSAoSXRlbVBvaW50ZXIpIHBhbGxv YyhzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSAqIG5pcGQpOworCQlpcGQgPSBwYWxsb2NfYXJy YXkoSXRlbVBvaW50ZXJEYXRhLCBuaXBkKTsKIAkJbWVtY3B5KGlwZCwgcHRyLCBzaXplb2Yo SXRlbVBvaW50ZXJEYXRhKSAqIG5pcGQpOwogCX0KIAkqbml0ZW1zID0gbmlwZDsKQEAgLTcw OCw3ICs3MDgsNyBAQCBlbnRyeVByZXBhcmVEb3dubGluayhHaW5CdHJlZSBidHJlZSwgQnVm ZmVyIGxidWYpCiAKIAlpdHVwID0gZ2V0UmlnaHRNb3N0VHVwbGUobHBhZ2UpOwogCi0JaW5z ZXJ0RGF0YSA9IHBhbGxvYyhzaXplb2YoR2luQnRyZWVFbnRyeUluc2VydERhdGEpKTsKKwlp bnNlcnREYXRhID0gcGFsbG9jX29iamVjdChHaW5CdHJlZUVudHJ5SW5zZXJ0RGF0YSk7CiAJ aW5zZXJ0RGF0YS0+ZW50cnkgPSBHaW5Gb3JtSW50ZXJpb3JUdXBsZShpdHVwLCBscGFnZSwg bGJsa25vKTsKIAlpbnNlcnREYXRhLT5pc0RlbGV0ZSA9IGZhbHNlOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmdldC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5nZXQuYwppbmRleCAwZDQxMDhkMDVhMy4uYjNlMmU5ZDVmNmUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW5nZXQuYwpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0YXJ0U2NhbktleShH aW5TdGF0ZSAqZ2luc3RhdGUsIEdpblNjYW5PcGFxdWUgc28sIEdpblNjYW5LZXkga2V5KQog CXsKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNvLT50ZW1wQ3R4KTsKIAotCQllbnRyeUlu ZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIGtleS0+bmVudHJpZXMpOwor CQllbnRyeUluZGV4ZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBrZXktPm5lbnRyaWVzKTsKIAkJ Zm9yIChpID0gMDsgaSA8IGtleS0+bmVudHJpZXM7IGkrKykKIAkJCWVudHJ5SW5kZXhlc1tp XSA9IGk7CiAJCXFzb3J0X2FyZyhlbnRyeUluZGV4ZXMsIGtleS0+bmVudHJpZXMsIHNpemVv ZihpbnQpLApAQCAtMTg3Myw3ICsxODczLDcgQEAgc2NhblBlbmRpbmdJbnNlcnQoSW5kZXhT Y2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSwgaW50NjQgKm50aWRzKQogCUxvY2tCdWZm ZXIocG9zLnBlbmRpbmdCdWZmZXIsIEdJTl9TSEFSRSk7CiAJcG9zLmZpcnN0T2Zmc2V0ID0g Rmlyc3RPZmZzZXROdW1iZXI7CiAJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhYnVmZmVyKTsK LQlwb3MuaGFzTWF0Y2hLZXkgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogc28tPm5rZXlzKTsK Kwlwb3MuaGFzTWF0Y2hLZXkgPSBwYWxsb2NfYXJyYXkoYm9vbCwgc28tPm5rZXlzKTsKIAog CS8qCiAJICogbG9vcCBmb3IgZWFjaCBoZWFwIHJvdy4gc2NhbkdldENhbmRpZGF0ZSByZXR1 cm5zIGZ1bGwgcm93IG9yIHJvdydzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpp bmRleCBmODdjNjBhMjMwYy4uZGYzMGRjYzAyMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYwpAQCAtNzA3LDcgKzcwNyw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAl7CiAJCVNvcnRDb29y ZGluYXRlIGNvb3JkaW5hdGU7CiAKLQkJY29vcmRpbmF0ZSA9IChTb3J0Q29vcmRpbmF0ZSkg cGFsbG9jMChzaXplb2YoU29ydENvb3JkaW5hdGVEYXRhKSk7CisJCWNvb3JkaW5hdGUgPSBw YWxsb2MwX29iamVjdChTb3J0Q29vcmRpbmF0ZURhdGEpOwogCQljb29yZGluYXRlLT5pc1dv cmtlciA9IGZhbHNlOwogCQljb29yZGluYXRlLT5uUGFydGljaXBhbnRzID0KIAkJCXN0YXRl LT5ic19sZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHM7CkBAIC03OTEsNyArNzkxLDcg QEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAq aW5kZXhJbmZvKQogCS8qCiAJICogUmV0dXJuIHN0YXRpc3RpY3MKIAkgKi8KLQlyZXN1bHQg PSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQp KTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCiAJcmVz dWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9 IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOwpAQCAtODY3LDcgKzg2Nyw3IEBAIGdpbmluc2VydChS ZWxhdGlvbiBpbmRleCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAogCWlmIChnaW5z dGF0ZSA9PSBOVUxMKQogCXsKIAkJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGlu ZGV4SW5mby0+aWlfQ29udGV4dCk7Ci0JCWdpbnN0YXRlID0gKEdpblN0YXRlICopIHBhbGxv YyhzaXplb2YoR2luU3RhdGUpKTsKKwkJZ2luc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEdpblN0 YXRlKTsKIAkJaW5pdEdpblN0YXRlKGdpbnN0YXRlLCBpbmRleCk7CiAJCWluZGV4SW5mby0+ aWlfQW1DYWNoZSA9IGdpbnN0YXRlOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4 KTsKQEAgLTkzNCw3ICs5MzQsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVNpemUJ CWVzdHNvcnQ7CiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpz aGFyZWRzb3J0OwotCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IChHaW5MZWFkZXIgKikgcGFs bG9jMChzaXplb2YoR2luTGVhZGVyKSk7CisJR2luTGVhZGVyICAqZ2lubGVhZGVyID0gcGFs bG9jMF9vYmplY3QoR2luTGVhZGVyKTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZm ZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1 ZTsKQEAgLTEyNTksNyArMTI1OSw3IEBAIEFzc2VydENoZWNrR2luQnVmZmVyKEdpbkJ1ZmZl ciAqYnVmZmVyKQogc3RhdGljIEdpbkJ1ZmZlciAqCiBHaW5CdWZmZXJJbml0KFJlbGF0aW9u IGluZGV4KQogewotCUdpbkJ1ZmZlciAgKmJ1ZmZlciA9IHBhbGxvYzAoc2l6ZW9mKEdpbkJ1 ZmZlcikpOworCUdpbkJ1ZmZlciAgKmJ1ZmZlciA9IHBhbGxvYzBfb2JqZWN0KEdpbkJ1ZmZl cik7CiAJaW50CQkJaSwKIAkJCQluS2V5czsKIAlUdXBsZURlc2MJZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IoaW5kZXgpOwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgR2luQnVmZmVySW5pdChS ZWxhdGlvbiBpbmRleCkKIAogCW5LZXlzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5 QXR0cmlidXRlcyhpbmRleCk7CiAKLQlidWZmZXItPnNzdXAgPSBwYWxsb2MwKHNpemVvZihT b3J0U3VwcG9ydERhdGEpICogbktleXMpOworCWJ1ZmZlci0+c3N1cCA9IHBhbGxvYzBfYXJy YXkoU29ydFN1cHBvcnREYXRhLCBuS2V5cyk7CiAKIAkvKgogCSAqIExvb2t1cCBvcmRlcmlu ZyBvcGVyYXRvciBmb3IgdGhlIGluZGV4IGtleSBkYXRhIHR5cGUsIGFuZCBpbml0aWFsaXpl CkBAIC0yMDMwLDcgKzIwMzAsNyBAQCBfZ2luX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEdp bkJ1aWxkU3RhdGUgKnN0YXRlLAogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAogCS8qIElu aXRpYWxpemUgbG9jYWwgdHVwbGVzb3J0IGNvb3JkaW5hdGlvbiBzdGF0ZSAqLwotCWNvb3Jk aW5hdGUgPSBwYWxsb2MwKHNpemVvZihTb3J0Q29vcmRpbmF0ZURhdGEpKTsKKwljb29yZGlu YXRlID0gcGFsbG9jMF9vYmplY3QoU29ydENvb3JkaW5hdGVEYXRhKTsKIAljb29yZGluYXRl LT5pc1dvcmtlciA9IHRydWU7CiAJY29vcmRpbmF0ZS0+blBhcnRpY2lwYW50cyA9IC0xOwog CWNvb3JkaW5hdGUtPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwpAQCAtMjI3OSw3ICsyMjc5 LDcgQEAgX2dpbl9idWlsZF90dXBsZShPZmZzZXROdW1iZXIgYXR0cm51bSwgdW5zaWduZWQg Y2hhciBjYXRlZ29yeSwKIAl3aGlsZSAobmNvbXByZXNzZWQgPCBuaXRlbXMpCiAJewogCQlp bnQJCQljbnQ7Ci0JCUdpblNlZ21lbnRJbmZvICpzZWdpbmZvID0gcGFsbG9jKHNpemVvZihH aW5TZWdtZW50SW5mbykpOworCQlHaW5TZWdtZW50SW5mbyAqc2VnaW5mbyA9IHBhbGxvY19v YmplY3QoR2luU2VnbWVudEluZm8pOwogCiAJCXNlZ2luZm8tPnNlZyA9IGdpbkNvbXByZXNz UG9zdGluZ0xpc3QoJml0ZW1zW25jb21wcmVzc2VkXSwKIAkJCQkJCQkJCQkJICAobml0ZW1z IC0gbmNvbXByZXNzZWQpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5zY2FuLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnNjYW4uYwppbmRleCAyNjA4 MTY5MzM4My4uMmNhNjM1OTA5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2luc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luc2Nhbi5jCkBA IC0zMyw3ICszMyw3IEBAIGdpbmJlZ2luc2NhbihSZWxhdGlvbiByZWwsIGludCBua2V5cywg aW50IG5vcmRlcmJ5cykKIAlzY2FuID0gUmVsYXRpb25HZXRJbmRleFNjYW4ocmVsLCBua2V5 cywgbm9yZGVyYnlzKTsKIAogCS8qIGFsbG9jYXRlIHByaXZhdGUgd29ya3NwYWNlICovCi0J c28gPSAoR2luU2Nhbk9wYXF1ZSkgcGFsbG9jKHNpemVvZihHaW5TY2FuT3BhcXVlRGF0YSkp OworCXNvID0gKEdpblNjYW5PcGFxdWUpIHBhbGxvY19vYmplY3QoR2luU2Nhbk9wYXF1ZURh dGEpOwogCXNvLT5rZXlzID0gTlVMTDsKIAlzby0+bmtleXMgPSAwOwogCXNvLT50ZW1wQ3R4 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LApAQCAtOTgs NyArOTgsNyBAQCBnaW5GaWxsU2NhbkVudHJ5KEdpblNjYW5PcGFxdWUgc28sIE9mZnNldE51 bWJlciBhdHRudW0sCiAJfQogCiAJLyogTm9wZSwgY3JlYXRlIGEgbmV3IGVudHJ5ICovCi0J c2NhbkVudHJ5ID0gKEdpblNjYW5FbnRyeSkgcGFsbG9jKHNpemVvZihHaW5TY2FuRW50cnlE YXRhKSk7CisJc2NhbkVudHJ5ID0gcGFsbG9jX29iamVjdChHaW5TY2FuRW50cnlEYXRhKTsK IAlzY2FuRW50cnktPnF1ZXJ5S2V5ID0gcXVlcnlLZXk7CiAJc2NhbkVudHJ5LT5xdWVyeUNh dGVnb3J5ID0gcXVlcnlDYXRlZ29yeTsKIAlzY2FuRW50cnktPmlzUGFydGlhbE1hdGNoID0g aXNQYXJ0aWFsTWF0Y2g7CkBAIC0xMjMsOCArMTIzLDcgQEAgZ2luRmlsbFNjYW5FbnRyeShH aW5TY2FuT3BhcXVlIHNvLCBPZmZzZXROdW1iZXIgYXR0bnVtLAogCWlmIChzby0+dG90YWxl bnRyaWVzID49IHNvLT5hbGxvY2VudHJpZXMpCiAJewogCQlzby0+YWxsb2NlbnRyaWVzICo9 IDI7Ci0JCXNvLT5lbnRyaWVzID0gKEdpblNjYW5FbnRyeSAqKQotCQkJcmVwYWxsb2Moc28t PmVudHJpZXMsIHNvLT5hbGxvY2VudHJpZXMgKiBzaXplb2YoR2luU2NhbkVudHJ5KSk7CisJ CXNvLT5lbnRyaWVzID0gcmVwYWxsb2NfYXJyYXkoc28tPmVudHJpZXMsIEdpblNjYW5FbnRy eSwgc28tPmFsbG9jZW50cmllcyk7CiAJfQogCXNvLT5lbnRyaWVzW3NvLT50b3RhbGVudHJp ZXMrK10gPSBzY2FuRW50cnk7CiAKQEAgLTE3MCwxMCArMTY5LDggQEAgZ2luRmlsbFNjYW5L ZXkoR2luU2Nhbk9wYXF1ZSBzbywgT2Zmc2V0TnVtYmVyIGF0dG51bSwKIAlrZXktPm51c2Vy ZW50cmllcyA9IG5RdWVyeVZhbHVlczsKIAogCS8qIEFsbG9jYXRlIG9uZSBleHRyYSBhcnJh eSBzbG90IGZvciBwb3NzaWJsZSAiaGlkZGVuIiBlbnRyeSAqLwotCWtleS0+c2NhbkVudHJ5 ID0gKEdpblNjYW5FbnRyeSAqKSBwYWxsb2Moc2l6ZW9mKEdpblNjYW5FbnRyeSkgKgotCQkJ CQkJCQkJCQkgKG5RdWVyeVZhbHVlcyArIDEpKTsKLQlrZXktPmVudHJ5UmVzID0gKEdpblRl cm5hcnlWYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihHaW5UZXJuYXJ5VmFsdWUpICoKLQkJCQkJ CQkJCQkJCShuUXVlcnlWYWx1ZXMgKyAxKSk7CisJa2V5LT5zY2FuRW50cnkgPSBwYWxsb2Nf YXJyYXkoR2luU2NhbkVudHJ5LCBuUXVlcnlWYWx1ZXMgKyAxKTsKKwlrZXktPmVudHJ5UmVz ID0gcGFsbG9jMF9hcnJheShHaW5UZXJuYXJ5VmFsdWUsIG5RdWVyeVZhbHVlcyArIDEpOwog CiAJa2V5LT5xdWVyeSA9IHF1ZXJ5OwogCWtleS0+cXVlcnlWYWx1ZXMgPSBxdWVyeVZhbHVl czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKaW5kZXggNzhmN2I3YTI0OTUuLjYwNWY4 MGFhZDM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYwpAQCAtNTAwLDkgKzUwMCw5 IEBAIGdpbkV4dHJhY3RFbnRyaWVzKEdpblN0YXRlICpnaW5zdGF0ZSwgT2Zmc2V0TnVtYmVy IGF0dG51bSwKIAlpZiAoaXNOdWxsKQogCXsKIAkJKm5lbnRyaWVzID0gMTsKLQkJZW50cmll cyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7CisJCWVudHJpZXMgPSBwYWxs b2Nfb2JqZWN0KERhdHVtKTsKIAkJZW50cmllc1swXSA9IChEYXR1bSkgMDsKLQkJKmNhdGVn b3JpZXMgPSAoR2luTnVsbENhdGVnb3J5ICopIHBhbGxvYyhzaXplb2YoR2luTnVsbENhdGVn b3J5KSk7CisJCSpjYXRlZ29yaWVzID0gcGFsbG9jX29iamVjdChHaW5OdWxsQ2F0ZWdvcnkp OwogCQkoKmNhdGVnb3JpZXMpWzBdID0gR0lOX0NBVF9OVUxMX0lURU07CiAJCXJldHVybiBl bnRyaWVzOwogCX0KQEAgLTUyMiw5ICs1MjIsOSBAQCBnaW5FeHRyYWN0RW50cmllcyhHaW5T dGF0ZSAqZ2luc3RhdGUsIE9mZnNldE51bWJlciBhdHRudW0sCiAJaWYgKGVudHJpZXMgPT0g TlVMTCB8fCAqbmVudHJpZXMgPD0gMCkKIAl7CiAJCSpuZW50cmllcyA9IDE7Ci0JCWVudHJp ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQllbnRyaWVzID0gcGFs bG9jX29iamVjdChEYXR1bSk7CiAJCWVudHJpZXNbMF0gPSAoRGF0dW0pIDA7Ci0JCSpjYXRl Z29yaWVzID0gKEdpbk51bGxDYXRlZ29yeSAqKSBwYWxsb2Moc2l6ZW9mKEdpbk51bGxDYXRl Z29yeSkpOworCQkqY2F0ZWdvcmllcyA9IHBhbGxvY19vYmplY3QoR2luTnVsbENhdGVnb3J5 KTsKIAkJKCpjYXRlZ29yaWVzKVswXSA9IEdJTl9DQVRfRU1QVFlfSVRFTTsKIAkJcmV0dXJu IGVudHJpZXM7CiAJfQpAQCAtNTQ4LDcgKzU0OCw3IEBAIGdpbkV4dHJhY3RFbnRyaWVzKEdp blN0YXRlICpnaW5zdGF0ZSwgT2Zmc2V0TnVtYmVyIGF0dG51bSwKIAkJa2V5RW50cnlEYXRh ICprZXlkYXRhOwogCQljbXBFbnRyaWVzQXJnIGFyZzsKIAotCQlrZXlkYXRhID0gKGtleUVu dHJ5RGF0YSAqKSBwYWxsb2MoKm5lbnRyaWVzICogc2l6ZW9mKGtleUVudHJ5RGF0YSkpOwor CQlrZXlkYXRhID0gcGFsbG9jX2FycmF5KGtleUVudHJ5RGF0YSwgKm5lbnRyaWVzKTsKIAkJ Zm9yIChpID0gMDsgaSA8ICpuZW50cmllczsgaSsrKQogCQl7CiAJCQlrZXlkYXRhW2ldLmRh dHVtID0gZW50cmllc1tpXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2ludmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4 IDIyMzdlZmE1MGJiLi5kN2JhZjdjODQ3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW52YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZh Y3V1bS5jCkBAIC02NSw3ICs2NSw3IEBAIGdpblZhY3V1bUl0ZW1Qb2ludGVycyhHaW5WYWN1 dW1TdGF0ZSAqZ3ZzLCBJdGVtUG9pbnRlckRhdGEgKml0ZW1zLAogCQkJCSAqIEZpcnN0IFRJ RCB0byBiZSBkZWxldGVkOiBhbGxvY2F0ZSBtZW1vcnkgdG8gaG9sZCB0aGUKIAkJCQkgKiBy ZW1haW5pbmcgaXRlbXMuCiAJCQkJICovCi0JCQkJdG1waXRlbXMgPSBwYWxsb2Moc2l6ZW9m KEl0ZW1Qb2ludGVyRGF0YSkgKiBuaXRlbSk7CisJCQkJdG1waXRlbXMgPSBwYWxsb2NfYXJy YXkoSXRlbVBvaW50ZXJEYXRhLCBuaXRlbSk7CiAJCQkJbWVtY3B5KHRtcGl0ZW1zLCBpdGVt cywgc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSkgKiBpKTsKIAkJCX0KIAkJfQpAQCAtMjYwLDcg KzI2MCw3IEBAIGdpblNjYW5Ub0RlbGV0ZShHaW5WYWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051 bWJlciBibGtubywgYm9vbCBpc1Jvb3QsCiAJewogCQlpZiAoIXBhcmVudC0+Y2hpbGQpCiAJ CXsKLQkJCW1lID0gKERhdGFQYWdlRGVsZXRlU3RhY2sgKikgcGFsbG9jMChzaXplb2YoRGF0 YVBhZ2VEZWxldGVTdGFjaykpOworCQkJbWUgPSBwYWxsb2MwX29iamVjdChEYXRhUGFnZURl bGV0ZVN0YWNrKTsKIAkJCW1lLT5wYXJlbnQgPSBwYXJlbnQ7CiAJCQlwYXJlbnQtPmNoaWxk ID0gbWU7CiAJCQltZS0+bGVmdEJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CkBAIC01ODQsNyAr NTg0LDcgQEAgZ2luYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJaWYgKHN0YXRzID09IE5VTEwpCiAJewogCQkvKiBZ ZXMsIHNvIGluaXRpYWxpemUgc3RhdHMgdG8gemVyb2VzICovCi0JCXN0YXRzID0gKEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1 bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2MwX29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQp OwogCiAJCS8qCiAJCSAqIGFuZCBjbGVhbnVwIGFueSBwZW5kaW5nIGluc2VydHMKQEAgLTcx NCw3ICs3MTQsNyBAQCBnaW52YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkgKi8KIAlpZiAoc3RhdHMgPT0gTlVM TCkKIAl7Ci0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNp emVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2MwX29iamVj dChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCQlpbml0R2luU3RhdGUoJmdpbnN0YXRlLCBp bmRleCk7CiAJCWdpbkluc2VydENsZWFudXAoJmdpbnN0YXRlLCAhQW1BdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpLAogCQkJCQkJIGZhbHNlLCB0cnVlLCBzdGF0cyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0LmMKaW5kZXggM2ZiMWExMjg1YzUuLmMyNmQ4NTM4ZjA1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdC5jCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGdpc3RwcnVu ZXBhZ2UoUmVsYXRpb24gcmVsLCBQYWdlIHBhZ2UsIEJ1ZmZlciBidWZmZXIsCiAKIAogI2Rl ZmluZSBST1RBVEVESVNUKGQpIGRvIHsgXAotCVNwbGl0UGFnZUxheW91dCAqdG1wID0gKFNw bGl0UGFnZUxheW91dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhZ2VMYXlvdXQpKTsgXAor CVNwbGl0UGFnZUxheW91dCAqdG1wID0gcGFsbG9jMF9vYmplY3QoU3BsaXRQYWdlTGF5b3V0 KTsgXAogCXRtcC0+YmxvY2suYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CVwKIAl0bXAt PmJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CVwKIAl0bXAtPm5leHQgPSAoZCk7IFwKQEAgLTM5 Miw3ICszOTIsNyBAQCBnaXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVz cGFjZSwgR0lTVFNUQVRFICpnaXN0c3RhdGUsCiAJCQkvKiBQcmVwYXJlIGEgdmVjdG9yIG9m IGFsbCB0aGUgZG93bmxpbmtzICovCiAJCQlmb3IgKHB0ciA9IGRpc3Q7IHB0cjsgcHRyID0g cHRyLT5uZXh0KQogCQkJCW5kb3dubGlua3MrKzsKLQkJCWRvd25saW5rcyA9IHBhbGxvYyhz aXplb2YoSW5kZXhUdXBsZSkgKiBuZG93bmxpbmtzKTsKKwkJCWRvd25saW5rcyA9IHBhbGxv Y19hcnJheShJbmRleFR1cGxlLCBuZG93bmxpbmtzKTsKIAkJCWZvciAoaSA9IDAsIHB0ciA9 IGRpc3Q7IHB0cjsgcHRyID0gcHRyLT5uZXh0KQogCQkJCWRvd25saW5rc1tpKytdID0gcHRy LT5pdHVwOwogCkBAIC00MTAsNyArNDEwLDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9u IHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQkJLyogUHJl cGFyZSBzcGxpdC1pbmZvIHRvIGJlIHJldHVybmVkIHRvIGNhbGxlciAqLwogCQkJZm9yIChw dHIgPSBkaXN0OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJCXsKLQkJCQlHSVNUUGFnZVNw bGl0SW5mbyAqc2kgPSBwYWxsb2Moc2l6ZW9mKEdJU1RQYWdlU3BsaXRJbmZvKSk7CisJCQkJ R0lTVFBhZ2VTcGxpdEluZm8gKnNpID0gcGFsbG9jX29iamVjdChHSVNUUGFnZVNwbGl0SW5m byk7CiAKIAkJCQlzaS0+YnVmID0gcHRyLT5idWZmZXI7CiAJCQkJc2ktPmRvd25saW5rID0g cHRyLT5pdHVwOwpAQCAtODIzLDcgKzgyMyw3IEBAIGdpc3Rkb2luc2VydChSZWxhdGlvbiBy LCBJbmRleFR1cGxlIGl0dXAsIFNpemUgZnJlZXNwYWNlLAogCQkJeGxvY2tlZCA9IGZhbHNl OwogCiAJCQkvKiBkZXNjZW5kIHRvIHRoZSBjaG9zZW4gY2hpbGQgKi8KLQkJCWl0ZW0gPSAo R0lTVEluc2VydFN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKEdJU1RJbnNlcnRTdGFjaykpOwor CQkJaXRlbSA9IHBhbGxvYzBfb2JqZWN0KEdJU1RJbnNlcnRTdGFjayk7CiAJCQlpdGVtLT5i bGtubyA9IGNoaWxkYmxrbm87CiAJCQlpdGVtLT5wYXJlbnQgPSBzdGFjazsKIAkJCWl0ZW0t PmRvd25saW5rb2ZmbnVtID0gZG93bmxpbmtvZmZudW07CkBAIC05MjMsNyArOTIzLDcgQEAg Z2lzdEZpbmRQYXRoKFJlbGF0aW9uIHIsIEJsb2NrTnVtYmVyIGNoaWxkLCBPZmZzZXROdW1i ZXIgKmRvd25saW5rb2ZmbnVtKQogCQkJICAgKnB0cjsKIAlCbG9ja051bWJlciBibGtubzsK IAotCXRvcCA9IChHSVNUSW5zZXJ0U3RhY2sgKikgcGFsbG9jMChzaXplb2YoR0lTVEluc2Vy dFN0YWNrKSk7CisJdG9wID0gcGFsbG9jMF9vYmplY3QoR0lTVEluc2VydFN0YWNrKTsKIAl0 b3AtPmJsa25vID0gR0lTVF9ST09UX0JMS05POwogCXRvcC0+ZG93bmxpbmtvZmZudW0gPSBJ bnZhbGlkT2Zmc2V0TnVtYmVyOwogCkBAIC05NzUsNyArOTc1LDcgQEAgZ2lzdEZpbmRQYXRo KFJlbGF0aW9uIHIsIEJsb2NrTnVtYmVyIGNoaWxkLCBPZmZzZXROdW1iZXIgKmRvd25saW5r b2ZmbnVtKQogCQkJICogbGVhZiBwYWdlcywgYW5kIHdlIGFzc3VtZSB0aGF0IHRoZXJlIGNh bid0IGJlIGFueSBub24tbGVhZgogCQkJICogcGFnZXMgYmVoaW5kIGxlYWYgcGFnZXMuCiAJ CQkgKi8KLQkJCXB0ciA9IChHSVNUSW5zZXJ0U3RhY2sgKikgcGFsbG9jMChzaXplb2YoR0lT VEluc2VydFN0YWNrKSk7CisJCQlwdHIgPSBwYWxsb2MwX29iamVjdChHSVNUSW5zZXJ0U3Rh Y2spOwogCQkJcHRyLT5ibGtubyA9IEdpc3RQYWdlR2V0T3BhcXVlKHBhZ2UpLT5yaWdodGxp bms7CiAJCQlwdHItPmRvd25saW5rb2ZmbnVtID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAkJ CXB0ci0+cGFyZW50ID0gdG9wLT5wYXJlbnQ7CkBAIC0xMDAwLDcgKzEwMDAsNyBAQCBnaXN0 RmluZFBhdGgoUmVsYXRpb24gciwgQmxvY2tOdW1iZXIgY2hpbGQsIE9mZnNldE51bWJlciAq ZG93bmxpbmtvZmZudW0pCiAJCQllbHNlCiAJCQl7CiAJCQkJLyogQXBwZW5kIHRoaXMgY2hp bGQgdG8gdGhlIGxpc3Qgb2YgcGFnZXMgdG8gdmlzaXQgbGF0ZXIgKi8KLQkJCQlwdHIgPSAo R0lTVEluc2VydFN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKEdJU1RJbnNlcnRTdGFjaykpOwor CQkJCXB0ciA9IHBhbGxvYzBfb2JqZWN0KEdJU1RJbnNlcnRTdGFjayk7CiAJCQkJcHRyLT5i bGtubyA9IGJsa25vOwogCQkJCXB0ci0+ZG93bmxpbmtvZmZudW0gPSBpOwogCQkJCXB0ci0+ cGFyZW50ID0gdG9wOwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgZ2lzdGZpeHNwbGl0KEdJU1RJ bnNlcnRTdGF0ZSAqc3RhdGUsIEdJU1RTVEFURSAqZ2lzdHN0YXRlKQogCSAqLwogCWZvciAo OzspCiAJewotCQlHSVNUUGFnZVNwbGl0SW5mbyAqc2kgPSBwYWxsb2Moc2l6ZW9mKEdJU1RQ YWdlU3BsaXRJbmZvKSk7CisJCUdJU1RQYWdlU3BsaXRJbmZvICpzaSA9IHBhbGxvY19vYmpl Y3QoR0lTVFBhZ2VTcGxpdEluZm8pOwogCQlJbmRleFR1cGxlCWRvd25saW5rOwogCiAJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CkBAIC0xNDgyLDggKzE0ODIsOCBAQCBnaXN0U3Bs aXQoUmVsYXRpb24gciwKIAlnaXN0U3BsaXRCeUtleShyLCBwYWdlLCBpdHVwLCBsZW4sIGdp c3RzdGF0ZSwgJnYsIDApOwogCiAJLyogZm9ybSBsZWZ0IGFuZCByaWdodCB2ZWN0b3IgKi8K LQlsdmVjdHVwID0gKEluZGV4VHVwbGUgKikgcGFsbG9jKHNpemVvZihJbmRleFR1cGxlKSAq IChsZW4gKyAxKSk7Ci0JcnZlY3R1cCA9IChJbmRleFR1cGxlICopIHBhbGxvYyhzaXplb2Yo SW5kZXhUdXBsZSkgKiAobGVuICsgMSkpOworCWx2ZWN0dXAgPSBwYWxsb2NfYXJyYXkoSW5k ZXhUdXBsZSwgbGVuICsgMSk7CisJcnZlY3R1cCA9IHBhbGxvY19hcnJheShJbmRleFR1cGxl LCBsZW4gKyAxKTsKIAogCWZvciAoaSA9IDA7IGkgPCB2LnNwbGl0VmVjdG9yLnNwbF9ubGVm dDsgaSsrKQogCQlsdmVjdHVwW2ldID0gaXR1cFt2LnNwbGl0VmVjdG9yLnNwbF9sZWZ0W2ld IC0gMV07CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBpbml0R0lTVHN0YXRlKFJlbGF0aW9uIGlu ZGV4KQogCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzY2FuQ3h0KTsKIAogCS8q IENyZWF0ZSBhbmQgZmlsbCBpbiB0aGUgR0lTVFNUQVRFICovCi0JZ2lzdHN0YXRlID0gKEdJ U1RTVEFURSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RTVEFURSkpOworCWdpc3RzdGF0ZSA9IHBh bGxvY19vYmplY3QoR0lTVFNUQVRFKTsKIAogCWdpc3RzdGF0ZS0+c2NhbkN4dCA9IHNjYW5D eHQ7CiAJZ2lzdHN0YXRlLT50ZW1wQ3h0ID0gc2NhbkN4dDsJLyogY2FsbGVyIG11c3QgY2hh bmdlIHRoaXMgaWYgbmVlZGVkICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5j CmluZGV4IGJlMGZkNWI3NTNkLi5iOWZhMTk2MTQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKQEAgLTM0Niw3ICszNDYsNyBAQCBnaXN0YnVpbGQoUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCS8qCiAJICog UmV0dXJuIHN0YXRpc3RpY3MKIAkgKi8KLQlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAq KSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nf b2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJl bHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IChkb3VibGUpIGJ1aWxkc3RhdGUu aW5kdHVwbGVzOwpAQCAtNDA5LDcgKzQwOSw3IEBAIGdpc3RfaW5kZXhzb3J0YnVpbGQoR0lT VEJ1aWxkU3RhdGUgKnN0YXRlKQogCXN0YXRlLT5idWxrc3RhdGUgPSBzbWdyX2J1bGtfc3Rh cnRfcmVsKHN0YXRlLT5pbmRleHJlbCwgTUFJTl9GT1JLTlVNKTsKIAogCS8qIEFsbG9jYXRl IGEgdGVtcG9yYXJ5IGJ1ZmZlciBmb3IgdGhlIGZpcnN0IGxlYWYgcGFnZSBiYXRjaC4gKi8K LQlsZXZlbHN0YXRlID0gcGFsbG9jMChzaXplb2YoR2lzdFNvcnRlZEJ1aWxkTGV2ZWxTdGF0 ZSkpOworCWxldmVsc3RhdGUgPSBwYWxsb2MwX29iamVjdChHaXN0U29ydGVkQnVpbGRMZXZl bFN0YXRlKTsKIAlsZXZlbHN0YXRlLT5wYWdlc1swXSA9IHBhbGxvYyhCTENLU1opOwogCWxl dmVsc3RhdGUtPnBhcmVudCA9IE5VTEw7CiAJZ2lzdGluaXRwYWdlKGxldmVsc3RhdGUtPnBh Z2VzWzBdLCBGX0xFQUYpOwpAQCAtNTI2LDcgKzUyNiw3IEBAIGdpc3RfaW5kZXhzb3J0YnVp bGRfbGV2ZWxzdGF0ZV9mbHVzaChHSVNUQnVpbGRTdGF0ZSAqc3RhdGUsCiAJZWxzZQogCXsK IAkJLyogQ3JlYXRlIHNwbGl0IGxheW91dCBmcm9tIHNpbmdsZSBwYWdlICovCi0JCWRpc3Qg PSAoU3BsaXRQYWdlTGF5b3V0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFnZUxheW91dCkp OworCQlkaXN0ID0gcGFsbG9jMF9vYmplY3QoU3BsaXRQYWdlTGF5b3V0KTsKIAkJdW5pb25f dHVwbGUgPSBnaXN0dW5pb24oc3RhdGUtPmluZGV4cmVsLCBpdHZlYywgdmVjdF9sZW4sCiAJ CQkJCQkJCXN0YXRlLT5naXN0c3RhdGUpOwogCQlkaXN0LT5pdHVwID0gdW5pb25fdHVwbGU7 CkBAIC01OTcsNyArNTk3LDcgQEAgZ2lzdF9pbmRleHNvcnRidWlsZF9sZXZlbHN0YXRlX2Zs dXNoKEdJU1RCdWlsZFN0YXRlICpzdGF0ZSwKIAkJcGFyZW50ID0gbGV2ZWxzdGF0ZS0+cGFy ZW50OwogCQlpZiAocGFyZW50ID09IE5VTEwpCiAJCXsKLQkJCXBhcmVudCA9IHBhbGxvYzAo c2l6ZW9mKEdpc3RTb3J0ZWRCdWlsZExldmVsU3RhdGUpKTsKKwkJCXBhcmVudCA9IHBhbGxv YzBfb2JqZWN0KEdpc3RTb3J0ZWRCdWlsZExldmVsU3RhdGUpOwogCQkJcGFyZW50LT5wYWdl c1swXSA9IHBhbGxvYyhCTENLU1opOwogCQkJcGFyZW50LT5wYXJlbnQgPSBOVUxMOwogCQkJ Z2lzdGluaXRwYWdlKHBhcmVudC0+cGFnZXNbMF0sIDApOwpAQCAtMTE1NCw3ICsxMTU0LDcg QEAgZ2lzdGJ1ZmZlcmluZ2luc2VydHR1cGxlcyhHSVNUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgQnVmZmVyIGJ1ZmZlciwgaW50IGxldmVsLAogCiAJCS8qIENyZWF0ZSBhbiBhcnJheSBv ZiBhbGwgdGhlIGRvd25saW5rIHR1cGxlcyAqLwogCQluZG93bmxpbmtzID0gbGlzdF9sZW5n dGgoc3BsaXRpbmZvKTsKLQkJZG93bmxpbmtzID0gKEluZGV4VHVwbGUgKikgcGFsbG9jKHNp emVvZihJbmRleFR1cGxlKSAqIG5kb3dubGlua3MpOworCQlkb3dubGlua3MgPSBwYWxsb2Nf YXJyYXkoSW5kZXhUdXBsZSwgbmRvd25saW5rcyk7CiAJCWkgPSAwOwogCQlmb3JlYWNoKGxj LCBzcGxpdGluZm8pCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3RidWlsZGJ1ZmZlcnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZGJ1ZmZlcnMuYwppbmRleCAwNzA3MjU0ZDE4ZS4uZDQ5YjkyMDc2MGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKQEAgLTQ2LDcgKzQ2LDcg QEAgZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVyQnVmZmVyLCBpbnQgbGV2ZWxT dGVwLCBpbnQgbWF4TGV2ZWwpCiAJR0lTVEJ1aWxkQnVmZmVycyAqZ2ZiYjsKIAlIQVNIQ1RM CQloYXNoQ3RsOwogCi0JZ2ZiYiA9IHBhbGxvYyhzaXplb2YoR0lTVEJ1aWxkQnVmZmVycykp OworCWdmYmIgPSBwYWxsb2Nfb2JqZWN0KEdJU1RCdWlsZEJ1ZmZlcnMpOwogCWdmYmItPnBh Z2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7CiAJZ2ZiYi0+bGV2ZWxTdGVwID0gbGV2 ZWxTdGVwOwogCkBAIC02MCw3ICs2MCw3IEBAIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBw YWdlc1BlckJ1ZmZlciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogCS8qIEluaXRp YWxpemUgZnJlZSBwYWdlIG1hbmFnZW1lbnQuICovCiAJZ2ZiYi0+bkZyZWVCbG9ja3MgPSAw OwogCWdmYmItPmZyZWVCbG9ja3NMZW4gPSAzMjsKLQlnZmJiLT5mcmVlQmxvY2tzID0gKGxv bmcgKikgcGFsbG9jKGdmYmItPmZyZWVCbG9ja3NMZW4gKiBzaXplb2YobG9uZykpOworCWdm YmItPmZyZWVCbG9ja3MgPSBwYWxsb2NfYXJyYXkobG9uZywgZ2ZiYi0+ZnJlZUJsb2Nrc0xl bik7CiAKIAkvKgogCSAqIEN1cnJlbnQgbWVtb3J5IGNvbnRleHQgd2lsbCBiZSB1c2VkIGZv ciBhbGwgaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlcwpAQCAtODcsOCArODcsNyBAQCBnaXN0 SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZmZXIsIGludCBsZXZlbFN0ZXAsIGlu dCBtYXhMZXZlbCkKIAkgKiBidWZmZXJzIGFyZSBpbnNlcnRlZCBoZXJlIHdoZW4gdGhleSBh cmUgY3JlYXRlZC4KIAkgKi8KIAlnZmJiLT5idWZmZXJzT25MZXZlbHNMZW4gPSAxOwotCWdm YmItPmJ1ZmZlcnNPbkxldmVscyA9IChMaXN0ICoqKSBwYWxsb2Moc2l6ZW9mKExpc3QgKikg KgotCQkJCQkJCQkJCQkgZ2ZiYi0+YnVmZmVyc09uTGV2ZWxzTGVuKTsKKwlnZmJiLT5idWZm ZXJzT25MZXZlbHMgPSAoTGlzdCAqKikgcGFsbG9jX2FycmF5KExpc3QgKiwgZ2ZiYi0+YnVm ZmVyc09uTGV2ZWxzTGVuKTsKIAlnZmJiLT5idWZmZXJzT25MZXZlbHNbMF0gPSBOSUw7CiAK IAkvKgpAQCAtOTYsOCArOTUsNyBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQ ZXJCdWZmZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBpbnRvIG1haW4g bWVtb3J5LgogCSAqLwogCWdmYmItPmxvYWRlZEJ1ZmZlcnNMZW4gPSAzMjsKLQlnZmJiLT5s b2FkZWRCdWZmZXJzID0gKEdJU1ROb2RlQnVmZmVyICoqKSBwYWxsb2MoZ2ZiYi0+bG9hZGVk QnVmZmVyc0xlbiAqCi0JCQkJCQkJCQkJCQkJIHNpemVvZihHSVNUTm9kZUJ1ZmZlciAqKSk7 CisJZ2ZiYi0+bG9hZGVkQnVmZmVycyA9IChHSVNUTm9kZUJ1ZmZlciAqKikgcGFsbG9jX2Fy cmF5KEdJU1ROb2RlQnVmZmVyICosIGdmYmItPmxvYWRlZEJ1ZmZlcnNMZW4pOwogCWdmYmIt PmxvYWRlZEJ1ZmZlcnNDb3VudCA9IDA7CiAKIAlnZmJiLT5yb290bGV2ZWwgPSBtYXhMZXZl bDsKQEAgLTU4Miw5ICs1ODAsNyBAQCBnaXN0UmVsb2NhdGVCdWlsZEJ1ZmZlcnNPblNwbGl0 KEdJU1RCdWlsZEJ1ZmZlcnMgKmdmYmIsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCSAqIEFs bG9jYXRlIG1lbW9yeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgcmVsb2NhdGlvbiBidWZmZXJz LgogCSAqLwogCXNwbGl0UGFnZXNDb3VudCA9IGxpc3RfbGVuZ3RoKHNwbGl0aW5mbyk7Ci0J cmVsb2NhdGlvbkJ1ZmZlcnNJbmZvcyA9Ci0JCShSZWxvY2F0aW9uQnVmZmVySW5mbyAqKSBw YWxsb2Moc2l6ZW9mKFJlbG9jYXRpb25CdWZmZXJJbmZvKSAqCi0JCQkJCQkJCQkJc3BsaXRQ YWdlc0NvdW50KTsKKwlyZWxvY2F0aW9uQnVmZmVyc0luZm9zID0gcGFsbG9jX2FycmF5KFJl bG9jYXRpb25CdWZmZXJJbmZvLCBzcGxpdFBhZ2VzQ291bnQpOwogCiAJLyoKIAkgKiBGaWxs IHJlbG9jYXRpb24gYnVmZmVycyBpbmZvcm1hdGlvbiBmb3Igbm9kZSBidWZmZXJzIG9mIHBh Z2VzIHByb2R1Y2VkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 cHJvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHByb2MuYwppbmRleCBmMmVj NmNiZTJlNS4uOWFjMDY1MDRiZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3Rwcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHByb2Mu YwpAQCAtMTcxLDcgKzE3MSw3IEBAIGdpc3RfYm94X3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkgICAqcGFnZXVuaW9uOwogCiAJbnVtcmFuZ2VzID0gZW50cnl2ZWMtPm47Ci0JcGFn ZXVuaW9uID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXBhZ2V1bmlvbiA9IHBh bGxvY19vYmplY3QoQk9YKTsKIAljdXIgPSBEYXR1bUdldEJveFAoZW50cnl2ZWMtPnZlY3Rv clswXS5rZXkpOwogCW1lbWNweShwYWdldW5pb24sIGN1ciwgc2l6ZW9mKEJPWCkpOwogCkBA IC0yMzcsNyArMjM3LDcgQEAgZmFsbGJhY2tTcGxpdChHaXN0RW50cnlWZWN0b3IgKmVudHJ5 dmVjLCBHSVNUX1NQTElUVkVDICp2KQogCQkJdi0+c3BsX2xlZnRbdi0+c3BsX25sZWZ0XSA9 IGk7CiAJCQlpZiAodW5pb25MID09IE5VTEwpCiAJCQl7Ci0JCQkJdW5pb25MID0gKEJPWCAq KSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCQkJCXVuaW9uTCA9IHBhbGxvY19vYmplY3QoQk9Y KTsKIAkJCQkqdW5pb25MID0gKmN1cjsKIAkJCX0KIAkJCWVsc2UKQEAgLTI1MCw3ICsyNTAs NyBAQCBmYWxsYmFja1NwbGl0KEdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMsIEdJU1RfU1BM SVRWRUMgKnYpCiAJCQl2LT5zcGxfcmlnaHRbdi0+c3BsX25yaWdodF0gPSBpOwogCQkJaWYg KHVuaW9uUiA9PSBOVUxMKQogCQkJewotCQkJCXVuaW9uUiA9IChCT1ggKikgcGFsbG9jKHNp emVvZihCT1gpKTsKKwkJCQl1bmlvblIgPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAJCQkJKnVu aW9uUiA9ICpjdXI7CiAJCQl9CiAJCQllbHNlCkBAIC02OTgsOCArNjk4LDggQEAgZ2lzdF9i b3hfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJdi0+c3BsX25yaWdodCA9IDA7CiAK IAkvKiBBbGxvY2F0ZSBib3VuZGluZyBib3hlcyBvZiBsZWZ0IGFuZCByaWdodCBncm91cHMg Ki8KLQlsZWZ0Qm94ID0gcGFsbG9jMChzaXplb2YoQk9YKSk7Ci0JcmlnaHRCb3ggPSBwYWxs b2MwKHNpemVvZihCT1gpKTsKKwlsZWZ0Qm94ID0gcGFsbG9jMF9vYmplY3QoQk9YKTsKKwly aWdodEJveCA9IHBhbGxvYzBfb2JqZWN0KEJPWCk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGFu IGFycmF5IGZvciAiY29tbW9uIGVudHJpZXMiIC0gZW50cmllcyB3aGljaCBjYW4gYmUgcGxh Y2VkIHRvCkBAIC0xMDQyLDEwICsxMDQyLDEwIEBAIGdpc3RfcG9seV9jb21wcmVzcyhQR19G VU5DVElPTl9BUkdTKQogCQlQT0xZR09OICAgICppbiA9IERhdHVtR2V0UG9seWdvblAoZW50 cnktPmtleSk7CiAJCUJPWAkJICAgKnI7CiAKLQkJciA9IChCT1ggKikgcGFsbG9jKHNpemVv ZihCT1gpKTsKKwkJciA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAkJbWVtY3B5KHIsICYoaW4t PmJvdW5kYm94KSwgc2l6ZW9mKEJPWCkpOwogCi0JCXJldHZhbCA9IChHSVNURU5UUlkgKikg cGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChH SVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShy KSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBlbnRyeS0+b2Zm c2V0LCBmYWxzZSk7CkBAIC0xMTA3LDEzICsxMTA3LDEzIEBAIGdpc3RfY2lyY2xlX2NvbXBy ZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCUNJUkNMRQkgICAqaW4gPSBEYXR1bUdldENpcmNs ZVAoZW50cnktPmtleSk7CiAJCUJPWAkJICAgKnI7CiAKLQkJciA9IChCT1ggKikgcGFsbG9j KHNpemVvZihCT1gpKTsKKwkJciA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAkJci0+aGlnaC54 ID0gZmxvYXQ4X3BsKGluLT5jZW50ZXIueCwgaW4tPnJhZGl1cyk7CiAJCXItPmxvdy54ID0g ZmxvYXQ4X21pKGluLT5jZW50ZXIueCwgaW4tPnJhZGl1cyk7CiAJCXItPmhpZ2gueSA9IGZs b2F0OF9wbChpbi0+Y2VudGVyLnksIGluLT5yYWRpdXMpOwogCQlyLT5sb3cueSA9IGZsb2F0 OF9taShpbi0+Y2VudGVyLnksIGluLT5yYWRpdXMpOwogCi0JCXJldHZhbCA9IChHSVNURU5U UlkgKikgcGFsbG9jKHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29i amVjdChHSVNURU5UUlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXRE YXR1bShyKSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBlbnRy eS0+b2Zmc2V0LCBmYWxzZSk7CkBAIC0xMTcxLDkgKzExNzEsOSBAQCBnaXN0X3BvaW50X2Nv bXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAoZW50cnktPmxlYWZrZXkpCQkJLyog UG9pbnQsIGFjdHVhbGx5ICovCiAJewotCQlCT1gJCSAgICpib3ggPSBwYWxsb2Moc2l6ZW9m KEJPWCkpOworCQlCT1gJCSAgICpib3ggPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAJCVBvaW50 CSAgICpwb2ludCA9IERhdHVtR2V0UG9pbnRQKGVudHJ5LT5rZXkpOwotCQlHSVNURU5UUlkg ICpyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCQlHSVNURU5UUlkgICpy ZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAKIAkJYm94LT5oaWdoID0gYm94 LT5sb3cgPSAqcG9pbnQ7CiAKQEAgLTEyMDAsOSArMTIwMCw5IEBAIGdpc3RfcG9pbnRfZmV0 Y2goUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcjsKIAlHSVNURU5UUlkgICpyZXR2 YWw7CiAKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOworCXJldHZhbCA9 IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAotCXIgPSAoUG9pbnQgKikgcGFsbG9jKHNp emVvZihQb2ludCkpOworCXIgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAlyLT54ID0gaW4t PmhpZ2gueDsKIAlyLT55ID0gaW4tPmhpZ2gueTsKIAlnaXN0ZW50cnlpbml0KCpyZXR2YWws IFBvaW50ZXJHZXREYXR1bShyKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RzY2FuLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jCmlu ZGV4IDcwMGZhOTU5ZDAzLi4wMWI4ZmYwYjZmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0c2Nhbi5jCkBAIC05MCw3ICs5MCw3IEBAIGdpc3RiZWdpbnNjYW4oUmVsYXRpb24gciwg aW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQogCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhnaXN0c3RhdGUtPnNjYW5DeHQpOwogCiAJLyogaW5pdGlhbGl6ZSBvcGFxdWUgZGF0 YSAqLwotCXNvID0gKEdJU1RTY2FuT3BhcXVlKSBwYWxsb2MwKHNpemVvZihHSVNUU2Nhbk9w YXF1ZURhdGEpKTsKKwlzbyA9IHBhbGxvYzBfb2JqZWN0KEdJU1RTY2FuT3BhcXVlRGF0YSk7 CiAJc28tPmdpc3RzdGF0ZSA9IGdpc3RzdGF0ZTsKIAlnaXN0c3RhdGUtPnRlbXBDeHQgPSBj cmVhdGVUZW1wR2lzdENvbnRleHQoKTsKIAlzby0+cXVldWUgPSBOVUxMOwpAQCAtMTAxLDgg KzEwMSw4IEBAIGdpc3RiZWdpbnNjYW4oUmVsYXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9y ZGVyYnlzKQogCXNvLT5xdWFsX29rID0gdHJ1ZTsJCQkvKiBpbiBjYXNlIHRoZXJlIGFyZSB6 ZXJvIGtleXMgKi8KIAlpZiAoc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyA+IDApCiAJewotCQlz Y2FuLT54c19vcmRlcmJ5dmFscyA9IHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIHNjYW4tPm51 bWJlck9mT3JkZXJCeXMpOwotCQlzY2FuLT54c19vcmRlcmJ5bnVsbHMgPSBwYWxsb2Moc2l6 ZW9mKGJvb2wpICogc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNjYW4tPnhzX29yZGVy Ynl2YWxzID0gcGFsbG9jMF9hcnJheShEYXR1bSwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7 CisJCXNjYW4tPnhzX29yZGVyYnludWxscyA9IHBhbGxvY19hcnJheShib29sLCBzY2FuLT5u dW1iZXJPZk9yZGVyQnlzKTsKIAkJbWVtc2V0KHNjYW4tPnhzX29yZGVyYnludWxscywgdHJ1 ZSwgc2l6ZW9mKGJvb2wpICogc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c3BsaXQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RzcGxpdC5jCmluZGV4IDQ5ODM4Y2ViMDdiLi41YjNjNjdk YmYzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNwbGl0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHNwbGl0LmMKQEAgLTUxLDcgKzUx LDcgQEAgZ2lzdHVuaW9uc3Via2V5dmVjKEdJU1RTVEFURSAqZ2lzdHN0YXRlLCBJbmRleFR1 cGxlICppdHZlYywKIAlpbnQJCQlpLAogCQkJCWNsZWFuZWRMZW4gPSAwOwogCi0JY2xlYW5l ZEl0VmVjID0gKEluZGV4VHVwbGUgKikgcGFsbG9jKHNpemVvZihJbmRleFR1cGxlKSAqIGdz dnAtPmxlbik7CisJY2xlYW5lZEl0VmVjID0gcGFsbG9jX2FycmF5KEluZGV4VHVwbGUsIGdz dnAtPmxlbik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZ3N2cC0+bGVuOyBpKyspCiAJewpAQCAt NTAxLDcgKzUwMSw3IEBAIGdpc3RVc2VyUGlja3NwbGl0KFJlbGF0aW9uIHIsIEdpc3RFbnRy eVZlY3RvciAqZW50cnl2ZWMsIGludCBhdHRubywgR2lzdFNwbGl0VmVjCiAJCSAqIExvY2F0 ZSBkb24ndC1jYXJlIHR1cGxlcywgaWYgYW55LiAgSWYgdGhlcmUgYXJlIG5vbmUsIHRoZSBz cGxpdCBpcwogCQkgKiBvcHRpbWFsLCBzbyBqdXN0IGZhbGwgb3V0IGFuZCByZXR1cm4gZmFs c2UuCiAJCSAqLwotCQl2LT5zcGxfZG9udGNhcmUgPSAoYm9vbCAqKSBwYWxsb2MwKHNpemVv Zihib29sKSAqIChlbnRyeXZlYy0+biArIDEpKTsKKwkJdi0+c3BsX2RvbnRjYXJlID0gcGFs bG9jMF9hcnJheShib29sLCBlbnRyeXZlYy0+biArIDEpOwogCiAJCU51bURvbnRDYXJlID0g ZmluZERvbnRDYXJlcyhyLCBnaXN0c3RhdGUsIGVudHJ5dmVjLT52ZWN0b3IsIHYsIGF0dG5v KTsKIApAQCAtNzM4LDkgKzczOCw5IEBAIGdpc3RTcGxpdEJ5S2V5KFJlbGF0aW9uIHIsIFBh Z2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkgKiBjYWxsIHdpbGwg b3ZlcndyaXRlIHRoYXQgd2l0aCBpdHMgb3duIHJlc3VsdC4KIAkJCQkgKi8KIAkJCQliYWNr dXBTcGxpdCA9IHYtPnNwbGl0VmVjdG9yOwotCQkJCWJhY2t1cFNwbGl0LnNwbF9sZWZ0ID0g KE9mZnNldE51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKE9mZnNldE51bWJlcikgKiBsZW4pOwor CQkJCWJhY2t1cFNwbGl0LnNwbF9sZWZ0ID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwg bGVuKTsKIAkJCQltZW1jcHkoYmFja3VwU3BsaXQuc3BsX2xlZnQsIHYtPnNwbGl0VmVjdG9y LnNwbF9sZWZ0LCBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIHYtPnNwbGl0VmVjdG9yLnNwbF9u bGVmdCk7Ci0JCQkJYmFja3VwU3BsaXQuc3BsX3JpZ2h0ID0gKE9mZnNldE51bWJlciAqKSBw YWxsb2Moc2l6ZW9mKE9mZnNldE51bWJlcikgKiBsZW4pOworCQkJCWJhY2t1cFNwbGl0LnNw bF9yaWdodCA9IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIsIGxlbik7CQogCQkJCW1lbWNw eShiYWNrdXBTcGxpdC5zcGxfcmlnaHQsIHYtPnNwbGl0VmVjdG9yLnNwbF9yaWdodCwgc2l6 ZW9mKE9mZnNldE51bWJlcikgKiB2LT5zcGxpdFZlY3Rvci5zcGxfbnJpZ2h0KTsKIAogCQkJ CS8qIFJlY3Vyc2l2ZWx5IGRlY2lkZSBob3cgdG8gc3BsaXQgdGhlIGRvbid0LWNhcmUgdHVw bGVzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCA3NTI3MjgyNzgz Ny4uYTM0NmE4NWFkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAt MTAwLDcgKzEwMCw3IEBAIGdpc3RleHRyYWN0cGFnZShQYWdlIHBhZ2UsIGludCAqbGVuIC8q IG91dCAqLyApCiAKIAltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwog CSpsZW4gPSBtYXhvZmY7Ci0JaXR2ZWMgPSBwYWxsb2Moc2l6ZW9mKEluZGV4VHVwbGUpICog bWF4b2ZmKTsKKwlpdHZlYyA9IHBhbGxvY19hcnJheShJbmRleFR1cGxlLCBtYXhvZmYpOwog CWZvciAoaSA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBpIDw9IG1heG9mZjsgaSA9IE9mZnNldE51 bWJlck5leHQoaSkpCiAJCWl0dmVjW2kgLSBGaXJzdE9mZnNldE51bWJlcl0gPSAoSW5kZXhU dXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgUGFnZUdldEl0ZW1JZChwYWdlLCBpKSk7CiAKQEAg LTExMyw3ICsxMTMsNyBAQCBnaXN0ZXh0cmFjdHBhZ2UoUGFnZSBwYWdlLCBpbnQgKmxlbiAv KiBvdXQgKi8gKQogSW5kZXhUdXBsZSAqCiBnaXN0am9pbnZlY3RvcihJbmRleFR1cGxlICpp dHZlYywgaW50ICpsZW4sIEluZGV4VHVwbGUgKmFkZGl0dmVjLCBpbnQgYWRkbGVuKQogewot CWl0dmVjID0gKEluZGV4VHVwbGUgKikgcmVwYWxsb2MoaXR2ZWMsIHNpemVvZihJbmRleFR1 cGxlKSAqICgoKmxlbikgKyBhZGRsZW4pKTsKKwlpdHZlYyA9IHJlcGFsbG9jX2FycmF5KGl0 dmVjLCBJbmRleFR1cGxlLCAoKmxlbikgKyBhZGRsZW4pOwogCW1lbW1vdmUoJml0dmVjWyps ZW5dLCBhZGRpdHZlYywgc2l6ZW9mKEluZGV4VHVwbGUpICogYWRkbGVuKTsKIAkqbGVuICs9 IGFkZGxlbjsKIAlyZXR1cm4gaXR2ZWM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFj dXVtLmMKaW5kZXggYjkyNWVkYTJiOWIuLjc1OTFhZDRkYTFhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCkBAIC02MSw3ICs2MSw3IEBAIGdpc3RidWxrZGVsZXRl KEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywK IHsKIAkvKiBhbGxvY2F0ZSBzdGF0cyBpZiBmaXJzdCB0aW1lIHRocm91Z2gsIGVsc2UgcmUt dXNlIGV4aXN0aW5nIHN0cnVjdCAqLwogCWlmIChzdGF0cyA9PSBOVUxMKQotCQlzdGF0cyA9 IChJbmRleEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVs ZXRlUmVzdWx0KSk7CisJCXN0YXRzID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxrRGVsZXRl UmVzdWx0KTsKIAogCWdpc3R2YWN1dW1zY2FuKGluZm8sIHN0YXRzLCBjYWxsYmFjaywgY2Fs bGJhY2tfc3RhdGUpOwogCkBAIC04NSw3ICs4NSw3IEBAIGdpc3R2YWN1dW1jbGVhbnVwKElu ZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkg Ki8KIAlpZiAoc3RhdHMgPT0gTlVMTCkKIAl7Ci0JCXN0YXRzID0gKEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwkJ c3RhdHMgPSBwYWxsb2MwX29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQpOwogCQlnaXN0 dmFjdXVtc2NhbihpbmZvLCBzdGF0cywgTlVMTCwgTlVMTCk7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoLmMKaW5kZXggNTMwNjFjODE5ZmIuLmUzODgyNTJhZmRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCkBAIC0xOTMsNyArMTkzLDcgQEAgaGFzaGJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkvKgogCSAq IFJldHVybiBzdGF0aXN0aWNzCiAJICovCi0JcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSBy ZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxl czsKQEAgLTMxOCw4ICszMTgsNyBAQCBoYXNoZ2V0dHVwbGUoSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJCSAqIGVudHJpZXMuCiAJCQkgKi8KIAkJCWlmIChz by0+a2lsbGVkSXRlbXMgPT0gTlVMTCkKLQkJCQlzby0+a2lsbGVkSXRlbXMgPSAoaW50ICop Ci0JCQkJCXBhbGxvYyhNYXhJbmRleFR1cGxlc1BlclBhZ2UgKiBzaXplb2YoaW50KSk7CisJ CQkJc28tPmtpbGxlZEl0ZW1zID0gcGFsbG9jX2FycmF5KGludCwgTWF4SW5kZXhUdXBsZXNQ ZXJQYWdlKTsKIAogCQkJaWYgKHNvLT5udW1LaWxsZWQgPCBNYXhJbmRleFR1cGxlc1BlclBh Z2UpCiAJCQkJc28tPmtpbGxlZEl0ZW1zW3NvLT5udW1LaWxsZWQrK10gPSBzby0+Y3VyclBv cy5pdGVtSW5kZXg7CkBAIC0zODEsNyArMzgwLDcgQEAgaGFzaGJlZ2luc2NhbihSZWxhdGlv biByZWwsIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAogCXNjYW4gPSBSZWxhdGlvbkdl dEluZGV4U2NhbihyZWwsIG5rZXlzLCBub3JkZXJieXMpOwogCi0Jc28gPSAoSGFzaFNjYW5P cGFxdWUpIHBhbGxvYyhzaXplb2YoSGFzaFNjYW5PcGFxdWVEYXRhKSk7CisJc28gPSAoSGFz aFNjYW5PcGFxdWUpIHBhbGxvY19vYmplY3QoSGFzaFNjYW5PcGFxdWVEYXRhKTsKIAlIYXNo U2NhblBvc0ludmFsaWRhdGUoc28tPmN1cnJQb3MpOwogCXNvLT5oYXNoc29fYnVja2V0X2J1 ZiA9IEludmFsaWRCdWZmZXI7CiAJc28tPmhhc2hzb19zcGxpdF9idWNrZXRfYnVmID0gSW52 YWxpZEJ1ZmZlcjsKQEAgLTYzMyw3ICs2MzIsNyBAQCBsb29wX3RvcDoKIAogCS8qIHJldHVy biBzdGF0aXN0aWNzICovCiAJaWYgKHN0YXRzID09IE5VTEwpCi0JCXN0YXRzID0gKEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1 bHQpKTsKKwkJc3RhdHMgPSBwYWxsb2MwX29iamVjdChJbmRleEJ1bGtEZWxldGVSZXN1bHQp OwogCXN0YXRzLT5lc3RpbWF0ZWRfY291bnQgPSBmYWxzZTsKIAlzdGF0cy0+bnVtX2luZGV4 X3R1cGxlcyA9IG51bV9pbmRleF90dXBsZXM7CiAJc3RhdHMtPnR1cGxlc19yZW1vdmVkICs9 IHR1cGxlc19yZW1vdmVkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMKaW5kZXgg OTJhZTNjZjUzZjUuLjBmZDQxZjRmNGNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoc29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hz b3J0LmMKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IEhTcG9vbAogSFNwb29sICoKIF9oX3Nw b29saW5pdChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgdWludDMyIG51bV9idWNr ZXRzKQogewotCUhTcG9vbAkgICAqaHNwb29sID0gKEhTcG9vbCAqKSBwYWxsb2MwKHNpemVv ZihIU3Bvb2wpKTsKKwlIU3Bvb2wJICAgKmhzcG9vbCA9IHBhbGxvYzBfb2JqZWN0KEhTcG9v bCk7CiAKIAloc3Bvb2wtPmluZGV4ID0gaW5kZXg7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggNGQzODJhMDQzMzguLjIyNWY5ODI5ZjIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVs YXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCSAqLwogCWlmIChmbGFncyAm IFNPX1RZUEVfQklUTUFQU0NBTikKIAl7Ci0JCUJpdG1hcEhlYXBTY2FuRGVzYyBic2NhbiA9 IHBhbGxvYyhzaXplb2YoQml0bWFwSGVhcFNjYW5EZXNjRGF0YSkpOworCQlCaXRtYXBIZWFw U2NhbkRlc2MgYnNjYW4gPSBwYWxsb2Nfb2JqZWN0KEJpdG1hcEhlYXBTY2FuRGVzY0RhdGEp OwogCiAJCS8qCiAJCSAqIEJpdG1hcCBIZWFwIHNjYW5zIGRvIG5vdCBoYXZlIGFueSBmaWVs ZHMgdGhhdCBhIG5vcm1hbCBIZWFwIFNjYW4KQEAgLTExNDIsNyArMTE0Miw3IEBAIGhlYXBf YmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJc2Nh biA9IChIZWFwU2NhbkRlc2MpIGJzY2FuOwogCX0KIAllbHNlCi0JCXNjYW4gPSAoSGVhcFNj YW5EZXNjKSBwYWxsb2Moc2l6ZW9mKEhlYXBTY2FuRGVzY0RhdGEpKTsKKwkJc2NhbiA9IChI ZWFwU2NhbkRlc2MpIHBhbGxvY19vYmplY3QoSGVhcFNjYW5EZXNjRGF0YSk7CiAKIAlzY2Fu LT5yc19iYXNlLnJzX3JkID0gcmVsYXRpb247CiAJc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hv dCA9IHNuYXBzaG90OwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVs YXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCSAqIHdoZW4gZG9pbmcgYSBw YXJhbGxlbCBzY2FuLgogCSAqLwogCWlmIChwYXJhbGxlbF9zY2FuICE9IE5VTEwpCi0JCXNj YW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSA9IHBhbGxvYyhzaXplb2YoUGFyYWxsZWxCbG9j a1RhYmxlU2NhbldvcmtlckRhdGEpKTsKKwkJc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRh ID0gcGFsbG9jX29iamVjdChQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSk7CiAJ ZWxzZQogCQlzY2FuLT5yc19wYXJhbGxlbHdvcmtlcmRhdGEgPSBOVUxMOwogCkBAIC0xMjEw LDcgKzEyMTAsNyBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNo b3Qgc25hcHNob3QsCiAJICogaW5pdHNjYW4oKSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhbGxv Y2F0ZSBtZW1vcnkgYWdhaW4KIAkgKi8KIAlpZiAobmtleXMgPiAwKQotCQlzY2FuLT5yc19i YXNlLnJzX2tleSA9IChTY2FuS2V5KSBwYWxsb2Moc2l6ZW9mKFNjYW5LZXlEYXRhKSAqIG5r ZXlzKTsKKwkJc2Nhbi0+cnNfYmFzZS5yc19rZXkgPSBwYWxsb2NfYXJyYXkoU2NhbktleURh dGEsIG5rZXlzKTsKIAllbHNlCiAJCXNjYW4tPnJzX2Jhc2UucnNfa2V5ID0gTlVMTDsKIApA QCAtMjAzNyw3ICsyMDM3LDcgQEAgR2V0QnVsa0luc2VydFN0YXRlKHZvaWQpCiB7CiAJQnVs a0luc2VydFN0YXRlIGJpc3RhdGU7CiAKLQliaXN0YXRlID0gKEJ1bGtJbnNlcnRTdGF0ZSkg cGFsbG9jKHNpemVvZihCdWxrSW5zZXJ0U3RhdGVEYXRhKSk7CisJYmlzdGF0ZSA9IChCdWxr SW5zZXJ0U3RhdGUpIHBhbGxvY19vYmplY3QoQnVsa0luc2VydFN0YXRlRGF0YSk7CiAJYmlz dGF0ZS0+c3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1dSSVRFKTsKIAli aXN0YXRlLT5jdXJyZW50X2J1ZiA9IEludmFsaWRCdWZmZXI7CiAJYmlzdGF0ZS0+bmV4dF9m cmVlID0gSW52YWxpZEJsb2NrTnVtYmVyOwpAQCAtNjg5NSw3ICs2ODk1LDcgQEAgRnJlZXpl TXVsdGlYYWN0SWQoTXVsdGlYYWN0SWQgbXVsdGksIHVpbnQxNiB0X2luZm9tYXNrLAogCSAq IGV2ZW4gbWVtYmVyIFhJRHMgPj0gT2xkZXN0WG1pbiBvZnRlbiB3b24ndCBiZSBrZXB0IGJ5 IHNlY29uZCBwYXNzLgogCSAqLwogCW5uZXdtZW1iZXJzID0gMDsKLQluZXdtZW1iZXJzID0g cGFsbG9jKHNpemVvZihNdWx0aVhhY3RNZW1iZXIpICogbm1lbWJlcnMpOworCW5ld21lbWJl cnMgPSBwYWxsb2NfYXJyYXkoTXVsdGlYYWN0TWVtYmVyLCBubWVtYmVycyk7CiAJaGFzX2xv Y2tlcnMgPSBmYWxzZTsKIAl1cGRhdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ dXBkYXRlX2NvbW1pdHRlZCA9IGZhbHNlOwpAQCAtODcxMSw3ICs4NzExLDcgQEAgYm90dG9t dXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCUFzc2Vy dChkZWxzdGF0ZS0+bmRlbHRpZHMgPiAwKTsKIAogCS8qIENhbGN1bGF0ZSBwZXItaGVhcC1i bG9jayBjb3VudCBvZiBUSURzICovCi0JYmxvY2tncm91cHMgPSBwYWxsb2Moc2l6ZW9mKElu ZGV4RGVsZXRlQ291bnRzKSAqIGRlbHN0YXRlLT5uZGVsdGlkcyk7CisJYmxvY2tncm91cHMg PSBwYWxsb2NfYXJyYXkoSW5kZXhEZWxldGVDb3VudHMsIGRlbHN0YXRlLT5uZGVsdGlkcyk7 CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBkZWxzdGF0ZS0+bmRlbHRpZHM7IGkrKykKIAl7CiAJ CVRNX0luZGV4RGVsZXRlICppZGVsdGlkID0gJmRlbHN0YXRlLT5kZWx0aWRzW2ldOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRi YjYuLmRkNGZlNmJmNjJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKQEAgLTgxLDcgKzgxLDcgQEAgaGVhcGFtX3Nsb3RfY2FsbGJhY2tzKFJlbGF0 aW9uIHJlbGF0aW9uKQogc3RhdGljIEluZGV4RmV0Y2hUYWJsZURhdGEgKgogaGVhcGFtX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKIHsKLQlJbmRleEZldGNoSGVhcERhdGEg KmhzY2FuID0gcGFsbG9jMChzaXplb2YoSW5kZXhGZXRjaEhlYXBEYXRhKSk7CisJSW5kZXhG ZXRjaEhlYXBEYXRhICpoc2NhbiA9IHBhbGxvYzBfb2JqZWN0KEluZGV4RmV0Y2hIZWFwRGF0 YSk7CiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJ bnZhbGlkQnVmZmVyOwpAQCAtNzE3LDggKzcxNyw4IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5 X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkv KiBQcmVhbGxvY2F0ZSB2YWx1ZXMvaXNudWxsIGFycmF5cyAqLwogCW5hdHRzID0gbmV3VHVw RGVzYy0+bmF0dHM7Ci0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuYXR0cyAqIHNpemVv ZihEYXR1bSkpOwotCWlzbnVsbCA9IChib29sICopIHBhbGxvYyhuYXR0cyAqIHNpemVvZihi b29sKSk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuYXR0cyk7CisJaXNudWxs ID0gcGFsbG9jX2FycmF5KGJvb2wsIG5hdHRzKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHJl d3JpdGUgb3BlcmF0aW9uICovCiAJcndzdGF0ZSA9IGJlZ2luX2hlYXBfcmV3cml0ZShPbGRI ZWFwLCBOZXdIZWFwLCBPbGRlc3RYbWluLCAqeGlkX2N1dG9mZiwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9yZXdyaXRlaGVhcC5jCmluZGV4IDY2YWI0OGYwZmUwLi43Y2UzYzVlMjY4NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCkBAIC0yNDksNyArMjQ5 LDcgQEAgYmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBu ZXdfaGVhcCwgVHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIAlvbGRfY3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHJ3X2N4dCk7CiAKIAkvKiBDcmVhdGUgYW5kIGZpbGwgaW4gdGhlIHN0 YXRlIHN0cnVjdCAqLwotCXN0YXRlID0gcGFsbG9jMChzaXplb2YoUmV3cml0ZVN0YXRlRGF0 YSkpOworCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoUmV3cml0ZVN0YXRlRGF0YSk7CiAKIAlz dGF0ZS0+cnNfb2xkX3JlbCA9IG9sZF9oZWFwOwogCXN0YXRlLT5yc19uZXdfcmVsID0gbmV3 X2hlYXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNjViYjA1 NjhhODYuLjkxZTBiOGM4YTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC02NzcsNyArNjc3LDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwg Y29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkgKiBvZiBlYWNoIHJlbC4gIEl0J3MgY29u dmVuaWVudCBmb3IgY29kZSBpbiBsYXp5X3NjYW5faGVhcCB0byBhbHdheXMgdXNlCiAJICog dGhlc2UgdGVtcCBjb3BpZXMuCiAJICovCi0JdmFjcmVsID0gKExWUmVsU3RhdGUgKikgcGFs bG9jMChzaXplb2YoTFZSZWxTdGF0ZSkpOworCXZhY3JlbCA9IHBhbGxvYzBfb2JqZWN0KExW UmVsU3RhdGUpOwogCXZhY3JlbC0+ZGJuYW1lID0gZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRh YmFzZUlkKTsKIAl2YWNyZWwtPnJlbG5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShS ZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKTsKIAl2YWNyZWwtPnJlbG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIGhl YXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMs CiAJaWYgKGluc3RydW1lbnQgJiYgdmFjcmVsLT5uaW5kZXhlcyA+IDApCiAJewogCQkvKiBD b3B5IGluZGV4IG5hbWVzIHVzZWQgYnkgaW5zdHJ1bWVudGF0aW9uIChub3QgZXJyb3IgcmVw b3J0aW5nKSAqLwotCQlpbmRuYW1lcyA9IHBhbGxvYyhzaXplb2YoY2hhciAqKSAqIHZhY3Jl bC0+bmluZGV4ZXMpOworCQlpbmRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFyICosIHZhY3Jl bC0+bmluZGV4ZXMpOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHZhY3JlbC0+bmluZGV4ZXM7 IGkrKykKIAkJCWluZG5hbWVzW2ldID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZSh2YWNyZWwtPmluZHJlbHNbaV0pKTsKIAl9CkBAIC0zNTY3LDcgKzM1NjcsNyBAQCBkZWFk X2l0ZW1zX2FsbG9jKExWUmVsU3RhdGUgKnZhY3JlbCwgaW50IG53b3JrZXJzKQogCSAqIGxv Y2FsbHkuCiAJICovCiAKLQlkZWFkX2l0ZW1zX2luZm8gPSAoVmFjRGVhZEl0ZW1zSW5mbyAq KSBwYWxsb2Moc2l6ZW9mKFZhY0RlYWRJdGVtc0luZm8pKTsKKwlkZWFkX2l0ZW1zX2luZm8g PSBwYWxsb2Nfb2JqZWN0KFZhY0RlYWRJdGVtc0luZm8pOwogCWRlYWRfaXRlbXNfaW5mby0+ bWF4X2J5dGVzID0gdmFjX3dvcmtfbWVtICogKFNpemUpIDEwMjQ7CiAJZGVhZF9pdGVtc19p bmZvLT5udW1faXRlbXMgPSAwOwogCXZhY3JlbC0+ZGVhZF9pdGVtc19pbmZvID0gZGVhZF9p dGVtc19pbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2FtdmFs aWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKaW5kZXgg NGNmMjM3MDE5YWQuLjhkN2U3MTcxYmQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaW5kZXgvYW12YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9h bXZhbGlkYXRlLmMKQEAgLTExOCw3ICsxMTgsNyBAQCBpZGVudGlmeV9vcGZhbWlseV9ncm91 cHMoQ2F0Q0xpc3QgKm9wcmxpc3QsIENhdENMaXN0ICpwcm9jbGlzdCkKIAkJfQogCiAJCS8q IFRpbWUgZm9yIGEgbmV3IGdyb3VwICovCi0JCXRoaXNncm91cCA9IChPcEZhbWlseU9wRnVu Y0dyb3VwICopIHBhbGxvYyhzaXplb2YoT3BGYW1pbHlPcEZ1bmNHcm91cCkpOworCQl0aGlz Z3JvdXAgPSBwYWxsb2Nfb2JqZWN0KE9wRmFtaWx5T3BGdW5jR3JvdXApOwogCQlpZiAob3By Zm9ybSAmJgogCQkJKCFwcm9jZm9ybSB8fAogCQkJIChvcHJmb3JtLT5hbW9wbGVmdHR5cGUg PCBwcm9jZm9ybS0+YW1wcm9jbGVmdHR5cGUgfHwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFt LmMKaW5kZXggMGNiMjdhZjEzMTAuLjFlOWVhZGI3MjNlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYwpAQCAtODEsNyArODEsNyBAQCBSZWxhdGlvbkdldEluZGV4U2NhbihSZWxh dGlvbiBpbmRleFJlbGF0aW9uLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCiB7CiAJSW5k ZXhTY2FuRGVzYyBzY2FuOwogCi0Jc2NhbiA9IChJbmRleFNjYW5EZXNjKSBwYWxsb2Moc2l6 ZW9mKEluZGV4U2NhbkRlc2NEYXRhKSk7CisJc2NhbiA9IChJbmRleFNjYW5EZXNjKSBwYWxs b2Nfb2JqZWN0KEluZGV4U2NhbkRlc2NEYXRhKTsKIAogCXNjYW4tPmhlYXBSZWxhdGlvbiA9 IE5VTEw7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KIAlzY2FuLT54c19oZWFwZmV0Y2ggPSBO VUxMOwpAQCAtOTQsMTEgKzk0LDExIEBAIFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9u IGluZGV4UmVsYXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAkgKiBXZSBhbGxv Y2F0ZSBrZXkgd29ya3NwYWNlIGhlcmUsIGJ1dCBpdCB3b24ndCBnZXQgZmlsbGVkIHVudGls IGFtcmVzY2FuLgogCSAqLwogCWlmIChua2V5cyA+IDApCi0JCXNjYW4tPmtleURhdGEgPSAo U2NhbktleSkgcGFsbG9jKHNpemVvZihTY2FuS2V5RGF0YSkgKiBua2V5cyk7CisJCXNjYW4t PmtleURhdGEgPSBwYWxsb2NfYXJyYXkoU2NhbktleURhdGEsIG5rZXlzKTsgCiAJZWxzZQog CQlzY2FuLT5rZXlEYXRhID0gTlVMTDsKIAlpZiAobm9yZGVyYnlzID4gMCkKLQkJc2Nhbi0+ b3JkZXJCeURhdGEgPSAoU2NhbktleSkgcGFsbG9jKHNpemVvZihTY2FuS2V5RGF0YSkgKiBu b3JkZXJieXMpOworCQlzY2FuLT5vcmRlckJ5RGF0YSA9IHBhbGxvY19hcnJheShTY2FuS2V5 RGF0YSwgbm9yZGVyYnlzKTsKIAllbHNlCiAJCXNjYW4tPm9yZGVyQnlEYXRhID0gTlVMTDsK IApAQCAtMzEwLDggKzMxMCw4IEBAIGluZGV4X2NvbXB1dGVfeGlkX2hvcml6b25fZm9yX3R1 cGxlcyhSZWxhdGlvbiBpcmVsLAogCWRlbHN0YXRlLmJvdHRvbXVwID0gZmFsc2U7CiAJZGVs c3RhdGUuYm90dG9tdXBmcmVlc3BhY2UgPSAwOwogCWRlbHN0YXRlLm5kZWx0aWRzID0gMDsK LQlkZWxzdGF0ZS5kZWx0aWRzID0gcGFsbG9jKG5pdGVtcyAqIHNpemVvZihUTV9JbmRleERl bGV0ZSkpOwotCWRlbHN0YXRlLnN0YXR1cyA9IHBhbGxvYyhuaXRlbXMgKiBzaXplb2YoVE1f SW5kZXhTdGF0dXMpKTsKKwlkZWxzdGF0ZS5kZWx0aWRzID0gcGFsbG9jX2FycmF5KFRNX0lu ZGV4RGVsZXRlLCBuaXRlbXMpOworCWRlbHN0YXRlLnN0YXR1cyA9IHBhbGxvY19hcnJheShU TV9JbmRleFN0YXR1cywgbml0ZW1zKTsKIAogCS8qIGlkZW50aWZ5IHdoYXQgdGhlIGluZGV4 IHR1cGxlcyBhYm91dCB0byBiZSBkZWxldGVkIHBvaW50IHRvICovCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBuaXRlbXM7IGkrKykKQEAgLTQwMSw3ICs0MDEsNyBAQCBzeXN0YWJsZV9iZWdp bnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCWVsc2UKIAkJaXJlbCA9IE5VTEw7CiAK LQlzeXNzY2FuID0gKFN5c1NjYW5EZXNjKSBwYWxsb2Moc2l6ZW9mKFN5c1NjYW5EZXNjRGF0 YSkpOworCXN5c3NjYW4gPSAoU3lzU2NhbkRlc2MpIHBhbGxvY19vYmplY3QoU3lzU2NhbkRl c2NEYXRhKTsKIAogCXN5c3NjYW4tPmhlYXBfcmVsID0gaGVhcFJlbGF0aW9uOwogCXN5c3Nj YW4tPmlyZWwgPSBpcmVsOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHN5c3RhYmxlX2JlZ2luc2Nh bl9vcmRlcmVkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJZWxvZyhXQVJOSU5HLCAidXNp bmcgaW5kZXggXCIlc1wiIGRlc3BpdGUgSWdub3JlU3lzdGVtSW5kZXhlcyIsCiAJCQkgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlvbikpOwogCi0Jc3lzc2NhbiA9IChT eXNTY2FuRGVzYykgcGFsbG9jKHNpemVvZihTeXNTY2FuRGVzY0RhdGEpKTsKKwlzeXNzY2Fu ID0gKFN5c1NjYW5EZXNjKSBwYWxsb2Nfb2JqZWN0KFN5c1NjYW5EZXNjRGF0YSk7CiAKIAlz eXNzY2FuLT5oZWFwX3JlbCA9IGhlYXBSZWxhdGlvbjsKIAlzeXNzY2FuLT5pcmVsID0gaW5k ZXhSZWxhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBh NzQ2ZGU0NWRkMy4uZWMwN2VhM2QxMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGRlZHVwLmMKQEAgLTgyLDcgKzgyLDcgQEAgX2J0X2RlZHVwX3Bhc3MoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLCBJbmRleFR1cGxlIG5ld2l0ZW0sIFNpemUgbmV3aXRlbXN6LAogCSAq IFRoYXQgb3VnaHQgdG8gbGVhdmUgdXMgd2l0aCBhIGdvb2Qgc3BsaXQgcG9pbnQgd2hlbiBw YWdlcyBmdWxsIG9mCiAJICogZHVwbGljYXRlcyBjYW4gYmUgc3BsaXQgc2V2ZXJhbCB0aW1l cy4KIAkgKi8KLQlzdGF0ZSA9IChCVERlZHVwU3RhdGUpIHBhbGxvYyhzaXplb2YoQlREZWR1 cFN0YXRlRGF0YSkpOworCXN0YXRlID0gKEJURGVkdXBTdGF0ZSkgcGFsbG9jX29iamVjdChC VERlZHVwU3RhdGVEYXRhKTsKIAlzdGF0ZS0+ZGVkdXBsaWNhdGUgPSB0cnVlOwogCXN0YXRl LT5ubWF4aXRlbXMgPSAwOwogCXN0YXRlLT5tYXhwb3N0aW5nc2l6ZSA9IE1pbihCVE1heEl0 ZW1TaXplIC8gMiwgSU5ERVhfU0laRV9NQVNLKTsKQEAgLTMyMSw3ICszMjEsNyBAQCBfYnRf Ym90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhl YXBSZWwsCiAJbmV3aXRlbXN6ICs9IHNpemVvZihJdGVtSWREYXRhKTsKIAogCS8qIEluaXRp YWxpemUgZGVkdXBsaWNhdGlvbiBzdGF0ZSAqLwotCXN0YXRlID0gKEJURGVkdXBTdGF0ZSkg cGFsbG9jKHNpemVvZihCVERlZHVwU3RhdGVEYXRhKSk7CisJc3RhdGUgPSAoQlREZWR1cFN0 YXRlKSBwYWxsb2Nfb2JqZWN0KEJURGVkdXBTdGF0ZURhdGEpOwogCXN0YXRlLT5kZWR1cGxp Y2F0ZSA9IHRydWU7CiAJc3RhdGUtPm5tYXhpdGVtcyA9IDA7CiAJc3RhdGUtPm1heHBvc3Rp bmdzaXplID0gQkxDS1NaOyAvKiBXZSdyZSBub3QgcmVhbGx5IGRlZHVwbGljYXRpbmcgKi8K QEAgLTM1NSw4ICszNTUsOCBAQCBfYnRfYm90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJZGVsc3RhdGUuYm90dG9tdXAgPSB0 cnVlOwogCWRlbHN0YXRlLmJvdHRvbXVwZnJlZXNwYWNlID0gTWF4KEJMQ0tTWiAvIDE2LCBu ZXdpdGVtc3opOwogCWRlbHN0YXRlLm5kZWx0aWRzID0gMDsKLQlkZWxzdGF0ZS5kZWx0aWRz ID0gcGFsbG9jKE1heFRJRHNQZXJCVHJlZVBhZ2UgKiBzaXplb2YoVE1fSW5kZXhEZWxldGUp KTsKLQlkZWxzdGF0ZS5zdGF0dXMgPSBwYWxsb2MoTWF4VElEc1BlckJUcmVlUGFnZSAqIHNp emVvZihUTV9JbmRleFN0YXR1cykpOworCWRlbHN0YXRlLmRlbHRpZHMgPSBwYWxsb2NfYXJy YXkoVE1fSW5kZXhEZWxldGUsIE1heFRJRHNQZXJCVHJlZVBhZ2UpOworCWRlbHN0YXRlLnN0 YXR1cyA9IHBhbGxvY19hcnJheShUTV9JbmRleFN0YXR1cywgTWF4VElEc1BlckJUcmVlUGFn ZSk7CiAKIAltaW5vZmYgPSBQX0ZJUlNUREFUQUtFWShvcGFxdWUpOwogCW1heG9mZiA9IFBh Z2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRpbnNlcnQuYwppbmRleCAzYTRiNzkxZjJhYi4uMDMxZWI3NmJhOGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpAQCAtMjk2Myw3ICsyOTYzLDcgQEAgX2J0 X2RlYWRibG9ja3MoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5k ZWxldGFibGUsCiAJICovCiAJc3BhY2VudGlkcyA9IG5kZWxldGFibGUgKyAxOwogCW50aWRz ID0gMDsKLQl0aWRibG9ja3MgPSAoQmxvY2tOdW1iZXIgKikgcGFsbG9jKHNpemVvZihCbG9j a051bWJlcikgKiBzcGFjZW50aWRzKTsKKwl0aWRibG9ja3MgPSBwYWxsb2NfYXJyYXkoQmxv Y2tOdW1iZXIsIHNwYWNlbnRpZHMpOwogCiAJLyoKIAkgKiBGaXJzdCBhZGQgdGhlIHRhYmxl IGJsb2NrIGZvciB0aGUgaW5jb21pbmcgbmV3aXRlbS4gIFRoaXMgaXMgdGhlIG9uZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwppbmRleCBhOGQ1NmZlNWE3Yy4uY2ZiMDdi MmJjYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCkBAIC0yOTgyLDcg KzI5ODIsNyBAQCBfYnRfcGVuZGluZ2ZzbV9pbml0KFJlbGF0aW9uIHJlbCwgQlRWYWNTdGF0 ZSAqdnN0YXRlLCBib29sIGNsZWFudXBvbmx5KQogCXZzdGF0ZS0+bWF4YnVmc2l6ZSA9IChp bnQpIG1heGJ1ZnNpemU7CiAKIAkvKiBBbGxvY2F0ZSBidWZmZXIsIGluZGljYXRlIHRoYXQg dGhlcmUgYXJlIGN1cnJlbnRseSAwIHBlbmRpbmcgcGFnZXMgKi8KLQl2c3RhdGUtPnBlbmRp bmdwYWdlcyA9IHBhbGxvYyhzaXplb2YoQlRQZW5kaW5nRlNNKSAqIHZzdGF0ZS0+YnVmc2l6 ZSk7CisJdnN0YXRlLT5wZW5kaW5ncGFnZXMgPSBwYWxsb2NfYXJyYXkoQlRQZW5kaW5nRlNN LCB2c3RhdGUtPmJ1ZnNpemUpOwogCXZzdGF0ZS0+bnBlbmRpbmdwYWdlcyA9IDA7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4IGZkZmY5NjBjMTMwLi5jODdl NGNmYTQyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCkBAIC0yNjAsOCAr MjYwLDcgQEAgYnRnZXR0dXBsZShJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKQogCQkJCSAqIGp1c3QgZm9yZ2V0IGFueSBleGNlc3MgZW50cmllcy4KIAkJCQkgKi8K IAkJCQlpZiAoc28tPmtpbGxlZEl0ZW1zID09IE5VTEwpCi0JCQkJCXNvLT5raWxsZWRJdGVt cyA9IChpbnQgKikKLQkJCQkJCXBhbGxvYyhNYXhUSURzUGVyQlRyZWVQYWdlICogc2l6ZW9m KGludCkpOworCQkJCQlzby0+a2lsbGVkSXRlbXMgPSBwYWxsb2NfYXJyYXkoaW50LCBNYXhU SURzUGVyQlRyZWVQYWdlKTsKIAkJCQlpZiAoc28tPm51bUtpbGxlZCA8IE1heFRJRHNQZXJC VHJlZVBhZ2UpCiAJCQkJCXNvLT5raWxsZWRJdGVtc1tzby0+bnVtS2lsbGVkKytdID0gc28t PmN1cnJQb3MuaXRlbUluZGV4OwogCQkJfQpAQCAtMzQ1LDcgKzM0NCw3IEBAIGJ0YmVnaW5z Y2FuKFJlbGF0aW9uIHJlbCwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQogCXNjYW4gPSBS ZWxhdGlvbkdldEluZGV4U2NhbihyZWwsIG5rZXlzLCBub3JkZXJieXMpOwogCiAJLyogYWxs b2NhdGUgcHJpdmF0ZSB3b3Jrc3BhY2UgKi8KLQlzbyA9IChCVFNjYW5PcGFxdWUpIHBhbGxv YyhzaXplb2YoQlRTY2FuT3BhcXVlRGF0YSkpOworCXNvID0gKEJUU2Nhbk9wYXF1ZSkgcGFs bG9jX29iamVjdChCVFNjYW5PcGFxdWVEYXRhKTsKIAlCVFNjYW5Qb3NJbnZhbGlkYXRlKHNv LT5jdXJyUG9zKTsKIAlCVFNjYW5Qb3NJbnZhbGlkYXRlKHNvLT5tYXJrUG9zKTsKIAlpZiAo c2Nhbi0+bnVtYmVyT2ZLZXlzID4gMCkKQEAgLTEwNzAsNyArMTA2OSw3IEBAIGJ0YnVsa2Rl bGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMsCiAKIAkvKiBhbGxvY2F0ZSBzdGF0cyBpZiBmaXJzdCB0aW1lIHRocm91Z2gsIGVsc2Ug cmUtdXNlIGV4aXN0aW5nIHN0cnVjdCAqLwogCWlmIChzdGF0cyA9PSBOVUxMKQotCQlzdGF0 cyA9IChJbmRleEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxr RGVsZXRlUmVzdWx0KSk7CisJCXN0YXRzID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWxrRGVs ZXRlUmVzdWx0KTsKIAogCS8qIEVzdGFibGlzaCB0aGUgdmFjdXVtIGN5Y2xlIElEIHRvIHVz ZSBmb3IgdGhpcyBzY2FuICovCiAJLyogVGhlIEVOU1VSRSBzdHVmZiBlbnN1cmVzIHdlIGNs ZWFuIHVwIHNoYXJlZCBtZW1vcnkgb24gZmFpbHVyZSAqLwpAQCAtMTEzMSw3ICsxMTMwLDcg QEAgYnR2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cykKIAkJICogV2UgaGFuZGxlIHRoZSBwcm9ibGVtIGJ5IG1ha2lu ZyBudW1faW5kZXhfdHVwbGVzIGFuIGVzdGltYXRlIGluCiAJCSAqIGNsZWFudXAtb25seSBj YXNlLgogCQkgKi8KLQkJc3RhdHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxv YzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBf b2JqZWN0KEluZGV4QnVsa0RlbGV0ZVJlc3VsdCk7CiAJCWJ0dmFjdXVtc2NhbihpbmZvLCBz dGF0cywgTlVMTCwgTlVMTCwgMCk7CiAJCXN0YXRzLT5lc3RpbWF0ZWRfY291bnQgPSB0cnVl OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNo LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCmluZGV4IDA2MDUz NTZlYzlmLi4yYjM0ZTdlZWNmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNl YXJjaC5jCkBAIC0xNjksNyArMTY5LDcgQEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwKIAkJICog cGFnZSBvbmUgbGV2ZWwgZG93biwgaXQgdXN1YWxseSBlbmRzIHVwIGluc2VydGluZyBhIG5l dyBwaXZvdAogCQkgKiB0dXBsZS9kb3dubGluayBpbW1lZGlhdGVseSBhZnRlciB0aGUgbG9j YXRpb24gcmVjb3JkZWQgaGVyZS4KIAkJICovCi0JCW5ld19zdGFjayA9IChCVFN0YWNrKSBw YWxsb2Moc2l6ZW9mKEJUU3RhY2tEYXRhKSk7CisJCW5ld19zdGFjayA9IChCVFN0YWNrKSBw YWxsb2Nfb2JqZWN0KEJUU3RhY2tEYXRhKTsKIAkJbmV3X3N0YWNrLT5idHNfYmxrbm8gPSBC dWZmZXJHZXRCbG9ja051bWJlcigqYnVmUCk7CiAJCW5ld19zdGFjay0+YnRzX29mZnNldCA9 IG9mZm51bTsKIAkJbmV3X3N0YWNrLT5idHNfcGFyZW50ID0gc3RhY2tfaW47CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDQ1NGFkYWVlN2RjLi5iZjcwYmYyMDlh NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTMzNSw3ICszMzUs NyBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJh bGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKIAotCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVz dWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdCA9IHBh bGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVz ID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0 dXBsZXM7CkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIGRvdWJsZQogX2J0X3Nwb29sc19o ZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpi dWlsZHN0YXRlLAogCQkJCQlJbmRleEluZm8gKmluZGV4SW5mbykKIHsKLQlCVFNwb29sICAg ICpidHNwb29sID0gKEJUU3Bvb2wgKikgcGFsbG9jMChzaXplb2YoQlRTcG9vbCkpOworCUJU U3Bvb2wgICAgKmJ0c3Bvb2wgPSBwYWxsb2MwX29iamVjdChCVFNwb29sKTsKIAlTb3J0Q29v cmRpbmF0ZSBjb29yZGluYXRlID0gTlVMTDsKIAlkb3VibGUJCXJlbHR1cGxlcyA9IDA7CiAK QEAgLTM5OSw3ICszOTksNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICovCiAJaWYg KGJ1aWxkc3RhdGUtPmJ0bGVhZGVyKQogCXsKLQkJY29vcmRpbmF0ZSA9IChTb3J0Q29vcmRp bmF0ZSkgcGFsbG9jMChzaXplb2YoU29ydENvb3JkaW5hdGVEYXRhKSk7CisJCWNvb3JkaW5h dGUgPSAoU29ydENvb3JkaW5hdGUpIHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0 YSk7CiAJCWNvb3JkaW5hdGUtPmlzV29ya2VyID0gZmFsc2U7CiAJCWNvb3JkaW5hdGUtPm5Q YXJ0aWNpcGFudHMgPQogCQkJYnVpbGRzdGF0ZS0+YnRsZWFkZXItPm5wYXJ0aWNpcGFudHR1 cGxlc29ydHM7CkBAIC00NDAsNyArNDQwLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CSAqLwogCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSkKIAl7Ci0JCUJUU3Bvb2wgICAgKmJ0 c3Bvb2wyID0gKEJUU3Bvb2wgKikgcGFsbG9jMChzaXplb2YoQlRTcG9vbCkpOworCQlCVFNw b29sICAgICpidHNwb29sMiA9IHBhbGxvYzBfb2JqZWN0KEJUU3Bvb2wpOwogCQlTb3J0Q29v cmRpbmF0ZSBjb29yZGluYXRlMiA9IE5VTEw7CiAKIAkJLyogSW5pdGlhbGl6ZSBzZWNvbmRh cnkgc3Bvb2wgKi8KQEAgLTQ1Nyw3ICs0NTcsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJCQkgKiB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoKSBhYm91dCB0aGUgYmFzaWMg aGlnaCBsZXZlbAogCQkJICogY29vcmRpbmF0aW9uIG9mIGEgcGFyYWxsZWwgc29ydC4KIAkJ CSAqLwotCQkJY29vcmRpbmF0ZTIgPSAoU29ydENvb3JkaW5hdGUpIHBhbGxvYzAoc2l6ZW9m KFNvcnRDb29yZGluYXRlRGF0YSkpOworCQkJY29vcmRpbmF0ZTIgPSAoU29ydENvb3JkaW5h dGUpIHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0YSk7CiAJCQljb29yZGluYXRl Mi0+aXNXb3JrZXIgPSBmYWxzZTsKIAkJCWNvb3JkaW5hdGUyLT5uUGFydGljaXBhbnRzID0K IAkJCQlidWlsZHN0YXRlLT5idGxlYWRlci0+bnBhcnRpY2lwYW50dHVwbGVzb3J0czsKQEAg LTY0OCw3ICs2NDgsNyBAQCBfYnRfYmx3cml0ZXBhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUs IEJ1bGtXcml0ZUJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vKQogc3RhdGljIEJUUGFn ZVN0YXRlICoKIF9idF9wYWdlc3RhdGUoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBs ZXZlbCkKIHsKLQlCVFBhZ2VTdGF0ZSAqc3RhdGUgPSAoQlRQYWdlU3RhdGUgKikgcGFsbG9j MChzaXplb2YoQlRQYWdlU3RhdGUpKTsKKwlCVFBhZ2VTdGF0ZSAqc3RhdGUgPSBwYWxsb2Mw X29iamVjdChCVFBhZ2VTdGF0ZSk7CiAKIAkvKiBjcmVhdGUgaW5pdGlhbCBwYWdlIGZvciBs ZXZlbCAqLwogCXN0YXRlLT5idHBzX2J1ZiA9IF9idF9ibG5ld3BhZ2Uod3N0YXRlLCBsZXZl bCk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBfYnRfYnVpbGRhZGQoQlRXcml0ZVN0YXRlICp3 c3RhdGUsIEJUUGFnZVN0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwLAogCWlmIChsYXN0 X29mZiA9PSBQX0hJS0VZKQogCXsKIAkJQXNzZXJ0KHN0YXRlLT5idHBzX2xvd2tleSA9PSBO VUxMKTsKLQkJc3RhdGUtPmJ0cHNfbG93a2V5ID0gcGFsbG9jMChzaXplb2YoSW5kZXhUdXBs ZURhdGEpKTsKKwkJc3RhdGUtPmJ0cHNfbG93a2V5ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhU dXBsZURhdGEpOwogCQlzdGF0ZS0+YnRwc19sb3drZXktPnRfaW5mbyA9IHNpemVvZihJbmRl eFR1cGxlRGF0YSk7CiAJCUJUcmVlVHVwbGVTZXROQXR0cyhzdGF0ZS0+YnRwc19sb3drZXks IDAsIGZhbHNlKTsKIAl9CkBAIC0xMTY0LDcgKzExNjQsNyBAQCBfYnRfbG9hZChCVFdyaXRl U3RhdGUgKndzdGF0ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJ CWl0dXAyID0gdHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbDItPnNvcnRzdGF0ZSwg dHJ1ZSk7CiAKIAkJLyogUHJlcGFyZSBTb3J0U3VwcG9ydCBkYXRhIGZvciBlYWNoIGNvbHVt biAqLwotCQlzb3J0S2V5cyA9IChTb3J0U3VwcG9ydCkgcGFsbG9jMChrZXlzeiAqIHNpemVv ZihTb3J0U3VwcG9ydERhdGEpKTsKKwkJc29ydEtleXMgPSAoU29ydFN1cHBvcnQpIHBhbGxv YzBfYXJyYXkoU29ydFN1cHBvcnREYXRhLCBrZXlzeik7CiAKIAkJZm9yIChpID0gMDsgaSA8 IGtleXN6OyBpKyspCiAJCXsKQEAgLTEyNjYsNyArMTI2Niw3IEBAIF9idF9sb2FkKEJUV3Jp dGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikK IAkJLyogbWVyZ2UgaXMgdW5uZWNlc3NhcnksIGRlZHVwbGljYXRlIGludG8gcG9zdGluZyBs aXN0cyAqLwogCQlCVERlZHVwU3RhdGUgZHN0YXRlOwogCi0JCWRzdGF0ZSA9IChCVERlZHVw U3RhdGUpIHBhbGxvYyhzaXplb2YoQlREZWR1cFN0YXRlRGF0YSkpOworCQlkc3RhdGUgPSAo QlREZWR1cFN0YXRlKSBwYWxsb2Nfb2JqZWN0KEJURGVkdXBTdGF0ZURhdGEpOwogCQlkc3Rh dGUtPmRlZHVwbGljYXRlID0gdHJ1ZTsgLyogdW51c2VkICovCiAJCWRzdGF0ZS0+bm1heGl0 ZW1zID0gMDsJLyogdW51c2VkICovCiAJCWRzdGF0ZS0+bWF4cG9zdGluZ3NpemUgPSAwOyAv KiBzZXQgbGF0ZXIgKi8KQEAgLTE0MDQsNyArMTQwNCw3IEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCVNoYXJlZHNvcnQgKnNoYXJlZHNv cnQyOwogCUJUU3Bvb2wgICAgKmJ0c3Bvb2wgPSBidWlsZHN0YXRlLT5zcG9vbDsKLQlCVExl YWRlciAgICpidGxlYWRlciA9IChCVExlYWRlciAqKSBwYWxsb2MwKHNpemVvZihCVExlYWRl cikpOworCUJUTGVhZGVyICAgKmJ0bGVhZGVyID0gcGFsbG9jMF9vYmplY3QoQlRMZWFkZXIp OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwpAQCAtMTY5Myw3ICsxNjkzLDcg QEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlKQogCWludAkJCXNvcnRtZW07CiAKIAkvKiBBbGxvY2F0ZSBtZW1vcnkgYW5kIGlu aXRpYWxpemUgcHJpdmF0ZSBzcG9vbCAqLwotCWxlYWRlcndvcmtlciA9IChCVFNwb29sICop IHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKKwlsZWFkZXJ3b3JrZXIgPSBwYWxsb2MwX29i amVjdChCVFNwb29sKTsKIAlsZWFkZXJ3b3JrZXItPmhlYXAgPSBidWlsZHN0YXRlLT5zcG9v bC0+aGVhcDsKIAlsZWFkZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmlu ZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUgPSBidWlsZHN0YXRlLT5zcG9vbC0+aXN1 bmlxdWU7CkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2Fz X3dvcmtlcihCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUpCiAJZWxzZQogCXsKIAkJLyogQWxs b2NhdGUgbWVtb3J5IGZvciB3b3JrZXIncyBvd24gcHJpdmF0ZSBzZWNvbmRhcnkgc3Bvb2wg Ki8KLQkJbGVhZGVyd29ya2VyMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bv b2wpKTsKKwkJbGVhZGVyd29ya2VyMiA9IHBhbGxvYzBfb2JqZWN0KEJUU3Bvb2wpOwogCiAJ CS8qIEluaXRpYWxpemUgd29ya2VyJ3Mgb3duIHNlY29uZGFyeSBzcG9vbCAqLwogCQlsZWFk ZXJ3b3JrZXIyLT5oZWFwID0gbGVhZGVyd29ya2VyLT5oZWFwOwpAQCAtMTc5Niw3ICsxNzk2 LDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCWluZGV4UmVsID0gaW5kZXhfb3BlbihidHNoYXJlZC0+aW5kZXhyZWxpZCwg aW5kZXhMb2NrbW9kZSk7CiAKIAkvKiBJbml0aWFsaXplIHdvcmtlcidzIG93biBzcG9vbCAq LwotCWJ0c3Bvb2wgPSAoQlRTcG9vbCAqKSBwYWxsb2MwKHNpemVvZihCVFNwb29sKSk7CisJ YnRzcG9vbCA9IHBhbGxvYzBfb2JqZWN0KEJUU3Bvb2wpOwogCWJ0c3Bvb2wtPmhlYXAgPSBo ZWFwUmVsOwogCWJ0c3Bvb2wtPmluZGV4ID0gaW5kZXhSZWw7CiAJYnRzcG9vbC0+aXN1bmlx dWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCBfYnRfcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJZWxz ZQogCXsKIAkJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB3b3JrZXIncyBvd24gcHJpdmF0ZSBz ZWNvbmRhcnkgc3Bvb2wgKi8KLQkJYnRzcG9vbDIgPSAoQlRTcG9vbCAqKSBwYWxsb2MwKHNp emVvZihCVFNwb29sKSk7CisJCWJ0c3Bvb2wyID0gcGFsbG9jMF9vYmplY3QoQlRTcG9vbCk7 CiAKIAkJLyogSW5pdGlhbGl6ZSB3b3JrZXIncyBvd24gc2Vjb25kYXJ5IHNwb29sICovCiAJ CWJ0c3Bvb2wyLT5oZWFwID0gYnRzcG9vbC0+aGVhcDsKQEAgLTE4NzQsNyArMTg3NCw3IEBA IF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wg KmJ0c3Bvb2wyLAogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAogCS8qIEluaXRpYWxpemUg bG9jYWwgdHVwbGVzb3J0IGNvb3JkaW5hdGlvbiBzdGF0ZSAqLwotCWNvb3JkaW5hdGUgPSBw YWxsb2MwKHNpemVvZihTb3J0Q29vcmRpbmF0ZURhdGEpKTsKKwljb29yZGluYXRlID0gcGFs bG9jMF9vYmplY3QoU29ydENvb3JkaW5hdGVEYXRhKTsKIAljb29yZGluYXRlLT5pc1dvcmtl ciA9IHRydWU7CiAJY29vcmRpbmF0ZS0+blBhcnRpY2lwYW50cyA9IC0xOwogCWNvb3JkaW5h dGUtPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgX2J0 X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRz cG9vbDIsCiAJCSAqIHdvcmtlcikuICBXb3JrZXIgcHJvY2Vzc2VzIGFyZSBnZW5lcmFsbHkg cGVybWl0dGVkIHRvIGFsbG9jYXRlCiAJCSAqIHdvcmtfbWVtIGluZGVwZW5kZW50bHkuCiAJ CSAqLwotCQljb29yZGluYXRlMiA9IHBhbGxvYzAoc2l6ZW9mKFNvcnRDb29yZGluYXRlRGF0 YSkpOworCQljb29yZGluYXRlMiA9IHBhbGxvYzBfb2JqZWN0KFNvcnRDb29yZGluYXRlRGF0 YSk7CiAJCWNvb3JkaW5hdGUyLT5pc1dvcmtlciA9IHRydWU7CiAJCWNvb3JkaW5hdGUyLT5u UGFydGljaXBhbnRzID0gLTE7CiAJCWNvb3JkaW5hdGUyLT5zaGFyZWRzb3J0ID0gc2hhcmVk c29ydDI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0 bG9jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXgg ZjAwODJmODhjNzYuLjY1MWFiMDEzMDI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzcGxpdGxvYy5jCkBAIC0xOTcsNyArMTk3LDcgQEAgX2J0X2ZpbmRzcGxpdGxvYyhS ZWxhdGlvbiByZWwsCiAJICogYmV0d2VlbiB0dXBsZXMgd2lsbCBiZSBsZWdhbCkuCiAJICov CiAJc3RhdGUubWF4c3BsaXRzID0gbWF4b2ZmOwotCXN0YXRlLnNwbGl0cyA9IHBhbGxvYyhz aXplb2YoU3BsaXRQb2ludCkgKiBzdGF0ZS5tYXhzcGxpdHMpOworCXN0YXRlLnNwbGl0cyA9 IHBhbGxvY19hcnJheShTcGxpdFBvaW50LCBzdGF0ZS5tYXhzcGxpdHMpOwogCXN0YXRlLm5z cGxpdHMgPSAwOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5k ZXggZDRhMjZkZTA2YTMuLmRiZTY3YzE2NmZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHhsb2cuYwpAQCAtNDY5LDcgKzQ2OSw3IEBAIGJ0cmVlX3hsb2dfZGVkdXAoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCUJURGVkdXBJbnRlcnZhbCAqaW50ZXJ2YWxzOwogCQlQ YWdlCQluZXdwYWdlOwogCi0JCXN0YXRlID0gKEJURGVkdXBTdGF0ZSkgcGFsbG9jKHNpemVv ZihCVERlZHVwU3RhdGVEYXRhKSk7CisJCXN0YXRlID0gcGFsbG9jX29iamVjdChCVERlZHVw U3RhdGVEYXRhKTsKIAkJc3RhdGUtPmRlZHVwbGljYXRlID0gdHJ1ZTsJLyogdW51c2VkICov CiAJCXN0YXRlLT5ubWF4aXRlbXMgPSAwOwkvKiB1bnVzZWQgKi8KIAkJLyogQ29uc2VydmF0 aXZlbHkgdXNlIGxhcmdlciBtYXhwb3N0aW5nc2l6ZSB0aGFuIHByaW1hcnkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwppbmRleCA0ZWFkYjUxODc3Ni4u MWUxZTYxZDIwNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn ZG9pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0 LmMKQEAgLTg5LDcgKzg5LDcgQEAgYWRkTm9kZShTcEdpc3RTdGF0ZSAqc3RhdGUsIFNwR2lz dElubmVyVHVwbGUgdHVwbGUsIERhdHVtIGxhYmVsLCBpbnQgb2Zmc2V0KQogCWVsc2UgaWYg KG9mZnNldCA+IHR1cGxlLT5uTm9kZXMpCiAJCWVsb2coRVJST1IsICJpbnZhbGlkIG9mZnNl dCBmb3IgYWRkaW5nIG5vZGUgdG8gU1BHaVNUIGlubmVyIHR1cGxlIik7CiAKLQlub2RlcyA9 IHBhbGxvYyhzaXplb2YoU3BHaXN0Tm9kZVR1cGxlKSAqICh0dXBsZS0+bk5vZGVzICsgMSkp OworCW5vZGVzID0gcGFsbG9jX2FycmF5KFNwR2lzdE5vZGVUdXBsZSwgdHVwbGUtPm5Ob2Rl cyArIDEpOwogCVNHSVRJVEVSQVRFKHR1cGxlLCBpLCBub2RlKQogCXsKIAkJaWYgKGkgPCBv ZmZzZXQpCkBAIC00MDksOCArNDA5LDggQEAgbW92ZUxlYWZzKFJlbGF0aW9uIGluZGV4LCBT cEdpc3RTdGF0ZSAqc3RhdGUsCiAKIAkvKiBMb2NhdGUgdGhlIHR1cGxlcyB0byBiZSBtb3Zl ZCwgYW5kIGNvdW50IHVwIHRoZSBzcGFjZSBuZWVkZWQgKi8KIAlpID0gUGFnZUdldE1heE9m ZnNldE51bWJlcihjdXJyZW50LT5wYWdlKTsKLQl0b0RlbGV0ZSA9IChPZmZzZXROdW1iZXIg KikgcGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIpICogaSk7Ci0JdG9JbnNlcnQgPSAoT2Zm c2V0TnVtYmVyICopIHBhbGxvYyhzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIChpICsgMSkpOwor CXRvRGVsZXRlID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwgaSk7CisJdG9JbnNlcnQg PSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBpICsgMSk7CiAKIAlzaXplID0gbmV3TGVh ZlR1cGxlLT5zaXplICsgc2l6ZW9mKEl0ZW1JZERhdGEpOwogCkBAIC02MzQsNyArNjM0LDcg QEAgY2hlY2tBbGxUaGVTYW1lKHNwZ1BpY2tTcGxpdEluICppbiwgc3BnUGlja1NwbGl0T3V0 ICpvdXQsIGJvb2wgdG9vQmlnLAogCXsKIAkJRGF0dW0JCXRoZUxhYmVsID0gb3V0LT5ub2Rl TGFiZWxzW3RoZU5vZGVdOwogCi0JCW91dC0+bm9kZUxhYmVscyA9IChEYXR1bSAqKSBwYWxs b2Moc2l6ZW9mKERhdHVtKSAqIG91dC0+bk5vZGVzKTsKKwkJb3V0LT5ub2RlTGFiZWxzID0g cGFsbG9jX2FycmF5KERhdHVtLCBvdXQtPm5Ob2Rlcyk7CiAJCWZvciAoaSA9IDA7IGkgPCBv dXQtPm5Ob2RlczsgaSsrKQogCQkJb3V0LT5ub2RlTGFiZWxzW2ldID0gdGhlTGFiZWw7CiAJ fQpAQCAtNzE3LDEyICs3MTcsMTIgQEAgZG9QaWNrU3BsaXQoUmVsYXRpb24gaW5kZXgsIFNw R2lzdFN0YXRlICpzdGF0ZSwKIAkgKi8KIAltYXggPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVy KGN1cnJlbnQtPnBhZ2UpOwogCW4gPSBtYXggKyAxOwotCWluLmRhdHVtcyA9IChEYXR1bSAq KSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG4pOwotCXRvRGVsZXRlID0gKE9mZnNldE51bWJl ciAqKSBwYWxsb2Moc2l6ZW9mKE9mZnNldE51bWJlcikgKiBuKTsKLQl0b0luc2VydCA9IChP ZmZzZXROdW1iZXIgKikgcGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIpICogbik7Ci0Jb2xk TGVhZnMgPSAoU3BHaXN0TGVhZlR1cGxlICopIHBhbGxvYyhzaXplb2YoU3BHaXN0TGVhZlR1 cGxlKSAqIG4pOwotCW5ld0xlYWZzID0gKFNwR2lzdExlYWZUdXBsZSAqKSBwYWxsb2Moc2l6 ZW9mKFNwR2lzdExlYWZUdXBsZSkgKiBuKTsKLQlsZWFmUGFnZVNlbGVjdCA9ICh1aW50OCAq KSBwYWxsb2Moc2l6ZW9mKHVpbnQ4KSAqIG4pOworCWluLmRhdHVtcyA9IHBhbGxvY19hcnJh eShEYXR1bSwgbik7CisJdG9EZWxldGUgPSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBu KTsKKwl0b0luc2VydCA9IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIsIG4pOworCW9sZExl YWZzID0gcGFsbG9jX2FycmF5KFNwR2lzdExlYWZUdXBsZSwgbik7CisJbmV3TGVhZnMgPSBw YWxsb2NfYXJyYXkoU3BHaXN0TGVhZlR1cGxlLCBuKTsKKwlsZWFmUGFnZVNlbGVjdCA9IHBh bGxvY19hcnJheSh1aW50OCwgbik7CiAKIAlTVE9SRV9TVEFURShzdGF0ZSwgeGxyZWMuc3Rh dGVTcmMpOwogCkBAIC04NTgsNyArODU4LDcgQEAgZG9QaWNrU3BsaXQoUmVsYXRpb24gaW5k ZXgsIFNwR2lzdFN0YXRlICpzdGF0ZSwKIAkJb3V0Lmhhc1ByZWZpeCA9IGZhbHNlOwogCQlv dXQubk5vZGVzID0gMTsKIAkJb3V0Lm5vZGVMYWJlbHMgPSBOVUxMOwotCQlvdXQubWFwVHVw bGVzVG9Ob2RlcyA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiBpbi5uVHVwbGVzKTsKKwkJb3V0 Lm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2MwX2FycmF5KGludCwgaW4ublR1cGxlcyk7CiAK IAkJLyoKIAkJICogRm9ybSBuZXcgbGVhZiB0dXBsZXMgYW5kIGNvdW50IHVwIHRoZSB0b3Rh bCBzcGFjZSBuZWVkZWQuCkBAIC05MTQsOCArOTE0LDggQEAgZG9QaWNrU3BsaXQoUmVsYXRp b24gaW5kZXgsIFNwR2lzdFN0YXRlICpzdGF0ZSwKIAkgKiBvdXQubk5vZGVzIHdpdGggYSB2 YWx1ZSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHR1cGxlcyBvbiB0aGUgaW5wdXQKIAkg KiBwYWdlLCB3ZSBjYW4ndCBhbGxvY2F0ZSB0aGVzZSBhcnJheXMgYmVmb3JlIGhlcmUuCiAJ ICovCi0Jbm9kZXMgPSAoU3BHaXN0Tm9kZVR1cGxlICopIHBhbGxvYyhzaXplb2YoU3BHaXN0 Tm9kZVR1cGxlKSAqIG91dC5uTm9kZXMpOwotCWxlYWZTaXplcyA9IChpbnQgKikgcGFsbG9j MChzaXplb2YoaW50KSAqIG91dC5uTm9kZXMpOworCW5vZGVzID0gcGFsbG9jX2FycmF5KFNw R2lzdE5vZGVUdXBsZSwgb3V0Lm5Ob2Rlcyk7CisJbGVhZlNpemVzID0gcGFsbG9jMF9hcnJh eShpbnQsIG91dC5uTm9kZXMpOwogCiAJLyoKIAkgKiBGb3JtIG5vZGVzIG9mIGlubmVyIHR1 cGxlIGFuZCBpbm5lciB0dXBsZSBpdHNlbGYKQEAgLTEwNTQsNyArMTA1NCw3IEBAIGRvUGlj a1NwbGl0KFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJCSAqIGRvIHNv LCBldmVuIGlmIHRvdGFsTGVhZlNpemVzIGlzIGxlc3MgdGhhbiB0aGUgYXZhaWxhYmxlIHNw YWNlLAogCQkgKiBiZWNhdXNlIHdlIGNhbid0IHNwbGl0IGEgZ3JvdXAgYWNyb3NzIHBhZ2Vz LgogCQkgKi8KLQkJbm9kZVBhZ2VTZWxlY3QgPSAodWludDggKikgcGFsbG9jKHNpemVvZih1 aW50OCkgKiBvdXQubk5vZGVzKTsKKwkJbm9kZVBhZ2VTZWxlY3QgPSBwYWxsb2NfYXJyYXko dWludDgsIG91dC5uTm9kZXMpOwogCiAJCWN1cnNwYWNlID0gY3VycmVudEZyZWVTcGFjZTsK IAkJbmV3c3BhY2UgPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShuZXdM ZWFmQnVmZmVyKSk7CkBAIC0xNzQwLDggKzE3NDAsNyBAQCBzcGdTcGxpdE5vZGVBY3Rpb24o UmVsYXRpb24gaW5kZXgsIFNwR2lzdFN0YXRlICpzdGF0ZSwKIAkgKiBDb25zdHJ1Y3QgbmV3 IHByZWZpeCB0dXBsZSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2Ygbm9kZXMuICBXZSdsbCBm aWxsCiAJICogaW4gdGhlIGNoaWxkTm9kZU4ndGggbm9kZSdzIGRvd25saW5rIGJlbG93Lgog CSAqLwotCW5vZGVzID0gKFNwR2lzdE5vZGVUdXBsZSAqKSBwYWxsb2Moc2l6ZW9mKFNwR2lz dE5vZGVUdXBsZSkgKgotCQkJCQkJCQkJICAgb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVm aXhOTm9kZXMpOworCW5vZGVzID0gcGFsbG9jX2FycmF5KFNwR2lzdE5vZGVUdXBsZSwgb3V0 LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOTm9kZXMpOwogCiAJZm9yIChpID0gMDsgaSA8 IG91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tk5vZGVzOyBpKyspCiAJewpAQCAtMTc2 OSw3ICsxNzY4LDcgQEAgc3BnU3BsaXROb2RlQWN0aW9uKFJlbGF0aW9uIGluZGV4LCBTcEdp c3RTdGF0ZSAqc3RhdGUsCiAJICogc2FtZSBub2RlIGRhdHVtcywgYnV0IHdpdGggdGhlIHBy ZWZpeCBzcGVjaWZpZWQgYnkgdGhlIHBpY2tzcGxpdAogCSAqIGZ1bmN0aW9uLgogCSAqLwot CW5vZGVzID0gcGFsbG9jKHNpemVvZihTcEdpc3ROb2RlVHVwbGUpICogaW5uZXJUdXBsZS0+ bk5vZGVzKTsKKwlub2RlcyA9IHBhbGxvY19hcnJheShTcEdpc3ROb2RlVHVwbGUsIGlubmVy VHVwbGUtPm5Ob2Rlcyk7CiAJU0dJVElURVJBVEUoaW5uZXJUdXBsZSwgaSwgbm9kZSkKIAl7 CiAJCW5vZGVzW2ldID0gbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2Vy dC5jCmluZGV4IDZhNjFlMDkzZmEwLi5kZGE5OTc1NWY2NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ2luc2VydC5jCkBAIC0xNDAsNyArMTQwLDcgQEAgc3BnYnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJ CQkJICB0cnVlKTsKIAl9CiAKLQlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxs b2MwKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmpl Y3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2tkdHJlZXByb2MuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bna2R0cmVlcHJvYy5jCmluZGV4IGQ2OTg5 NzU5ZTVmLi5mMDE2N2Q2ZmZhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdrZHRyZWVwcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdrZHRyZWVwcm9jLmMKQEAgLTExNCw3ICsxMTQsNyBAQCBzcGdfa2RfcGlja3NwbGl0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJU29ydGVkUG9pbnQgKnNvcnRlZDsKIAlkb3VibGUJCWNvb3Jk OwogCi0Jc29ydGVkID0gcGFsbG9jKHNpemVvZigqc29ydGVkKSAqIGluLT5uVHVwbGVzKTsK Kwlzb3J0ZWQgPSBwYWxsb2NfYXJyYXkoU29ydGVkUG9pbnQsIGluLT5uVHVwbGVzKTsKIAlm b3IgKGkgPSAwOyBpIDwgaW4tPm5UdXBsZXM7IGkrKykKIAl7CiAJCXNvcnRlZFtpXS5wID0g RGF0dW1HZXRQb2ludFAoaW4tPmRhdHVtc1tpXSk7CkBAIC0xMzIsOCArMTMyLDggQEAgc3Bn X2tkX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCW91dC0+bk5vZGVzID0gMjsKIAlv dXQtPm5vZGVMYWJlbHMgPSBOVUxMOwkJLyogd2UgZG9uJ3QgbmVlZCBub2RlIGxhYmVscyAq LwogCi0Jb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jKHNpemVvZihpbnQpICogaW4t Pm5UdXBsZXMpOwotCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jKHNpemVvZihEYXR1 bSkgKiBpbi0+blR1cGxlcyk7CisJb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jX2Fy cmF5KGludCwgaW4tPm5UdXBsZXMpOworCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9j X2FycmF5KERhdHVtLCBpbi0+blR1cGxlcyk7CiAKIAkvKgogCSAqIE5vdGU6IHBvaW50cyB0 aGF0IGhhdmUgY29vcmRpbmF0ZXMgZXhhY3RseSBlcXVhbCB0byBjb29yZCBtYXkgZ2V0CkBA IC0yNTksNyArMjU5LDcgQEAgc3BnX2tkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05f QVJHUykKIAlpZiAoIXdoaWNoKQogCQlQR19SRVRVUk5fVk9JRCgpOwogCi0Jb3V0LT5ub2Rl TnVtYmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogMik7CisJb3V0LT5ub2Rl TnVtYmVycyA9IHBhbGxvY19hcnJheShpbnQsIDIpOwogCiAJLyoKIAkgKiBXaGVuIG9yZGVy aW5nIHNjYW4ga2V5cyBhcmUgc3BlY2lmaWVkLCB3ZSd2ZSB0byBjYWxjdWxhdGUgZGlzdGFu Y2UgZm9yCkBAIC0yNzMsOCArMjczLDggQEAgc3BnX2tkX2lubmVyX2NvbnNpc3RlbnQoUEdf RlVOQ1RJT05fQVJHUykKIAkJQk9YCQkJaW5mQXJlYTsKIAkJQk9YCQkgICAqYXJlYTsKIAot CQlvdXQtPmRpc3RhbmNlcyA9IChkb3VibGUgKiopIHBhbGxvYyhzaXplb2YoZG91YmxlICop ICogaW4tPm5Ob2Rlcyk7Ci0JCW91dC0+dHJhdmVyc2FsVmFsdWVzID0gKHZvaWQgKiopIHBh bGxvYyhzaXplb2Yodm9pZCAqKSAqIGluLT5uTm9kZXMpOworCQlvdXQtPmRpc3RhbmNlcyA9 IHBhbGxvY19hcnJheShkb3VibGUgKiwgaW4tPm5Ob2Rlcyk7CisJCW91dC0+dHJhdmVyc2Fs VmFsdWVzID0gcGFsbG9jX2FycmF5KHZvaWQgKiwgaW4tPm5Ob2Rlcyk7CiAKIAkJaWYgKGlu LT5sZXZlbCA9PSAwKQogCQl7CkBAIC0zMzUsNyArMzM1LDcgQEAgc3BnX2tkX2lubmVyX2Nv bnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkvKiBTZXQgdXAgbGV2ZWwgaW5j cmVtZW50cywgdG9vICovCi0Jb3V0LT5sZXZlbEFkZHMgPSAoaW50ICopIHBhbGxvYyhzaXpl b2YoaW50KSAqIDIpOworCW91dC0+bGV2ZWxBZGRzID0gcGFsbG9jX2FycmF5KGludCwgMik7 CiAJb3V0LT5sZXZlbEFkZHNbMF0gPSAxOwogCW91dC0+bGV2ZWxBZGRzWzFdID0gMTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdwcm9jLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Byb2MuYwppbmRleCA3MjJjMTdjZTJlNS4uZTE2 OWM2MGE0NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BncHJv Yy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BncHJvYy5jCkBAIC02NCw3 ICs2NCw3IEBAIHNwZ19rZXlfb3JkZXJieXNfZGlzdGFuY2VzKERhdHVtIGtleSwgYm9vbCBp c0xlYWYsCiAJCQkJCQkgICBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQogewog CWludAkJCXNrX251bTsKLQlkb3VibGUJICAgKmRpc3RhbmNlcyA9IChkb3VibGUgKikgcGFs bG9jKG5vcmRlcmJ5cyAqIHNpemVvZihkb3VibGUpKSwKKwlkb3VibGUJICAgKmRpc3RhbmNl cyA9IHBhbGxvY19hcnJheShkb3VibGUsIG5vcmRlcmJ5cyksCiAJCQkgICAqZGlzdGFuY2Ug PSBkaXN0YW5jZXM7CiAKIAlmb3IgKHNrX251bSA9IDA7IHNrX251bSA8IG5vcmRlcmJ5czsg Kytza19udW0sICsrb3JkZXJieXMsICsrZGlzdGFuY2UpCkBAIC04MSw3ICs4MSw3IEBAIHNw Z19rZXlfb3JkZXJieXNfZGlzdGFuY2VzKERhdHVtIGtleSwgYm9vbCBpc0xlYWYsCiBCT1gg KgogYm94X2NvcHkoQk9YICpvcmlnKQogewotCUJPWAkJICAgKnJlc3VsdCA9IHBhbGxvYyhz aXplb2YoQk9YKSk7CisJQk9YCQkgICAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChCT1gpOwog CiAJKnJlc3VsdCA9ICpvcmlnOwogCXJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3F1YWR0cmVlcHJvYy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGdxdWFkdHJlZXByb2MuYwppbmRleCAzZThjZmExNzA5YS4uNzVm ZmIwOWNhNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BncXVh ZHRyZWVwcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdxdWFkdHJl ZXByb2MuYwpAQCAtODIsNyArODIsNyBAQCBnZXRRdWFkcmFudChQb2ludCAqY2VudHJvaWQs IFBvaW50ICp0c3QpCiBzdGF0aWMgQk9YICoKIGdldFF1YWRyYW50QXJlYShCT1ggKmJib3gs IFBvaW50ICpjZW50cm9pZCwgaW50IHF1YWRyYW50KQogewotCUJPWAkJICAgKnJlc3VsdCA9 IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlCT1gJCSAgICpyZXN1bHQgPSBwYWxs b2Nfb2JqZWN0KEJPWCk7CiAKIAlzd2l0Y2ggKHF1YWRyYW50KQogCXsKQEAgLTE3NywxMSAr MTc3LDExIEBAIHNwZ19xdWFkX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCS8qIFVz ZSB0aGUgbWVkaWFuIHZhbHVlcyBvZiB4IGFuZCB5IGFzIHRoZSBjZW50cm9pZCBwb2ludCAq LwogCVBvaW50CSAgKipzb3J0ZWQ7CiAKLQlzb3J0ZWQgPSBwYWxsb2Moc2l6ZW9mKCpzb3J0 ZWQpICogaW4tPm5UdXBsZXMpOworCXNvcnRlZCA9IHBhbGxvY19hcnJheShQb2ludCAqLCBp bi0+blR1cGxlcyk7CiAJZm9yIChpID0gMDsgaSA8IGluLT5uVHVwbGVzOyBpKyspCiAJCXNv cnRlZFtpXSA9IERhdHVtR2V0UG9pbnRQKGluLT5kYXR1bXNbaV0pOwogCi0JY2VudHJvaWQg PSBwYWxsb2Moc2l6ZW9mKCpjZW50cm9pZCkpOworCWNlbnRyb2lkID0gcGFsbG9jX29iamVj dChQb2ludCk7CiAKIAlxc29ydChzb3J0ZWQsIGluLT5uVHVwbGVzLCBzaXplb2YoKnNvcnRl ZCksIHhfY21wKTsKIAljZW50cm9pZC0+eCA9IHNvcnRlZFtpbi0+blR1cGxlcyA+PiAxXS0+ eDsKQEAgLTE4OSw3ICsxODksNyBAQCBzcGdfcXVhZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05f QVJHUykKIAljZW50cm9pZC0+eSA9IHNvcnRlZFtpbi0+blR1cGxlcyA+PiAxXS0+eTsKICNl bHNlCiAJLyogVXNlIHRoZSBhdmVyYWdlIHZhbHVlcyBvZiB4IGFuZCB5IGFzIHRoZSBjZW50 cm9pZCBwb2ludCAqLwotCWNlbnRyb2lkID0gcGFsbG9jMChzaXplb2YoKmNlbnRyb2lkKSk7 CisJY2VudHJvaWQgPSBwYWxsb2MwX29iamVjdChQb2ludCk7CiAKIAlmb3IgKGkgPSAwOyBp IDwgaW4tPm5UdXBsZXM7IGkrKykKIAl7CkBAIC0yMDcsOCArMjA3LDggQEAgc3BnX3F1YWRf cGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJb3V0LT5uTm9kZXMgPSA0OwogCW91dC0+ bm9kZUxhYmVscyA9IE5VTEw7CQkvKiB3ZSBkb24ndCBuZWVkIG5vZGUgbGFiZWxzICovCiAK LQlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+blR1 cGxlcyk7Ci0Jb3V0LT5sZWFmVHVwbGVEYXR1bXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IGluLT5uVHVwbGVzKTsKKwlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2NfYXJyYXko aW50LCBpbi0+blR1cGxlcyk7CisJb3V0LT5sZWFmVHVwbGVEYXR1bXMgPSBwYWxsb2NfYXJy YXkoRGF0dW0sIGluLT5uVHVwbGVzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBpbi0+blR1cGxl czsgaSsrKQogCXsKQEAgLTI0Niw4ICsyNDYsOCBAQCBzcGdfcXVhZF9pbm5lcl9jb25zaXN0 ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJaWYgKGluLT5ub3JkZXJieXMgPiAwKQog CXsKLQkJb3V0LT5kaXN0YW5jZXMgPSAoZG91YmxlICoqKSBwYWxsb2Moc2l6ZW9mKGRvdWJs ZSAqKSAqIGluLT5uTm9kZXMpOwotCQlvdXQtPnRyYXZlcnNhbFZhbHVlcyA9ICh2b2lkICoq KSBwYWxsb2Moc2l6ZW9mKHZvaWQgKikgKiBpbi0+bk5vZGVzKTsKKwkJb3V0LT5kaXN0YW5j ZXMgPSBwYWxsb2NfYXJyYXkoZG91YmxlICosIGluLT5uTm9kZXMpOworCQlvdXQtPnRyYXZl cnNhbFZhbHVlcyA9IHBhbGxvY19hcnJheSh2b2lkICosIGluLT5uTm9kZXMpOwogCiAJCWlm IChpbi0+bGV2ZWwgPT0gMCkKIAkJewpAQCAtMjcwLDcgKzI3MCw3IEBAIHNwZ19xdWFkX2lu bmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCS8qIFJlcG9ydCB0aGF0 IGFsbCBub2RlcyBzaG91bGQgYmUgdmlzaXRlZCAqLwogCQlvdXQtPm5Ob2RlcyA9IGluLT5u Tm9kZXM7Ci0JCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50 KSAqIGluLT5uTm9kZXMpOworCQlvdXQtPm5vZGVOdW1iZXJzID0gcGFsbG9jX2FycmF5KGlu dCwgaW4tPm5Ob2Rlcyk7CiAJCWZvciAoaSA9IDA7IGkgPCBpbi0+bk5vZGVzOyBpKyspCiAJ CXsKIAkJCW91dC0+bm9kZU51bWJlcnNbaV0gPSBpOwpAQCAtMzY4LDEyICszNjgsMTIgQEAg c3BnX3F1YWRfaW5uZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJYnJlYWs7 CQkJCS8qIG5vIG5lZWQgdG8gY29uc2lkZXIgcmVtYWluaW5nIGNvbmRpdGlvbnMgKi8KIAl9 CiAKLQlvdXQtPmxldmVsQWRkcyA9IHBhbGxvYyhzaXplb2YoaW50KSAqIDQpOworCW91dC0+ bGV2ZWxBZGRzID0gcGFsbG9jX2FycmF5KGludCwgNCk7CiAJZm9yIChpID0gMDsgaSA8IDQ7 ICsraSkKIAkJb3V0LT5sZXZlbEFkZHNbaV0gPSAxOwogCiAJLyogV2UgbXVzdCBkZXNjZW5k IGludG8gdGhlIHF1YWRyYW50KHMpIGlkZW50aWZpZWQgYnkgd2hpY2ggKi8KLQlvdXQtPm5v ZGVOdW1iZXJzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiA0KTsKKwlvdXQtPm5v ZGVOdW1iZXJzID0gcGFsbG9jX2FycmF5KGludCwgNCk7CiAJb3V0LT5uTm9kZXMgPSAwOwog CiAJZm9yIChpID0gMTsgaSA8PSA0OyBpKyspCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3NjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn c2Nhbi5jCmluZGV4IDI1ODkzMDUwYzU4Li4wNWIzNzk5ZTBlMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGdzY2FuLmMKQEAgLTMwOSw5ICszMDksOSBAQCBzcGdiZWdpbnNjYW4o UmVsYXRpb24gcmVsLCBpbnQga2V5c3osIGludCBvcmRlcmJ5c3opCiAKIAlzY2FuID0gUmVs YXRpb25HZXRJbmRleFNjYW4ocmVsLCBrZXlzeiwgb3JkZXJieXN6KTsKIAotCXNvID0gKFNw R2lzdFNjYW5PcGFxdWUpIHBhbGxvYzAoc2l6ZW9mKFNwR2lzdFNjYW5PcGFxdWVEYXRhKSk7 CisJc28gPSBwYWxsb2MwX29iamVjdChTcEdpc3RTY2FuT3BhcXVlRGF0YSk7CiAJaWYgKGtl eXN6ID4gMCkKLQkJc28tPmtleURhdGEgPSAoU2NhbktleSkgcGFsbG9jKHNpemVvZihTY2Fu S2V5RGF0YSkgKiBrZXlzeik7CisJCXNvLT5rZXlEYXRhID0gcGFsbG9jX2FycmF5KFNjYW5L ZXlEYXRhLCBrZXlzeik7CiAJZWxzZQogCQlzby0+a2V5RGF0YSA9IE5VTEw7CiAJaW5pdFNw R2lzdFN0YXRlKCZzby0+c3RhdGUsIHNjYW4tPmluZGV4UmVsYXRpb24pOwpAQCAtMzM2LDE2 ICszMzYsMTIgQEAgc3BnYmVnaW5zY2FuKFJlbGF0aW9uIHJlbCwgaW50IGtleXN6LCBpbnQg b3JkZXJieXN6KQogCWlmIChzY2FuLT5udW1iZXJPZk9yZGVyQnlzID4gMCkKIAl7CiAJCS8q IFRoaXMgd2lsbCBiZSBmaWxsZWQgaW4gc3BncmVzY2FuLCBidXQgYWxsb2NhdGUgdGhlIHNw YWNlIGhlcmUgKi8KLQkJc28tPm9yZGVyQnlUeXBlcyA9IChPaWQgKikKLQkJCXBhbGxvYyhz aXplb2YoT2lkKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOwotCQlzby0+bm9uTnVsbE9y ZGVyQnlPZmZzZXRzID0gKGludCAqKQotCQkJcGFsbG9jKHNpemVvZihpbnQpICogc2Nhbi0+ bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNvLT5vcmRlckJ5VHlwZXMgPSBwYWxsb2NfYXJyYXko T2lkLCBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKKwkJc28tPm5vbk51bGxPcmRlckJ5T2Zm c2V0cyA9IHBhbGxvY19hcnJheShpbnQsIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOwogCiAJ CS8qIFRoZXNlIGFycmF5cyBoYXZlIGNvbnN0YW50IGNvbnRlbnRzLCBzbyB3ZSBjYW4gZmls bCB0aGVtIG5vdyAqLwotCQlzby0+emVyb0Rpc3RhbmNlcyA9IChkb3VibGUgKikKLQkJCXBh bGxvYyhzaXplb2YoZG91YmxlKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOwotCQlzby0+ aW5mRGlzdGFuY2VzID0gKGRvdWJsZSAqKQotCQkJcGFsbG9jKHNpemVvZihkb3VibGUpICog c2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNvLT56ZXJvRGlzdGFuY2VzID0gcGFsbG9j X2FycmF5KGRvdWJsZSwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNvLT5pbmZEaXN0 YW5jZXMgPSBwYWxsb2NfYXJyYXkoZG91YmxlLCBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsK IAogCQlmb3IgKGkgPSAwOyBpIDwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5czsgaSsrKQogCQl7 CkBAIC0zNTMsMTAgKzM0OSw4IEBAIHNwZ2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIGludCBr ZXlzeiwgaW50IG9yZGVyYnlzeikKIAkJCXNvLT5pbmZEaXN0YW5jZXNbaV0gPSBnZXRfZmxv YXQ4X2luZmluaXR5KCk7CiAJCX0KIAotCQlzY2FuLT54c19vcmRlcmJ5dmFscyA9IChEYXR1 bSAqKQotCQkJcGFsbG9jMChzaXplb2YoRGF0dW0pICogc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5 cyk7Ci0JCXNjYW4tPnhzX29yZGVyYnludWxscyA9IChib29sICopCi0JCQlwYWxsb2Moc2l6 ZW9mKGJvb2wpICogc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCXNjYW4tPnhzX29yZGVy Ynl2YWxzID0gcGFsbG9jMF9hcnJheShEYXR1bSwgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7 CisJCXNjYW4tPnhzX29yZGVyYnludWxscyA9IHBhbGxvY19hcnJheShib29sLCBzY2FuLT5u dW1iZXJPZk9yZGVyQnlzKTsKIAkJbWVtc2V0KHNjYW4tPnhzX29yZGVyYnludWxscywgdHJ1 ZSwKIAkJCSAgIHNpemVvZihib29sKSAqIHNjYW4tPm51bWJlck9mT3JkZXJCeXMpOwogCX0K QEAgLTY5MCw3ICs2ODQsNyBAQCBzcGdJbm5lclRlc3QoU3BHaXN0U2Nhbk9wYXF1ZSBzbywg U3BHaXN0U2VhcmNoSXRlbSAqaXRlbSwKIAl7CiAJCS8qIGZvcmNlIGFsbCBjaGlsZHJlbiB0 byBiZSB2aXNpdGVkICovCiAJCW91dC5uTm9kZXMgPSBuTm9kZXM7Ci0JCW91dC5ub2RlTnVt YmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogbk5vZGVzKTsKKwkJb3V0Lm5v ZGVOdW1iZXJzID0gcGFsbG9jX2FycmF5KGludCwgbk5vZGVzKTsKIAkJZm9yIChpID0gMDsg aSA8IG5Ob2RlczsgaSsrKQogCQkJb3V0Lm5vZGVOdW1iZXJzW2ldID0gaTsKIAl9CkBAIC03 MDMsNyArNjk3LDcgQEAgc3BnSW5uZXJUZXN0KFNwR2lzdFNjYW5PcGFxdWUgc28sIFNwR2lz dFNlYXJjaEl0ZW0gKml0ZW0sCiAJewogCQkvKiBjb2xsZWN0IG5vZGUgcG9pbnRlcnMgKi8K IAkJU3BHaXN0Tm9kZVR1cGxlIG5vZGU7Ci0JCVNwR2lzdE5vZGVUdXBsZSAqbm9kZXMgPSAo U3BHaXN0Tm9kZVR1cGxlICopIHBhbGxvYyhzaXplb2YoU3BHaXN0Tm9kZVR1cGxlKSAqIG5O b2Rlcyk7CisJCVNwR2lzdE5vZGVUdXBsZSAqbm9kZXMgPSBwYWxsb2NfYXJyYXkoU3BHaXN0 Tm9kZVR1cGxlLCBuTm9kZXMpOwogCiAJCVNHSVRJVEVSQVRFKGlubmVyVHVwbGUsIGksIG5v ZGUpCiAJCXsKQEAgLTk3Miw4ICs5NjYsNyBAQCBzdG9yZUdldHR1cGxlKFNwR2lzdFNjYW5P cGFxdWUgc28sIEl0ZW1Qb2ludGVyIGhlYXBQdHIsCiAJCQlzby0+ZGlzdGFuY2VzW3NvLT5u UHRyc10gPSBOVUxMOwogCQllbHNlCiAJCXsKLQkJCUluZGV4T3JkZXJCeURpc3RhbmNlICpk aXN0YW5jZXMgPQotCQkJCXBhbGxvYyhzaXplb2YoZGlzdGFuY2VzWzBdKSAqIHNvLT5udW1i ZXJPZk9yZGVyQnlzKTsKKwkJCUluZGV4T3JkZXJCeURpc3RhbmNlICpkaXN0YW5jZXMgPSBw YWxsb2NfYXJyYXkoSW5kZXhPcmRlckJ5RGlzdGFuY2UsIHNvLT5udW1iZXJPZk9yZGVyQnlz KTsKIAkJCWludAkJCWk7CiAKIAkJCWZvciAoaSA9IDA7IGkgPCBzby0+bnVtYmVyT2ZPcmRl ckJ5czsgaSsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd0 ZXh0cHJvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd0ZXh0cHJvYy5jCmlu ZGV4IDkxZjRhYjI2MGMyLi4wOWJlN2ZmZTQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd0ZXh0cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndGV4dHByb2MuYwpAQCAtMjMwLDggKzIzMCw3IEBAIHNwZ190ZXh0X2Nob29z ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCQlmb3JtVGV4dERhdHVtKHByZWZpeFN0ciwgY29t bW9uTGVuKTsKIAkJCX0KIAkJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tk5vZGVz ID0gMTsKLQkJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVscyA9Ci0J CQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pKTsKKwkJCW91dC0+cmVzdWx0LnNw bGl0VHVwbGUucHJlZml4Tm9kZUxhYmVscyA9IHBhbGxvY19vYmplY3QoRGF0dW0pOwogCQkJ b3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOb2RlTGFiZWxzWzBdID0KIAkJCQlJbnQx NkdldERhdHVtKCoodW5zaWduZWQgY2hhciAqKSAocHJlZml4U3RyICsgY29tbW9uTGVuKSk7 CiAKQEAgLTMwMyw3ICszMDIsNyBAQCBzcGdfdGV4dF9jaG9vc2UoUEdfRlVOQ1RJT05fQVJH UykKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhIYXNQcmVmaXggPSBpbi0+aGFz UHJlZml4OwogCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeFByZWZpeERhdHVtID0g aW4tPnByZWZpeERhdHVtOwogCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5Ob2Rl cyA9IDE7Ci0JCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVscyA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7CisJCW91dC0+cmVzdWx0LnNwbGl0VHVw bGUucHJlZml4Tm9kZUxhYmVscyA9IHBhbGxvY19vYmplY3QoRGF0dW0pOwogCQlvdXQtPnJl c3VsdC5zcGxpdFR1cGxlLnByZWZpeE5vZGVMYWJlbHNbMF0gPSBJbnQxNkdldERhdHVtKC0y KTsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5jaGlsZE5vZGVOID0gMDsKIAkJb3V0LT5y ZXN1bHQuc3BsaXRUdXBsZS5wb3N0Zml4SGFzUHJlZml4ID0gZmFsc2U7CkBAIC0zNzEsNyAr MzcwLDcgQEAgc3BnX3RleHRfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJ LyogRXh0cmFjdCB0aGUgbm9kZSBsYWJlbCAoZmlyc3Qgbm9uLWNvbW1vbiBieXRlKSBmcm9t IGVhY2ggdmFsdWUgKi8KLQlub2RlcyA9IChzcGdOb2RlUHRyICopIHBhbGxvYyhzaXplb2Yo c3BnTm9kZVB0cikgKiBpbi0+blR1cGxlcyk7CisJbm9kZXMgPSBwYWxsb2NfYXJyYXkoc3Bn Tm9kZVB0ciwgaW4tPm5UdXBsZXMpOwogCiAJZm9yIChpID0gMDsgaSA8IGluLT5uVHVwbGVz OyBpKyspCiAJewpAQCAtMzk0LDkgKzM5Myw5IEBAIHNwZ190ZXh0X3BpY2tzcGxpdChQR19G VU5DVElPTl9BUkdTKQogCiAJLyogQW5kIGVtaXQgcmVzdWx0cyAqLwogCW91dC0+bk5vZGVz ID0gMDsKLQlvdXQtPm5vZGVMYWJlbHMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1 bSkgKiBpbi0+blR1cGxlcyk7Ci0Jb3V0LT5tYXBUdXBsZXNUb05vZGVzID0gKGludCAqKSBw YWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+blR1cGxlcyk7Ci0Jb3V0LT5sZWFmVHVwbGVEYXR1 bXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbi0+blR1cGxlcyk7CisJ b3V0LT5ub2RlTGFiZWxzID0gcGFsbG9jX2FycmF5KERhdHVtLCBpbi0+blR1cGxlcyk7CisJ b3V0LT5tYXBUdXBsZXNUb05vZGVzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5UdXBsZXMp OworCW91dC0+bGVhZlR1cGxlRGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBpbi0+blR1 cGxlcyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW4tPm5UdXBsZXM7IGkrKykKIAl7CkBAIC00 NzYsOSArNDc1LDkgQEAgc3BnX3RleHRfaW5uZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9B UkdTKQogCSAqIGFuZCBzZWUgaWYgaXQncyBjb25zaXN0ZW50IHdpdGggdGhlIHF1ZXJ5LiAg SWYgc28sIGVtaXQgYW4gZW50cnkgaW50bwogCSAqIHRoZSBvdXRwdXQgYXJyYXlzLgogCSAq LwotCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIGlu LT5uTm9kZXMpOwotCW91dC0+bGV2ZWxBZGRzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGlu dCkgKiBpbi0+bk5vZGVzKTsKLQlvdXQtPnJlY29uc3RydWN0ZWRWYWx1ZXMgPSAoRGF0dW0g KikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbi0+bk5vZGVzKTsKKwlvdXQtPm5vZGVOdW1i ZXJzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CisJb3V0LT5sZXZlbEFkZHMg PSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+bk5vZGVzKTsKKwlvdXQtPnJlY29uc3RydWN0ZWRW YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5uTm9kZXMpOwogCW91dC0+bk5vZGVz ID0gMDsKIAogCWZvciAoaSA9IDA7IGkgPCBpbi0+bk5vZGVzOyBpKyspCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKaW5kZXggODdjMzFkYTcxYTUuLmE2MGVjODVlOGJl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCkBAIC0xMTc3LDcgKzEx NzcsNyBAQCBzcGdFeHRyYWN0Tm9kZUxhYmVscyhTcEdpc3RTdGF0ZSAqc3RhdGUsIFNwR2lz dElubmVyVHVwbGUgaW5uZXJUdXBsZSkKIAl9CiAJZWxzZQogCXsKLQkJbm9kZUxhYmVscyA9 IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGlubmVyVHVwbGUtPm5Ob2Rlcyk7 CisJCW5vZGVMYWJlbHMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGlubmVyVHVwbGUtPm5Ob2Rl cyk7CiAJCVNHSVRJVEVSQVRFKGlubmVyVHVwbGUsIGksIG5vZGUpCiAJCXsKIAkJCWlmIChJ bmRleFR1cGxlSGFzTnVsbHMobm9kZSkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYwppbmRleCA3MWVmMmU1MDM2Zi4uY2I1NjcxYzFhNGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNzYsNyArNzYsNyBAQCBzcGdBZGRQZW5k aW5nVElEKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg KnRpZCkKIAkJbGlzdExpbmsgPSAmcGl0ZW0tPm5leHQ7CiAJfQogCS8qIG5vdCB0aGVyZSwg c28gYXBwZW5kIG5ldyBlbnRyeSAqLwotCXBpdGVtID0gKHNwZ1ZhY1BlbmRpbmdJdGVtICop IHBhbGxvYyhzaXplb2Yoc3BnVmFjUGVuZGluZ0l0ZW0pKTsKKwlwaXRlbSA9IHBhbGxvY19v YmplY3Qoc3BnVmFjUGVuZGluZ0l0ZW0pOwogCXBpdGVtLT50aWQgPSAqdGlkOwogCXBpdGVt LT5kb25lID0gZmFsc2U7CiAJcGl0ZW0tPm5leHQgPSBOVUxMOwpAQCAtOTU0LDcgKzk1NCw3 IEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxl dGVSZXN1bHQgKnN0YXRzLAogCiAJLyogYWxsb2NhdGUgc3RhdHMgaWYgZmlyc3QgdGltZSB0 aHJvdWdoLCBlbHNlIHJlLXVzZSBleGlzdGluZyBzdHJ1Y3QgKi8KIAlpZiAoc3RhdHMgPT0g TlVMTCkKLQkJc3RhdHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6 ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0 KEluZGV4QnVsa0RlbGV0ZVJlc3VsdCk7CiAJYmRzLmluZm8gPSBpbmZvOwogCWJkcy5zdGF0 cyA9IHN0YXRzOwogCWJkcy5jYWxsYmFjayA9IGNhbGxiYWNrOwpAQCAtOTk0LDcgKzk5NCw3 IEBAIHNwZ3ZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKnN0YXRzKQogCSAqLwogCWlmIChzdGF0cyA9PSBOVUxMKQogCXsKLQkJ c3RhdHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCkpOworCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVs a0RlbGV0ZVJlc3VsdCk7CiAJCWJkcy5pbmZvID0gaW5mbzsKIAkJYmRzLnN0YXRzID0gc3Rh dHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiNzExMDMwMmI5OC4uZjYzNWJlMDY5OGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC05MDEsNyArOTAxLDcgQEAgc3Bn UmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJaW50CQkJ bWF4ID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKIAkJCU9mZnNldE51bWJlciAq dG9EZWxldGU7CiAKLQkJCXRvRGVsZXRlID0gcGFsbG9jKHNpemVvZihPZmZzZXROdW1iZXIp ICogbWF4KTsKKwkJCXRvRGVsZXRlID0gcGFsbG9jX2FycmF5KE9mZnNldE51bWJlciwgbWF4 KTsKIAogCQkJZm9yIChpID0geGxkYXRhLT5maXJzdFBsYWNlaG9sZGVyOyBpIDw9IG1heDsg aSsrKQogCQkJCXRvRGVsZXRlW2kgLSB4bGRhdGEtPmZpcnN0UGxhY2Vob2xkZXJdID0gaTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJub3VsbGku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJub3VsbGkuYwppbmRleCA1 ZTFjNWQyYjcyMy4uY2NlNjAzZDFiN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZXNhbXBsZS9iZXJub3VsbGkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGVzYW1wbGUvYmVybm91bGxpLmMKQEAgLTEyNiw3ICsxMjYsNyBAQCBiZXJub3VsbGlfc2Ft cGxlc2NhbmdldHNhbXBsZXNpemUoUGxhbm5lckluZm8gKnJvb3QsCiBzdGF0aWMgdm9pZAog YmVybm91bGxpX2luaXRzYW1wbGVzY2FuKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSwgaW50IGVm bGFncykKIHsKLQlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwKHNpemVvZihCZXJub3VsbGlT YW1wbGVyRGF0YSkpOworCW5vZGUtPnRzbV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEJlcm5v dWxsaVNhbXBsZXJEYXRhKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNh bXBsZS9zeXN0ZW0uYwppbmRleCA4ZGI4MTNiODlmYy4uYzY3NDBkYmRkMWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMKQEAgLTEyOSw3ICsxMjksNyBA QCBzeXN0ZW1fc2FtcGxlc2NhbmdldHNhbXBsZXNpemUoUGxhbm5lckluZm8gKnJvb3QsCiBz dGF0aWMgdm9pZAogc3lzdGVtX2luaXRzYW1wbGVzY2FuKFNhbXBsZVNjYW5TdGF0ZSAqbm9k ZSwgaW50IGVmbGFncykKIHsKLQlub2RlLT50c21fc3RhdGUgPSBwYWxsb2MwKHNpemVvZihT eXN0ZW1TYW1wbGVyRGF0YSkpOworCW5vZGUtPnRzbV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0 KFN5c3RlbVNhbXBsZXJEYXRhKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggOWQ1ZjEzMGFmN2UuLjlkNTZlODg2ZTI4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtNTQ5LDggKzU0OSw3IEBA IE11bHRpWGFjdElkRXhwYW5kKE11bHRpWGFjdElkIG11bHRpLCBUcmFuc2FjdGlvbklkIHhp ZCwgTXVsdGlYYWN0U3RhdHVzIHN0YXR1cykKIAkgKiBOb3RlIHdlIGhhdmUgdGhlIHNhbWUg cmFjZSBjb25kaXRpb24gaGVyZSBhcyBhYm92ZTogaiBjb3VsZCBiZSAwIGF0IHRoZQogCSAq IGVuZCBvZiB0aGUgbG9vcC4KIAkgKi8KLQluZXdNZW1iZXJzID0gKE11bHRpWGFjdE1lbWJl ciAqKQotCQlwYWxsb2Moc2l6ZW9mKE11bHRpWGFjdE1lbWJlcikgKiAobm1lbWJlcnMgKyAx KSk7CisJbmV3TWVtYmVycyA9IHBhbGxvY19hcnJheShNdWx0aVhhY3RNZW1iZXIsIG5tZW1i ZXJzICsgMSk7IAogCiAJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBubWVtYmVyczsgaSsrKQog CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDk0ZGIxZWMz MDEyLi44NDI4MTAzZWJhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jCkBAIC0xODYsNyArMTg2LDcgQEAgQ3JlYXRlUGFyYWxsZWxDb250ZXh0KGNvbnN0IGNo YXIgKmxpYnJhcnlfbmFtZSwgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAK IAkvKiBJbml0aWFsaXplIGEgbmV3IFBhcmFsbGVsQ29udGV4dC4gKi8KLQlwY3h0ID0gcGFs bG9jMChzaXplb2YoUGFyYWxsZWxDb250ZXh0KSk7CisJcGN4dCA9IHBhbGxvYzBfb2JqZWN0 KFBhcmFsbGVsQ29udGV4dCk7CiAJcGN4dC0+c3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNh Y3Rpb25JZCgpOwogCXBjeHQtPm53b3JrZXJzID0gbndvcmtlcnM7CiAJcGN4dC0+bndvcmtl cnNfdG9fbGF1bmNoID0gbndvcmtlcnM7CkBAIC00NTMsNyArNDUzLDcgQEAgSW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJICAgY2xpZW50Y29u bmluZm9zcGFjZSk7CiAKIAkJLyogQWxsb2NhdGUgc3BhY2UgZm9yIHdvcmtlciBpbmZvcm1h dGlvbi4gKi8KLQkJcGN4dC0+d29ya2VyID0gcGFsbG9jMChzaXplb2YoUGFyYWxsZWxXb3Jr ZXJJbmZvKSAqIHBjeHQtPm53b3JrZXJzKTsKKwkJcGN4dC0+d29ya2VyID0gcGFsbG9jMF9h cnJheShQYXJhbGxlbFdvcmtlckluZm8sIHBjeHQtPm53b3JrZXJzKTsKIAogCQkvKgogCQkg KiBFc3RhYmxpc2ggZXJyb3IgcXVldWVzIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeS4KQEAg LTY0OCw4ICs2NDgsNyBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0 ICpwY3h0KQogCSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCiAJewot CQlwY3h0LT5rbm93bl9hdHRhY2hlZF93b3JrZXJzID0KLQkJCXBhbGxvYzAoc2l6ZW9mKGJv b2wpICogcGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOworCQlwY3h0LT5rbm93bl9hdHRhY2hl ZF93b3JrZXJzID0gcGFsbG9jMF9hcnJheShib29sLCBwY3h0LT5ud29ya2Vyc19sYXVuY2hl ZCk7CiAJCXBjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzID0gMDsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGluZS5jCmluZGV4IGVjM2UzMjNlYzBjLi5iOGFm MjVlODJkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdGltZWxp bmUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGluZS5jCkBAIC04 Nyw3ICs4Nyw3IEBAIHJlYWRUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCB0YXJnZXRUTEkp CiAJLyogVGltZWxpbmUgMSBkb2VzIG5vdCBoYXZlIGEgaGlzdG9yeSBmaWxlLCBzbyBubyBu ZWVkIHRvIGNoZWNrICovCiAJaWYgKHRhcmdldFRMSSA9PSAxKQogCXsKLQkJZW50cnkgPSAo VGltZUxpbmVIaXN0b3J5RW50cnkgKikgcGFsbG9jKHNpemVvZihUaW1lTGluZUhpc3RvcnlF bnRyeSkpOworCQllbnRyeSA9IHBhbGxvY19vYmplY3QoVGltZUxpbmVIaXN0b3J5RW50cnkp OwogCQllbnRyeS0+dGxpID0gdGFyZ2V0VExJOwogCQllbnRyeS0+YmVnaW4gPSBlbnRyeS0+ ZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJCXJldHVybiBsaXN0X21ha2UxKGVudHJ5KTsK QEAgLTExMCw3ICsxMTAsNyBAQCByZWFkVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQgdGFy Z2V0VExJKQogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKIAkJLyogTm90 IHRoZXJlLCBzbyBhc3N1bWUgbm8gcGFyZW50cyAqLwotCQllbnRyeSA9IChUaW1lTGluZUhp c3RvcnlFbnRyeSAqKSBwYWxsb2Moc2l6ZW9mKFRpbWVMaW5lSGlzdG9yeUVudHJ5KSk7CisJ CWVudHJ5ID0gcGFsbG9jX29iamVjdChUaW1lTGluZUhpc3RvcnlFbnRyeSk7CiAJCWVudHJ5 LT50bGkgPSB0YXJnZXRUTEk7CiAJCWVudHJ5LT5iZWdpbiA9IGVudHJ5LT5lbmQgPSBJbnZh bGlkWExvZ1JlY1B0cjsKIAkJcmV0dXJuIGxpc3RfbWFrZTEoZW50cnkpOwpAQCAtMTc1LDcg KzE3NSw3IEBAIHJlYWRUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCB0YXJnZXRUTEkpCiAK IAkJbGFzdHRsaSA9IHRsaTsKIAotCQllbnRyeSA9IChUaW1lTGluZUhpc3RvcnlFbnRyeSAq KSBwYWxsb2Moc2l6ZW9mKFRpbWVMaW5lSGlzdG9yeUVudHJ5KSk7CisJCWVudHJ5ID0gcGFs bG9jX29iamVjdChUaW1lTGluZUhpc3RvcnlFbnRyeSk7CiAJCWVudHJ5LT50bGkgPSB0bGk7 CiAJCWVudHJ5LT5iZWdpbiA9IHByZXZlbmQ7CiAJCWVudHJ5LT5lbmQgPSAoKHVpbnQ2NCkg KHN3aXRjaHBvaW50X2hpKSkgPDwgMzIgfCAodWludDY0KSBzd2l0Y2hwb2ludF9sbzsKQEAg LTE5OCw3ICsxOTgsNyBAQCByZWFkVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQgdGFyZ2V0 VExJKQogCSAqIENyZWF0ZSBvbmUgbW9yZSBlbnRyeSBmb3IgdGhlICJ0aXAiIG9mIHRoZSB0 aW1lbGluZSwgd2hpY2ggaGFzIG5vIGVudHJ5CiAJICogaW4gdGhlIGhpc3RvcnkgZmlsZS4K IAkgKi8KLQllbnRyeSA9IChUaW1lTGluZUhpc3RvcnlFbnRyeSAqKSBwYWxsb2Moc2l6ZW9m KFRpbWVMaW5lSGlzdG9yeUVudHJ5KSk7CisJZW50cnkgPSBwYWxsb2Nfb2JqZWN0KFRpbWVM aW5lSGlzdG9yeUVudHJ5KTsKIAllbnRyeS0+dGxpID0gdGFyZ2V0VExJOwogCWVudHJ5LT5i ZWdpbiA9IHByZXZlbmQ7CiAJZW50cnktPmVuZCA9IEludmFsaWRYTG9nUmVjUHRyOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggZGEyODJiNzFiNDEuLmVj NGUzNjI4YmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29w aGFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKQEAg LTY4NCw3ICs2ODQsNyBAQCBHZXRQcmVwYXJlZFRyYW5zYWN0aW9uTGlzdChHbG9iYWxUcmFu c2FjdGlvbiAqZ3hhY3RzKQogCX0KIAogCW51bSA9IFR3b1BoYXNlU3RhdGUtPm51bVByZXBY YWN0czsKLQlhcnJheSA9IChHbG9iYWxUcmFuc2FjdGlvbikgcGFsbG9jKHNpemVvZihHbG9i YWxUcmFuc2FjdGlvbkRhdGEpICogbnVtKTsKKwlhcnJheSA9IHBhbGxvY19hcnJheShHbG9i YWxUcmFuc2FjdGlvbkRhdGEsIG51bSk7CiAJKmd4YWN0cyA9IGFycmF5OwogCWZvciAoaSA9 IDA7IGkgPCBudW07IGkrKykKIAkJbWVtY3B5KGFycmF5ICsgaSwgVHdvUGhhc2VTdGF0ZS0+ cHJlcFhhY3RzW2ldLApAQCAtNzUwLDcgKzc1MCw3IEBAIHBnX3ByZXBhcmVkX3hhY3QoUEdf RlVOQ1RJT05fQVJHUykKIAkJICogQ29sbGVjdCBhbGwgdGhlIDJQQyBzdGF0dXMgaW5mb3Jt YXRpb24gdGhhdCB3ZSB3aWxsIGZvcm1hdCBhbmQgc2VuZAogCQkgKiBvdXQgYXMgYSByZXN1 bHQgc2V0LgogCQkgKi8KLQkJc3RhdHVzID0gKFdvcmtpbmdfU3RhdGUgKikgcGFsbG9jKHNp emVvZihXb3JraW5nX1N0YXRlKSk7CisJCXN0YXR1cyA9IHBhbGxvY19vYmplY3QoV29ya2lu Z19TdGF0ZSk7CiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHN0YXR1czsKIAogCQlzdGF0dXMt Pm5neGFjdHMgPSBHZXRQcmVwYXJlZFRyYW5zYWN0aW9uTGlzdCgmc3RhdHVzLT5hcnJheSk7 CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBzYXZlX3N0YXRlX2RhdGEoY29uc3Qgdm9pZCAqZGF0 YSwgdWludDMyIGxlbikKIAogCWlmIChwYWRsZW4gPiByZWNvcmRzLmJ5dGVzX2ZyZWUpCiAJ ewotCQlyZWNvcmRzLnRhaWwtPm5leHQgPSBwYWxsb2MwKHNpemVvZihTdGF0ZUZpbGVDaHVu aykpOworCQlyZWNvcmRzLnRhaWwtPm5leHQgPSBwYWxsb2MwX29iamVjdChTdGF0ZUZpbGVD aHVuayk7CiAJCXJlY29yZHMudGFpbCA9IHJlY29yZHMudGFpbC0+bmV4dDsKIAkJcmVjb3Jk cy50YWlsLT5sZW4gPSAwOwogCQlyZWNvcmRzLnRhaWwtPm5leHQgPSBOVUxMOwpAQCAtMTA2 Miw3ICsxMDYyLDcgQEAgU3RhcnRQcmVwYXJlKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0KQog CVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmludmFsbXNnczsKIAogCS8qIEluaXRpYWxp emUgbGlua2VkIGxpc3QgKi8KLQlyZWNvcmRzLmhlYWQgPSBwYWxsb2MwKHNpemVvZihTdGF0 ZUZpbGVDaHVuaykpOworCXJlY29yZHMuaGVhZCA9IHBhbGxvYzBfb2JqZWN0KFN0YXRlRmls ZUNodW5rKTsKIAlyZWNvcmRzLmhlYWQtPmxlbiA9IDA7CiAJcmVjb3Jkcy5oZWFkLT5uZXh0 ID0gTlVMTDsKIApAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgWGxvZ1JlYWRUd29QaGFzZURhdGEo WExvZ1JlY1B0ciBsc24sIGNoYXIgKipidWYsIGludCAqbGVuKQogCWlmIChsZW4gIT0gTlVM TCkKIAkJKmxlbiA9IFhMb2dSZWNHZXREYXRhTGVuKHhsb2dyZWFkZXIpOwogCi0JKmJ1ZiA9 IHBhbGxvYyhzaXplb2YoY2hhcikgKiBYTG9nUmVjR2V0RGF0YUxlbih4bG9ncmVhZGVyKSk7 CisJKmJ1ZiA9IHBhbGxvY19hcnJheShjaGFyLCBYTG9nUmVjR2V0RGF0YUxlbih4bG9ncmVh ZGVyKSk7CiAJbWVtY3B5KCpidWYsIFhMb2dSZWNHZXREYXRhKHhsb2dyZWFkZXIpLCBzaXpl b2YoY2hhcikgKiBYTG9nUmVjR2V0RGF0YUxlbih4bG9ncmVhZGVyKSk7CiAKIAlYTG9nUmVh ZGVyRnJlZSh4bG9ncmVhZGVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRl eCAwOTJlMTk3ZWJhMy4uMDI1ZGQwYmU1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKQEAgLTY2NCw3ICs2NjQsNyBAQCBBc3NpZ25UcmFuc2FjdGlvbklkKFRyYW5zYWN0 aW9uU3RhdGUgcykKIAkJVHJhbnNhY3Rpb25TdGF0ZSAqcGFyZW50czsKIAkJc2l6ZV90CQlw YXJlbnRPZmZzZXQgPSAwOwogCi0JCXBhcmVudHMgPSBwYWxsb2Moc2l6ZW9mKFRyYW5zYWN0 aW9uU3RhdGUpICogcy0+bmVzdGluZ0xldmVsKTsKKwkJcGFyZW50cyA9IHBhbGxvY19hcnJh eShUcmFuc2FjdGlvblN0YXRlLCBzLT5uZXN0aW5nTGV2ZWwpOwogCQl3aGlsZSAocCAhPSBO VUxMICYmICFGdWxsVHJhbnNhY3Rpb25JZElzVmFsaWQocC0+ZnVsbFRyYW5zYWN0aW9uSWQp KQogCQl7CiAJCQlwYXJlbnRzW3BhcmVudE9mZnNldCsrXSA9IHA7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKaW5kZXggMjJkMGEyZThjM2EuLmU4MWY0M2Y1MjU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC00OTAyLDcgKzQ5MDIsNyBAQCB2b2lkCiBM b2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KQogewogCUFzc2VydChyZXNldCB8 fCBDb250cm9sRmlsZSA9PSBOVUxMKTsKLQlDb250cm9sRmlsZSA9IHBhbGxvYyhzaXplb2Yo Q29udHJvbEZpbGVEYXRhKSk7CisJQ29udHJvbEZpbGUgPSBwYWxsb2Nfb2JqZWN0KENvbnRy b2xGaWxlRGF0YSk7CiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKQEAgLTkxMzUsNyArOTEz NSw3IEBAIGRvX3BnX2JhY2t1cF9zdGFydChjb25zdCBjaGFyICpiYWNrdXBpZHN0ciwgYm9v bCBmYXN0LCBMaXN0ICoqdGFibGVzcGFjZXMsCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJ CXRpID0gcGFsbG9jKHNpemVvZih0YWJsZXNwYWNlaW5mbykpOworCQkJdGkgPSBwYWxsb2Nf b2JqZWN0KHRhYmxlc3BhY2VpbmZvKTsKIAkJCXRpLT5vaWQgPSB0c29pZDsKIAkJCXRpLT5w YXRoID0gcHN0cmR1cChsaW5rcGF0aCk7CiAJCQl0aS0+cnBhdGggPSByZWxwYXRoOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwppbmRleCBhNTAzNDVmOWJmNy4u MzM5Y2I3NWMzYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5j CkBAIC05MCw3ICs5MCw3IEBAIHBnX2JhY2t1cF9zdGFydChQR19GVU5DVElPTl9BUkdTKQog CX0KIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYmFja3VwY29udGV4 dCk7Ci0JYmFja3VwX3N0YXRlID0gKEJhY2t1cFN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEJh Y2t1cFN0YXRlKSk7CisJYmFja3VwX3N0YXRlID0gcGFsbG9jMF9vYmplY3QoQmFja3VwU3Rh dGUpOwogCXRhYmxlc3BhY2VfbWFwID0gbWFrZVN0cmluZ0luZm8oKTsKIAlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncHJlZmV0Y2hlci5jCmluZGV4IGVkM2FhY2FiYzk4Li5jY2MyOTE5MmM1YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jCkBA IC0zNjQsNyArMzY0LDcgQEAgWExvZ1ByZWZldGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3Rh dGUgKnJlYWRlcikKIAlYTG9nUHJlZmV0Y2hlciAqcHJlZmV0Y2hlcjsKIAlIQVNIQ1RMCQlj dGw7CiAKLQlwcmVmZXRjaGVyID0gcGFsbG9jMChzaXplb2YoWExvZ1ByZWZldGNoZXIpKTsK KwlwcmVmZXRjaGVyID0gcGFsbG9jMF9vYmplY3QoWExvZ1ByZWZldGNoZXIpOwogCXByZWZl dGNoZXItPnJlYWRlciA9IHJlYWRlcjsKIAogCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZp bGVMb2NhdG9yKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKaW5kZXggMjFiOGYxNzliYTAuLjJlMDNiYzFjZGYyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNTU5LDcgKzU1OSw3IEBAIEluaXRX YWxSZWNvdmVyeShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29sICp3YXNTaHV0 ZG93bl9wdHIsCiAJICogU2V0IHRoZSBXQUwgcmVhZGluZyBwcm9jZXNzb3Igbm93LCBhcyBp dCB3aWxsIGJlIG5lZWRlZCB3aGVuIHJlYWRpbmcKIAkgKiB0aGUgY2hlY2twb2ludCByZWNv cmQgcmVxdWlyZWQgKGJhY2t1cF9sYWJlbCBvciBub3QpLgogCSAqLwotCXByaXZhdGUgPSBw YWxsb2MwKHNpemVvZihYTG9nUGFnZVJlYWRQcml2YXRlKSk7CisJcHJpdmF0ZSA9IHBhbGxv YzBfb2JqZWN0KFhMb2dQYWdlUmVhZFByaXZhdGUpOwogCXhsb2dyZWFkZXIgPQogCQlYTG9n UmVhZGVyQWxsb2NhdGUod2FsX3NlZ21lbnRfc2l6ZSwgTlVMTCwKIAkJCQkJCSAgIFhMX1JP VVRJTkUoLnBhZ2VfcmVhZCA9ICZYTG9nUGFnZVJlYWQsCkBAIC0xNDE2LDcgKzE0MTYsNyBA QCByZWFkX3RhYmxlc3BhY2VfbWFwKExpc3QgKip0YWJsZXNwYWNlcykKIAkJCQkJCSBlcnJt c2coImludmFsaWQgZGF0YSBpbiBmaWxlIFwiJXNcIiIsIFRBQkxFU1BBQ0VfTUFQKSkpOwog CQkJc3RyW24rK10gPSAnXDAnOwogCi0JCQl0aSA9IHBhbGxvYzAoc2l6ZW9mKHRhYmxlc3Bh Y2VpbmZvKSk7CisJCQl0aSA9IHBhbGxvYzBfb2JqZWN0KHRhYmxlc3BhY2VpbmZvKTsKIAkJ CWVycm5vID0gMDsKIAkJCXRpLT5vaWQgPSBzdHJ0b3VsKHN0ciwgJmVuZHAsIDEwKTsKIAkJ CWlmICgqZW5kcCAhPSAnXDAnIHx8IGVycm5vID09IEVJTlZBTCB8fCBlcnJubyA9PSBFUkFO R0UpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCByZWFkX3RhYmxlc3BhY2VfbWFwKExpc3QgKip0 YWJsZXNwYWNlcykKIEVuZE9mV2FsUmVjb3ZlcnlJbmZvICoKIEZpbmlzaFdhbFJlY292ZXJ5 KHZvaWQpCiB7Ci0JRW5kT2ZXYWxSZWNvdmVyeUluZm8gKnJlc3VsdCA9IHBhbGxvYyhzaXpl b2YoRW5kT2ZXYWxSZWNvdmVyeUluZm8pKTsKKwlFbmRPZldhbFJlY292ZXJ5SW5mbyAqcmVz dWx0ID0gcGFsbG9jX29iamVjdChFbmRPZldhbFJlY292ZXJ5SW5mbyk7CiAJWExvZ1JlY1B0 cglsYXN0UmVjOwogCVRpbWVMaW5lSUQJbGFzdFJlY1RMSTsKIAlYTG9nUmVjUHRyCWVuZE9m TG9nOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCBjZTJh M2U0MjE0Ni4uZGI1NWMwYzViZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2d1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2d1dGlscy5jCkBAIC01NzQsNyArNTc0LDcgQEAgQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnko UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCiAJUmVsYXRpb24JcmVsOwogCiAJLyogQWxsb2Nh dGUgdGhlIFJlbGF0aW9uIHN0cnVjdCBhbmQgYWxsIHJlbGF0ZWQgc3BhY2UgaW4gb25lIGJs b2NrLiAqLwotCWZha2VlbnRyeSA9IHBhbGxvYzAoc2l6ZW9mKEZha2VSZWxDYWNoZUVudHJ5 RGF0YSkpOworCWZha2VlbnRyeSA9IHBhbGxvYzBfb2JqZWN0KEZha2VSZWxDYWNoZUVudHJ5 RGF0YSk7CiAJcmVsID0gKFJlbGF0aW9uKSBmYWtlZW50cnk7CiAKIAlyZWwtPnJkX3JlbCA9 ICZmYWtlZW50cnktPnBnYzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNl YmFja3VwLmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCmluZGV4IDJiZTRl MDY5ODE2Li4xZjdiNDJkYTAwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jh c2ViYWNrdXAuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCkBAIC0y NjIsNyArMjYyLDcgQEAgcGVyZm9ybV9iYXNlX2JhY2t1cChiYXNlYmFja3VwX29wdGlvbnMg Km9wdCwgYmJzaW5rICpzaW5rLAogCXRvdGFsX2NoZWNrc3VtX2ZhaWx1cmVzID0gMDsKIAog CS8qIEFsbG9jYXRlIGJhY2t1cCByZWxhdGVkIHZhcmlhYmxlcy4gKi8KLQliYWNrdXBfc3Rh dGUgPSAoQmFja3VwU3RhdGUgKikgcGFsbG9jMChzaXplb2YoQmFja3VwU3RhdGUpKTsKKwli YWNrdXBfc3RhdGUgPSBwYWxsb2MwX29iamVjdChCYWNrdXBTdGF0ZSk7CiAJaW5pdFN0cmlu Z0luZm8oJnRhYmxlc3BhY2VfbWFwKTsKIAogCWJhc2ViYWNrdXBfcHJvZ3Jlc3Nfd2FpdF9j aGVja3BvaW50KCk7CkBAIC0yODksNyArMjg5LDcgQEAgcGVyZm9ybV9iYXNlX2JhY2t1cChi YXNlYmFja3VwX29wdGlvbnMgKm9wdCwgYmJzaW5rICpzaW5rLAogCQkJUHJlcGFyZUZvcklu Y3JlbWVudGFsQmFja3VwKGliLCBiYWNrdXBfc3RhdGUpOwogCiAJCS8qIEFkZCBhIG5vZGUg Zm9yIHRoZSBiYXNlIGRpcmVjdG9yeSBhdCB0aGUgZW5kICovCi0JCW5ld3RpID0gcGFsbG9j MChzaXplb2YodGFibGVzcGFjZWluZm8pKTsKKwkJbmV3dGkgPSBwYWxsb2MwX29iamVjdCh0 YWJsZXNwYWNlaW5mbyk7CiAJCW5ld3RpLT5zaXplID0gLTE7CiAJCXN0YXRlLnRhYmxlc3Bh Y2VzID0gbGFwcGVuZChzdGF0ZS50YWJsZXNwYWNlcywgbmV3dGkpOwogCkBAIC0xMjA2LDcg KzEyMDYsNyBAQCBzZW5kRGlyKGJic2luayAqc2luaywgY29uc3QgY2hhciAqcGF0aCwgaW50 IGJhc2VwYXRobGVuLCBib29sIHNpemVvbmx5LAogCSAqIEJ1dCB3ZSBkb24ndCBuZWVkIGl0 IGF0IGFsbCBpZiB0aGlzIGlzIG5vdCBhbiBpbmNyZW1lbnRhbCBiYWNrdXAuCiAJICovCiAJ aWYgKGliICE9IE5VTEwpCi0JCXJlbGF0aXZlX2Jsb2NrX251bWJlcnMgPSBwYWxsb2Moc2l6 ZW9mKEJsb2NrTnVtYmVyKSAqIFJFTFNFR19TSVpFKTsKKwkJcmVsYXRpdmVfYmxvY2tfbnVt YmVycyA9IHBhbGxvY19hcnJheShCbG9ja051bWJlciwgUkVMU0VHX1NJWkUpOwogCiAJLyoK IAkgKiBEZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcGF0aCBpcyBhIGRhdGFiYXNlIGRpcmVj dG9yeSB0aGF0IGNhbiBjb250YWluCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAv YmFzZWJhY2t1cF9jb3B5LmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9jb3B5 LmMKaW5kZXggZWI0NWQzYmNiNjYuLjhiYjhkMzkzOWZlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3Vw L2Jhc2ViYWNrdXBfY29weS5jCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGNvbnN0IGJi c2lua19vcHMgYmJzaW5rX2NvcHlzdHJlYW1fb3BzID0gewogYmJzaW5rICoKIGJic2lua19j b3B5c3RyZWFtX25ldyhib29sIHNlbmRfdG9fY2xpZW50KQogewotCWJic2lua19jb3B5c3Ry ZWFtICpzaW5rID0gcGFsbG9jMChzaXplb2YoYmJzaW5rX2NvcHlzdHJlYW0pKTsKKwliYnNp bmtfY29weXN0cmVhbSAqc2luayA9IHBhbGxvYzBfb2JqZWN0KGJic2lua19jb3B5c3RyZWFt KTsKIAogCSooKGNvbnN0IGJic2lua19vcHMgKiopICZzaW5rLT5iYXNlLmJic19vcHMpID0g JmJic2lua19jb3B5c3RyZWFtX29wczsKIAlzaW5rLT5zZW5kX3RvX2NsaWVudCA9IHNlbmRf dG9fY2xpZW50OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBf Z3ppcC5jIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfZ3ppcC5jCmluZGV4IGM0 Y2JiNWY1Mjc2Li5hYWFkODM0MjkxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3Vw L2Jhc2ViYWNrdXBfZ3ppcC5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw X2d6aXAuYwpAQCAtNzYsNyArNzYsNyBAQCBiYnNpbmtfZ3ppcF9uZXcoYmJzaW5rICpuZXh0 LCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uICpjb21wcmVzcykKIAlBc3NlcnQoKGNvbXBy ZXNzbGV2ZWwgPj0gMSAmJiBjb21wcmVzc2xldmVsIDw9IDkpIHx8CiAJCSAgIGNvbXByZXNz bGV2ZWwgPT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OKTsKIAotCXNpbmsgPSBwYWxsb2MwKHNp emVvZihiYnNpbmtfZ3ppcCkpOworCXNpbmsgPSBwYWxsb2MwX29iamVjdChiYnNpbmtfZ3pp cCk7CiAJKigoY29uc3QgYmJzaW5rX29wcyAqKikgJnNpbmstPmJhc2UuYmJzX29wcykgPSAm YmJzaW5rX2d6aXBfb3BzOwogCXNpbmstPmJhc2UuYmJzX25leHQgPSBuZXh0OwogCXNpbmst PmNvbXByZXNzbGV2ZWwgPSBjb21wcmVzc2xldmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVtZW50YWwuYyBiL3NyYy9iYWNrZW5kL2JhY2t1 cC9iYXNlYmFja3VwX2luY3JlbWVudGFsLmMKaW5kZXggODUyYWI1NzcwNDUuLjc2NzhlNGY2 ZWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9pbmNyZW1l bnRhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX2luY3JlbWVudGFs LmMKQEAgLTE1Nyw3ICsxNTcsNyBAQCBDcmVhdGVJbmNyZW1lbnRhbEJhY2t1cEluZm8oTWVt b3J5Q29udGV4dCBtY3h0KQogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhtY3h0KTsKIAotCWliID0gcGFsbG9jMChzaXplb2YoSW5jcmVtZW50YWxCYWNrdXBJbmZv KSk7CisJaWIgPSBwYWxsb2MwX29iamVjdChJbmNyZW1lbnRhbEJhY2t1cEluZm8pOwogCWli LT5tY3h0ID0gbWN4dDsKIAlpbml0U3RyaW5nSW5mbygmaWItPmJ1Zik7CiAKQEAgLTE2OSw3 ICsxNjksNyBAQCBDcmVhdGVJbmNyZW1lbnRhbEJhY2t1cEluZm8oTWVtb3J5Q29udGV4dCBt Y3h0KQogCSAqLwogCWliLT5tYW5pZmVzdF9maWxlcyA9IGJhY2t1cF9maWxlX2NyZWF0ZSht Y3h0LCAxMDAwMCwgTlVMTCk7CiAKLQljb250ZXh0ID0gcGFsbG9jMChzaXplb2YoSnNvbk1h bmlmZXN0UGFyc2VDb250ZXh0KSk7CisJY29udGV4dCA9IHBhbGxvYzBfb2JqZWN0KEpzb25N YW5pZmVzdFBhcnNlQ29udGV4dCk7CiAJLyogUGFyc2UgdGhlIG1hbmlmZXN0LiAqLwogCWNv bnRleHQtPnByaXZhdGVfZGF0YSA9IGliOwogCWNvbnRleHQtPnZlcnNpb25fY2IgPSBtYW5p ZmVzdF9wcm9jZXNzX3ZlcnNpb247CkBAIC05OTMsNyArOTkzLDcgQEAgbWFuaWZlc3RfcHJv Y2Vzc193YWxfcmFuZ2UoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpjb250ZXh0LAogCQkJ CQkJICAgWExvZ1JlY1B0ciBlbmRfbHNuKQogewogCUluY3JlbWVudGFsQmFja3VwSW5mbyAq aWIgPSBjb250ZXh0LT5wcml2YXRlX2RhdGE7Ci0JYmFja3VwX3dhbF9yYW5nZSAqcmFuZ2Ug PSBwYWxsb2Moc2l6ZW9mKGJhY2t1cF93YWxfcmFuZ2UpKTsKKwliYWNrdXBfd2FsX3Jhbmdl ICpyYW5nZSA9IHBhbGxvY19vYmplY3QoYmFja3VwX3dhbF9yYW5nZSk7CiAKIAlyYW5nZS0+ dGxpID0gdGxpOwogCXJhbmdlLT5zdGFydF9sc24gPSBzdGFydF9sc247CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9sejQuYyBiL3NyYy9iYWNrZW5kL2Jh Y2t1cC9iYXNlYmFja3VwX2x6NC5jCmluZGV4IGM1Y2VjY2I4NDZmLi5iZDU3MDQ1MjBmYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfbHo0LmMKKysrIGIv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfbHo0LmMKQEAgLTc1LDcgKzc1LDcgQEAg YmJzaW5rX2x6NF9uZXcoYmJzaW5rICpuZXh0LCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9u ICpjb21wcmVzcykKIAljb21wcmVzc2xldmVsID0gY29tcHJlc3MtPmxldmVsOwogCUFzc2Vy dChjb21wcmVzc2xldmVsID49IDAgJiYgY29tcHJlc3NsZXZlbCA8PSAxMik7CiAKLQlzaW5r ID0gcGFsbG9jMChzaXplb2YoYmJzaW5rX2x6NCkpOworCXNpbmsgPSBwYWxsb2MwX29iamVj dChiYnNpbmtfbHo0KTsKIAkqKChjb25zdCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFzZS5i YnNfb3BzKSA9ICZiYnNpbmtfbHo0X29wczsKIAlzaW5rLT5iYXNlLmJic19uZXh0ID0gbmV4 dDsKIAlzaW5rLT5jb21wcmVzc2xldmVsID0gY29tcHJlc3NsZXZlbDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Byb2dyZXNzLmMgYi9zcmMvYmFja2Vu ZC9iYWNrdXAvYmFzZWJhY2t1cF9wcm9ncmVzcy5jCmluZGV4IGRhYzIwNTkzNjIyLi5kNzgz YzlmNTczOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfcHJv Z3Jlc3MuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9wcm9ncmVzcy5j CkBAIC02Miw3ICs2Miw3IEBAIGJic2lua19wcm9ncmVzc19uZXcoYmJzaW5rICpuZXh0LCBi b29sIGVzdGltYXRlX2JhY2t1cF9zaXplLCBib29sIGluY3JlbWVudGFsKQogCiAJQXNzZXJ0 KG5leHQgIT0gTlVMTCk7CiAKLQlzaW5rID0gcGFsbG9jMChzaXplb2YoYmJzaW5rKSk7CisJ c2luayA9IHBhbGxvYzBfb2JqZWN0KGJic2luayk7CiAJKigoY29uc3QgYmJzaW5rX29wcyAq KikgJnNpbmstPmJic19vcHMpID0gJmJic2lua19wcm9ncmVzc19vcHM7CiAJc2luay0+YmJz X25leHQgPSBuZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJh Y2t1cF9zZXJ2ZXIuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3NlcnZlci5j CmluZGV4IGY1YzBjNjE2NDBhLi43NTEwZWMwNmY1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYmFja3VwL2Jhc2ViYWNrdXBfc2VydmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3Vw L2Jhc2ViYWNrdXBfc2VydmVyLmMKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIGNvbnN0IGJi c2lua19vcHMgYmJzaW5rX3NlcnZlcl9vcHMgPSB7CiBiYnNpbmsgKgogYmJzaW5rX3NlcnZl cl9uZXcoYmJzaW5rICpuZXh0LCBjaGFyICpwYXRobmFtZSkKIHsKLQliYnNpbmtfc2VydmVy ICpzaW5rID0gcGFsbG9jMChzaXplb2YoYmJzaW5rX3NlcnZlcikpOworCWJic2lua19zZXJ2 ZXIgKnNpbmsgPSBwYWxsb2MwX29iamVjdChiYnNpbmtfc2VydmVyKTsKIAogCSooKGNvbnN0 IGJic2lua19vcHMgKiopICZzaW5rLT5iYXNlLmJic19vcHMpID0gJmJic2lua19zZXJ2ZXJf b3BzOwogCXNpbmstPnBhdGhuYW1lID0gcGF0aG5hbWU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9i YXNlYmFja3VwX3RhcmdldC5jCmluZGV4IDg0YjEzMDlkM2JkLi44Yjc0ODI4YWVkNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGFyZ2V0LmMKKysrIGIv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGFyZ2V0LmMKQEAgLTk2LDcgKzk2LDcg QEAgQmFzZUJhY2t1cEFkZFRhcmdldChjaGFyICpuYW1lLAogCSAqIG5hbWUgaW50byBhIG5l d2x5LWFsbG9jYXRlZCBjaHVuayBvZiBtZW1vcnkuCiAJICovCiAJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKLQluZXd0eXBlID0gcGFs bG9jKHNpemVvZihCYXNlQmFja3VwVGFyZ2V0VHlwZSkpOworCW5ld3R5cGUgPSBwYWxsb2Nf b2JqZWN0KEJhc2VCYWNrdXBUYXJnZXRUeXBlKTsKIAluZXd0eXBlLT5uYW1lID0gcHN0cmR1 cChuYW1lKTsKIAluZXd0eXBlLT5jaGVja19kZXRhaWwgPSBjaGVja19kZXRhaWw7CiAJbmV3 dHlwZS0+Z2V0X3NpbmsgPSBnZXRfc2luazsKQEAgLTEzMiw3ICsxMzIsNyBAQCBCYXNlQmFj a3VwR2V0VGFyZ2V0SGFuZGxlKGNoYXIgKnRhcmdldCwgY2hhciAqdGFyZ2V0X2RldGFpbCkK IAkJCUJhc2VCYWNrdXBUYXJnZXRIYW5kbGUgKmhhbmRsZTsKIAogCQkJLyogRm91bmQgdGhl IHRhcmdldC4gKi8KLQkJCWhhbmRsZSA9IHBhbGxvYyhzaXplb2YoQmFzZUJhY2t1cFRhcmdl dEhhbmRsZSkpOworCQkJaGFuZGxlID0gcGFsbG9jX29iamVjdChCYXNlQmFja3VwVGFyZ2V0 SGFuZGxlKTsKIAkJCWhhbmRsZS0+dHlwZSA9IHR0eXBlOwogCQkJaGFuZGxlLT5kZXRhaWxf YXJnID0gdHR5cGUtPmNoZWNrX2RldGFpbCh0YXJnZXQsIHRhcmdldF9kZXRhaWwpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jIGIv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYwppbmRleCBiMmI3NDMy MzhmOS4uOTU3NDZjM2VhNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNl YmFja3VwX3Rocm90dGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBf dGhyb3R0bGUuYwpAQCAtNzIsNyArNzIsNyBAQCBiYnNpbmtfdGhyb3R0bGVfbmV3KGJic2lu ayAqbmV4dCwgdWludDMyIG1heHJhdGUpCiAJQXNzZXJ0KG5leHQgIT0gTlVMTCk7CiAJQXNz ZXJ0KG1heHJhdGUgPiAwKTsKIAotCXNpbmsgPSBwYWxsb2MwKHNpemVvZihiYnNpbmtfdGhy b3R0bGUpKTsKKwlzaW5rID0gcGFsbG9jMF9vYmplY3QoYmJzaW5rX3Rocm90dGxlKTsKIAkq KChjb25zdCBiYnNpbmtfb3BzICoqKSAmc2luay0+YmFzZS5iYnNfb3BzKSA9ICZiYnNpbmtf dGhyb3R0bGVfb3BzOwogCXNpbmstPmJhc2UuYmJzX25leHQgPSBuZXh0OwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF96c3RkLmMgYi9zcmMvYmFja2Vu ZC9iYWNrdXAvYmFzZWJhY2t1cF96c3RkLmMKaW5kZXggMThiMmU4ZmIwYjMuLjY0N2VlMGVi OTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF96c3RkLmMK KysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfenN0ZC5jCkBAIC03MCw3ICs3 MCw3IEBAIGJic2lua196c3RkX25ldyhiYnNpbmsgKm5leHQsIHBnX2NvbXByZXNzX3NwZWNp ZmljYXRpb24gKmNvbXByZXNzKQogCiAJQXNzZXJ0KG5leHQgIT0gTlVMTCk7CiAKLQlzaW5r ID0gcGFsbG9jMChzaXplb2YoYmJzaW5rX3pzdGQpKTsKKwlzaW5rID0gcGFsbG9jMF9vYmpl Y3QoYmJzaW5rX3pzdGQpOwogCSooKGNvbnN0IGJic2lua19vcHMgKiopICZzaW5rLT5iYXNl LmJic19vcHMpID0gJmJic2lua196c3RkX29wczsKIAlzaW5rLT5iYXNlLmJic19uZXh0ID0g bmV4dDsKIAlzaW5rLT5jb21wcmVzcyA9IGNvbXByZXNzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYmFja3VwL3dhbHN1bW1hcnkuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC93YWxzdW1t YXJ5LmMKaW5kZXggMjY4OWVhZTMzMjguLmE4NDM4NzYzMzdiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9iYWNrdXAvd2Fsc3VtbWFyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC93 YWxzdW1tYXJ5LmMKQEAgLTczLDcgKzczLDcgQEAgR2V0V2FsU3VtbWFyaWVzKFRpbWVMaW5l SUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgWExvZ1JlY1B0ciBlbmRfbHNuKQogCQkJ Y29udGludWU7CiAKIAkJLyogQWRkIGl0IHRvIHRoZSBsaXN0LiAqLwotCQl3cyA9IHBhbGxv YyhzaXplb2YoV2FsU3VtbWFyeUZpbGUpKTsKKwkJd3MgPSBwYWxsb2Nfb2JqZWN0KFdhbFN1 bW1hcnlGaWxlKTsKIAkJd3MtPnRsaSA9IGZpbGVfdGxpOwogCQl3cy0+c3RhcnRfbHNuID0g ZmlsZV9zdGFydF9sc247CiAJCXdzLT5lbmRfbHNuID0gZmlsZV9lbmRfbHNuOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGZjODYzOGMxYjYxLi40OTg2YjFlYTdlZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtNzQyLDcgKzc0Miw3IEBAIHBv cHVsYXRlX3R5cF9saXN0KHZvaWQpCiAJCUZvcm1fcGdfdHlwZSB0eXBGb3JtID0gKEZvcm1f cGdfdHlwZSkgR0VUU1RSVUNUKHR1cCk7CiAJCXN0cnVjdCB0eXBtYXAgKm5ld3R5cDsKIAot CQluZXd0eXAgPSAoc3RydWN0IHR5cG1hcCAqKSBwYWxsb2Moc2l6ZW9mKHN0cnVjdCB0eXBt YXApKTsKKwkJbmV3dHlwID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgdHlwbWFwKTsKIAkJVHlw ID0gbGFwcGVuZChUeXAsIG5ld3R5cCk7CiAKIAkJbmV3dHlwLT5hbV9vaWQgPSB0eXBGb3Jt LT5vaWQ7CkBAIC05NTEsMTAgKzk1MSwxMCBAQCBpbmRleF9yZWdpc3RlcihPaWQgaGVhcCwK IAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhub2djKTsKIAotCW5ld2luZCA9 IChJbmRleExpc3QgKikgcGFsbG9jKHNpemVvZihJbmRleExpc3QpKTsKKwluZXdpbmQgPSBw YWxsb2Nfb2JqZWN0KEluZGV4TGlzdCk7CiAJbmV3aW5kLT5pbF9oZWFwID0gaGVhcDsKIAlu ZXdpbmQtPmlsX2luZCA9IGluZDsKLQluZXdpbmQtPmlsX2luZm8gPSAoSW5kZXhJbmZvICop IHBhbGxvYyhzaXplb2YoSW5kZXhJbmZvKSk7CisJbmV3aW5kLT5pbF9pbmZvID0gcGFsbG9j X29iamVjdChJbmRleEluZm8pOwogCiAJbWVtY3B5KG5ld2luZC0+aWxfaW5mbywgaW5kZXhJ bmZvLCBzaXplb2YoSW5kZXhJbmZvKSk7CiAJLyogZXhwcmVzc2lvbnMgd2lsbCBsaWtlbHkg YmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNvcHkgaXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBl bmRlbmN5LmMKaW5kZXggOGU3MGE4NWEzZjcuLjgzOGVkMjZkNmI5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwpAQCAtODAxLDggKzgwMSw3IEBAIGZpbmREZXBlbmRlbnRPYmpl Y3RzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkgKiByZWdyZXNzaW9uIHRlc3Rp bmcuKQogCSAqLwogCW1heERlcGVuZGVudE9iamVjdHMgPSAxMjg7CS8qIGFyYml0cmFyeSBp bml0aWFsIGFsbG9jYXRpb24gKi8KLQlkZXBlbmRlbnRPYmplY3RzID0gKE9iamVjdEFkZHJl c3NBbmRGbGFncyAqKQotCQlwYWxsb2MobWF4RGVwZW5kZW50T2JqZWN0cyAqIHNpemVvZihP YmplY3RBZGRyZXNzQW5kRmxhZ3MpKTsKKwlkZXBlbmRlbnRPYmplY3RzID0gcGFsbG9jX2Fy cmF5KE9iamVjdEFkZHJlc3NBbmRGbGFncywgbWF4RGVwZW5kZW50T2JqZWN0cyk7CiAJbnVt RGVwZW5kZW50T2JqZWN0cyA9IDA7CiAKIAlTY2FuS2V5SW5pdCgma2V5WzBdLApAQCAtMjYx NiwxMiArMjYxNSwxMSBAQCBuZXdfb2JqZWN0X2FkZHJlc3Nlcyh2b2lkKQogewogCU9iamVj dEFkZHJlc3NlcyAqYWRkcnM7CiAKLQlhZGRycyA9IHBhbGxvYyhzaXplb2YoT2JqZWN0QWRk cmVzc2VzKSk7CisJYWRkcnMgPSBwYWxsb2Nfb2JqZWN0KE9iamVjdEFkZHJlc3Nlcyk7CiAK IAlhZGRycy0+bnVtcmVmcyA9IDA7CiAJYWRkcnMtPm1heHJlZnMgPSAzMjsKLQlhZGRycy0+ cmVmcyA9IChPYmplY3RBZGRyZXNzICopCi0JCXBhbGxvYyhhZGRycy0+bWF4cmVmcyAqIHNp emVvZihPYmplY3RBZGRyZXNzKSk7CisJYWRkcnMtPnJlZnMgPSBwYWxsb2NfYXJyYXkoT2Jq ZWN0QWRkcmVzcywgYWRkcnMtPm1heHJlZnMpOwogCWFkZHJzLT5leHRyYXMgPSBOVUxMOwkJ LyogdW50aWwvdW5sZXNzIG5lZWRlZCAqLwogCiAJcmV0dXJuIGFkZHJzOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYwppbmRleCBmZDY1Mzc1NjdlYS4uMjY1Y2MzZTVmYmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j CkBAIC03MzIsNyArNzMyLDcgQEAgSW5zZXJ0UGdBdHRyaWJ1dGVUdXBsZXMoUmVsYXRpb24g cGdfYXR0cmlidXRlX3JlbCwKIAkvKiBJbml0aWFsaXplIHRoZSBudW1iZXIgb2Ygc2xvdHMg dG8gdXNlICovCiAJbnNsb3RzID0gTWluKHR1cGRlc2MtPm5hdHRzLAogCQkJCSAoTUFYX0NB VEFMT0dfTVVMVElfSU5TRVJUX0JZVEVTIC8gc2l6ZW9mKEZvcm1EYXRhX3BnX2F0dHJpYnV0 ZSkpKTsKLQlzbG90ID0gcGFsbG9jKHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIG5zbG90 cyk7CisJc2xvdCA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBuc2xvdHMpOwog CWZvciAoaW50IGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspCiAJCXNsb3RbaV0gPSBNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3QodGQsICZUVFNPcHNIZWFwVHVwbGUpOwogCkBAIC0yNDU5LDcg KzI0NTksNyBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAog CQlkZWZPaWQgPSBTdG9yZUF0dHJEZWZhdWx0KHJlbCwgY29sRGVmLT5hdHRudW0sIGV4cHIs IGlzX2ludGVybmFsKTsKIAotCQljb29rZWQgPSAoQ29va2VkQ29uc3RyYWludCAqKSBwYWxs b2Moc2l6ZW9mKENvb2tlZENvbnN0cmFpbnQpKTsKKwkJY29va2VkID0gcGFsbG9jX29iamVj dChDb29rZWRDb25zdHJhaW50KTsKIAkJY29va2VkLT5jb250eXBlID0gQ09OU1RSX0RFRkFV TFQ7CiAJCWNvb2tlZC0+Y29ub2lkID0gZGVmT2lkOwogCQljb29rZWQtPm5hbWUgPSBOVUxM OwpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhSZWxh dGlvbiByZWwsCiAKIAkJCW51bWNoZWNrcysrOwogCi0JCQljb29rZWQgPSAoQ29va2VkQ29u c3RyYWludCAqKSBwYWxsb2Moc2l6ZW9mKENvb2tlZENvbnN0cmFpbnQpKTsKKwkJCWNvb2tl ZCA9IHBhbGxvY19vYmplY3QoQ29va2VkQ29uc3RyYWludCk7CiAJCQljb29rZWQtPmNvbnR5 cGUgPSBDT05TVFJfQ0hFQ0s7CiAJCQljb29rZWQtPmNvbm9pZCA9IGNvbnN0ck9pZDsKIAkJ CWNvb2tlZC0+bmFtZSA9IGNjbmFtZTsKQEAgLTI2NjksNyArMjY2OSw3IEBAIEFkZFJlbGF0 aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQlpbmhjb3VudCwKIAkJ CQkJCQkJY2RlZi0+aXNfbm9faW5oZXJpdCk7CiAKLQkJCW5uY29va2VkID0gKENvb2tlZENv bnN0cmFpbnQgKikgcGFsbG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7CisJCQlubmNv b2tlZCA9IHBhbGxvY19vYmplY3QoQ29va2VkQ29uc3RyYWludCk7CiAJCQlubmNvb2tlZC0+ Y29udHlwZSA9IENPTlNUUl9OT1ROVUxMOwogCQkJbm5jb29rZWQtPmNvbm9pZCA9IGNvbnN0 ck9pZDsKIAkJCW5uY29va2VkLT5uYW1lID0gbm5uYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmlu ZGV4IDVkOWRiMTY3ZTU5Li5kOTRjYTdlYTUzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt MTQxNCw3ICsxNDE0LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJfQogCiAJLyogRXh0cmFjdCBv cGNsYXNzIG9wdGlvbnMgZm9yIGVhY2ggYXR0cmlidXRlICovCi0Jb3BjbGFzc09wdGlvbnMg PSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsK KwlvcGNsYXNzT3B0aW9ucyA9IHBhbGxvYzBfYXJyYXkoRGF0dW0sIG5ld0luZm8tPmlpX051 bUluZGV4QXR0cnMpOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbmV3SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQogCQlvcGNsYXNzT3B0aW9uc1tpXSA9IGdldF9hdHRvcHRpb25zKG9s ZEluZGV4SWQsIGkgKyAxKTsKIApAQCAtMjY3OCw5ICsyNjc4LDkgQEAgQnVpbGRTcGVjdWxh dGl2ZUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppaSkKIAkgKi8KIAlB c3NlcnQoaWktPmlpX1VuaXF1ZSk7CiAKLQlpaS0+aWlfVW5pcXVlT3BzID0gKE9pZCAqKSBw YWxsb2Moc2l6ZW9mKE9pZCkgKiBpbmRua2V5YXR0cyk7Ci0JaWktPmlpX1VuaXF1ZVByb2Nz ID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBpbmRua2V5YXR0cyk7Ci0JaWktPmlp X1VuaXF1ZVN0cmF0cyA9ICh1aW50MTYgKikgcGFsbG9jKHNpemVvZih1aW50MTYpICogaW5k bmtleWF0dHMpOworCWlpLT5paV9VbmlxdWVPcHMgPSAoT2lkICopIHBhbGxvY19hcnJheShP aWQsIGluZG5rZXlhdHRzKTsKKwlpaS0+aWlfVW5pcXVlUHJvY3MgPSAoT2lkICopIHBhbGxv Y19hcnJheShPaWQsIGluZG5rZXlhdHRzKTsKKwlpaS0+aWlfVW5pcXVlU3RyYXRzID0gKHVp bnQxNiAqKSBwYWxsb2NfYXJyYXkodWludDE2LCBpbmRua2V5YXR0cyk7CiAKIAkvKgogCSAq IFdlIGhhdmUgdG8gbG9vayB1cCB0aGUgb3BlcmF0b3IncyBzdHJhdGVneSBudW1iZXIuICBU aGlzIHByb3ZpZGVzIGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IGQyMzQ3NGRh NGZiLi5jOTQwODljYWE1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1l c3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zOTI5 LDcgKzM5MjksNyBAQCBHZXRTZWFyY2hQYXRoTWF0Y2hlcihNZW1vcnlDb250ZXh0IGNvbnRl eHQpCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY29udGV4dCk7CiAKLQly ZXN1bHQgPSAoU2VhcmNoUGF0aE1hdGNoZXIgKikgcGFsbG9jMChzaXplb2YoU2VhcmNoUGF0 aE1hdGNoZXIpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX29iamVjdChTZWFyY2hQYXRoTWF0Y2hl cik7CiAJc2NoZW1hcyA9IGxpc3RfY29weShhY3RpdmVTZWFyY2hQYXRoKTsKIAl3aGlsZSAo c2NoZW1hcyAmJiBsaW5pdGlhbF9vaWQoc2NoZW1hcykgIT0gYWN0aXZlQ3JlYXRpb25OYW1l c3BhY2UpCiAJewpAQCAtMzk2MCw3ICszOTYwLDcgQEAgQ29weVNlYXJjaFBhdGhNYXRjaGVy KFNlYXJjaFBhdGhNYXRjaGVyICpwYXRoKQogewogCVNlYXJjaFBhdGhNYXRjaGVyICpyZXN1 bHQ7CiAKLQlyZXN1bHQgPSAoU2VhcmNoUGF0aE1hdGNoZXIgKikgcGFsbG9jKHNpemVvZihT ZWFyY2hQYXRoTWF0Y2hlcikpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoU2VhcmNoUGF0 aE1hdGNoZXIpOwogCXJlc3VsdC0+c2NoZW1hcyA9IGxpc3RfY29weShwYXRoLT5zY2hlbWFz KTsKIAlyZXN1bHQtPmFkZENhdGFsb2cgPSBwYXRoLT5hZGRDYXRhbG9nOwogCXJlc3VsdC0+ YWRkVGVtcCA9IHBhdGgtPmFkZFRlbXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL29iamVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVz cy5jCmluZGV4IGM3NWI3MTMxZWQ3Li5mYTZjNmRmNTk4YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9vYmplY3RhZGRyZXNzLmMKQEAgLTYxNDQsOCArNjE0NCw4IEBAIHN0cmxpc3RfdG9fdGV4 dGFycmF5KExpc3QgKmxpc3QpCiAJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OwogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhtZW1jeHQpOwogCi0JZGF0dW1z ID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbGlzdF9sZW5ndGgobGlzdCkp OwotCW51bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIGxpc3RfbGVuZ3RoKGxpc3QpKTsK KwlkYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGxpc3RfbGVuZ3RoKGxpc3QpKTsKKwlu dWxscyA9IHBhbGxvY19hcnJheShib29sLCBsaXN0X2xlbmd0aChsaXN0KSk7CiAKIAlmb3Jl YWNoKGNlbGwsIGxpc3QpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpp bmRleCA5OTQ0ZTRiZDJkMS4uZmE3M2NhMTc4YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCkBAIC04NDYsNyArODQ2LDcgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29u c3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQog CQl7CiAJCQlDb29rZWRDb25zdHJhaW50ICpjb29rZWQ7CiAKLQkJCWNvb2tlZCA9IChDb29r ZWRDb25zdHJhaW50ICopIHBhbGxvYyhzaXplb2YoQ29va2VkQ29uc3RyYWludCkpOworCQkJ Y29va2VkID0gcGFsbG9jX29iamVjdChDb29rZWRDb25zdHJhaW50KTsKIAogCQkJY29va2Vk LT5jb250eXBlID0gQ09OU1RSX05PVE5VTEw7CiAJCQljb29rZWQtPmNvbm9pZCA9IGNvbkZv cm0tPm9pZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jCmluZGV4IGM4YjExZjg4N2UyLi5h NmY2M2UxMDdiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jCkBAIC04OCw3ICs4OCw3 IEBAIHJlY29yZE11bHRpcGxlRGVwZW5kZW5jaWVzKGNvbnN0IE9iamVjdEFkZHJlc3MgKmRl cGVuZGVyLAogCSAqLwogCW1heF9zbG90cyA9IE1pbihucmVmZXJlbmNlZCwKIAkJCQkJTUFY X0NBVEFMT0dfTVVMVElfSU5TRVJUX0JZVEVTIC8gc2l6ZW9mKEZvcm1EYXRhX3BnX2RlcGVu ZCkpOwotCXNsb3QgPSBwYWxsb2Moc2l6ZW9mKFR1cGxlVGFibGVTbG90ICopICogbWF4X3Ns b3RzKTsKKwlzbG90ID0gcGFsbG9jX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG1heF9zbG90 cyk7CiAKIAkvKiBEb24ndCBvcGVuIGluZGV4ZXMgdW5sZXNzIHdlIG5lZWQgdG8gbWFrZSBh biB1cGRhdGUgKi8KIAlpbmRzdGF0ZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmlu ZGV4IGRhOWMyYTQ2Y2ZhLi4wNzk5ODgzOWFmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19lbnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMK QEAgLTEyMCw3ICsxMjAsNyBAQCBFbnVtVmFsdWVzQ3JlYXRlKE9pZCBlbnVtVHlwZU9pZCwg TGlzdCAqdmFscykKIAkgKiBhbGxvY2F0aW5nIHRoZSBuZXh0KSwgdHJvdWJsZSBjb3VsZCBv bmx5IG9jY3VyIGlmIHRoZSBPSUQgY291bnRlciB3cmFwcwogCSAqIGFsbCB0aGUgd2F5IGFy b3VuZCBiZWZvcmUgd2UgZmluaXNoLiBXaGljaCBzZWVtcyB1bmxpa2VseS4KIAkgKi8KLQlv aWRzID0gKE9pZCAqKSBwYWxsb2MobnVtX2VsZW1zICogc2l6ZW9mKE9pZCkpOworCW9pZHMg PSBwYWxsb2NfYXJyYXkoT2lkLCBudW1fZWxlbXMpOwogCiAJZm9yIChlbGVtbm8gPSAwOyBl bGVtbm8gPCBudW1fZWxlbXM7IGVsZW1ubysrKQogCXsKQEAgLTE0OCw3ICsxNDgsNyBAQCBF bnVtVmFsdWVzQ3JlYXRlKE9pZCBlbnVtVHlwZU9pZCwgTGlzdCAqdmFscykKIAkvKiBhbGxv Y2F0ZSB0aGUgc2xvdHMgdG8gdXNlIGFuZCBpbml0aWFsaXplIHRoZW0gKi8KIAluc2xvdHMg PSBNaW4obnVtX2VsZW1zLAogCQkJCSBNQVhfQ0FUQUxPR19NVUxUSV9JTlNFUlRfQllURVMg LyBzaXplb2YoRm9ybURhdGFfcGdfZW51bSkpOwotCXNsb3QgPSBwYWxsb2Moc2l6ZW9mKFR1 cGxlVGFibGVTbG90ICopICogbnNsb3RzKTsKKwlzbG90ID0gcGFsbG9jX2FycmF5KFR1cGxl VGFibGVTbG90ICosIG5zbG90cyk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuc2xvdHM7IGkr KykKIAkJc2xvdFtpXSA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERl c2NyKHBnX2VudW0pLAogCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOwpAQCAtMzc1 LDcgKzM3NSw3IEBAIHJlc3RhcnQ6CiAJbmVsZW1zID0gbGlzdC0+bl9tZW1iZXJzOwogCiAJ LyogU29ydCB0aGUgZXhpc3RpbmcgbWVtYmVycyBieSBlbnVtc29ydG9yZGVyICovCi0JZXhp c3RpbmcgPSAoSGVhcFR1cGxlICopIHBhbGxvYyhuZWxlbXMgKiBzaXplb2YoSGVhcFR1cGxl KSk7CisJZXhpc3RpbmcgPSBwYWxsb2NfYXJyYXkoSGVhcFR1cGxlLCBuZWxlbXMpOwogCWZv ciAoaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJZXhpc3RpbmdbaV0gPSAmKGxpc3QtPm1l bWJlcnNbaV0tPnR1cGxlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CmluZGV4IDA5OTQyMjBjNTNkLi5iZTVlZjVlNGMwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYwpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgR2V0UHVibGljYXRpb24o T2lkIHB1YmlkKQogCiAJcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKIAotCXB1YiA9IChQdWJsaWNhdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKFB1Ymxp Y2F0aW9uKSk7CisJcHViID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvbik7CiAJcHViLT5v aWQgPSBwdWJpZDsKIAlwdWItPm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIocHViZm9ybS0+cHVi bmFtZSkpOwogCXB1Yi0+YWxsdGFibGVzID0gcHViZm9ybS0+cHViYWxsdGFibGVzOwpAQCAt MTE5Niw3ICsxMTk2LDcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElP Tl9BUkdTKQogCQkJICovCiAJCQlmb3JlYWNoKGxjLCBwdWJfZWxlbV90YWJsZXMpCiAJCQl7 Ci0JCQkJcHVibGlzaGVkX3JlbCAqdGFibGVfaW5mbyA9IChwdWJsaXNoZWRfcmVsICopIHBh bGxvYyhzaXplb2YocHVibGlzaGVkX3JlbCkpOworCQkJCXB1Ymxpc2hlZF9yZWwgKnRhYmxl X2luZm8gPSBwYWxsb2Nfb2JqZWN0KHB1Ymxpc2hlZF9yZWwpOwogCiAJCQkJdGFibGVfaW5m by0+cmVsaWQgPSBsZmlyc3Rfb2lkKGxjKTsKIAkJCQl0YWJsZV9pbmZvLT5wdWJpZCA9IHB1 Yl9lbGVtLT5vaWQ7CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBwZ19nZXRfcHVibGljYXRpb25f dGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlUdXBsZURlc2MJZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IocmVsKTsKIAkJCWludAkJCWk7CiAKLQkJCWF0dG51bXMgPSAoaW50MTYgKikg cGFsbG9jKGRlc2MtPm5hdHRzICogc2l6ZW9mKGludDE2KSk7CisJCQlhdHRudW1zID0gcGFs bG9jX2FycmF5KGludDE2LCBkZXNjLT5uYXR0cyk7CiAKIAkJCWZvciAoaSA9IDA7IGkgPCBk ZXNjLT5uYXR0czsgaSsrKQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zaGRlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zaGRlcGVuZC5jCmlu ZGV4IDE2ZTNlNWM3NDU3Li5mZTRlNDUzNjY3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zaGRlcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc2hk ZXBlbmQuYwpAQCAtNzkxLDcgKzc5MSw3IEBAIGNoZWNrU2hhcmVkRGVwZW5kZW5jaWVzKE9p ZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQsCiAJCQl9CiAJCQlpZiAoIXN0b3JlZCkKIAkJCXsK LQkJCQlkZXAgPSAocmVtb3RlRGVwICopIHBhbGxvYyhzaXplb2YocmVtb3RlRGVwKSk7CisJ CQkJZGVwID0gcGFsbG9jX29iamVjdChyZW1vdGVEZXApOwogCQkJCWRlcC0+ZGJPaWQgPSBz ZGVwRm9ybS0+ZGJpZDsKIAkJCQlkZXAtPmNvdW50ID0gMTsKIAkJCQlyZW1EZXBzID0gbGFw cGVuZChyZW1EZXBzLCBkZXApOwpAQCAtOTEzLDcgKzkxMyw3IEBAIGNvcHlUZW1wbGF0ZURl cGVuZGVuY2llcyhPaWQgdGVtcGxhdGVEYklkLCBPaWQgbmV3RGJJZCkKIAkgKiBrbm93IHRo YXQgdGhleSB3aWxsIGJlIHVzZWQuCiAJICovCiAJbWF4X3Nsb3RzID0gTUFYX0NBVEFMT0df TVVMVElfSU5TRVJUX0JZVEVTIC8gc2l6ZW9mKEZvcm1EYXRhX3BnX3NoZGVwZW5kKTsKLQlz bG90ID0gcGFsbG9jKHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIG1heF9zbG90cyk7CisJ c2xvdCA9IHBhbGxvY19hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBtYXhfc2xvdHMpOwogCiAJ aW5kc3RhdGUgPSBDYXRhbG9nT3BlbkluZGV4ZXMoc2RlcFJlbCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDE4MGU3N2U5NDg0Li5hZDZmYmQ3N2Zm ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC04OSw3ICs4 OSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAog CXN1YmZvcm0gPSAoRm9ybV9wZ19zdWJzY3JpcHRpb24pIEdFVFNUUlVDVCh0dXApOwogCi0J c3ViID0gKFN1YnNjcmlwdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKFN1YnNjcmlwdGlvbikpOwor CXN1YiA9IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uKTsKIAlzdWItPm9pZCA9IHN1Ymlk OwogCXN1Yi0+ZGJpZCA9IHN1YmZvcm0tPnN1YmRiaWQ7CiAJc3ViLT5za2lwbHNuID0gc3Vi Zm9ybS0+c3Vic2tpcGxzbjsKQEAgLTYxOCw3ICs2MTgsNyBAQCBHZXRTdWJzY3JpcHRpb25S ZWxhdGlvbnMoT2lkIHN1YmlkLCBib29sIHRhYmxlcywgYm9vbCBzZXF1ZW5jZXMsCiAJCQkg cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJiAhdGFibGVzKQogCQkJ Y29udGludWU7CiAKLQkJcmVsc3RhdGUgPSAoU3Vic2NyaXB0aW9uUmVsU3RhdGUgKikgcGFs bG9jKHNpemVvZihTdWJzY3JpcHRpb25SZWxTdGF0ZSkpOworCQlyZWxzdGF0ZSA9IHBhbGxv Y19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3RhdGUpOwogCQlyZWxzdGF0ZS0+cmVsaWQgPSBz dWJyZWwtPnNycmVsaWQ7CiAJCXJlbHN0YXRlLT5zdGF0ZSA9IHN1YnJlbC0+c3JzdWJzdGF0 ZTsKIAkJZCA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05SRUxNQVAsIHR1cCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zdG9yYWdlLmMKaW5kZXggYzU4ZTk0MThhYzMuLmQwNmMxYzY4MTc0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYwpAQCAtNzA3LDEyICs3MDcsMTIgQEAgc21nckRvUGVuZGlu Z0RlbGV0ZXMoYm9vbCBpc0NvbW1pdCkKIAkJCQlpZiAobWF4cmVscyA9PSAwKQogCQkJCXsK IAkJCQkJbWF4cmVscyA9IDg7Ci0JCQkJCXNyZWxzID0gcGFsbG9jKHNpemVvZihTTWdyUmVs YXRpb24pICogbWF4cmVscyk7CisJCQkJCXNyZWxzID0gcGFsbG9jX2FycmF5KFNNZ3JSZWxh dGlvbiwgbWF4cmVscyk7CiAJCQkJfQogCQkJCWVsc2UgaWYgKG1heHJlbHMgPD0gbnJlbHMp CiAJCQkJewogCQkJCQltYXhyZWxzICo9IDI7Ci0JCQkJCXNyZWxzID0gcmVwYWxsb2Moc3Jl bHMsIHNpemVvZihTTWdyUmVsYXRpb24pICogbWF4cmVscyk7CisJCQkJCXNyZWxzID0gcmVw YWxsb2NfYXJyYXkoc3JlbHMsIFNNZ3JSZWxhdGlvbiwgbWF4cmVscyk7CiAJCQkJfQogCiAJ CQkJc3JlbHNbbnJlbHMrK10gPSBzcmVsOwpAQCAtODI5LDEyICs4MjksMTIgQEAgc21nckRv UGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNQYXJhbGxlbFdvcmtlcikKIAkJ CWlmIChtYXhyZWxzID09IDApCiAJCQl7CiAJCQkJbWF4cmVscyA9IDg7Ci0JCQkJc3JlbHMg PSBwYWxsb2Moc2l6ZW9mKFNNZ3JSZWxhdGlvbikgKiBtYXhyZWxzKTsKKwkJCQlzcmVscyA9 IHBhbGxvY19hcnJheShTTWdyUmVsYXRpb24sIG1heHJlbHMpOwogCQkJfQogCQkJZWxzZSBp ZiAobWF4cmVscyA8PSBucmVscykKIAkJCXsKIAkJCQltYXhyZWxzICo9IDI7Ci0JCQkJc3Jl bHMgPSByZXBhbGxvYyhzcmVscywgc2l6ZW9mKFNNZ3JSZWxhdGlvbikgKiBtYXhyZWxzKTsK KwkJCQlzcmVscyA9IHJlcGFsbG9jX2FycmF5KHNyZWxzLCBTTWdyUmVsYXRpb24sIG1heHJl bHMpOwogCQkJfQogCiAJCQlzcmVsc1tucmVscysrXSA9IHNyZWw7CkBAIC05MDksNyArOTA5 LDcgQEAgc21nckdldFBlbmRpbmdEZWxldGVzKGJvb2wgZm9yQ29tbWl0LCBSZWxGaWxlTG9j YXRvciAqKnB0cikKIAkJKnB0ciA9IE5VTEw7CiAJCXJldHVybiAwOwogCX0KLQlycHRyID0g KFJlbEZpbGVMb2NhdG9yICopIHBhbGxvYyhucmVscyAqIHNpemVvZihSZWxGaWxlTG9jYXRv cikpOworCXJwdHIgPSBwYWxsb2NfYXJyYXkoUmVsRmlsZUxvY2F0b3IsIG5yZWxzKTsKIAkq cHRyID0gcnB0cjsKIAlmb3IgKHBlbmRpbmcgPSBwZW5kaW5nRGVsZXRlczsgcGVuZGluZyAh PSBOVUxMOyBwZW5kaW5nID0gcGVuZGluZy0+bmV4dCkKIAl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMKaW5kZXggMjUwODlmYWUzZTAuLjI4MmM1MzY4M2FkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBleGFtaW5lX2F0dHJpYnV0ZShSZWxh dGlvbiBvbmVyZWwsIGludCBhdHRudW0sIE5vZGUgKmluZGV4X2V4cHIpCiAJLyoKIAkgKiBD cmVhdGUgdGhlIFZhY0F0dHJTdGF0cyBzdHJ1Y3QuCiAJICovCi0Jc3RhdHMgPSAoVmFjQXR0 clN0YXRzICopIHBhbGxvYzAoc2l6ZW9mKFZhY0F0dHJTdGF0cykpOworCXN0YXRzID0gcGFs bG9jMF9vYmplY3QoVmFjQXR0clN0YXRzKTsKIAlzdGF0cy0+YXR0c3RhdHRhcmdldCA9IGF0 dHN0YXR0YXJnZXQ7CiAKIAkvKgpAQCAtMTkwNCw3ICsxOTA0LDcgQEAgc3RkX3R5cGFuYWx5 emUoVmFjQXR0clN0YXRzICpzdGF0cykKIAkJCQkJCQkgTlVMTCk7CiAKIAkvKiBTYXZlIHRo ZSBvcGVyYXRvciBpbmZvIGZvciBjb21wdXRlX3N0YXRzIHJvdXRpbmVzICovCi0JbXlzdGF0 cyA9IChTdGRBbmFseXplRGF0YSAqKSBwYWxsb2Moc2l6ZW9mKFN0ZEFuYWx5emVEYXRhKSk7 CisJbXlzdGF0cyA9IHBhbGxvY19vYmplY3QoU3RkQW5hbHl6ZURhdGEpOwogCW15c3RhdHMt PmVxb3ByID0gZXFvcHI7CiAJbXlzdGF0cy0+ZXFmdW5jID0gT2lkSXNWYWxpZChlcW9wcikg PyBnZXRfb3Bjb2RlKGVxb3ByKSA6IEludmFsaWRPaWQ7CiAJbXlzdGF0cy0+bHRvcHIgPSBs dG9wcjsKQEAgLTI4NTksNyArMjg1OSw3IEBAIGNvbXB1dGVfc2NhbGFyX3N0YXRzKFZhY0F0 dHJTdGF0c1Agc3RhdHMsCiAKIAkJCS8qIE11c3QgY29weSB0aGUgdGFyZ2V0IHZhbHVlcyBp bnRvIGFubF9jb250ZXh0ICovCiAJCQlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhzdGF0cy0+YW5sX2NvbnRleHQpOwotCQkJY29ycnMgPSAoZmxvYXQ0ICopIHBhbGxv YyhzaXplb2YoZmxvYXQ0KSk7CisJCQljb3JycyA9IHBhbGxvY19vYmplY3QoZmxvYXQ0KTsK IAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY29udGV4dCk7CiAKIAkJCS8qLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCmluZGV4IGI1NTIyMWQ0NGNkLi5hODM4YTcz NDMyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAg Z2V0X3RhYmxlc190b19jbHVzdGVyKE1lbW9yeUNvbnRleHQgY2x1c3Rlcl9jb250ZXh0KQog CQkvKiBVc2UgYSBwZXJtYW5lbnQgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSByZXN1bHQgbGlz dCAqLwogCQlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjbHVzdGVyX2Nv bnRleHQpOwogCi0JCXJ0YyA9IChSZWxUb0NsdXN0ZXIgKikgcGFsbG9jKHNpemVvZihSZWxU b0NsdXN0ZXIpKTsKKwkJcnRjID0gcGFsbG9jX29iamVjdChSZWxUb0NsdXN0ZXIpOwogCQly dGMtPnRhYmxlT2lkID0gaW5kZXgtPmluZHJlbGlkOwogCQlydGMtPmluZGV4T2lkID0gaW5k ZXgtPmluZGV4cmVsaWQ7CiAJCXJ0Y3MgPSBsYXBwZW5kKHJ0Y3MsIHJ0Yyk7CkBAIC0xNzI2 LDcgKzE3MjYsNyBAQCBnZXRfdGFibGVzX3RvX2NsdXN0ZXJfcGFydGl0aW9uZWQoTWVtb3J5 Q29udGV4dCBjbHVzdGVyX2NvbnRleHQsIE9pZCBpbmRleE9pZCkKIAkJLyogVXNlIGEgcGVy bWFuZW50IG1lbW9yeSBjb250ZXh0IGZvciB0aGUgcmVzdWx0IGxpc3QgKi8KIAkJb2xkX2Nv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY2x1c3Rlcl9jb250ZXh0KTsKIAotCQly dGMgPSAoUmVsVG9DbHVzdGVyICopIHBhbGxvYyhzaXplb2YoUmVsVG9DbHVzdGVyKSk7CisJ CXJ0YyA9IHBhbGxvY19vYmplY3QoUmVsVG9DbHVzdGVyKTsKIAkJcnRjLT50YWJsZU9pZCA9 IHJlbGlkOwogCQlydGMtPmluZGV4T2lkID0gaW5kZXhyZWxpZDsKIAkJcnRjcyA9IGxhcHBl bmQocnRjcywgcnRjKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHku YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyOGU4NzhjMzY4OC4uNjQ1 NGEzOWEwMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU2MSw3ICs1NjEsNyBAQCBQcm9j ZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJLyogU3VwcG9ydCBleHRl cm5hbCB1c2UgZm9yIG9wdGlvbiBzYW5pdHkgY2hlY2tpbmcgKi8KIAlpZiAob3B0c19vdXQg PT0gTlVMTCkKLQkJb3B0c19vdXQgPSAoQ29weUZvcm1hdE9wdGlvbnMgKikgcGFsbG9jMChz aXplb2YoQ29weUZvcm1hdE9wdGlvbnMpKTsKKwkJb3B0c19vdXQgPSBwYWxsb2MwX29iamVj dChDb3B5Rm9ybWF0T3B0aW9ucyk7CiAKIAlvcHRzX291dC0+ZmlsZV9lbmNvZGluZyA9IC0x OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAxMjc4MTk2M2I0Zi4uMmFlM2Qy YmE4NmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMzY0LDcgKzM2NCw3IEBA IENvcHlNdWx0aUluc2VydEJ1ZmZlckluaXQoUmVzdWx0UmVsSW5mbyAqcnJpKQogewogCUNv cHlNdWx0aUluc2VydEJ1ZmZlciAqYnVmZmVyOwogCi0JYnVmZmVyID0gKENvcHlNdWx0aUlu c2VydEJ1ZmZlciAqKSBwYWxsb2Moc2l6ZW9mKENvcHlNdWx0aUluc2VydEJ1ZmZlcikpOwor CWJ1ZmZlciA9IHBhbGxvY19vYmplY3QoQ29weU11bHRpSW5zZXJ0QnVmZmVyKTsKIAltZW1z ZXQoYnVmZmVyLT5zbG90cywgMCwgc2l6ZW9mKFR1cGxlVGFibGVTbG90ICopICogTUFYX0JV RkZFUkVEX1RVUExFUyk7CiAJYnVmZmVyLT5yZXN1bHRSZWxJbmZvID0gcnJpOwogCWJ1ZmZl ci0+YmlzdGF0ZSA9IChycmktPnJpX0Zkd1JvdXRpbmUgPT0gTlVMTCkgPyBHZXRCdWxrSW5z ZXJ0U3RhdGUoKSA6IE5VTEw7CkBAIC0xNTU4LDcgKzE1NTgsNyBAQCBCZWdpbkNvcHlGcm9t KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAl9OwogCiAJLyogQWxsb2NhdGUgd29ya3NwYWNlIGFu ZCB6ZXJvIGFsbCBmaWVsZHMgKi8KLQljc3RhdGUgPSAoQ29weUZyb21TdGF0ZURhdGEgKikg cGFsbG9jMChzaXplb2YoQ29weUZyb21TdGF0ZURhdGEpKTsKKwljc3RhdGUgPSBwYWxsb2Mw X29iamVjdChDb3B5RnJvbVN0YXRlRGF0YSk7CiAKIAkvKgogCSAqIFdlIGFsbG9jYXRlIGV2 ZXJ5dGhpbmcgdXNlZCBieSBhIGNzdGF0ZSBpbiBhIG5ldyBtZW1vcnkgY29udGV4dC4gVGhp cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBjZWY0NTI1ODRlNS4uZGFlOTE2MzBhYzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC03MjAsNyArNzIwLDcgQEAgQmVnaW5Db3B5 VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAKIAkvKiBBbGxvY2F0ZSB3b3Jrc3BhY2UgYW5k IHplcm8gYWxsIGZpZWxkcyAqLwotCWNzdGF0ZSA9IChDb3B5VG9TdGF0ZURhdGEgKikgcGFs bG9jMChzaXplb2YoQ29weVRvU3RhdGVEYXRhKSk7CisJY3N0YXRlID0gcGFsbG9jMF9vYmpl Y3QoQ29weVRvU3RhdGVEYXRhKTsKIAogCS8qCiAJICogV2UgYWxsb2NhdGUgZXZlcnl0aGlu ZyB1c2VkIGJ5IGEgY3N0YXRlIGluIGEgbmV3IG1lbW9yeSBjb250ZXh0LiBUaGlzCkBAIC0x NTI3LDcgKzE1MjcsNyBAQCBjb3B5X2Rlc3RfZGVzdHJveShEZXN0UmVjZWl2ZXIgKnNlbGYp CiBEZXN0UmVjZWl2ZXIgKgogQ3JlYXRlQ29weURlc3RSZWNlaXZlcih2b2lkKQogewotCURS X2NvcHkgICAgKnNlbGYgPSAoRFJfY29weSAqKSBwYWxsb2Moc2l6ZW9mKERSX2NvcHkpKTsK KwlEUl9jb3B5ICAgICpzZWxmID0gcGFsbG9jX29iamVjdChEUl9jb3B5KTsKIAogCXNlbGYt PnB1Yi5yZWNlaXZlU2xvdCA9IGNvcHlfZGVzdF9yZWNlaXZlOwogCXNlbGYtPnB1Yi5yU3Rh cnR1cCA9IGNvcHlfZGVzdF9zdGFydHVwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5k ZXggMWNjYzJlNTVjNjQuLmRkYzQ1ZTNhYTBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKQEAgLTQzOSw3ICs0MzksNyBAQCBDcmVhdGVUYWJsZUFzUmVsRXhpc3RzKENyZWF0ZVRh YmxlQXNTdG10ICpjdGFzKQogRGVzdFJlY2VpdmVyICoKIENyZWF0ZUludG9SZWxEZXN0UmVj ZWl2ZXIoSW50b0NsYXVzZSAqaW50b0NsYXVzZSkKIHsKLQlEUl9pbnRvcmVsICpzZWxmID0g KERSX2ludG9yZWwgKikgcGFsbG9jMChzaXplb2YoRFJfaW50b3JlbCkpOworCURSX2ludG9y ZWwgKnNlbGYgPSBwYWxsb2MwX29iamVjdChEUl9pbnRvcmVsKTsKIAogCXNlbGYtPnB1Yi5y ZWNlaXZlU2xvdCA9IGludG9yZWxfcmVjZWl2ZTsKIAlzZWxmLT5wdWIuclN0YXJ0dXAgPSBp bnRvcmVsX3N0YXJ0dXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNv bW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKaW5kZXggNGQ2 NWU4YzQ2YzIuLmMxMjc3N2Y0NDY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5j CkBAIC00MzEsNyArNDMxLDcgQEAgU2NhblNvdXJjZURhdGFiYXNlUGdDbGFzc1R1cGxlKEhl YXBUdXBsZURhdGEgKnR1cGxlLCBPaWQgdGJpZCwgT2lkIGRiaWQsCiAJCQkgY2xhc3NGb3Jt LT5vaWQpOwogCiAJLyogUHJlcGFyZSBhIHJlbCBpbmZvIGVsZW1lbnQgYW5kIGFkZCBpdCB0 byB0aGUgbGlzdC4gKi8KLQlyZWxpbmZvID0gKENyZWF0ZURCUmVsSW5mbyAqKSBwYWxsb2Mo c2l6ZW9mKENyZWF0ZURCUmVsSW5mbykpOworCXJlbGluZm8gPSBwYWxsb2Nfb2JqZWN0KENy ZWF0ZURCUmVsSW5mbyk7CiAJaWYgKE9pZElzVmFsaWQoY2xhc3NGb3JtLT5yZWx0YWJsZXNw YWNlKSkKIAkJcmVsaW5mby0+cmxvY2F0b3Iuc3BjT2lkID0gY2xhc3NGb3JtLT5yZWx0YWJs ZXNwYWNlOwogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRl eCBmMzQ4NjhkYTVhYi4uZTcxODIzMDgxMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMKQEAgLTM2NCw3ICszNjQsNyBAQCBmaWx0ZXJfbGlzdF90b19hcnJheShM aXN0ICpmaWx0ZXJsaXN0KQogCWludAkJCWkgPSAwLAogCQkJCWwgPSBsaXN0X2xlbmd0aChm aWx0ZXJsaXN0KTsKIAotCWRhdGEgPSAoRGF0dW0gKikgcGFsbG9jKGwgKiBzaXplb2YoRGF0 dW0pKTsKKwlkYXRhID0gcGFsbG9jX2FycmF5KERhdHVtLCBsKTsKIAogCWZvcmVhY2gobGMs IGZpbHRlcmxpc3QpCiAJewpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgRXZlbnRUcmlnZ2VyU1FM RHJvcEFkZE9iamVjdChjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgb3JpZ2lu YWwsIGJvb2wgbm8KIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50 RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CiAKLQlvYmogPSBwYWxsb2MwKHNpemVvZihTUUxE cm9wT2JqZWN0KSk7CisJb2JqID0gcGFsbG9jMF9vYmplY3QoU1FMRHJvcE9iamVjdCk7CiAJ b2JqLT5hZGRyZXNzID0gKm9iamVjdDsKIAlvYmotPm9yaWdpbmFsID0gb3JpZ2luYWw7CiAJ b2JqLT5ub3JtYWwgPSBub3JtYWw7CkBAIC0xNzI2LDcgKzE3MjYsNyBAQCBFdmVudFRyaWdn ZXJDb2xsZWN0U2ltcGxlQ29tbWFuZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAKIAlvbGRj eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5j eHQpOwogCi0JY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOwor CWNvbW1hbmQgPSBwYWxsb2Nfb2JqZWN0KENvbGxlY3RlZENvbW1hbmQpOwogCiAJY29tbWFu ZC0+dHlwZSA9IFNDVF9TaW1wbGU7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRp bmdfZXh0ZW5zaW9uOwpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgRXZlbnRUcmlnZ2VyQWx0ZXJU YWJsZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSkKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CiAKLQljb21tYW5kID0g cGFsbG9jKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CisJY29tbWFuZCA9IHBhbGxvY19v YmplY3QoQ29sbGVjdGVkQ29tbWFuZCk7CiAKIAljb21tYW5kLT50eXBlID0gU0NUX0FsdGVy VGFibGU7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOwpA QCAtMTgxOCw3ICsxODE4LDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJj bWQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCiAKIAlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwog Ci0JbmV3c3ViID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRBVFN1YmNtZCkpOworCW5ld3N1 YiA9IHBhbGxvY19vYmplY3QoQ29sbGVjdGVkQVRTdWJjbWQpOwogCW5ld3N1Yi0+YWRkcmVz cyA9IGFkZHJlc3M7CiAJbmV3c3ViLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0KHN1YmNtZCk7 CiAKQEAgLTE4OTIsNyArMTg5Miw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RHcmFudChJbnRl cm5hbEdyYW50ICppc3RtdCkKIAkvKgogCSAqIFRoaXMgaXMgdGVkaW91cywgYnV0IG5lY2Vz c2FyeS4KIAkgKi8KLQlpY29weSA9IHBhbGxvYyhzaXplb2YoSW50ZXJuYWxHcmFudCkpOwor CWljb3B5ID0gcGFsbG9jX29iamVjdChJbnRlcm5hbEdyYW50KTsKIAltZW1jcHkoaWNvcHks IGlzdG10LCBzaXplb2YoSW50ZXJuYWxHcmFudCkpOwogCWljb3B5LT5vYmplY3RzID0gbGlz dF9jb3B5KGlzdG10LT5vYmplY3RzKTsKIAlpY29weS0+Z3JhbnRlZXMgPSBsaXN0X2NvcHko aXN0bXQtPmdyYW50ZWVzKTsKQEAgLTE5MDEsNyArMTkwMSw3IEBAIEV2ZW50VHJpZ2dlckNv bGxlY3RHcmFudChJbnRlcm5hbEdyYW50ICppc3RtdCkKIAkJaWNvcHktPmNvbF9wcml2cyA9 IGxhcHBlbmQoaWNvcHktPmNvbF9wcml2cywgY29weU9iamVjdChsZmlyc3QoY2VsbCkpKTsK IAogCS8qIE5vdyBjb2xsZWN0IGl0LCB1c2luZyB0aGUgY29waWVkIEludGVybmFsR3JhbnQg Ki8KLQljb21tYW5kID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CisJY29t bWFuZCA9IHBhbGxvY19vYmplY3QoQ29sbGVjdGVkQ29tbWFuZCk7CiAJY29tbWFuZC0+dHlw ZSA9IFNDVF9HcmFudDsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRl bnNpb247CiAJY29tbWFuZC0+ZC5ncmFudC5pc3RtdCA9IGljb3B5OwpAQCAtMTkzMiw3ICsx OTMyLDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyT3BGYW0oQWx0ZXJPcEZhbWlseVN0 bXQgKnN0bXQsIE9pZCBvcGZhbW9pZCwKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CiAKLQljb21tYW5kID0gcGFs bG9jKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CisJY29tbWFuZCA9IHBhbGxvY19vYmpl Y3QoQ29sbGVjdGVkQ29tbWFuZCk7CiAJY29tbWFuZC0+dHlwZSA9IFNDVF9BbHRlck9wRmFt aWx5OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKIAlP YmplY3RBZGRyZXNzU2V0KGNvbW1hbmQtPmQub3BmYW0uYWRkcmVzcywKQEAgLTE5NjUsNyAr MTk2NSw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RDcmVhdGVPcENsYXNzKENyZWF0ZU9wQ2xh c3NTdG10ICpzdG10LCBPaWQgb3Bjb2lkLAogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKIAotCWNvbW1hbmQgPSBw YWxsb2MwKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CisJY29tbWFuZCA9IHBhbGxvYzBf b2JqZWN0KENvbGxlY3RlZENvbW1hbmQpOwogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfQ3JlYXRl T3BDbGFzczsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247 CiAJT2JqZWN0QWRkcmVzc1NldChjb21tYW5kLT5kLmNyZWF0ZW9wYy5hZGRyZXNzLApAQCAt MTk5OSwxMiArMTk5OSwxMiBAQCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUU0NvbmZpZyhB bHRlclRTQ29uZmlndXJhdGlvblN0bXQgKnN0bXQsIE9pZCBjZmdJZCwKIAogCW9sZGN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7 CiAKLQljb21tYW5kID0gcGFsbG9jMChzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNv bW1hbmQgPSBwYWxsb2MwX29iamVjdChDb2xsZWN0ZWRDb21tYW5kKTsKIAljb21tYW5kLT50 eXBlID0gU0NUX0FsdGVyVFNDb25maWc7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3Jl YXRpbmdfZXh0ZW5zaW9uOwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFuZC0+ZC5hdHNjZmcu YWRkcmVzcywKIAkJCQkJIFRTQ29uZmlnUmVsYXRpb25JZCwgY2ZnSWQpOwotCWNvbW1hbmQt PmQuYXRzY2ZnLmRpY3RJZHMgPSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBuZGljdHMpOworCWNv bW1hbmQtPmQuYXRzY2ZnLmRpY3RJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBuZGljdHMpOwog CW1lbWNweShjb21tYW5kLT5kLmF0c2NmZy5kaWN0SWRzLCBkaWN0SWRzLCBzaXplb2YoT2lk KSAqIG5kaWN0cyk7CiAJY29tbWFuZC0+ZC5hdHNjZmcubmRpY3RzID0gbmRpY3RzOwogCWNv bW1hbmQtPnBhcnNldHJlZSA9IChOb2RlICopIGNvcHlPYmplY3Qoc3RtdCk7CkBAIC0yMDMz LDcgKzIwMzMsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJEZWZQcml2cyhBbHRlckRl ZmF1bHRQcml2aWxlZ2VzU3RtdCAqc3RtdCkKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CiAKLQljb21tYW5kID0g cGFsbG9jMChzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCWNvbW1hbmQgPSBwYWxsb2Mw X29iamVjdChDb2xsZWN0ZWRDb21tYW5kKTsKIAljb21tYW5kLT50eXBlID0gU0NUX0FsdGVy RGVmYXVsdFByaXZpbGVnZXM7CiAJY29tbWFuZC0+ZC5kZWZwcml2cy5vYmp0eXBlID0gc3Rt dC0+YWN0aW9uLT5vYmp0eXBlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5n X2V4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA3ZTY5OWY4NTk1ZS4u NWE2MzkwNjMxZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQ5ODAsNyArNDk4 MCw3IEBAIEV4cGxhaW5DcmVhdGVXb3JrZXJzU3RhdGUoaW50IG51bV93b3JrZXJzKQogewog CUV4cGxhaW5Xb3JrZXJzU3RhdGUgKndzdGF0ZTsKIAotCXdzdGF0ZSA9IChFeHBsYWluV29y a2Vyc1N0YXRlICopIHBhbGxvYyhzaXplb2YoRXhwbGFpbldvcmtlcnNTdGF0ZSkpOworCXdz dGF0ZSA9IHBhbGxvY19vYmplY3QoRXhwbGFpbldvcmtlcnNTdGF0ZSk7CiAJd3N0YXRlLT5u dW1fd29ya2VycyA9IG51bV93b3JrZXJzOwogCXdzdGF0ZS0+d29ya2VyX2luaXRlZCA9IChi b29sICopIHBhbGxvYzAobnVtX3dvcmtlcnMgKiBzaXplb2YoYm9vbCkpOwogCXdzdGF0ZS0+ d29ya2VyX3N0ciA9IChTdHJpbmdJbmZvRGF0YSAqKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbl9kci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bl9kci5jCmluZGV4IDk1Njg1ZDdlODhkLi41ODMzYWE4MGZiNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9kci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW5fZHIuYwpAQCAtMjc2LDcgKzI3Niw3IEBAIENyZWF0ZUV4cGxhaW5TZXJp YWxpemVEZXN0UmVjZWl2ZXIoRXhwbGFpblN0YXRlICplcykKIHsKIAlTZXJpYWxpemVEZXN0 UmVjZWl2ZXIgKnNlbGY7CiAKLQlzZWxmID0gKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBw YWxsb2MwKHNpemVvZihTZXJpYWxpemVEZXN0UmVjZWl2ZXIpKTsKKwlzZWxmID0gcGFsbG9j MF9vYmplY3QoU2VyaWFsaXplRGVzdFJlY2VpdmVyKTsKIAogCXNlbGYtPnB1Yi5yZWNlaXZl U2xvdCA9IHNlcmlhbGl6ZUFuYWx5emVSZWNlaXZlOwogCXNlbGYtPnB1Yi5yU3RhcnR1cCA9 IHNlcmlhbGl6ZUFuYWx5emVTdGFydHVwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbl9zdGF0ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9z dGF0ZS5jCmluZGV4IDlmZGVlYWI2NDM2Li42ZTI2ZWM5YjMxZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fc3RhdGUuYwpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW50CUV4 cGxhaW5FeHRlbnNpb25PcHRpb25zQWxsb2NhdGVkID0gMDsKIEV4cGxhaW5TdGF0ZSAqCiBO ZXdFeHBsYWluU3RhdGUodm9pZCkKIHsKLQlFeHBsYWluU3RhdGUgKmVzID0gKEV4cGxhaW5T dGF0ZSAqKSBwYWxsb2MwKHNpemVvZihFeHBsYWluU3RhdGUpKTsKKwlFeHBsYWluU3RhdGUg KmVzID0gcGFsbG9jMF9vYmplY3QoRXhwbGFpblN0YXRlKTsKIAogCS8qIFNldCBkZWZhdWx0 IG9wdGlvbnMgKG1vc3QgZmllbGRzIGNhbiBiZSBsZWZ0IGFzIHplcm9lcykuICovCiAJZXMt PmNvc3RzID0gdHJ1ZTsKQEAgLTI5MywxMCArMjkzLDcgQEAgU2V0RXhwbGFpbkV4dGVuc2lv blN0YXRlKEV4cGxhaW5TdGF0ZSAqZXMsIGludCBleHRlbnNpb25faWQsIHZvaWQgKm9wYXF1 ZSkKIAkJaW50CQkJaTsKIAogCQlpID0gcGdfbmV4dHBvd2VyMl8zMihleHRlbnNpb25faWQg KyAxKTsKLQkJZXMtPmV4dGVuc2lvbl9zdGF0ZSA9ICh2b2lkICoqKQotCQkJcmVwYWxsb2Mw KGVzLT5leHRlbnNpb25fc3RhdGUsCi0JCQkJCSAgZXMtPmV4dGVuc2lvbl9zdGF0ZV9hbGxv Y2F0ZWQgKiBzaXplb2Yodm9pZCAqKSwKLQkJCQkJICBpICogc2l6ZW9mKHZvaWQgKikpOwor CQllcy0+ZXh0ZW5zaW9uX3N0YXRlID0gcmVwYWxsb2MwX2FycmF5KGVzLT5leHRlbnNpb25f c3RhdGUsIHZvaWQgKiwgZXMtPmV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQsIGkpOwogCQll cy0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCA9IGk7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCmluZGV4IGViYzIwNGM0NDYyLi5jNDNiNzRlMzE5ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTcyNCw3ICs3MjQsNyBAQCByZWFkX2V4dGVuc2lv bl9hdXhfY29udHJvbF9maWxlKGNvbnN0IEV4dGVuc2lvbkNvbnRyb2xGaWxlICpwY29udHJv bCwKIAkvKgogCSAqIEZsYXQtY29weSB0aGUgc3RydWN0LiAgUG9pbnRlciBmaWVsZHMgc2hh cmUgdmFsdWVzIHdpdGggb3JpZ2luYWwuCiAJICovCi0JYWNvbnRyb2wgPSAoRXh0ZW5zaW9u Q29udHJvbEZpbGUgKikgcGFsbG9jKHNpemVvZihFeHRlbnNpb25Db250cm9sRmlsZSkpOwor CWFjb250cm9sID0gcGFsbG9jX29iamVjdChFeHRlbnNpb25Db250cm9sRmlsZSk7CiAJbWVt Y3B5KGFjb250cm9sLCBwY29udHJvbCwgc2l6ZW9mKEV4dGVuc2lvbkNvbnRyb2xGaWxlKSk7 CiAKIAkvKgpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgZ2V0X2V4dF92ZXJfaW5mbyhjb25zdCBj aGFyICp2ZXJzaW9ubmFtZSwgTGlzdCAqKmV2aV9saXN0KQogCQkJcmV0dXJuIGV2aTsKIAl9 CiAKLQlldmkgPSAoRXh0ZW5zaW9uVmVyc2lvbkluZm8gKikgcGFsbG9jKHNpemVvZihFeHRl bnNpb25WZXJzaW9uSW5mbykpOworCWV2aSA9IHBhbGxvY19vYmplY3QoRXh0ZW5zaW9uVmVy c2lvbkluZm8pOwogCWV2aS0+bmFtZSA9IHBzdHJkdXAodmVyc2lvbm5hbWUpOwogCWV2aS0+ cmVhY2hhYmxlID0gTklMOwogCWV2aS0+aW5zdGFsbGFibGUgPSBmYWxzZTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKaW5kZXggNTlkMDA2MzhlZTYuLjhhNDM1Y2Q5M2Ri IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYwpAQCAtOTEzLDcgKzkxMyw3 IEBAIGludGVycHJldF9BU19jbGF1c2UoT2lkIGxhbmd1YWdlT2lkLCBjb25zdCBjaGFyICps YW5ndWFnZU5hbWUsCiAJewogCQlTUUxGdW5jdGlvblBhcnNlSW5mb1B0ciBwaW5mbzsKIAot CQlwaW5mbyA9IChTUUxGdW5jdGlvblBhcnNlSW5mb1B0cikgcGFsbG9jMChzaXplb2YoU1FM RnVuY3Rpb25QYXJzZUluZm8pKTsKKwkJcGluZm8gPSBwYWxsb2MwX29iamVjdChTUUxGdW5j dGlvblBhcnNlSW5mbyk7CiAKIAkJcGluZm8tPmZuYW1lID0gZnVuY25hbWU7CiAJCXBpbmZv LT5uYXJncyA9IGxpc3RfbGVuZ3RoKHBhcmFtZXRlclR5cGVzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYwppbmRleCBlZjdjMGQ2MjRmMS4uZjYzZjg3NTNiMDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMKQEAgLTQ2Myw3ICs0NjMsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZp bGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiBEZXN0UmVjZWl2ZXIgKgog Q3JlYXRlVHJhbnNpZW50UmVsRGVzdFJlY2VpdmVyKE9pZCB0cmFuc2llbnRvaWQpCiB7Ci0J RFJfdHJhbnNpZW50cmVsICpzZWxmID0gKERSX3RyYW5zaWVudHJlbCAqKSBwYWxsb2MwKHNp emVvZihEUl90cmFuc2llbnRyZWwpKTsKKwlEUl90cmFuc2llbnRyZWwgKnNlbGYgPSBwYWxs b2MwX29iamVjdChEUl90cmFuc2llbnRyZWwpOwogCiAJc2VsZi0+cHViLnJlY2VpdmVTbG90 ID0gdHJhbnNpZW50cmVsX3JlY2VpdmU7CiAJc2VsZi0+cHViLnJTdGFydHVwID0gdHJhbnNp ZW50cmVsX3N0YXJ0dXA7CkBAIC03MTMsNyArNzEzLDcgQEAgcmVmcmVzaF9ieV9tYXRjaF9t ZXJnZShPaWQgbWF0dmlld09pZCwgT2lkIHRlbXBPaWQsIE9pZCByZWxvd25lciwKIAkgKiBp bmNsdWRlIGFsbCByb3dzLgogCSAqLwogCXR1cGRlc2MgPSBtYXR2aWV3UmVsLT5yZF9hdHQ7 Ci0Jb3BVc2VkRm9yUXVhbCA9IChPaWQgKikgcGFsbG9jMChzaXplb2YoT2lkKSAqIHJlbG5h dHRzKTsKKwlvcFVzZWRGb3JRdWFsID0gcGFsbG9jMF9hcnJheShPaWQsIHJlbG5hdHRzKTsK IAlmb3VuZFVuaXF1ZUluZGV4ID0gZmFsc2U7CiAKIAlpbmRleG9pZGxpc3QgPSBSZWxhdGlv bkdldEluZGV4TGlzdChtYXR2aWV3UmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL29wY2xhc3NjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9vcGNsYXNzY21k cy5jCmluZGV4IGE2ZGQ4ZWFiNTE4Li45OTJhZTc4OWIwMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvb3BjbGFzc2NtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9vcGNsYXNzY21kcy5jCkBAIC01MjMsNyArNTIzLDcgQEAgRGVmaW5lT3BDbGFzcyhDcmVh dGVPcENsYXNzU3RtdCAqc3RtdCkKICNlbmRpZgogCiAJCQkJLyogU2F2ZSB0aGUgaW5mbyAq LwotCQkJCW1lbWJlciA9IChPcEZhbWlseU1lbWJlciAqKSBwYWxsb2MwKHNpemVvZihPcEZh bWlseU1lbWJlcikpOworCQkJCW1lbWJlciA9IHBhbGxvYzBfb2JqZWN0KE9wRmFtaWx5TWVt YmVyKTsKIAkJCQltZW1iZXItPmlzX2Z1bmMgPSBmYWxzZTsKIAkJCQltZW1iZXItPm9iamVj dCA9IG9wZXJPaWQ7CiAJCQkJbWVtYmVyLT5udW1iZXIgPSBpdGVtLT5udW1iZXI7CkBAIC01 NDcsNyArNTQ3LDcgQEAgRGVmaW5lT3BDbGFzcyhDcmVhdGVPcENsYXNzU3RtdCAqc3RtdCkK IAkJCQkJCQkJICAgZ2V0X2Z1bmNfbmFtZShmdW5jT2lkKSk7CiAjZW5kaWYKIAkJCQkvKiBT YXZlIHRoZSBpbmZvICovCi0JCQkJbWVtYmVyID0gKE9wRmFtaWx5TWVtYmVyICopIHBhbGxv YzAoc2l6ZW9mKE9wRmFtaWx5TWVtYmVyKSk7CisJCQkJbWVtYmVyID0gcGFsbG9jMF9vYmpl Y3QoT3BGYW1pbHlNZW1iZXIpOwogCQkJCW1lbWJlci0+aXNfZnVuYyA9IHRydWU7CiAJCQkJ bWVtYmVyLT5vYmplY3QgPSBmdW5jT2lkOwogCQkJCW1lbWJlci0+bnVtYmVyID0gaXRlbS0+ bnVtYmVyOwpAQCAtOTQwLDcgKzk0MCw3IEBAIEFsdGVyT3BGYW1pbHlBZGQoQWx0ZXJPcEZh bWlseVN0bXQgKnN0bXQsIE9pZCBhbW9pZCwgT2lkIG9wZmFtaWx5b2lkLAogI2VuZGlmCiAK IAkJCQkvKiBTYXZlIHRoZSBpbmZvICovCi0JCQkJbWVtYmVyID0gKE9wRmFtaWx5TWVtYmVy ICopIHBhbGxvYzAoc2l6ZW9mKE9wRmFtaWx5TWVtYmVyKSk7CisJCQkJbWVtYmVyID0gcGFs bG9jMF9vYmplY3QoT3BGYW1pbHlNZW1iZXIpOwogCQkJCW1lbWJlci0+aXNfZnVuYyA9IGZh bHNlOwogCQkJCW1lbWJlci0+b2JqZWN0ID0gb3Blck9pZDsKIAkJCQltZW1iZXItPm51bWJl ciA9IGl0ZW0tPm51bWJlcjsKQEAgLTk3MCw3ICs5NzAsNyBAQCBBbHRlck9wRmFtaWx5QWRk KEFsdGVyT3BGYW1pbHlTdG10ICpzdG10LCBPaWQgYW1vaWQsIE9pZCBvcGZhbWlseW9pZCwK ICNlbmRpZgogCiAJCQkJLyogU2F2ZSB0aGUgaW5mbyAqLwotCQkJCW1lbWJlciA9IChPcEZh bWlseU1lbWJlciAqKSBwYWxsb2MwKHNpemVvZihPcEZhbWlseU1lbWJlcikpOworCQkJCW1l bWJlciA9IHBhbGxvYzBfb2JqZWN0KE9wRmFtaWx5TWVtYmVyKTsKIAkJCQltZW1iZXItPmlz X2Z1bmMgPSB0cnVlOwogCQkJCW1lbWJlci0+b2JqZWN0ID0gZnVuY09pZDsKIAkJCQltZW1i ZXItPm51bWJlciA9IGl0ZW0tPm51bWJlcjsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIEFsdGVy T3BGYW1pbHlEcm9wKEFsdGVyT3BGYW1pbHlTdG10ICpzdG10LCBPaWQgYW1vaWQsIE9pZCBv cGZhbWlseW9pZCwKIAkJCQkJCQkJCWl0ZW0tPm51bWJlciwgbWF4T3BOdW1iZXIpKSk7CiAJ CQkJcHJvY2Vzc1R5cGVzU3BlYyhpdGVtLT5jbGFzc19hcmdzLCAmbGVmdHR5cGUsICZyaWdo dHR5cGUpOwogCQkJCS8qIFNhdmUgdGhlIGluZm8gKi8KLQkJCQltZW1iZXIgPSAoT3BGYW1p bHlNZW1iZXIgKikgcGFsbG9jMChzaXplb2YoT3BGYW1pbHlNZW1iZXIpKTsKKwkJCQltZW1i ZXIgPSBwYWxsb2MwX29iamVjdChPcEZhbWlseU1lbWJlcik7CiAJCQkJbWVtYmVyLT5pc19m dW5jID0gZmFsc2U7CiAJCQkJbWVtYmVyLT5udW1iZXIgPSBpdGVtLT5udW1iZXI7CiAJCQkJ bWVtYmVyLT5sZWZ0dHlwZSA9IGxlZnR0eXBlOwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgQWx0 ZXJPcEZhbWlseURyb3AoQWx0ZXJPcEZhbWlseVN0bXQgKnN0bXQsIE9pZCBhbW9pZCwgT2lk IG9wZmFtaWx5b2lkLAogCQkJCQkJCQkJaXRlbS0+bnVtYmVyLCBtYXhQcm9jTnVtYmVyKSkp OwogCQkJCXByb2Nlc3NUeXBlc1NwZWMoaXRlbS0+Y2xhc3NfYXJncywgJmxlZnR0eXBlLCAm cmlnaHR0eXBlKTsKIAkJCQkvKiBTYXZlIHRoZSBpbmZvICovCi0JCQkJbWVtYmVyID0gKE9w RmFtaWx5TWVtYmVyICopIHBhbGxvYzAoc2l6ZW9mKE9wRmFtaWx5TWVtYmVyKSk7CisJCQkJ bWVtYmVyID0gcGFsbG9jMF9vYmplY3QoT3BGYW1pbHlNZW1iZXIpOwogCQkJCW1lbWJlci0+ aXNfZnVuYyA9IHRydWU7CiAJCQkJbWVtYmVyLT5udW1iZXIgPSBpdGVtLT5udW1iZXI7CiAJ CQkJbWVtYmVyLT5sZWZ0dHlwZSA9IGxlZnR0eXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcG9saWN5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYwpp bmRleCA4MzA1Njk2MGZlNC4uNWJkNWY4Yzk5NjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3BvbGljeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5j CkBAIC0xNDQsNyArMTQ0LDcgQEAgcG9saWN5X3JvbGVfbGlzdF90b19hcnJheShMaXN0ICpy b2xlcywgaW50ICpudW1fcm9sZXMpCiAJaWYgKHJvbGVzID09IE5JTCkKIAl7CiAJCSpudW1f cm9sZXMgPSAxOwotCQlyb2xlX29pZHMgPSAoRGF0dW0gKikgcGFsbG9jKCpudW1fcm9sZXMg KiBzaXplb2YoRGF0dW0pKTsKKwkJcm9sZV9vaWRzID0gcGFsbG9jX2FycmF5KERhdHVtLCAq bnVtX3JvbGVzKTsKIAkJcm9sZV9vaWRzWzBdID0gT2JqZWN0SWRHZXREYXR1bShBQ0xfSURf UFVCTElDKTsKIAogCQlyZXR1cm4gcm9sZV9vaWRzOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJl bW92ZVJvbGVGcm9tT2JqZWN0UG9saWN5KE9pZCByb2xlaWQsIE9pZCBjbGFzc2lkLCBPaWQg cG9saWN5X2lkKQogCSAqIE9yZGluYXJpbHkgdGhlcmUnZCBiZSBleGFjdGx5IG9uZSwgYnV0 IHdlIG11c3QgY29wZSB3aXRoIGR1cGxpY2F0ZQogCSAqIG1lbnRpb25zLCBzaW5jZSBDUkVB VEUvQUxURVIgUE9MSUNZIGhpc3RvcmljYWxseSBoYXZlIGFsbG93ZWQgdGhhdC4KIAkgKi8K LQlyb2xlX29pZHMgPSAoRGF0dW0gKikgcGFsbG9jKG51bV9yb2xlcyAqIHNpemVvZihEYXR1 bSkpOworCXJvbGVfb2lkcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbnVtX3JvbGVzKTsKIAlm b3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bV9yb2xlczsgaSsrKQogCXsKIAkJaWYgKHJvbGVz W2ldICE9IHJvbGVpZCkKQEAgLTk0NSw3ICs5NDUsNyBAQCBBbHRlclBvbGljeShBbHRlclBv bGljeVN0bXQgKnN0bXQpCiAKIAkJbml0ZW1zID0gQVJSX0RJTVMocG9saWN5X3JvbGVzKVsw XTsKIAotCQlyb2xlX29pZHMgPSAoRGF0dW0gKikgcGFsbG9jKG5pdGVtcyAqIHNpemVvZihE YXR1bSkpOworCQlyb2xlX29pZHMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5pdGVtcyk7CiAK IAkJZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKQogCQkJcm9sZV9vaWRzW2ldID0gT2Jq ZWN0SWRHZXREYXR1bShyb2xlc1tpXSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCmluZGV4IDFmYWYzYThjMzcyLi5hMTk4MzUwODk1MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTEzNDUsNyArMTM0NSw3IEBAIEFs dGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBU dXBsZSB0dXAsCiAJCQkgKi8KIAkJCWlmICghZm91bmQpCiAJCQl7Ci0JCQkJb2xkcmVsID0g cGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKKwkJCQlvbGRyZWwgPSBwYWxs b2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7CiAJCQkJb2xkcmVsLT53aGVyZUNsYXVz ZSA9IE5VTEw7CiAJCQkJb2xkcmVsLT5jb2x1bW5zID0gTklMOwogCQkJCW9sZHJlbC0+cmVs YXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLApAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgT3Bl blRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCXB1Yl9y ZWwgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOworCQlwdWJfcmVsID0g cGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwogCQlwdWJfcmVsLT5yZWxhdGlv biA9IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJ cHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CkBAIC0xODI2LDcgKzE4MjYsNyBAQCBP cGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGZpbmRfYWxsX2luaGVyaXRv cnMgYWxyZWFkeSBnb3QgbG9jayAqLwogCQkJCXJlbCA9IHRhYmxlX29wZW4oY2hpbGRyZWxp ZCwgTm9Mb2NrKTsKLQkJCQlwdWJfcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJl bEluZm8pKTsKKwkJCQlwdWJfcmVsID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbElu Zm8pOwogCQkJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQkJCS8qIGNoaWxkIGluaGVy aXRzIFdIRVJFIGNsYXVzZSBmcm9tIHBhcmVudCAqLwogCQkJCXB1Yl9yZWwtPndoZXJlQ2xh dXNlID0gdC0+d2hlcmVDbGF1c2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCBj ZWU1ZDdiYmI5Yy4uMDdiZWQ2ZTE0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpA QCAtNTczLDcgKzU3Myw3IEBAIHJlZ2lzdGVyX2xhYmVsX3Byb3ZpZGVyKGNvbnN0IGNoYXIg KnByb3ZpZGVyX25hbWUsIGNoZWNrX29iamVjdF9yZWxhYmVsX3R5cGUgaG9vCiAJTWVtb3J5 Q29udGV4dCBvbGRjeHQ7CiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9w TWVtb3J5Q29udGV4dCk7Ci0JcHJvdmlkZXIgPSBwYWxsb2Moc2l6ZW9mKExhYmVsUHJvdmlk ZXIpKTsKKwlwcm92aWRlciA9IHBhbGxvY19vYmplY3QoTGFiZWxQcm92aWRlcik7CiAJcHJv dmlkZXItPnByb3ZpZGVyX25hbWUgPSBwc3RyZHVwKHByb3ZpZGVyX25hbWUpOwogCXByb3Zp ZGVyLT5ob29rID0gaG9vazsKIAlsYWJlbF9wcm92aWRlcl9saXN0ID0gbGFwcGVuZChsYWJl bF9wcm92aWRlcl9saXN0LCBwcm92aWRlcik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggOGM4NTZhZjM0OTMuLmFiYmNhZmYwODM4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC01NjYsNyArNTY2LDcg QEAgcHVibGljYXRpb25MaXN0VG9BcnJheShMaXN0ICpwdWJsaXN0KQogCQkJCQkJCQkgICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8obWVtY3h0KTsKIAotCWRhdHVtcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVt KSAqIGxpc3RfbGVuZ3RoKHB1Ymxpc3QpKTsKKwlkYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIGxpc3RfbGVuZ3RoKHB1Ymxpc3QpKTsKIAogCWNoZWNrX2R1cGxpY2F0ZXNfaW5fcHVi bGlzdChwdWJsaXN0LCBkYXR1bXMpOwogCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBBbHRlclN1 YnNjcmlwdGlvbl9yZWZyZXNoKFN1YnNjcmlwdGlvbiAqc3ViLCBib29sIGNvcHlfZGF0YSwK IAkJCXsKIAkJCQljaGFyCQlzdGF0ZTsKIAkJCQlYTG9nUmVjUHRyCXN0YXRlbHNuOwotCQkJ CVN1YlJlbW92ZVJlbHMgKnJlbW92ZV9yZWwgPSBwYWxsb2Moc2l6ZW9mKFN1YlJlbW92ZVJl bHMpKTsKKwkJCQlTdWJSZW1vdmVSZWxzICpyZW1vdmVfcmVsID0gcGFsbG9jX29iamVjdChT dWJSZW1vdmVSZWxzKTsKIAogCQkJCS8qCiAJCQkJICogTG9jayBwZ19zdWJzY3JpcHRpb25f cmVsIHdpdGggQWNjZXNzRXhjbHVzaXZlTG9jayB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCAwN2U1Yjk1NzgyZS4uMWM5ZWY1M2JlMjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC05OTksNyArOTk5LDcgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRl U3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAogCQkJQXNzZXJ0KGNv bERlZi0+Y29va2VkX2RlZmF1bHQgPT0gTlVMTCk7CiAKLQkJCXJhd0VudCA9IChSYXdDb2x1 bW5EZWZhdWx0ICopIHBhbGxvYyhzaXplb2YoUmF3Q29sdW1uRGVmYXVsdCkpOworCQkJcmF3 RW50ID0gcGFsbG9jX29iamVjdChSYXdDb2x1bW5EZWZhdWx0KTsKIAkJCXJhd0VudC0+YXR0 bnVtID0gYXR0bnVtOwogCQkJcmF3RW50LT5yYXdfZGVmYXVsdCA9IGNvbERlZi0+cmF3X2Rl ZmF1bHQ7CiAJCQlyYXdFbnQtPmdlbmVyYXRlZCA9IGNvbERlZi0+Z2VuZXJhdGVkOwpAQCAt MTAwOSw3ICsxMDA5LDcgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hh ciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJewogCQkJQ29va2VkQ29uc3RyYWludCAqY29v a2VkOwogCi0JCQljb29rZWQgPSAoQ29va2VkQ29uc3RyYWludCAqKSBwYWxsb2Moc2l6ZW9m KENvb2tlZENvbnN0cmFpbnQpKTsKKwkJCWNvb2tlZCA9IHBhbGxvY19vYmplY3QoQ29va2Vk Q29uc3RyYWludCk7CiAJCQljb29rZWQtPmNvbnR5cGUgPSBDT05TVFJfREVGQVVMVDsKIAkJ CWNvb2tlZC0+Y29ub2lkID0gSW52YWxpZE9pZDsJLyogdW50aWwgY3JlYXRlZCAqLwogCQkJ Y29va2VkLT5uYW1lID0gTlVMTDsKQEAgLTY1NjgsNyArNjU2OCw3IEBAIEFUR2V0UXVldWVF bnRyeShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwpCiAJICogTm90IHRoZXJlLCBzbyBh ZGQgaXQuICBOb3RlIHRoYXQgd2UgbWFrZSBhIGNvcHkgb2YgdGhlIHJlbGF0aW9uJ3MKIAkg KiBleGlzdGluZyBkZXNjcmlwdG9yIGJlZm9yZSBhbnl0aGluZyBpbnRlcmVzdGluZyBjYW4g aGFwcGVuIHRvIGl0LgogCSAqLwotCXRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIHBhbGxv YzAoc2l6ZW9mKEFsdGVyZWRUYWJsZUluZm8pKTsKKwl0YWIgPSBwYWxsb2MwX29iamVjdChB bHRlcmVkVGFibGVJbmZvKTsKIAl0YWItPnJlbGlkID0gcmVsaWQ7CiAJdGFiLT5yZWwgPSBO VUxMOwkJCS8qIHNldCBsYXRlciAqLwogCXRhYi0+cmVsa2luZCA9IHJlbC0+cmRfcmVsLT5y ZWxraW5kOwpAQCAtNzQwNiw3ICs3NDA2LDcgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXsKIAkJUmF3 Q29sdW1uRGVmYXVsdCAqcmF3RW50OwogCi0JCXJhd0VudCA9IChSYXdDb2x1bW5EZWZhdWx0 ICopIHBhbGxvYyhzaXplb2YoUmF3Q29sdW1uRGVmYXVsdCkpOworCQlyYXdFbnQgPSBwYWxs b2Nfb2JqZWN0KFJhd0NvbHVtbkRlZmF1bHQpOwogCQlyYXdFbnQtPmF0dG51bSA9IGF0dHJp YnV0ZS0+YXR0bnVtOwogCQlyYXdFbnQtPnJhd19kZWZhdWx0ID0gY29weU9iamVjdChjb2xE ZWYtPnJhd19kZWZhdWx0KTsKIAkJcmF3RW50LT5nZW5lcmF0ZWQgPSBjb2xEZWYtPmdlbmVy YXRlZDsKQEAgLTc1MDcsNyArNzUwNyw3IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWRlZnZhbCA9 IGV4cHJlc3Npb25fcGxhbm5lcihkZWZ2YWwpOwogCiAJCQkvKiBBZGQgdGhlIG5ldyBkZWZh dWx0IHRvIHRoZSBuZXd2YWxzIGxpc3QgKi8KLQkJCW5ld3ZhbCA9IChOZXdDb2x1bW5WYWx1 ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkpOworCQkJbmV3dmFsID0gcGFs bG9jMF9vYmplY3QoTmV3Q29sdW1uVmFsdWUpOwogCQkJbmV3dmFsLT5hdHRudW0gPSBhdHRy aWJ1dGUtPmF0dG51bTsKIAkJCW5ld3ZhbC0+ZXhwciA9IGRlZnZhbDsKIAkJCW5ld3ZhbC0+ aXNfZ2VuZXJhdGVkID0gKGNvbERlZi0+Z2VuZXJhdGVkICE9ICdcMCcpOwpAQCAtODE3Niw3 ICs4MTc2LDcgQEAgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKmNvbE5hbWUsCiAJCS8qIFNFVCBERUZBVUxUICovCiAJCVJhd0NvbHVtbkRlZmF1bHQg KnJhd0VudDsKIAotCQlyYXdFbnQgPSAoUmF3Q29sdW1uRGVmYXVsdCAqKSBwYWxsb2Moc2l6 ZW9mKFJhd0NvbHVtbkRlZmF1bHQpKTsKKwkJcmF3RW50ID0gcGFsbG9jX29iamVjdChSYXdD b2x1bW5EZWZhdWx0KTsKIAkJcmF3RW50LT5hdHRudW0gPSBhdHRudW07CiAJCXJhd0VudC0+ cmF3X2RlZmF1bHQgPSBuZXdEZWZhdWx0OwogCQlyYXdFbnQtPmdlbmVyYXRlZCA9ICdcMCc7 CkBAIC04NzA0LDcgKzg3MDQsNyBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkg IGZhbHNlLCBmYWxzZSk7CiAKIAkvKiBQcmVwYXJlIHRvIHN0b3JlIHRoZSBuZXcgZXhwcmVz c2lvbiwgaW4gdGhlIGNhdGFsb2dzICovCi0JcmF3RW50ID0gKFJhd0NvbHVtbkRlZmF1bHQg KikgcGFsbG9jKHNpemVvZihSYXdDb2x1bW5EZWZhdWx0KSk7CisJcmF3RW50ID0gcGFsbG9j X29iamVjdChSYXdDb2x1bW5EZWZhdWx0KTsKIAlyYXdFbnQtPmF0dG51bSA9IGF0dG51bTsK IAlyYXdFbnQtPnJhd19kZWZhdWx0ID0gbmV3RXhwcjsKIAlyYXdFbnQtPmdlbmVyYXRlZCA9 IGF0dGdlbmVyYXRlZDsKQEAgLTg3MjEsNyArODcyMSw3IEBAIEFURXhlY1NldEV4cHJlc3Np b24oQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsCiAJCS8qIFByZXBhcmUgZm9yIHRhYmxlIHJld3JpdGUgKi8KIAkJZGVmdmFsID0g KEV4cHIgKikgYnVpbGRfY29sdW1uX2RlZmF1bHQocmVsLCBhdHRudW0pOwogCi0JCW5ld3Zh bCA9IChOZXdDb2x1bW5WYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkp OworCQluZXd2YWwgPSBwYWxsb2MwX29iamVjdChOZXdDb2x1bW5WYWx1ZSk7CiAJCW5ld3Zh bC0+YXR0bnVtID0gYXR0bnVtOwogCQluZXd2YWwtPmV4cHIgPSBleHByZXNzaW9uX3BsYW5u ZXIoZGVmdmFsKTsKIAkJbmV3dmFsLT5pc19nZW5lcmF0ZWQgPSB0cnVlOwpAQCAtOTk0OSw3 ICs5OTQ5LDcgQEAgQVRBZGRDaGVja05OQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJewogCQkJTmV3Q29uc3RyYWlu dCAqbmV3Y29uOwogCi0JCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNp emVvZihOZXdDb25zdHJhaW50KSk7CisJCQluZXdjb24gPSBwYWxsb2MwX29iamVjdChOZXdD b25zdHJhaW50KTsKIAkJCW5ld2Nvbi0+bmFtZSA9IGNjb24tPm5hbWU7CiAJCQluZXdjb24t PmNvbnR5cGUgPSBjY29uLT5jb250eXBlOwogCQkJbmV3Y29uLT5xdWFsID0gY2Nvbi0+ZXhw cjsKQEAgLTEwOTQ2LDcgKzEwOTQ2LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChDb25z dHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICAgZmFs c2UpOwogCQkJaWYgKG1hcCkKIAkJCXsKLQkJCQltYXBwZWRfcGthdHRudW0gPSBwYWxsb2Mo c2l6ZW9mKEF0dHJOdW1iZXIpICogbnVtZmtzKTsKKwkJCQltYXBwZWRfcGthdHRudW0gPSBw YWxsb2NfYXJyYXkoQXR0ck51bWJlciwgbnVtZmtzKTsKIAkJCQlmb3IgKGludCBqID0gMDsg aiA8IG51bWZrczsgaisrKQogCQkJCQltYXBwZWRfcGthdHRudW1bal0gPSBtYXAtPmF0dG51 bXNbcGthdHRudW1bal0gLSAxXTsKIAkJCX0KQEAgLTExMDgxLDcgKzExMDgxLDcgQEAgYWRk RmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25z dHJhaW50LCBSZWxhdGlvbiByZWwsCiAKIAkJCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVl dWUsIHJlbCk7CiAKLQkJCW5ld2NvbiA9IChOZXdDb25zdHJhaW50ICopIHBhbGxvYzAoc2l6 ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJCW5ld2NvbiA9IHBhbGxvYzBfb2JqZWN0KE5ld0Nv bnN0cmFpbnQpOwogCQkJbmV3Y29uLT5uYW1lID0gZ2V0X2NvbnN0cmFpbnRfbmFtZShwYXJl bnRDb25zdHIpOwogCQkJbmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CiAJCQlu ZXdjb24tPnJlZnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChwa3JlbCk7CkBAIC0xMjUwMyw3 ICsxMjUwMyw3IEBAIEFURXhlY0FsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHkoTGlzdCAqKndx dWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKIAkJCUFsdGVyZWRUYWJsZUluZm8g KnRhYjsKIAkJCU5ld0NvbnN0cmFpbnQgKm5ld2NvbjsKIAotCQkJbmV3Y29uID0gKE5ld0Nv bnN0cmFpbnQgKikgcGFsbG9jMChzaXplb2YoTmV3Q29uc3RyYWludCkpOworCQkJbmV3Y29u ID0gcGFsbG9jMF9vYmplY3QoTmV3Q29uc3RyYWludCk7CiAJCQluZXdjb24tPm5hbWUgPSBm a2NvbnN0cmFpbnQtPmNvbm5hbWU7CiAJCQluZXdjb24tPmNvbnR5cGUgPSBDT05TVFJfRk9S RUlHTjsKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBjdXJyY29uLT5jb25mcmVsaWQ7CkBAIC0x MzAxOSw3ICsxMzAxOSw3IEBAIFF1ZXVlRktDb25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoq d3F1ZXVlLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIGZrcmVsLAogCQkvKiBmb3Igbm93 IHRoaXMgaXMgYWxsIHdlIG5lZWQgKi8KIAkJZmtjb25zdHJhaW50LT5jb25uYW1lID0gcHN0 cmR1cChOYW1lU3RyKGNvbi0+Y29ubmFtZSkpOwogCi0JCW5ld2NvbiA9IChOZXdDb25zdHJh aW50ICopIHBhbGxvYzAoc2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJbmV3Y29uID0gcGFs bG9jMF9vYmplY3QoTmV3Q29uc3RyYWludCk7CiAJCW5ld2Nvbi0+bmFtZSA9IGZrY29uc3Ry YWludC0+Y29ubmFtZTsKIAkJbmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CiAJ CW5ld2Nvbi0+cmVmcmVsaWQgPSBjb24tPmNvbmZyZWxpZDsKQEAgLTEzMTY3LDcgKzEzMTY3 LDcgQEAgUXVldWVDaGVja0NvbnN0cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gcmVsLAogCX0KIAogCS8qIFF1ZXVlIHZhbGlkYXRp b24gZm9yIHBoYXNlIDMgKi8KLQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2Mw KHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJbmV3Y29uID0gcGFsbG9jMF9vYmplY3QoTmV3 Q29uc3RyYWludCk7CiAJbmV3Y29uLT5uYW1lID0gY29uc3RyTmFtZTsKIAluZXdjb24tPmNv bnR5cGUgPSBDT05TVFJfQ0hFQ0s7CiAJbmV3Y29uLT5yZWZyZWxpZCA9IEludmFsaWRPaWQ7 CkBAIC0xNDUyMiw3ICsxNDUyMiw3IEBAIEFUUHJlcEFsdGVyQ29sdW1uVHlwZShMaXN0ICoq d3F1ZXVlLAogCQkgKiBBZGQgYSB3b3JrIHF1ZXVlIGl0ZW0gdG8gbWFrZSBBVFJld3JpdGVU YWJsZSB1cGRhdGUgdGhlIGNvbHVtbgogCQkgKiBjb250ZW50cy4KIAkJICovCi0JCW5ld3Zh bCA9IChOZXdDb2x1bW5WYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkp OworCQluZXd2YWwgPSBwYWxsb2MwX29iamVjdChOZXdDb2x1bW5WYWx1ZSk7CiAJCW5ld3Zh bC0+YXR0bnVtID0gYXR0bnVtOwogCQluZXd2YWwtPmV4cHIgPSAoRXhwciAqKSB0cmFuc2Zv cm07CiAJCW5ld3ZhbC0+aXNfZ2VuZXJhdGVkID0gZmFsc2U7CkBAIC0xOTI2Miw3ICsxOTI2 Miw3IEBAIHJlZ2lzdGVyX29uX2NvbW1pdF9hY3Rpb24oT2lkIHJlbGlkLCBPbkNvbW1pdEFj dGlvbiBhY3Rpb24pCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVN ZW1vcnlDb250ZXh0KTsKIAotCW9jID0gKE9uQ29tbWl0SXRlbSAqKSBwYWxsb2Moc2l6ZW9m KE9uQ29tbWl0SXRlbSkpOworCW9jID0gcGFsbG9jX29iamVjdChPbkNvbW1pdEl0ZW0pOwog CW9jLT5yZWxpZCA9IHJlbGlkOwogCW9jLT5vbmNvbW1pdCA9IGFjdGlvbjsKIAlvYy0+Y3Jl YXRpbmdfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOwpAQCAtMjA1NzUs OCArMjA1NzUsOCBAQCBBdHRhY2hQYXJ0aXRpb25FbnN1cmVJbmRleGVzKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNocmVsKQogCiAJaWR4ZXMgPSBSZWxh dGlvbkdldEluZGV4TGlzdChyZWwpOwogCWF0dGFjaFJlbElkeHMgPSBSZWxhdGlvbkdldElu ZGV4TGlzdChhdHRhY2hyZWwpOwotCWF0dGFjaHJlbElkeFJlbHMgPSBwYWxsb2Moc2l6ZW9m KFJlbGF0aW9uKSAqIGxpc3RfbGVuZ3RoKGF0dGFjaFJlbElkeHMpKTsKLQlhdHRhY2hJbmZv cyA9IHBhbGxvYyhzaXplb2YoSW5kZXhJbmZvICopICogbGlzdF9sZW5ndGgoYXR0YWNoUmVs SWR4cykpOworCWF0dGFjaHJlbElkeFJlbHMgPSBwYWxsb2NfYXJyYXkoUmVsYXRpb24sIGxp c3RfbGVuZ3RoKGF0dGFjaFJlbElkeHMpKTsKKwlhdHRhY2hJbmZvcyA9IHBhbGxvY19hcnJh eShJbmRleEluZm8gKiwgbGlzdF9sZW5ndGgoYXR0YWNoUmVsSWR4cykpOwogCiAJLyogQnVp bGQgYXJyYXlzIG9mIGFsbCBleGlzdGluZyBpbmRleGVzIGFuZCB0aGVpciBJbmRleEluZm9z ICovCiAJZm9yZWFjaF9vaWQoY2xkSWR4SWQsIGF0dGFjaFJlbElkeHMpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKaW5kZXggNTc5YWM4ZDc2YWUuLjEyYzk3ZjJjMDIzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHJpZ2dlci5jCkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBSZWxhdGlvbkJ1aWxkVHJp Z2dlcnMoUmVsYXRpb24gcmVsYXRpb24pCiAJfQogCiAJLyogQnVpbGQgdHJpZ2Rlc2MgKi8K LQl0cmlnZGVzYyA9IChUcmlnZ2VyRGVzYyAqKSBwYWxsb2MwKHNpemVvZihUcmlnZ2VyRGVz YykpOworCXRyaWdkZXNjID0gcGFsbG9jMF9vYmplY3QoVHJpZ2dlckRlc2MpOwogCXRyaWdk ZXNjLT50cmlnZ2VycyA9IHRyaWdnZXJzOwogCXRyaWdkZXNjLT5udW10cmlnZ2VycyA9IG51 bXRyaWdzOwogCWZvciAoaSA9IDA7IGkgPCBudW10cmlnczsgaSsrKQpAQCAtMjA5Niw3ICsy MDk2LDcgQEAgQ29weVRyaWdnZXJEZXNjKFRyaWdnZXJEZXNjICp0cmlnZGVzYykKIAlpZiAo dHJpZ2Rlc2MgPT0gTlVMTCB8fCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnMgPD0gMCkKIAkJcmV0 dXJuIE5VTEw7CiAKLQluZXdkZXNjID0gKFRyaWdnZXJEZXNjICopIHBhbGxvYyhzaXplb2Yo VHJpZ2dlckRlc2MpKTsKKwluZXdkZXNjID0gcGFsbG9jX29iamVjdChUcmlnZ2VyRGVzYyk7 CiAJbWVtY3B5KG5ld2Rlc2MsIHRyaWdkZXNjLCBzaXplb2YoVHJpZ2dlckRlc2MpKTsKIAog CXRyaWdnZXIgPSAoVHJpZ2dlciAqKSBwYWxsb2ModHJpZ2Rlc2MtPm51bXRyaWdnZXJzICog c2l6ZW9mKFRyaWdnZXIpKTsKQEAgLTQ5MDEsNyArNDkwMSw3IEBAIEdldEFmdGVyVHJpZ2dl cnNUYWJsZURhdGEoT2lkIHJlbGlkLCBDbWRUeXBlIGNtZFR5cGUpCiAKIAlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQ3VyVHJhbnNhY3Rpb25Db250ZXh0KTsKIAotCXRhYmxl ID0gKEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKikgcGFsbG9jMChzaXplb2YoQWZ0ZXJUcmln Z2Vyc1RhYmxlRGF0YSkpOworCXRhYmxlID0gcGFsbG9jMF9vYmplY3QoQWZ0ZXJUcmlnZ2Vy c1RhYmxlRGF0YSk7CiAJdGFibGUtPnJlbGlkID0gcmVsaWQ7CiAJdGFibGUtPmNtZFR5cGUg PSBjbWRUeXBlOwogCXFzLT50YWJsZXMgPSBsYXBwZW5kKHFzLT50YWJsZXMsIHRhYmxlKTsK QEAgLTUwNTAsNyArNTA1MCw3IEBAIE1ha2VUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKFRyaWdn ZXJEZXNjICp0cmlnZGVzYywgT2lkIHJlbGlkLCBDbWRUeXBlIGNtZFR5cGUpCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKIAkvKiBOb3cgYnVpbGQgdGhlIFRyYW5zaXRp b25DYXB0dXJlU3RhdGUgc3RydWN0LCBpbiBjYWxsZXIncyBjb250ZXh0ICovCi0Jc3RhdGUg PSAoVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihUcmFuc2l0aW9u Q2FwdHVyZVN0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChUcmFuc2l0aW9uQ2Fw dHVyZVN0YXRlKTsKIAlzdGF0ZS0+dGNzX2RlbGV0ZV9vbGRfdGFibGUgPSBuZWVkX29sZF9k ZWw7CiAJc3RhdGUtPnRjc191cGRhdGVfb2xkX3RhYmxlID0gbmVlZF9vbGRfdXBkOwogCXN0 YXRlLT50Y3NfdXBkYXRlX25ld190YWJsZSA9IG5lZWRfbmV3X3VwZDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RzZWFyY2hjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90c2VhcmNoY21kcy5jCmluZGV4IGRjN2RmNzM2ZmI4Li5lYzQ1ODBlMTdjOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHNlYXJjaGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90c2VhcmNoY21kcy5jCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBE ZWZpbmVUU0NvbmZpZ3VyYXRpb24oTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIE9i amVjdEFkZHJlc3MgKmNvcGllZCkKIAkJICoga25vdyB0aGF0IHRoZXkgd2lsbCBiZSB1c2Vk LgogCQkgKi8KIAkJbWF4X3Nsb3RzID0gTUFYX0NBVEFMT0dfTVVMVElfSU5TRVJUX0JZVEVT IC8gc2l6ZW9mKEZvcm1EYXRhX3BnX3RzX2NvbmZpZ19tYXApOwotCQlzbG90ID0gcGFsbG9j KHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIG1heF9zbG90cyk7CisJCXNsb3QgPSBwYWxs b2NfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbWF4X3Nsb3RzKTsKIAogCQlTY2FuS2V5SW5p dCgmc2tleSwKIAkJCQkJQW51bV9wZ190c19jb25maWdfbWFwX21hcGNmZywKQEAgLTEyNjEs NyArMTI2MSw3IEBAIGdldFRva2VuVHlwZXMoT2lkIHByc0lkLCBMaXN0ICp0b2tlbm5hbWVz KQogCQl7CiAJCQlpZiAoc3RyY21wKHN0clZhbCh2YWwpLCBsaXN0W2pdLmFsaWFzKSA9PSAw KQogCQkJewotCQkJCVRTVG9rZW5UeXBlSXRlbSAqdHMgPSAoVFNUb2tlblR5cGVJdGVtICop IHBhbGxvYzAoc2l6ZW9mKFRTVG9rZW5UeXBlSXRlbSkpOworCQkJCVRTVG9rZW5UeXBlSXRl bSAqdHMgPSBwYWxsb2MwX29iamVjdChUU1Rva2VuVHlwZUl0ZW0pOwogCiAJCQkJdHMtPm51 bSA9IGxpc3Rbal0ubGV4aWQ7CiAJCQkJdHMtPm5hbWUgPSBwc3RyZHVwKHN0clZhbCh2YWwp KTsKQEAgLTEzNDQsNyArMTM0NCw3IEBAIE1ha2VDb25maWd1cmF0aW9uTWFwcGluZyhBbHRl clRTQ29uZmlndXJhdGlvblN0bXQgKnN0bXQsCiAJICogQ29udmVydCBsaXN0IG9mIGRpY3Rp b25hcnkgbmFtZXMgdG8gYXJyYXkgb2YgZGljdCBPSURzCiAJICovCiAJbmRpY3QgPSBsaXN0 X2xlbmd0aChzdG10LT5kaWN0cyk7Ci0JZGljdElkcyA9IChPaWQgKikgcGFsbG9jKHNpemVv ZihPaWQpICogbmRpY3QpOworCWRpY3RJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBuZGljdCk7 CiAJaSA9IDA7CiAJZm9yZWFjaChjLCBzdG10LT5kaWN0cykKIAl7CkBAIC0xNDMyLDcgKzE0 MzIsNyBAQCBNYWtlQ29uZmlndXJhdGlvbk1hcHBpbmcoQWx0ZXJUU0NvbmZpZ3VyYXRpb25T dG10ICpzdG10LAogCQkvKiBBbGxvY2F0ZSB0aGUgc2xvdHMgdG8gdXNlIGFuZCBpbml0aWFs aXplIHRoZW0gKi8KIAkJbnNsb3RzID0gTWluKG50b2tlbiAqIG5kaWN0LAogCQkJCQkgTUFY X0NBVEFMT0dfTVVMVElfSU5TRVJUX0JZVEVTIC8gc2l6ZW9mKEZvcm1EYXRhX3BnX3RzX2Nv bmZpZ19tYXApKTsKLQkJc2xvdCA9IHBhbGxvYyhzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikg KiBuc2xvdHMpOworCQlzbG90ID0gcGFsbG9jX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5z bG90cyk7CiAJCWZvciAoaSA9IDA7IGkgPCBuc2xvdHM7IGkrKykKIAkJCXNsb3RbaV0gPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihyZWxNYXApLAogCQkJ CQkJCQkJCQkgICAmVFRTT3BzSGVhcFR1cGxlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5j CmluZGV4IDQ3ZDUwNDdmZThiLi4wZWI4ZTBhMmJiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jCkBAIC0zNDQ3LDEwICszNDQ3LDEwIEBAIGdldF9yZWxzX3dpdGhfZG9tYWluKE9p ZCBkb21haW5PaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkJfQogCiAJCQkvKiBCdWlsZCB0 aGUgUmVsVG9DaGVjayBlbnRyeSB3aXRoIGVub3VnaCBzcGFjZSBmb3IgYWxsIGF0dHMgKi8K LQkJCXJ0YyA9IChSZWxUb0NoZWNrICopIHBhbGxvYyhzaXplb2YoUmVsVG9DaGVjaykpOwor CQkJcnRjID0gcGFsbG9jX29iamVjdChSZWxUb0NoZWNrKTsKIAkJCXJ0Yy0+cmVsID0gcmVs OwogCQkJcnRjLT5uYXR0cyA9IDA7Ci0JCQlydGMtPmF0dHMgPSAoaW50ICopIHBhbGxvYyhz aXplb2YoaW50KSAqIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbCkpOworCQkJ cnRjLT5hdHRzID0gcGFsbG9jX2FycmF5KGludCwgUmVsYXRpb25HZXROdW1iZXJPZkF0dHJp YnV0ZXMocmVsKSk7CiAJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgcnRjKTsKIAkJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy91c2VyLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy91c2VyLmMKaW5kZXggNmFlNDJlYTU2NTYuLmVmNGRlMWU3ZmQxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy91c2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdXNlci5jCkBAIC0xOTA0LDcgKzE5MDQsNyBAQCBBZGRSb2xlTWVtcyhPaWQg Y3VycmVudFVzZXJJZCwgY29uc3QgY2hhciAqcm9sZW5hbWUsIE9pZCByb2xlaWQsCiAJCWVs c2UKIAkJewogCQkJT2lkCQkJb2JqZWN0SWQ7Ci0JCQlPaWQJCSAgICpuZXdtZW1iZXJzID0g cGFsbG9jKHNpemVvZihPaWQpKTsKKwkJCU9pZAkJICAgKm5ld21lbWJlcnMgPSBwYWxsb2Nf b2JqZWN0KE9pZCk7CiAKIAkJCS8qCiAJCQkgKiBUaGUgdmFsdWVzIGZvciB0aGVzZSBvcHRp b25zIGNhbiBiZSB0YWtlbiBkaXJlY3RseSBmcm9tICdwb3B0Jy4KQEAgLTIyOTUsNyArMjI5 NSw3IEBAIGluaXRpYWxpemVfcmV2b2tlX2FjdGlvbnMoQ2F0Q0xpc3QgKm1lbWxpc3QpCiAJ aWYgKG1lbWxpc3QtPm5fbWVtYmVycyA9PSAwKQogCQlyZXR1cm4gTlVMTDsKIAotCXJlc3Vs dCA9IHBhbGxvYyhzaXplb2YoUmV2b2tlUm9sZUdyYW50QWN0aW9uKSAqIG1lbWxpc3QtPm5f bWVtYmVycyk7CisJcmVzdWx0ID0gcGFsbG9jX2FycmF5KFJldm9rZVJvbGVHcmFudEFjdGlv biwgbWVtbGlzdC0+bl9tZW1iZXJzKTsKIAlmb3IgKGkgPSAwOyBpIDwgbWVtbGlzdC0+bl9t ZW1iZXJzOyBpKyspCiAJCXJlc3VsdFtpXSA9IFJSR19OT09QOwogCXJldHVybiByZXN1bHQ7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAwZmVlYTFkMzBl Yy4uOGEzN2MwODg3MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YwpAQCAtMjY4LDcgKzI2OCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAkvKgogCSAqIENvbXB1dGUg dGhlIG51bWJlciBvZiBwYXJhbGxlbCB2YWN1dW0gd29ya2VycyB0byBsYXVuY2gKIAkgKi8K LQl3aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IChib29sICopIHBhbGxvYzAoc2l6ZW9mKGJvb2wp ICogbmluZGV4ZXMpOworCXdpbGxfcGFyYWxsZWxfdmFjdXVtID0gcGFsbG9jMF9hcnJheShi b29sLCBuaW5kZXhlcyk7CiAJcGFyYWxsZWxfd29ya2VycyA9IHBhcmFsbGVsX3ZhY3V1bV9j b21wdXRlX3dvcmtlcnMoaW5kcmVscywgbmluZGV4ZXMsCiAJCQkJCQkJCQkJCQkJICAgbnJl cXVlc3RlZF93b3JrZXJzLAogCQkJCQkJCQkJCQkJCSAgIHdpbGxfcGFyYWxsZWxfdmFjdXVt KTsKQEAgLTI3OSw3ICsyNzksNyBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJCXJldHVybiBOVUxMOwog CX0KIAotCXB2cyA9IChQYXJhbGxlbFZhY3V1bVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFBh cmFsbGVsVmFjdXVtU3RhdGUpKTsKKwlwdnMgPSBwYWxsb2MwX29iamVjdChQYXJhbGxlbFZh Y3V1bVN0YXRlKTsKIAlwdnMtPmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy0+bmluZGV4ZXMg PSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFyYWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxl bF92YWN1dW07CkBAIC00NDQsNyArNDQ0LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2VuZChQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKmlzdGF0cykK IAogCQlpZiAoaW5kc3RhdHMtPmlzdGF0X3VwZGF0ZWQpCiAJCXsKLQkJCWlzdGF0c1tpXSA9 IChJbmRleEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVs ZXRlUmVzdWx0KSk7CisJCQlpc3RhdHNbaV0gPSBwYWxsb2MwX29iamVjdChJbmRleEJ1bGtE ZWxldGVSZXN1bHQpOwogCQkJbWVtY3B5KGlzdGF0c1tpXSwgJmluZHN0YXRzLT5pc3RhdCwg c2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOwogCQl9CiAJCWVsc2UKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwci5jCmluZGV4IGIwNWZmNDc2YTYzLi5jMzU3NDRiMTA1ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0xMzEyLDcgKzEzMTIsNyBAQCBFeGVjSW5pdEV4 cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQl9CiAKIAkJCQkvKiBT ZXQgdXAgdGhlIHByaW1hcnkgZm1nciBsb29rdXAgaW5mb3JtYXRpb24gKi8KLQkJCQlmaW5m byA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQkJZmluZm8gPSBwYWxsb2MwX29i amVjdChGbWdySW5mbyk7CiAJCQkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25D YWxsSW5mbygyKSk7CiAJCQkJZm1ncl9pbmZvKGNtcGZ1bmNpZCwgZmluZm8pOwogCQkJCWZt Z3JfaW5mb19zZXRfZXhwcigoTm9kZSAqKSBub2RlLCBmaW5mbyk7CkBAIC0xMzg4LDcgKzEz ODgsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwK IAogCQkJCS8qIGFsbG9jYXRlIHNjcmF0Y2ggbWVtb3J5IHVzZWQgYnkgYWxsIHN0ZXBzIG9m IEFORC9PUiAqLwogCQkJCWlmIChib29sZXhwci0+Ym9vbG9wICE9IE5PVF9FWFBSKQotCQkJ CQlzY3JhdGNoLmQuYm9vbGV4cHIuYW55bnVsbCA9IChib29sICopIHBhbGxvYyhzaXplb2Yo Ym9vbCkpOworCQkJCQlzY3JhdGNoLmQuYm9vbGV4cHIuYW55bnVsbCA9IHBhbGxvY19vYmpl Y3QoYm9vbCk7CiAKIAkJCQkvKgogCQkJCSAqIEZvciBlYWNoIGFyZ3VtZW50IGV2YWx1YXRl IHRoZSBhcmd1bWVudCBpdHNlbGYsIHRoZW4KQEAgLTE1MjEsMTEgKzE1MjEsMTEgQEAgRXhl Y0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJUmVsZWFz ZVR1cGxlRGVzYyh0dXBEZXNjKTsKIAogCQkJCS8qIGNyZWF0ZSB3b3Jrc3BhY2UgZm9yIGNv bHVtbiB2YWx1ZXMgKi8KLQkJCQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihE YXR1bSkgKiBuY29sdW1ucyk7Ci0JCQkJbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9m KGJvb2wpICogbmNvbHVtbnMpOworCQkJCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwg bmNvbHVtbnMpOworCQkJCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsK IAogCQkJCS8qIGNyZWF0ZSBzaGFyZWQgY29tcG9zaXRlLXR5cGUtbG9va3VwIGNhY2hlIHN0 cnVjdCAqLwotCQkJCXJvd2NhY2hlcCA9IHBhbGxvYyhzaXplb2YoRXhwckV2YWxSb3d0eXBl Q2FjaGUpKTsKKwkJCQlyb3djYWNoZXAgPSBwYWxsb2Nfb2JqZWN0KEV4cHJFdmFsUm93dHlw ZUNhY2hlKTsKIAkJCQlyb3djYWNoZXAtPmNhY2hlcHRyID0gTlVMTDsKIAogCQkJCS8qIGVt aXQgY29kZSB0byBldmFsdWF0ZSB0aGUgY29tcG9zaXRlIGlucHV0IHZhbHVlICovCkBAIC0x NjM0LDcgKzE2MzQsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRl ICpzdGF0ZSwKIAkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lPQ09FUkNFX1NBRkU7CiAK IAkJCQkvKiBsb29rdXAgdGhlIHNvdXJjZSB0eXBlJ3Mgb3V0cHV0IGZ1bmN0aW9uICovCi0J CQkJc2NyYXRjaC5kLmlvY29lcmNlLmZpbmZvX291dCA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJ bmZvKSk7CisJCQkJc2NyYXRjaC5kLmlvY29lcmNlLmZpbmZvX291dCA9IHBhbGxvYzBfb2Jq ZWN0KEZtZ3JJbmZvKTsKIAkJCQlzY3JhdGNoLmQuaW9jb2VyY2UuZmNpbmZvX2RhdGFfb3V0 ID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25DYWxsSW5mbygxKSk7CiAKIAkJCQlnZXRUeXBl T3V0cHV0SW5mbyhleHByVHlwZSgoTm9kZSAqKSBpb2NvZXJjZS0+YXJnKSwKQEAgLTE2NDYs NyArMTY0Niw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0 YXRlLAogCQkJCQkJCQkJCSAxLCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKIAogCQkJCS8q IGxvb2t1cCB0aGUgcmVzdWx0IHR5cGUncyBpbnB1dCBmdW5jdGlvbiAqLwotCQkJCXNjcmF0 Y2guZC5pb2NvZXJjZS5maW5mb19pbiA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJ CQkJc2NyYXRjaC5kLmlvY29lcmNlLmZpbmZvX2luID0gcGFsbG9jMF9vYmplY3QoRm1ncklu Zm8pOwogCQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5mY2luZm9fZGF0YV9pbiA9IHBhbGxvYzAo U2l6ZUZvckZ1bmN0aW9uQ2FsbEluZm8oMykpOwogCiAJCQkJZ2V0VHlwZUlucHV0SW5mbyhp b2NvZXJjZS0+cmVzdWx0dHlwZSwKQEAgLTE2OTksOCArMTY5OSw4IEBAIEV4ZWNJbml0RXhw clJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCWVsZW1zdGF0ZS0+cGFy ZW50ID0gc3RhdGUtPnBhcmVudDsKIAkJCQllbGVtc3RhdGUtPmV4dF9wYXJhbXMgPSBzdGF0 ZS0+ZXh0X3BhcmFtczsKIAotCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSAo RGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOwotCQkJCWVsZW1zdGF0ZS0+aW5uZXJt b3N0X2Nhc2VudWxsID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSk7CisJCQkJZWxl bXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IHBhbGxvY19vYmplY3QoRGF0dW0pOworCQkJ CWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcGFsbG9jX29iamVjdChib29sKTsK IAogCQkJCUV4ZWNJbml0RXhwclJlYyhhY29lcmNlLT5lbGVtZXhwciwgZWxlbXN0YXRlLAog CQkJCQkJCQkmZWxlbXN0YXRlLT5yZXN2YWx1ZSwgJmVsZW1zdGF0ZS0+cmVzbnVsbCk7CkBA IC0xNzI3LDggKzE3MjcsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0 YXRlICpzdGF0ZSwKIAkJCQlpZiAoZWxlbXN0YXRlKQogCQkJCXsKIAkJCQkJLyogU2V0IHVw IHdvcmtzcGFjZSBmb3IgYXJyYXlfbWFwICovCi0JCQkJCXNjcmF0Y2guZC5hcnJheWNvZXJj ZS5hbXN0YXRlID0KLQkJCQkJCShBcnJheU1hcFN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEFy cmF5TWFwU3RhdGUpKTsKKwkJCQkJc2NyYXRjaC5kLmFycmF5Y29lcmNlLmFtc3RhdGUgPSBw YWxsb2MwX29iamVjdChBcnJheU1hcFN0YXRlKTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsK QEAgLTE3ODMsOCArMTc4Miw4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHBy U3RhdGUgKnN0YXRlLAogCQkJCWlmIChjYXNlRXhwci0+YXJnICE9IE5VTEwpCiAJCQkJewog CQkJCQkvKiBFdmFsdWF0ZSB0ZXN0ZXhwciBpbnRvIGNhc2V2YWwvY2FzZW51bGwgd29ya3Nw YWNlICovCi0JCQkJCWNhc2V2YWwgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7Ci0JCQkJCWNh c2VudWxsID0gcGFsbG9jKHNpemVvZihib29sKSk7CisJCQkJCWNhc2V2YWwgPSBwYWxsb2Nf b2JqZWN0KERhdHVtKTsKKwkJCQkJY2FzZW51bGwgPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOwog CiAJCQkJCUV4ZWNJbml0RXhwclJlYyhjYXNlRXhwci0+YXJnLCBzdGF0ZSwKIAkJCQkJCQkJ CWNhc2V2YWwsIGNhc2VudWxsKTsKQEAgLTE5MzAsOSArMTkyOSw5IEBAIEV4ZWNJbml0RXhw clJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCSAqLwogCQkJCXNjcmF0 Y2gub3Bjb2RlID0gRUVPUF9BUlJBWUVYUFI7CiAJCQkJc2NyYXRjaC5kLmFycmF5ZXhwci5l bGVtdmFsdWVzID0KLQkJCQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbmVs ZW1zKTsKKwkJCQkJcGFsbG9jX2FycmF5KERhdHVtLCBuZWxlbXMpOwogCQkJCXNjcmF0Y2gu ZC5hcnJheWV4cHIuZWxlbW51bGxzID0KLQkJCQkJKGJvb2wgKikgcGFsbG9jKHNpemVvZihi b29sKSAqIG5lbGVtcyk7CisJCQkJCXBhbGxvY19hcnJheShib29sLCBuZWxlbXMpOwogCQkJ CXNjcmF0Y2guZC5hcnJheWV4cHIubmVsZW1zID0gbmVsZW1zOwogCiAJCQkJLyogZmlsbCBy ZW1haW5pbmcgZmllbGRzIG9mIHN0ZXAgKi8KQEAgLTIwMDYsOSArMjAwNSw5IEBAIEV4ZWNJ bml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCiAJCQkJLyogc3Bh Y2UgZm9yIHRoZSBpbmRpdmlkdWFsIGZpZWxkIGRhdHVtcyAqLwogCQkJCXNjcmF0Y2guZC5y b3cuZWxlbXZhbHVlcyA9Ci0JCQkJCShEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IG5lbGVtcyk7CisJCQkJCXBhbGxvY19hcnJheShEYXR1bSwgbmVsZW1zKTsKIAkJCQlzY3Jh dGNoLmQucm93LmVsZW1udWxscyA9Ci0JCQkJCShib29sICopIHBhbGxvYyhzaXplb2YoYm9v bCkgKiBuZWxlbXMpOworCQkJCQlwYWxsb2NfYXJyYXkoYm9vbCwgbmVsZW1zKTsKIAkJCQkv KiBhcyBleHBsYWluZWQgYWJvdmUsIG1ha2Ugc3VyZSBhbnkgZXh0cmEgY29sdW1ucyBhcmUg bnVsbCAqLwogCQkJCW1lbXNldChzY3JhdGNoLmQucm93LmVsZW1udWxscywgdHJ1ZSwgc2l6 ZW9mKGJvb2wpICogbmVsZW1zKTsKIApAQCAtMjEwOSw3ICsyMTA4LDcgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJIEJUT1JERVJf UFJPQywgbGVmdHR5cGUsIHJpZ2h0dHlwZSwgb3BmYW1pbHkpOwogCiAJCQkJCS8qIFNldCB1 cCB0aGUgcHJpbWFyeSBmbWdyIGxvb2t1cCBpbmZvcm1hdGlvbiAqLwotCQkJCQlmaW5mbyA9 IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQkJCWZpbmZvID0gcGFsbG9jMF9vYmpl Y3QoRm1nckluZm8pOwogCQkJCQlmY2luZm8gPSBwYWxsb2MwKFNpemVGb3JGdW5jdGlvbkNh bGxJbmZvKDIpKTsKIAkJCQkJZm1ncl9pbmZvKHByb2MsIGZpbmZvKTsKIAkJCQkJZm1ncl9p bmZvX3NldF9leHByKChOb2RlICopIG5vZGUsIGZpbmZvKTsKQEAgLTIyNTIsNyArMjI1MSw3 IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CSAqLwogCiAJCQkJLyogUGVyZm9ybSBmdW5jdGlvbiBsb29rdXAgKi8KLQkJCQlmaW5mbyA9 IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQkJZmluZm8gPSBwYWxsb2MwX29iamVj dChGbWdySW5mbyk7CiAJCQkJZmNpbmZvID0gcGFsbG9jMChTaXplRm9yRnVuY3Rpb25DYWxs SW5mbygyKSk7CiAJCQkJZm1ncl9pbmZvKHR5cGVudHJ5LT5jbXBfcHJvYywgZmluZm8pOwog CQkJCWZtZ3JfaW5mb19zZXRfZXhwcigoTm9kZSAqKSBub2RlLCBmaW5mbyk7CkBAIC0yMjYx LDEwICsyMjYwLDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAq c3RhdGUsCiAKIAkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfTUlOTUFYOwogCQkJCS8qIGFs bG9jYXRlIHNwYWNlIHRvIHN0b3JlIGFyZ3VtZW50cyAqLwotCQkJCXNjcmF0Y2guZC5taW5t YXgudmFsdWVzID0KLQkJCQkJKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbmVs ZW1zKTsKLQkJCQlzY3JhdGNoLmQubWlubWF4Lm51bGxzID0KLQkJCQkJKGJvb2wgKikgcGFs bG9jKHNpemVvZihib29sKSAqIG5lbGVtcyk7CisJCQkJc2NyYXRjaC5kLm1pbm1heC52YWx1 ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5lbGVtcyk7CisJCQkJc2NyYXRjaC5kLm1pbm1h eC5udWxscyA9IHBhbGxvY19hcnJheShib29sLCBuZWxlbXMpOwogCQkJCXNjcmF0Y2guZC5t aW5tYXgubmVsZW1zID0gbmVsZW1zOwogCiAJCQkJc2NyYXRjaC5kLm1pbm1heC5vcCA9IG1p bm1heGV4cHItPm9wOwpAQCAtMjMxMywxMCArMjMxMCw4IEBAIEV4ZWNJbml0RXhwclJlYyhF eHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCS8qIGFsbG9jYXRlIHNwYWNlIGZv ciBzdG9yaW5nIGFsbCB0aGUgYXJndW1lbnRzICovCiAJCQkJaWYgKG5uYW1lZCkKIAkJCQl7 Ci0JCQkJCXNjcmF0Y2guZC54bWxleHByLm5hbWVkX2FyZ3ZhbHVlID0KLQkJCQkJCShEYXR1 bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5uYW1lZCk7Ci0JCQkJCXNjcmF0Y2guZC54 bWxleHByLm5hbWVkX2FyZ251bGwgPQotCQkJCQkJKGJvb2wgKikgcGFsbG9jKHNpemVvZihi b29sKSAqIG5uYW1lZCk7CisJCQkJCXNjcmF0Y2guZC54bWxleHByLm5hbWVkX2FyZ3ZhbHVl ID0gcGFsbG9jX2FycmF5KERhdHVtLCBubmFtZWQpOworCQkJCQlzY3JhdGNoLmQueG1sZXhw ci5uYW1lZF9hcmdudWxsID0gcGFsbG9jX2FycmF5KGJvb2wsIG5uYW1lZCk7CiAJCQkJfQog CQkJCWVsc2UKIAkJCQl7CkBAIC0yMzI2LDEwICsyMzIxLDggQEAgRXhlY0luaXRFeHByUmVj KEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAKIAkJCQlpZiAobmFyZ3MpCiAJCQkJ ewotCQkJCQlzY3JhdGNoLmQueG1sZXhwci5hcmd2YWx1ZSA9Ci0JCQkJCQkoRGF0dW0gKikg cGFsbG9jKHNpemVvZihEYXR1bSkgKiBuYXJncyk7Ci0JCQkJCXNjcmF0Y2guZC54bWxleHBy LmFyZ251bGwgPQotCQkJCQkJKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIG5hcmdz KTsKKwkJCQkJc2NyYXRjaC5kLnhtbGV4cHIuYXJndmFsdWUgPSBwYWxsb2NfYXJyYXkoRGF0 dW0sIG5hcmdzKTsKKwkJCQkJc2NyYXRjaC5kLnhtbGV4cHIuYXJnbnVsbCA9IHBhbGxvY19h cnJheShib29sLCBuYXJncyk7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7CkBAIC0yMzk4LDE1 ICsyMzkxLDE1IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0 YXRlLAogCQkJCXsKIAkJCQkJSnNvbkNvbnN0cnVjdG9yRXhwclN0YXRlICpqY3N0YXRlOwog Ci0JCQkJCWpjc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKc29uQ29uc3RydWN0b3JFeHByU3Rh dGUpKTsKKwkJCQkJamNzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEpzb25Db25zdHJ1Y3RvckV4 cHJTdGF0ZSk7CiAKIAkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pTT05fQ09OU1RSVUNU T1I7CiAJCQkJCXNjcmF0Y2guZC5qc29uX2NvbnN0cnVjdG9yLmpjc3RhdGUgPSBqY3N0YXRl OwogCiAJCQkJCWpjc3RhdGUtPmNvbnN0cnVjdG9yID0gY3RvcjsKLQkJCQkJamNzdGF0ZS0+ YXJnX3ZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG5hcmdzKTsK LQkJCQkJamNzdGF0ZS0+YXJnX251bGxzID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29s KSAqIG5hcmdzKTsKLQkJCQkJamNzdGF0ZS0+YXJnX3R5cGVzID0gKE9pZCAqKSBwYWxsb2Mo c2l6ZW9mKE9pZCkgKiBuYXJncyk7CisJCQkJCWpjc3RhdGUtPmFyZ192YWx1ZXMgPSBwYWxs b2NfYXJyYXkoRGF0dW0sIG5hcmdzKTsKKwkJCQkJamNzdGF0ZS0+YXJnX251bGxzID0gcGFs bG9jX2FycmF5KGJvb2wsIG5hcmdzKTsKKwkJCQkJamNzdGF0ZS0+YXJnX3R5cGVzID0gcGFs bG9jX2FycmF5KE9pZCwgbmFyZ3MpOwogCQkJCQlqY3N0YXRlLT5uYXJncyA9IG5hcmdzOwog CiAJCQkJCWZvcmVhY2gobGMsIGFyZ3MpCkBAIC0yNjgwLDcgKzI2NzMsNyBAQCBFeHByRXZh bFB1c2hTdGVwKEV4cHJTdGF0ZSAqZXMsIGNvbnN0IEV4cHJFdmFsU3RlcCAqcykKIAlpZiAo ZXMtPnN0ZXBzX2FsbG9jID09IDApCiAJewogCQllcy0+c3RlcHNfYWxsb2MgPSAxNjsKLQkJ ZXMtPnN0ZXBzID0gcGFsbG9jKHNpemVvZihFeHByRXZhbFN0ZXApICogZXMtPnN0ZXBzX2Fs bG9jKTsKKwkJZXMtPnN0ZXBzID0gcGFsbG9jX2FycmF5KEV4cHJFdmFsU3RlcCwgZXMtPnN0 ZXBzX2FsbG9jKTsKIAl9CiAJZWxzZSBpZiAoZXMtPnN0ZXBzX2FsbG9jID09IGVzLT5zdGVw c19sZW4pCiAJewpAQCAtMjczMiw3ICsyNzI1LDcgQEAgRXhlY0luaXRGdW5jKEV4cHJFdmFs U3RlcCAqc2NyYXRjaCwgRXhwciAqbm9kZSwgTGlzdCAqYXJncywgT2lkIGZ1bmNpZCwKIAkJ CQkJCQkgICBGVU5DX01BWF9BUkdTKSkpOwogCiAJLyogQWxsb2NhdGUgZnVuY3Rpb24gbG9v a3VwIGRhdGEgYW5kIHBhcmFtZXRlciB3b3Jrc3BhY2UgZm9yIHRoaXMgY2FsbCAqLwotCXNj cmF0Y2gtPmQuZnVuYy5maW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJc2Ny YXRjaC0+ZC5mdW5jLmZpbmZvID0gcGFsbG9jMF9vYmplY3QoRm1nckluZm8pOwogCXNjcmF0 Y2gtPmQuZnVuYy5mY2luZm9fZGF0YSA9IHBhbGxvYzAoU2l6ZUZvckZ1bmN0aW9uQ2FsbElu Zm8obmFyZ3MpKTsKIAlmbGluZm8gPSBzY3JhdGNoLT5kLmZ1bmMuZmluZm87CiAJZmNpbmZv ID0gc2NyYXRjaC0+ZC5mdW5jLmZjaW5mb19kYXRhOwpAQCAtMzU1Nyw4ICszNTUwLDcgQEAg RXhlY0luaXRDb2VyY2VUb0RvbWFpbihFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIENvZXJjZVRv RG9tYWluICpjdGVzdCwKIAkgKiBkdXJpbmcgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24uICBU aGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdHlwY2FjaGUuYyB0bwogCSAqIHByb3ZpZGUgY29t cGlsZWQgZXhwcnMuCiAJICovCi0JY29uc3RyYWludF9yZWYgPSAoRG9tYWluQ29uc3RyYWlu dFJlZiAqKQotCQlwYWxsb2Moc2l6ZW9mKERvbWFpbkNvbnN0cmFpbnRSZWYpKTsKKwljb25z dHJhaW50X3JlZiA9IHBhbGxvY19vYmplY3QoRG9tYWluQ29uc3RyYWludFJlZik7CiAJSW5p dERvbWFpbkNvbnN0cmFpbnRSZWYoY3Rlc3QtPnJlc3VsdHR5cGUsCiAJCQkJCQkJY29uc3Ry YWludF9yZWYsCiAJCQkJCQkJQ3VycmVudE1lbW9yeUNvbnRleHQsCkBAIC0zNTg4LDkgKzM1 ODAsOSBAQCBFeGVjSW5pdENvZXJjZVRvRG9tYWluKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwg Q29lcmNlVG9Eb21haW4gKmN0ZXN0LAogCQkJCWlmIChzY3JhdGNoLT5kLmRvbWFpbmNoZWNr LmNoZWNrdmFsdWUgPT0gTlVMTCkKIAkJCQl7CiAJCQkJCXNjcmF0Y2gtPmQuZG9tYWluY2hl Y2suY2hlY2t2YWx1ZSA9Ci0JCQkJCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkp OworCQkJCQkJcGFsbG9jX29iamVjdChEYXR1bSk7CiAJCQkJCXNjcmF0Y2gtPmQuZG9tYWlu Y2hlY2suY2hlY2tudWxsID0KLQkJCQkJCShib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkp OworCQkJCQkJcGFsbG9jX29iamVjdChib29sKTsKIAkJCQl9CiAKIAkJCQkvKgpAQCAtMzYw OCw4ICszNjAwLDggQEAgRXhlY0luaXRDb2VyY2VUb0RvbWFpbihFeHByRXZhbFN0ZXAgKnNj cmF0Y2gsIENvZXJjZVRvRG9tYWluICpjdGVzdCwKIAkJCQkJCUV4cHJFdmFsU3RlcCBzY3Jh dGNoMiA9IHswfTsKIAogCQkJCQkJLyogWWVzLCBzbyBtYWtlIG91dHB1dCB3b3Jrc3BhY2Ug Zm9yIE1BS0VfUkVBRE9OTFkgKi8KLQkJCQkJCWRvbWFpbnZhbCA9IChEYXR1bSAqKSBwYWxs b2Moc2l6ZW9mKERhdHVtKSk7Ci0JCQkJCQlkb21haW5udWxsID0gKGJvb2wgKikgcGFsbG9j KHNpemVvZihib29sKSk7CisJCQkJCQlkb21haW52YWwgPSBwYWxsb2Nfb2JqZWN0KERhdHVt KTsKKwkJCQkJCWRvbWFpbm51bGwgPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOwogCiAJCQkJCQkv KiBFbWl0IE1BS0VfUkVBRE9OTFkgKi8KIAkJCQkJCXNjcmF0Y2gyLm9wY29kZSA9IEVFT1Bf TUFLRV9SRUFET05MWTsKQEAgLTQxNTksNyArNDE1MSw3IEBAIEV4ZWNCdWlsZEhhc2gzMkZy b21BdHRycyhUdXBsZURlc2MgZGVzYywgY29uc3QgVHVwbGVUYWJsZVNsb3RPcHMgKm9wcywK IAkgKiBvbmUgY29sdW1uIHRvIGhhc2ggb3IgYW4gaW5pdGlhbCB2YWx1ZSBwbHVzIG9uZSBj b2x1bW4uCiAJICovCiAJaWYgKChpbnQ2NCkgbnVtQ29scyArIChpbml0X3ZhbHVlICE9IDAp ID4gMSkKLQkJaXJlc3VsdCA9IHBhbGxvYyhzaXplb2YoTnVsbGFibGVEYXR1bSkpOworCQlp cmVzdWx0ID0gcGFsbG9jX29iamVjdChOdWxsYWJsZURhdHVtKTsKIAogCS8qIGZpbmQgdGhl IGhpZ2hlc3QgYXR0bnVtIHNvIHdlIGRlZm9ybSB0aGUgdHVwbGUgdG8gdGhhdCBwb2ludCAq LwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sczsgaSsrKQpAQCAtNDMyNSw3ICs0MzE3 LDcgQEAgRXhlY0J1aWxkSGFzaDMyRXhwcihUdXBsZURlc2MgZGVzYywgY29uc3QgVHVwbGVU YWJsZVNsb3RPcHMgKm9wcywKIAkgKiB0aGFuIG9uZSBleHByZXNzaW9uIHRvIGhhc2ggb3Ig YW4gaW5pdGlhbCB2YWx1ZSBwbHVzIG9uZSBleHByZXNzaW9uLgogCSAqLwogCWlmICgoaW50 NjQpIG51bV9leHBycyArIChpbml0X3ZhbHVlICE9IDApID4gMSkKLQkJaXJlc3VsdCA9IHBh bGxvYyhzaXplb2YoTnVsbGFibGVEYXR1bSkpOworCQlpcmVzdWx0ID0gcGFsbG9jX29iamVj dChOdWxsYWJsZURhdHVtKTsKIAogCWlmIChpbml0X3ZhbHVlID09IDApCiAJewpAQCAtNDM3 MSw3ICs0MzYzLDcgQEAgRXhlY0J1aWxkSGFzaDMyRXhwcihUdXBsZURlc2MgZGVzYywgY29u c3QgVHVwbGVUYWJsZVNsb3RPcHMgKm9wcywKIAkJZnVuY2lkID0gaGFzaGZ1bmNfb2lkc1tp XTsKIAogCQkvKiBBbGxvY2F0ZSBoYXNoIGZ1bmN0aW9uIGxvb2t1cCBkYXRhLiAqLwotCQlm aW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCWZpbmZvID0gcGFsbG9jMF9v YmplY3QoRm1nckluZm8pOwogCQlmY2luZm8gPSBwYWxsb2MwKFNpemVGb3JGdW5jdGlvbkNh bGxJbmZvKDEpKTsKIAogCQlmbWdyX2luZm8oZnVuY2lkLCBmaW5mbyk7CkBAIC00NTQwLDcg KzQ1MzIsNyBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBsZGVzYywgVHVw bGVEZXNjIHJkZXNjLAogCQlJbnZva2VGdW5jdGlvbkV4ZWN1dGVIb29rKGZvaWQpOwogCiAJ CS8qIFNldCB1cCB0aGUgcHJpbWFyeSBmbWdyIGxvb2t1cCBpbmZvcm1hdGlvbiAqLwotCQlm aW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCWZpbmZvID0gcGFsbG9jMF9v YmplY3QoRm1nckluZm8pOwogCQlmY2luZm8gPSBwYWxsb2MwKFNpemVGb3JGdW5jdGlvbkNh bGxJbmZvKDIpKTsKIAkJZm1ncl9pbmZvKGZvaWQsIGZpbmZvKTsKIAkJZm1ncl9pbmZvX3Nl dF9leHByKE5VTEwsIGZpbmZvKTsKQEAgLTQ2NzYsNyArNDY2OCw3IEBAIEV4ZWNCdWlsZFBh cmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJCUludm9rZUZ1bmN0aW9uRXhlY3V0ZUhv b2soZm9pZCk7CiAKIAkJLyogU2V0IHVwIHRoZSBwcmltYXJ5IGZtZ3IgbG9va3VwIGluZm9y bWF0aW9uICovCi0JCWZpbmZvID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8pKTsKKwkJZmlu Zm8gPSBwYWxsb2MwX29iamVjdChGbWdySW5mbyk7CiAJCWZjaW5mbyA9IHBhbGxvYzAoU2l6 ZUZvckZ1bmN0aW9uQ2FsbEluZm8oMikpOwogCQlmbWdyX2luZm8oZm9pZCwgZmluZm8pOwog CQlmbWdyX2luZm9fc2V0X2V4cHIoTlVMTCwgZmluZm8pOwpAQCAtNDc0OSw3ICs0NzQxLDcg QEAgRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRl LAogCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKIAkJCQkgRXhwckV2YWxTdGVw ICpzY3JhdGNoKQogewotCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gcGFsbG9jMChzaXpl b2YoSnNvbkV4cHJTdGF0ZSkpOworCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gcGFsbG9j MF9vYmplY3QoSnNvbkV4cHJTdGF0ZSk7CiAJTGlzdENlbGwgICAqYXJnZXhwcmxjOwogCUxp c3RDZWxsICAgKmFyZ25hbWVsYzsKIAlMaXN0CSAgICpqdW1wc19yZXR1cm5fbnVsbCA9IE5J TDsKQEAgLTQ4MDAsNyArNDc5Miw3IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpz ZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKIAl7CiAJCUV4cHIJICAgKmFyZ2V4cHIgPSAoRXhw ciAqKSBsZmlyc3QoYXJnZXhwcmxjKTsKIAkJU3RyaW5nCSAgICphcmduYW1lID0gbGZpcnN0 X25vZGUoU3RyaW5nLCBhcmduYW1lbGMpOwotCQlKc29uUGF0aFZhcmlhYmxlICp2YXIgPSBw YWxsb2Moc2l6ZW9mKCp2YXIpKTsKKwkJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0gcGFsbG9j X29iamVjdChKc29uUGF0aFZhcmlhYmxlKTsKIAogCQl2YXItPm5hbWUgPSBhcmduYW1lLT5z dmFsOwogCQl2YXItPm5hbWVsZW4gPSBzdHJsZW4odmFyLT5uYW1lKTsKQEAgLTQ4NzQsNyAr NDg2Niw3IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpzZXhwciwgRXhwclN0YXRl ICpzdGF0ZSwKIAkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm87CiAKIAkJZ2V0VHlwZUlucHV0 SW5mbyhqc2V4cHItPnJldHVybmluZy0+dHlwaWQsICZ0eXBpbnB1dCwgJnR5cGlvcGFyYW0p OwotCQlmaW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCWZpbmZvID0gcGFs bG9jMF9vYmplY3QoRm1nckluZm8pOwogCQlmY2luZm8gPSBwYWxsb2MwKFNpemVGb3JGdW5j dGlvbkNhbGxJbmZvKDMpKTsKIAkJZm1ncl9pbmZvKHR5cGlucHV0LCBmaW5mbyk7CiAJCWZt Z3JfaW5mb19zZXRfZXhwcigoTm9kZSAqKSBqc2V4cHItPnJldHVybmluZywgZmluZm8pOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwppbmRleCA4YjY0YTYyNWNhNS4uMzMz NmRkYWZmNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGlu Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCkBAIC0yMjQs NyArMjI0LDcgQEAgQnVpbGRUdXBsZUhhc2hUYWJsZShQbGFuU3RhdGUgKnBhcmVudCwKIAog CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWV0YWN4dCk7CiAKLQloYXNo dGFibGUgPSAoVHVwbGVIYXNoVGFibGUpIHBhbGxvYyhzaXplb2YoVHVwbGVIYXNoVGFibGVE YXRhKSk7CisJaGFzaHRhYmxlID0gKFR1cGxlSGFzaFRhYmxlKSBwYWxsb2Nfb2JqZWN0KFR1 cGxlSGFzaFRhYmxlRGF0YSk7CiAKIAloYXNodGFibGUtPm51bUNvbHMgPSBudW1Db2xzOwog CWhhc2h0YWJsZS0+a2V5Q29sSWR4ID0ga2V5Q29sSWR4OwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYwppbmRleCBkZDMyM2M5YjlmZC4uMGIzYTMxZjE3MDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xODgsOCArMTg4LDggQEAgRXhlY09w ZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJvb2wgc3BlY3VsYXRp dmUpCiAJLyoKIAkgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgcmVzdWx0IGFycmF5cwogCSAqLwot CXJlbGF0aW9uRGVzY3MgPSAoUmVsYXRpb25QdHIpIHBhbGxvYyhsZW4gKiBzaXplb2YoUmVs YXRpb24pKTsKLQlpbmRleEluZm9BcnJheSA9IChJbmRleEluZm8gKiopIHBhbGxvYyhsZW4g KiBzaXplb2YoSW5kZXhJbmZvICopKTsKKwlyZWxhdGlvbkRlc2NzID0gcGFsbG9jX2FycmF5 KFJlbGF0aW9uLCBsZW4pOworCWluZGV4SW5mb0FycmF5ID0gcGFsbG9jX2FycmF5KEluZGV4 SW5mbyAqLCBsZW4pOwogCiAJcmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA9IGxlbjsK IAlyZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uRGVzY3MgPSByZWxhdGlvbkRlc2Nz OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMjdjOWVlYzY5N2IuLjNhZTM0OWNj OGY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTE4OSw3ICsxODksNyBAQCBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCiAJCW5QYXJhbUV4ZWMgPSBsaXN0X2xlbmd0aChxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5wYXJhbUV4ZWNUeXBlcyk7CiAJCWVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192YWxzID0gKFBh cmFtRXhlY0RhdGEgKikKLQkJCXBhbGxvYzAoblBhcmFtRXhlYyAqIHNpemVvZihQYXJhbUV4 ZWNEYXRhKSk7CisJCQlwYWxsb2MwX2FycmF5KFBhcmFtRXhlY0RhdGEsIG5QYXJhbUV4ZWMp OwogCX0KIAogCS8qIFdlIG5vdyByZXF1aXJlIGFsbCBjYWxsZXJzIHRvIHByb3ZpZGUgc291 cmNlVGV4dCAqLwpAQCAtODc2LDcgKzg3Niw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCWlmIChwbGFubmVkc3RtdC0+cm93TWFya3MpCiAJewog CQllc3RhdGUtPmVzX3Jvd21hcmtzID0gKEV4ZWNSb3dNYXJrICoqKQotCQkJcGFsbG9jMChl c3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemUgKiBzaXplb2YoRXhlY1Jvd01hcmsgKikpOwor CQkJcGFsbG9jMF9hcnJheShFeGVjUm93TWFyayAqLCBlc3RhdGUtPmVzX3JhbmdlX3RhYmxl X3NpemUpOwogCQlmb3JlYWNoKGwsIHBsYW5uZWRzdG10LT5yb3dNYXJrcykKIAkJewogCQkJ UGxhblJvd01hcmsgKnJjID0gKFBsYW5Sb3dNYXJrICopIGxmaXJzdChsKTsKQEAgLTkyMCw3 ICs5MjAsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykK IAkJCWlmIChyZWxhdGlvbikKIAkJCQlDaGVja1ZhbGlkUm93TWFya1JlbChyZWxhdGlvbiwg cmMtPm1hcmtUeXBlKTsKIAotCQkJZXJtID0gKEV4ZWNSb3dNYXJrICopIHBhbGxvYyhzaXpl b2YoRXhlY1Jvd01hcmspKTsKKwkJCWVybSA9IHBhbGxvY19vYmplY3QoRXhlY1Jvd01hcmsp OwogCQkJZXJtLT5yZWxhdGlvbiA9IHJlbGF0aW9uOwogCQkJZXJtLT5yZWxpZCA9IHJlbGlk OwogCQkJZXJtLT5ydGkgPSByYy0+cnRpOwpAQCAtMTI2Miw5ICsxMjYyLDkgQEAgSW5pdFJl c3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJaW50CQkJbiA9 IHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT5udW10cmlnZ2VyczsKIAogCQlyZXN1bHRS ZWxJbmZvLT5yaV9UcmlnRnVuY3Rpb25zID0gKEZtZ3JJbmZvICopCi0JCQlwYWxsb2MwKG4g KiBzaXplb2YoRm1nckluZm8pKTsKKwkJCXBhbGxvYzBfYXJyYXkoRm1nckluZm8sIG4pOwog CQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnV2hlbkV4cHJzID0gKEV4cHJTdGF0ZSAqKikKLQkJ CXBhbGxvYzAobiAqIHNpemVvZihFeHByU3RhdGUgKikpOworCQkJcGFsbG9jMF9hcnJheShF eHByU3RhdGUgKiwgbik7CiAJCWlmIChpbnN0cnVtZW50X29wdGlvbnMpCiAJCQlyZXN1bHRS ZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2MobiwgaW5zdHJ1bWVudF9v cHRpb25zLCBmYWxzZSk7CiAJfQpAQCAtMjU3OCw3ICsyNTc4LDcgQEAgRXhlY0ZpbmRSb3dN YXJrKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGksIGJvb2wgbWlzc2luZ19vaykKIEV4ZWNB dXhSb3dNYXJrICoKIEV4ZWNCdWlsZEF1eFJvd01hcmsoRXhlY1Jvd01hcmsgKmVybSwgTGlz dCAqdGFyZ2V0bGlzdCkKIHsKLQlFeGVjQXV4Um93TWFyayAqYWVybSA9IChFeGVjQXV4Um93 TWFyayAqKSBwYWxsb2MwKHNpemVvZihFeGVjQXV4Um93TWFyaykpOworCUV4ZWNBdXhSb3dN YXJrICphZXJtID0gcGFsbG9jMF9vYmplY3QoRXhlY0F1eFJvd01hcmspOwogCWNoYXIJCXJl c25hbWVbMzJdOwogCiAJYWVybS0+cm93bWFyayA9IGVybTsKQEAgLTI3MzUsNyArMjczNSw3 IEBAIEV2YWxQbGFuUXVhbEluaXQoRVBRU3RhdGUgKmVwcXN0YXRlLCBFU3RhdGUgKnBhcmVu dGVzdGF0ZSwKIAkgKi8KIAllcHFzdGF0ZS0+dHVwbGVfdGFibGUgPSBOSUw7CiAJZXBxc3Rh dGUtPnJlbHN1YnNfc2xvdCA9IChUdXBsZVRhYmxlU2xvdCAqKikKLQkJcGFsbG9jMChydHNp emUgKiBzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikpOworCQlwYWxsb2MwX2FycmF5KFR1cGxl VGFibGVTbG90ICosIHJ0c2l6ZSk7CiAKIAkvKiAuLi4gYW5kIHJlbWVtYmVyIGRhdGEgdGhh dCBFdmFsUGxhblF1YWxCZWdpbiB3aWxsIG5lZWQgKi8KIAllcHFzdGF0ZS0+cGxhbiA9IHN1 YnBsYW47CkBAIC0zMDc1LDcgKzMwNzUsNyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0 ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQkvKiBub3cgbWFrZSB0aGUgaW50ZXJu YWwgcGFyYW0gd29ya3NwYWNlIC4uLiAqLwogCQlpID0gbGlzdF9sZW5ndGgocGFyZW50ZXN0 YXRlLT5lc19wbGFubmVkc3RtdC0+cGFyYW1FeGVjVHlwZXMpOwogCQlyY2VzdGF0ZS0+ZXNf cGFyYW1fZXhlY192YWxzID0gKFBhcmFtRXhlY0RhdGEgKikKLQkJCXBhbGxvYzAoaSAqIHNp emVvZihQYXJhbUV4ZWNEYXRhKSk7CisJCQlwYWxsb2MwX2FycmF5KFBhcmFtRXhlY0RhdGEs IGkpOwogCQkvKiAuLi4gYW5kIGNvcHkgZG93biBhbGwgdmFsdWVzLCB3aGV0aGVyIHJlYWxs eSBuZWVkZWQgb3Igbm90ICovCiAJCXdoaWxlICgtLWkgPj0gMCkKIAkJewpAQCAtMzEzMSw3 ICszMTMxLDcgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFu ICpwbGFuVHJlZSkKIAkgKiByb3dtYXJrLgogCSAqLwogCWVwcXN0YXRlLT5yZWxzdWJzX3Jv d21hcmsgPSAoRXhlY0F1eFJvd01hcmsgKiopCi0JCXBhbGxvYzAocnRzaXplICogc2l6ZW9m KEV4ZWNBdXhSb3dNYXJrICopKTsKKwkJcGFsbG9jMF9hcnJheShFeGVjQXV4Um93TWFyayAq LCBydHNpemUpOwogCWZvcmVhY2gobCwgZXBxc3RhdGUtPmFyb3dNYXJrcykKIAl7CiAJCUV4 ZWNBdXhSb3dNYXJrICplYXJtID0gKEV4ZWNBdXhSb3dNYXJrICopIGxmaXJzdChsKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggMDEyNTQ2NGQ5NDIuLjI2MjAw YzVhM2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNjQ3LDcg KzY0Nyw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBF U3RhdGUgKmVzdGF0ZSwKIAlFeGVjU2V0UGFyYW1QbGFuTXVsdGkoc2VuZFBhcmFtcywgR2V0 UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpKTsKIAogCS8qIEFsbG9jYXRlIG9iamVjdCBm b3IgcmV0dXJuIHZhbHVlLiAqLwotCXBlaSA9IHBhbGxvYzAoc2l6ZW9mKFBhcmFsbGVsRXhl Y3V0b3JJbmZvKSk7CisJcGVpID0gcGFsbG9jMF9vYmplY3QoUGFyYWxsZWxFeGVjdXRvcklu Zm8pOwogCXBlaS0+ZmluaXNoZWQgPSBmYWxzZTsKIAlwZWktPnBsYW5zdGF0ZSA9IHBsYW5z dGF0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCBk ZWYzMjc3NGM5MC4uODYwZjc5ZjljYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCkBAIC0yMjEsNyArMjIxLDcgQEAgcmV0cnk6CiAJCWlmICghaXNJZHhT YWZlVG9Ta2lwRHVwbGljYXRlcykKIAkJewogCQkJaWYgKGVxID09IE5VTEwpCi0JCQkJZXEg PSBwYWxsb2MwKHNpemVvZigqZXEpICogb3V0c2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci0+ bmF0dHMpOworCQkJCWVxID0gcGFsbG9jMF9hcnJheShUeXBlQ2FjaGVFbnRyeSAqLCBvdXRz bG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKIAkJCWlmICghdHVwbGVzX2Vx dWFsKG91dHNsb3QsIHNlYXJjaHNsb3QsIGVxLCBOVUxMKSkKIAkJCQljb250aW51ZTsKQEAg LTM3OCw3ICszNzgsNyBAQCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEoUmVsYXRpb24gcmVs LCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAogCiAJQXNzZXJ0KGVxdWFsVHVwbGVEZXNjcyhk ZXNjLCBvdXRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKSk7CiAKLQllcSA9IHBhbGxvYzAo c2l6ZW9mKCplcSkgKiBvdXRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CisJ ZXEgPSBwYWxsb2MwX2FycmF5KFR5cGVDYWNoZUVudHJ5ICosIG91dHNsb3QtPnR0c190dXBs ZURlc2NyaXB0b3ItPm5hdHRzKTsKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAqLwogCUlu aXREaXJ0eVNuYXBzaG90KHNuYXApOwpAQCAtNTkzLDcgKzU5Myw3IEBAIFJlbGF0aW9uRmlu ZERlbGV0ZWRUdXBsZUluZm9TZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc2Vh cmNoc2xvdCwKIAkJaW5kZXhiaXRtYXAgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChy ZWwsCiAJCQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9CSVRNQVBfUFJJTUFSWV9LRVkpOwogCi0J ZXEgPSBwYWxsb2MwKHNpemVvZigqZXEpICogc2VhcmNoc2xvdC0+dHRzX3R1cGxlRGVzY3Jp cHRvci0+bmF0dHMpOworCWVxID0gcGFsbG9jMF9hcnJheShUeXBlQ2FjaGVFbnRyeSAqLCBz ZWFyY2hzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKIAkvKgogCSAqIFN0 YXJ0IGEgaGVhcCBzY2FuIHVzaW5nIFNuYXBzaG90QW55IHRvIGlkZW50aWZ5IGRlYWQgdHVw bGVzIHRoYXQgYXJlCkBAIC02NzksNyArNjc5LDcgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1 cGxlSW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCQlpZiAoIWlzSWR4 U2FmZVRvU2tpcER1cGxpY2F0ZXMpCiAJCXsKIAkJCWlmIChlcSA9PSBOVUxMKQotCQkJCWVx ID0gcGFsbG9jMChzaXplb2YoKmVxKSAqIHNjYW5zbG90LT50dHNfdHVwbGVEZXNjcmlwdG9y LT5uYXR0cyk7CisJCQkJZXEgPSBwYWxsb2MwX2FycmF5KFR5cGVDYWNoZUVudHJ5ICosIHNj YW5zbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKIAkJCWlmICghdHVwbGVz X2VxdWFsKHNjYW5zbG90LCBzZWFyY2hzbG90LCBlcSwgTlVMTCkpCiAJCQkJY29udGludWU7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKaW5kZXggOGUwMmQ2ODgyNGYuLmIwZGMy Y2ZhNjZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBAIC0yMjgzLDcgKzIy ODMsNyBAQCBUdXBsZURlc2NHZXRBdHRJbk1ldGFkYXRhKFR1cGxlRGVzYyB0dXBkZXNjKQog CWludDMyCSAgICphdHR0eXBtb2RzOwogCUF0dEluTWV0YWRhdGEgKmF0dGlubWV0YTsKIAot CWF0dGlubWV0YSA9IChBdHRJbk1ldGFkYXRhICopIHBhbGxvYyhzaXplb2YoQXR0SW5NZXRh ZGF0YSkpOworCWF0dGlubWV0YSA9IHBhbGxvY19vYmplY3QoQXR0SW5NZXRhZGF0YSk7CiAK IAkvKiAiQmxlc3MiIHRoZSB0dXBsZWRlc2Mgc28gdGhhdCB3ZSBjYW4gbWFrZSByb3d0eXBl IGRhdHVtcyB3aXRoIGl0ICovCiAJYXR0aW5tZXRhLT50dXBkZXNjID0gQmxlc3NUdXBsZURl c2ModHVwZGVzYyk7CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBiZWdpbl90dXBfb3V0cHV0X3R1 cGRlc2MoRGVzdFJlY2VpdmVyICpkZXN0LAogewogCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7 CiAKLQl0c3RhdGUgPSAoVHVwT3V0cHV0U3RhdGUgKikgcGFsbG9jKHNpemVvZihUdXBPdXRw dXRTdGF0ZSkpOworCXRzdGF0ZSA9IHBhbGxvY19vYmplY3QoVHVwT3V0cHV0U3RhdGUpOwog CiAJdHN0YXRlLT5zbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHR1cGRlc2MsIHR0 c19vcHMpOwogCXRzdGF0ZS0+ZGVzdCA9IGRlc3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9u cy5jCmluZGV4IDYzMGQ3MDhkMmEzLi42NGUyYWRhNzk2MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZnVuY3Rpb25zLmMKQEAgLTI1Niw3ICsyNTYsNyBAQCBwcmVwYXJlX3NxbF9mbl9wYXJzZV9p bmZvKEhlYXBUdXBsZSBwcm9jZWR1cmVUdXBsZSwKIAlGb3JtX3BnX3Byb2MgcHJvY2VkdXJl U3RydWN0ID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2NlZHVyZVR1cGxlKTsKIAlp bnQJCQluYXJnczsKIAotCXBpbmZvID0gKFNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRyKSBwYWxs b2MwKHNpemVvZihTUUxGdW5jdGlvblBhcnNlSW5mbykpOworCXBpbmZvID0gKFNRTEZ1bmN0 aW9uUGFyc2VJbmZvUHRyKSBwYWxsb2MwX29iamVjdChTUUxGdW5jdGlvblBhcnNlSW5mbyk7 IAogCiAJLyogRnVuY3Rpb24ncyBuYW1lIChvbmx5KSBjYW4gYmUgdXNlZCB0byBxdWFsaWZ5 IGFyZ3VtZW50IG5hbWVzICovCiAJcGluZm8tPmZuYW1lID0gcHN0cmR1cChOYW1lU3RyKHBy b2NlZHVyZVN0cnVjdC0+cHJvbmFtZSkpOwpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgZ2V0X3Nx bF9mbl9yZXN1bHRfdGxpc3QoTGlzdCAqcXVlcnlUcmVlTGlzdCkKIERlc3RSZWNlaXZlciAq CiBDcmVhdGVTUUxGdW5jdGlvbkRlc3RSZWNlaXZlcih2b2lkKQogewotCURSX3NxbGZ1bmN0 aW9uICpzZWxmID0gKERSX3NxbGZ1bmN0aW9uICopIHBhbGxvYzAoc2l6ZW9mKERSX3NxbGZ1 bmN0aW9uKSk7CisJRFJfc3FsZnVuY3Rpb24gKnNlbGYgPSBwYWxsb2MwX29iamVjdChEUl9z cWxmdW5jdGlvbik7CiAKIAlzZWxmLT5wdWIucmVjZWl2ZVNsb3QgPSBzcWxmdW5jdGlvbl9y ZWNlaXZlOwogCXNlbGYtPnB1Yi5yU3RhcnR1cCA9IHNxbGZ1bmN0aW9uX3N0YXJ0dXA7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXggMGIwMmZkMzIxMDcuLmExODU1NmY2MmVjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCBoYXNoX2Fn Z19lbnRlcl9zcGlsbF9tb2RlKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAogCQlhZ2dzdGF0ZS0+ aGFzaF90YXBlc2V0ID0gTG9naWNhbFRhcGVTZXRDcmVhdGUodHJ1ZSwgTlVMTCwgLTEpOwog Ci0JCWFnZ3N0YXRlLT5oYXNoX3NwaWxscyA9IHBhbGxvYyhzaXplb2YoSGFzaEFnZ1NwaWxs KSAqIGFnZ3N0YXRlLT5udW1faGFzaGVzKTsKKwkJYWdnc3RhdGUtPmhhc2hfc3BpbGxzID0g cGFsbG9jX2FycmF5KEhhc2hBZ2dTcGlsbCwgYWdnc3RhdGUtPm51bV9oYXNoZXMpOwogCiAJ CWZvciAoaW50IHNldG5vID0gMDsgc2V0bm8gPCBhZ2dzdGF0ZS0+bnVtX2hhc2hlczsgc2V0 bm8rKykKIAkJewpAQCAtMjk5OSw5ICsyOTk5LDkgQEAgaGFzaGFnZ19zcGlsbF9pbml0KEhh c2hBZ2dTcGlsbCAqc3BpbGwsIExvZ2ljYWxUYXBlU2V0ICp0YXBlc2V0LCBpbnQgdXNlZF9i aXRzLAogCX0KICNlbmRpZgogCi0Jc3BpbGwtPnBhcnRpdGlvbnMgPSBwYWxsb2MwKHNpemVv ZihMb2dpY2FsVGFwZSAqKSAqIG5wYXJ0aXRpb25zKTsKLQlzcGlsbC0+bnR1cGxlcyA9IHBh bGxvYzAoc2l6ZW9mKGludDY0KSAqIG5wYXJ0aXRpb25zKTsKLQlzcGlsbC0+aGxsX2NhcmQg PSBwYWxsb2MwKHNpemVvZihoeXBlckxvZ0xvZ1N0YXRlKSAqIG5wYXJ0aXRpb25zKTsKKwlz cGlsbC0+cGFydGl0aW9ucyA9IHBhbGxvYzBfYXJyYXkoTG9naWNhbFRhcGUgKiwgbnBhcnRp dGlvbnMpOworCXNwaWxsLT5udHVwbGVzID0gcGFsbG9jMF9hcnJheShpbnQ2NCwgbnBhcnRp dGlvbnMpOworCXNwaWxsLT5obGxfY2FyZCA9IHBhbGxvYzBfYXJyYXkoaHlwZXJMb2dMb2dT dGF0ZSwgbnBhcnRpdGlvbnMpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBucGFydGl0aW9u czsgaSsrKQogCQlzcGlsbC0+cGFydGl0aW9uc1tpXSA9IExvZ2ljYWxUYXBlQ3JlYXRlKHRh cGVzZXQpOwpAQCAtMzA5Nyw3ICszMDk3LDcgQEAgc3RhdGljIEhhc2hBZ2dCYXRjaCAqCiBo YXNoYWdnX2JhdGNoX25ldyhMb2dpY2FsVGFwZSAqaW5wdXRfdGFwZSwgaW50IHNldG5vLAog CQkJCSAgaW50NjQgaW5wdXRfdHVwbGVzLCBkb3VibGUgaW5wdXRfY2FyZCwgaW50IHVzZWRf Yml0cykKIHsKLQlIYXNoQWdnQmF0Y2ggKmJhdGNoID0gcGFsbG9jMChzaXplb2YoSGFzaEFn Z0JhdGNoKSk7CisJSGFzaEFnZ0JhdGNoICpiYXRjaCA9IHBhbGxvYzBfb2JqZWN0KEhhc2hB Z2dCYXRjaCk7CiAKIAliYXRjaC0+c2V0bm8gPSBzZXRubzsKIAliYXRjaC0+dXNlZF9iaXRz ID0gdXNlZF9iaXRzOwpAQCAtMzM2OCw4ICszMzY4LDcgQEAgRXhlY0luaXRBZ2coQWdnICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhZ2dzdGF0ZS0+bWF4c2V0cyA9 IG51bUdyb3VwaW5nU2V0czsKIAlhZ2dzdGF0ZS0+bnVtcGhhc2VzID0gbnVtUGhhc2VzOwog Ci0JYWdnc3RhdGUtPmFnZ2NvbnRleHRzID0gKEV4cHJDb250ZXh0ICoqKQotCQlwYWxsb2Mw KHNpemVvZihFeHByQ29udGV4dCAqKSAqIG51bUdyb3VwaW5nU2V0cyk7CisJYWdnc3RhdGUt PmFnZ2NvbnRleHRzID0gcGFsbG9jMF9hcnJheShFeHByQ29udGV4dCAqLCBudW1Hcm91cGlu Z1NldHMpOwogCiAJLyoKIAkgKiBDcmVhdGUgZXhwcmVzc2lvbiBjb250ZXh0cy4gIFdlIG5l ZWQgdGhyZWUgb3IgbW9yZSwgb25lIGZvcgpAQCAtMzQ5MiwxNSArMzQ5MSwxNSBAQCBFeGVj SW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIEZv ciBlYWNoIHBoYXNlLCBwcmVwYXJlIGdyb3VwaW5nIHNldCBkYXRhIGFuZCBmbWdyIGxvb2t1 cCBkYXRhIGZvcgogCSAqIGNvbXBhcmUgZnVuY3Rpb25zLiAgQWNjdW11bGF0ZSBhbGxfZ3Jv dXBlZF9jb2xzIGluIHBhc3NpbmcuCiAJICovCi0JYWdnc3RhdGUtPnBoYXNlcyA9IHBhbGxv YzAobnVtUGhhc2VzICogc2l6ZW9mKEFnZ1N0YXRlUGVyUGhhc2VEYXRhKSk7CisJYWdnc3Rh dGUtPnBoYXNlcyA9IHBhbGxvYzBfYXJyYXkoQWdnU3RhdGVQZXJQaGFzZURhdGEsIG51bVBo YXNlcyk7CiAKIAlhZ2dzdGF0ZS0+bnVtX2hhc2hlcyA9IG51bUhhc2hlczsKIAlpZiAobnVt SGFzaGVzKQogCXsKLQkJYWdnc3RhdGUtPnBlcmhhc2ggPSBwYWxsb2MwKHNpemVvZihBZ2dT dGF0ZVBlckhhc2hEYXRhKSAqIG51bUhhc2hlcyk7CisJCWFnZ3N0YXRlLT5wZXJoYXNoID0g cGFsbG9jMF9hcnJheShBZ2dTdGF0ZVBlckhhc2hEYXRhLCBudW1IYXNoZXMpOwogCQlhZ2dz dGF0ZS0+cGhhc2VzWzBdLm51bXNldHMgPSAwOwotCQlhZ2dzdGF0ZS0+cGhhc2VzWzBdLmdz ZXRfbGVuZ3RocyA9IHBhbGxvYyhudW1IYXNoZXMgKiBzaXplb2YoaW50KSk7Ci0JCWFnZ3N0 YXRlLT5waGFzZXNbMF0uZ3JvdXBlZF9jb2xzID0gcGFsbG9jKG51bUhhc2hlcyAqIHNpemVv ZihCaXRtYXBzZXQgKikpOworCQlhZ2dzdGF0ZS0+cGhhc2VzWzBdLmdzZXRfbGVuZ3RocyA9 IHBhbGxvY19hcnJheShpbnQsIG51bUhhc2hlcyk7CisJCWFnZ3N0YXRlLT5waGFzZXNbMF0u Z3JvdXBlZF9jb2xzID0gcGFsbG9jX2FycmF5KEJpdG1hcHNldCAqLCBudW1IYXNoZXMpOwog CX0KIAogCXBoYXNlID0gMDsKQEAgLTM1OTgsOCArMzU5Nyw3IEBAIEV4ZWNJbml0QWdnKEFn ZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJICogQnVpbGQgYSBz ZXBhcmF0ZSBmdW5jdGlvbiBmb3IgZWFjaCBzdWJzZXQgb2YgY29sdW1ucyB0aGF0CiAJCQkJ ICogbmVlZCB0byBiZSBjb21wYXJlZC4KIAkJCQkgKi8KLQkJCQlwaGFzZWRhdGEtPmVxZnVu Y3Rpb25zID0KLQkJCQkJKEV4cHJTdGF0ZSAqKikgcGFsbG9jMChhZ2dub2RlLT5udW1Db2xz ICogc2l6ZW9mKEV4cHJTdGF0ZSAqKSk7CisJCQkJcGhhc2VkYXRhLT5lcWZ1bmN0aW9ucyA9 IHBhbGxvYzBfYXJyYXkoRXhwclN0YXRlICosIGFnZ25vZGUtPm51bUNvbHMpOwogCiAJCQkJ LyogZm9yIGVhY2ggZ3JvdXBpbmcgc2V0ICovCiAJCQkJZm9yIChpbnQgayA9IDA7IGsgPCBw aGFzZWRhdGEtPm51bXNldHM7IGsrKykKQEAgLTM2NTUsMjcgKzM2NTMsMjQgQEAgRXhlY0lu aXRBZ2coQWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBhbGxv Y2F0ZSBteSBwcml2YXRlIHBlci1hZ2cgd29ya2luZyBzdG9yYWdlCiAJICovCiAJZWNvbnRl eHQgPSBhZ2dzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7Ci0JZWNvbnRleHQtPmVjeHRf YWdndmFsdWVzID0gKERhdHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIG51bWFnZ3Mp OwotCWVjb250ZXh0LT5lY3h0X2FnZ251bGxzID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2Yo Ym9vbCkgKiBudW1hZ2dzKTsKKwllY29udGV4dC0+ZWN4dF9hZ2d2YWx1ZXMgPSBwYWxsb2Mw X2FycmF5KERhdHVtLCBudW1hZ2dzKTsKKwllY29udGV4dC0+ZWN4dF9hZ2dudWxscyA9IHBh bGxvYzBfYXJyYXkoYm9vbCwgbnVtYWdncyk7CiAKLQlwZXJhZ2dzID0gKEFnZ1N0YXRlUGVy QWdnKSBwYWxsb2MwKHNpemVvZihBZ2dTdGF0ZVBlckFnZ0RhdGEpICogbnVtYWdncyk7Ci0J cGVydHJhbnNzdGF0ZXMgPSAoQWdnU3RhdGVQZXJUcmFucykgcGFsbG9jMChzaXplb2YoQWdn U3RhdGVQZXJUcmFuc0RhdGEpICogbnVtdHJhbnMpOworCXBlcmFnZ3MgPSBwYWxsb2MwX2Fy cmF5KEFnZ1N0YXRlUGVyQWdnRGF0YSwgbnVtYWdncyk7CisJcGVydHJhbnNzdGF0ZXMgPSBw YWxsb2MwX2FycmF5KEFnZ1N0YXRlUGVyVHJhbnNEYXRhLCBudW10cmFucyk7CiAKIAlhZ2dz dGF0ZS0+cGVyYWdnID0gcGVyYWdnczsKIAlhZ2dzdGF0ZS0+cGVydHJhbnMgPSBwZXJ0cmFu c3N0YXRlczsKIAogCi0JYWdnc3RhdGUtPmFsbF9wZXJncm91cHMgPQotCQkoQWdnU3RhdGVQ ZXJHcm91cCAqKSBwYWxsb2MwKHNpemVvZihBZ2dTdGF0ZVBlckdyb3VwKQotCQkJCQkJCQkJ ICogKG51bUdyb3VwaW5nU2V0cyArIG51bUhhc2hlcykpOworCWFnZ3N0YXRlLT5hbGxfcGVy Z3JvdXBzID0gcGFsbG9jMF9hcnJheShBZ2dTdGF0ZVBlckdyb3VwLCBudW1Hcm91cGluZ1Nl dHMgKyBudW1IYXNoZXMpOwogCXBlcmdyb3VwcyA9IGFnZ3N0YXRlLT5hbGxfcGVyZ3JvdXBz OwogCiAJaWYgKG5vZGUtPmFnZ3N0cmF0ZWd5ICE9IEFHR19IQVNIRUQpCiAJewogCQlmb3Ig KGkgPSAwOyBpIDwgbnVtR3JvdXBpbmdTZXRzOyBpKyspCiAJCXsKLQkJCXBlcmdyb3Vwc1tp XSA9IChBZ2dTdGF0ZVBlckdyb3VwKSBwYWxsb2MwKHNpemVvZihBZ2dTdGF0ZVBlckdyb3Vw RGF0YSkKLQkJCQkJCQkJCQkJCQkgICogbnVtYWdncyk7CisJCQlwZXJncm91cHNbaV0gPSBw YWxsb2MwX2FycmF5KEFnZ1N0YXRlUGVyR3JvdXBEYXRhLCBudW1hZ2dzKTsKIAkJfQogCiAJ CWFnZ3N0YXRlLT5wZXJncm91cHMgPSBwZXJncm91cHM7CkBAIC00Mzc1LDggKzQzNzAsNyBA QCBidWlsZF9wZXJ0cmFuc19mb3JfYWdncmVmKEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMs CiAJCXBmcmVlKG9wcyk7CiAJfQogCi0JcGVydHJhbnMtPnNvcnRzdGF0ZXMgPSAoVHVwbGVz b3J0c3RhdGUgKiopCi0JCXBhbGxvYzAoc2l6ZW9mKFR1cGxlc29ydHN0YXRlICopICogbnVt R3JvdXBpbmdTZXRzKTsKKwlwZXJ0cmFucy0+c29ydHN0YXRlcyA9IHBhbGxvYzBfYXJyYXko VHVwbGVzb3J0c3RhdGUgKiwgbnVtR3JvdXBpbmdTZXRzKTsKIH0KIAogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYTExYjM2YzcxNzYuLjc3YzRkZDllNGIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ ewogCQkJQXN5bmNSZXF1ZXN0ICphcmVxOwogCi0JCQlhcmVxID0gcGFsbG9jKHNpemVvZihB c3luY1JlcXVlc3QpKTsKKwkJCWFyZXEgPSBwYWxsb2Nfb2JqZWN0KEFzeW5jUmVxdWVzdCk7 CiAJCQlhcmVxLT5yZXF1ZXN0b3IgPSAoUGxhblN0YXRlICopIGFwcGVuZHN0YXRlOwogCQkJ YXJlcS0+cmVxdWVzdGVlID0gYXBwZW5kcGxhbnN0YXRlc1tpXTsKIAkJCWFyZXEtPnJlcXVl c3RfaW5kZXggPSBpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1 bmN0aW9uc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5j CmluZGV4IDY0NDM2MzU4MmQ5Li5hZjc1ZGQ4ZmM1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVGdW5jdGlvbnNjYW4uYwpAQCAtMzMzLDcgKzMzMyw3IEBAIEV4ZWNJbml0RnVu Y3Rpb25TY2FuKEZ1bmN0aW9uU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+ c3MucHMpOwogCi0Jc2NhbnN0YXRlLT5mdW5jc3RhdGVzID0gcGFsbG9jKG5mdW5jcyAqIHNp emVvZihGdW5jdGlvblNjYW5QZXJGdW5jU3RhdGUpKTsKKwlzY2Fuc3RhdGUtPmZ1bmNzdGF0 ZXMgPSBwYWxsb2NfYXJyYXkoRnVuY3Rpb25TY2FuUGVyRnVuY1N0YXRlLCBuZnVuY3MpOwog CiAJbmF0dHMgPSAwOwogCWkgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy TWVyZ2UuYwppbmRleCA5M2YzZGJjNmNmNC4uYzA0NTIyZmVhNGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0xNDUsOCArMTQ1LDcgQEAgRXhlY0lu aXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCWludAkJCWk7CiAKIAkJZ21fc3RhdGUtPmdtX25rZXlzID0gbm9kZS0+bnVt Q29sczsKLQkJZ21fc3RhdGUtPmdtX3NvcnRrZXlzID0KLQkJCXBhbGxvYzAoc2l6ZW9mKFNv cnRTdXBwb3J0RGF0YSkgKiBub2RlLT5udW1Db2xzKTsKKwkJZ21fc3RhdGUtPmdtX3NvcnRr ZXlzID0gcGFsbG9jMF9hcnJheShTb3J0U3VwcG9ydERhdGEsIG5vZGUtPm51bUNvbHMpOwog CiAJCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1Db2xzOyBpKyspCiAJCXsKQEAgLTQxOCw4 ICs0MTcsNyBAQCBnYXRoZXJfbWVyZ2Vfc2V0dXAoR2F0aGVyTWVyZ2VTdGF0ZSAqZ21fc3Rh dGUpCiAJZm9yIChpID0gMDsgaSA8IG5yZWFkZXJzOyBpKyspCiAJewogCQkvKiBBbGxvY2F0 ZSB0aGUgdHVwbGUgYXJyYXkgd2l0aCBsZW5ndGggTUFYX1RVUExFX1NUT1JFICovCi0JCWdt X3N0YXRlLT5nbV90dXBsZV9idWZmZXJzW2ldLnR1cGxlID0KLQkJCShNaW5pbWFsVHVwbGUg KikgcGFsbG9jMChzaXplb2YoTWluaW1hbFR1cGxlKSAqIE1BWF9UVVBMRV9TVE9SRSk7CisJ CWdtX3N0YXRlLT5nbV90dXBsZV9idWZmZXJzW2ldLnR1cGxlID0gcGFsbG9jMF9hcnJheShN aW5pbWFsVHVwbGUsIE1BWF9UVVBMRV9TVE9SRSk7CiAKIAkJLyogSW5pdGlhbGl6ZSB0dXBs ZSBzbG90IGZvciB3b3JrZXIgKi8KIAkJZ21fc3RhdGUtPmdtX3Nsb3RzW2kgKyAxXSA9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDU2NjFhZDc2ODMwLi5jYzUw YmVlMTllYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2lu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg5OSw3 ICs4OTksNyBAQCBFeGVjSW5pdEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkJICovCiAJCWlmIChPaWRJc1ZhbGlkKGhhc2gtPnNrZXdU YWJsZSkpCiAJCXsKLQkJCWhhc2hzdGF0ZS0+c2tld19oYXNoZnVuY3Rpb24gPSBwYWxsb2Mw KHNpemVvZihGbWdySW5mbykpOworCQkJaGFzaHN0YXRlLT5za2V3X2hhc2hmdW5jdGlvbiA9 IHBhbGxvYzBfb2JqZWN0KEZtZ3JJbmZvKTsKIAkJCWhhc2hzdGF0ZS0+c2tld19jb2xsYXRp b24gPSBsaW5pdGlhbF9vaWQobm9kZS0+aGFzaGNvbGxhdGlvbnMpOwogCQkJZm1ncl9pbmZv KG91dGVyX2hhc2hmdW5jaWRbMF0sIGhhc2hzdGF0ZS0+c2tld19oYXNoZnVuY3Rpb24pOwog CQl9CkBAIC0xNTQxLDggKzE1NDEsNyBAQCBFeGVjUmVTY2FuSGFzaEpvaW4oSGFzaEpvaW5T dGF0ZSAqbm9kZSkKIAkJCS8qIGFjY3VtdWxhdGUgc3RhdHMgZnJvbSBvbGQgaGFzaCB0YWJs ZSwgaWYgd2FudGVkICovCiAJCQkvKiAodGhpcyBzaG91bGQgbWF0Y2ggRXhlY1NodXRkb3du SGFzaCkgKi8KIAkJCWlmIChoYXNoTm9kZS0+cHMuaW5zdHJ1bWVudCAmJiAhaGFzaE5vZGUt PmhpbnN0cnVtZW50KQotCQkJCWhhc2hOb2RlLT5oaW5zdHJ1bWVudCA9IChIYXNoSW5zdHJ1 bWVudGF0aW9uICopCi0JCQkJCXBhbGxvYzAoc2l6ZW9mKEhhc2hJbnN0cnVtZW50YXRpb24p KTsKKwkJCQloYXNoTm9kZS0+aGluc3RydW1lbnQgPSBwYWxsb2MwX29iamVjdChIYXNoSW5z dHJ1bWVudGF0aW9uKTsKIAkJCWlmIChoYXNoTm9kZS0+aGluc3RydW1lbnQpCiAJCQkJRXhl Y0hhc2hBY2N1bUluc3RydW1lbnRhdGlvbihoYXNoTm9kZS0+aGluc3RydW1lbnQsCiAJCQkJ CQkJCQkJCSBoYXNoTm9kZS0+aGFzaHRhYmxlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGY0NjRjY2E5NTA3Li42YmVhNDJmMTI4ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC02OTMsOCAr NjkzLDcgQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBOb3cgY3JlYXRlIGFuIGFycmF5IHRv IG1hcmsgdGhlIGF0dHJpYnV0ZSBudW1iZXJzIG9mIHRoZSBrZXlzIHRoYXQKIAkJICogbmVl ZCB0byBiZSBjb252ZXJ0ZWQgZnJvbSBjc3RyaW5nIHRvIG5hbWUuCiAJCSAqLwotCQlpbmRl eHN0YXRlLT5pb3NzX05hbWVDU3RyaW5nQXR0TnVtcyA9IChBdHRyTnVtYmVyICopCi0JCQlw YWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogbmFtZWNvdW50KTsKKwkJaW5kZXhzdGF0ZS0+ aW9zc19OYW1lQ1N0cmluZ0F0dE51bXMgPSBwYWxsb2NfYXJyYXkoQXR0ck51bWJlciwgbmFt ZWNvdW50KTsKIAogCQlmb3IgKGludCBhdHRudW0gPSAwOyBhdHRudW0gPCBpbmRua2V5YXR0 czsgYXR0bnVtKyspCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpp bmRleCBmMzY5MjlkZWVjMy4uNzJiMTM1ZTVkY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhzY2FuLmMKQEAgLTQ2NiwxMiArNDY2LDEwIEBAIHJlb3JkZXJxdWV1ZV9wdXNo KEluZGV4U2NhblN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAlSZW9yZGVy VHVwbGUgKnJ0OwogCWludAkJCWk7CiAKLQlydCA9IChSZW9yZGVyVHVwbGUgKikgcGFsbG9j KHNpemVvZihSZW9yZGVyVHVwbGUpKTsKKwlydCA9IHBhbGxvY19vYmplY3QoUmVvcmRlclR1 cGxlKTsKIAlydC0+aHR1cCA9IEV4ZWNDb3B5U2xvdEhlYXBUdXBsZShzbG90KTsKLQlydC0+ b3JkZXJieXZhbHMgPQotCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBzY2Fu ZGVzYy0+bnVtYmVyT2ZPcmRlckJ5cyk7Ci0JcnQtPm9yZGVyYnludWxscyA9Ci0JCShib29s ICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBzY2FuZGVzYy0+bnVtYmVyT2ZPcmRlckJ5cyk7 CisJcnQtPm9yZGVyYnl2YWxzID0gcGFsbG9jX2FycmF5KERhdHVtLCBzY2FuZGVzYy0+bnVt YmVyT2ZPcmRlckJ5cyk7CisJcnQtPm9yZGVyYnludWxscyA9IHBhbGxvY19hcnJheShib29s LCBzY2FuZGVzYy0+bnVtYmVyT2ZPcmRlckJ5cyk7CiAJZm9yIChpID0gMDsgaSA8IG5vZGUt Pmlzc19OdW1PcmRlckJ5S2V5czsgaSsrKQogCXsKIAkJaWYgKCFvcmRlcmJ5bnVsbHNbaV0p CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCBkNjUyNjYzY2I2YS4uNzQ0 NDM5MWU4YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXpl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpAQCAtNTU1LDcg KzU1NSw3IEBAIGNhY2hlX2xvb2t1cChNZW1vaXplU3RhdGUgKm1zdGF0ZSwgYm9vbCAqZm91 bmQpCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhtc3RhdGUtPnRhYmxl Q29udGV4dCk7CiAKIAkvKiBBbGxvY2F0ZSBhIG5ldyBrZXkgKi8KLQllbnRyeS0+a2V5ID0g a2V5ID0gKE1lbW9pemVLZXkgKikgcGFsbG9jKHNpemVvZihNZW1vaXplS2V5KSk7CisJZW50 cnktPmtleSA9IGtleSA9IHBhbGxvY19vYmplY3QoTWVtb2l6ZUtleSk7CiAJa2V5LT5wYXJh bXMgPSBFeGVjQ29weVNsb3RNaW5pbWFsVHVwbGUobXN0YXRlLT5wcm9iZXNsb3QpOwogCiAJ LyogVXBkYXRlIHRoZSB0b3RhbCBjYWNoZSBtZW1vcnkgdXRpbGl6YXRpb24gKi8KQEAgLTYz NCw3ICs2MzQsNyBAQCBjYWNoZV9zdG9yZV90dXBsZShNZW1vaXplU3RhdGUgKm1zdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG1zdGF0ZS0+dGFibGVDb250ZXh0KTsKIAotCXR1cGxlID0gKE1lbW9pemVUdXBs ZSAqKSBwYWxsb2Moc2l6ZW9mKE1lbW9pemVUdXBsZSkpOworCXR1cGxlID0gcGFsbG9jX29i amVjdChNZW1vaXplVHVwbGUpOwogCXR1cGxlLT5taW50dXBsZSA9IEV4ZWNDb3B5U2xvdE1p bmltYWxUdXBsZShzbG90KTsKIAl0dXBsZS0+bmV4dCA9IE5VTEw7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggNDA1ZThmOTQyODUuLjMwMGJjZDVj ZjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMTIy LDExICsxMjIsMTEgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0 YXRlID0gTlVMTDsKIAl9CiAKLQltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBw YWxsb2MobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJbWVyZ2VwbGFuc3RhdGVz ID0gcGFsbG9jX2FycmF5KFBsYW5TdGF0ZSAqLCBucGxhbnMpOwogCW1lcmdlc3RhdGUtPm1l cmdlcGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7CiAJbWVyZ2VzdGF0ZS0+bXNfbnBsYW5zID0g bnBsYW5zOwogCi0JbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSAoVHVwbGVUYWJsZVNsb3QgKiop IHBhbGxvYzAoc2l6ZW9mKFR1cGxlVGFibGVTbG90ICopICogbnBsYW5zKTsKKwltZXJnZXN0 YXRlLT5tc19zbG90cyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbnBsYW5z KTsKIAltZXJnZXN0YXRlLT5tc19oZWFwID0gYmluYXJ5aGVhcF9hbGxvY2F0ZShucGxhbnMs IGhlYXBfY29tcGFyZV9zbG90cywKIAkJCQkJCQkJCQkJICBtZXJnZXN0YXRlKTsKIApAQCAt MTc0LDcgKzE3NCw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgc29ydC1rZXkg aW5mb3JtYXRpb24KIAkgKi8KIAltZXJnZXN0YXRlLT5tc19ua2V5cyA9IG5vZGUtPm51bUNv bHM7Ci0JbWVyZ2VzdGF0ZS0+bXNfc29ydGtleXMgPSBwYWxsb2MwKHNpemVvZihTb3J0U3Vw cG9ydERhdGEpICogbm9kZS0+bnVtQ29scyk7CisJbWVyZ2VzdGF0ZS0+bXNfc29ydGtleXMg PSBwYWxsb2MwX2FycmF5KFNvcnRTdXBwb3J0RGF0YSwgbm9kZS0+bnVtQ29scyk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtQ29sczsgaSsrKQogCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZTQ0ZjEyMjM4ODYuLjg3NGI3MWU2NjA4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTgxLDgg KzU4MSw4IEBAIEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sCiAKIAlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdl dFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKIAotCXZhbHVlcyA9IHBhbGxvYyhz aXplb2YoKnZhbHVlcykgKiBuYXR0cyk7Ci0JbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKCpudWxs cykgKiBuYXR0cyk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBuYXR0cyk7CisJ bnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgbmF0dHMpOwogCiAJc2xvdF9nZXRhbGxhdHRy cyhzbG90KTsKIAltZW1jcHkobnVsbHMsIHNsb3QtPnR0c19pc251bGwsIHNpemVvZigqbnVs bHMpICogbmF0dHMpOwpAQCAtOTYyLDEwICs5NjIsOCBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRh YmxlQ29udGV4dCAqY29udGV4dCwKIAogCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Nsb3Rz ID09IE5VTEwpCiAJCQl7Ci0JCQkJcmVzdWx0UmVsSW5mby0+cmlfU2xvdHMgPSBwYWxsb2Mo c2l6ZW9mKFR1cGxlVGFibGVTbG90ICopICoKLQkJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZv LT5yaV9CYXRjaFNpemUpOwotCQkJCXJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90cyA9IHBh bGxvYyhzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKgotCQkJCQkJCQkJCQkJCSByZXN1bHRS ZWxJbmZvLT5yaV9CYXRjaFNpemUpOworCQkJCXJlc3VsdFJlbEluZm8tPnJpX1Nsb3RzID0g cGFsbG9jX2FycmF5KFR1cGxlVGFibGVTbG90ICosIHJlc3VsdFJlbEluZm8tPnJpX0JhdGNo U2l6ZSk7CisJCQkJcmVzdWx0UmVsSW5mby0+cmlfUGxhblNsb3RzID0gcGFsbG9jX2FycmF5 KFR1cGxlVGFibGVTbG90ICosIHJlc3VsdFJlbEluZm8tPnJpX0JhdGNoU2l6ZSk7CiAJCQl9 CiAKIAkJCS8qCkBAIC00NzQ1LDggKzQ3NDMsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltdHN0YXRl LT5tdF9kb25lID0gZmFsc2U7CiAKIAltdHN0YXRlLT5tdF9ucmVscyA9IG5yZWxzOwotCW10 c3RhdGUtPnJlc3VsdFJlbEluZm8gPSAoUmVzdWx0UmVsSW5mbyAqKQotCQlwYWxsb2MobnJl bHMgKiBzaXplb2YoUmVzdWx0UmVsSW5mbykpOworCW10c3RhdGUtPnJlc3VsdFJlbEluZm8g PSBwYWxsb2NfYXJyYXkoUmVzdWx0UmVsSW5mbywgbnJlbHMpOwogCiAJbXRzdGF0ZS0+bXRf bWVyZ2VfcGVuZGluZ19ub3RfbWF0Y2hlZCA9IE5VTEw7CiAJbXRzdGF0ZS0+bXRfbWVyZ2Vf aW5zZXJ0ZWQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVBy b2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKaW5k ZXggODgwZjM5ZmIyZmYuLjdkNjIxY2ViYzdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVQcm9qZWN0U2V0LmMKQEAgLTI2NywxMCArMjY3LDggQEAgRXhlY0luaXRQcm9qZWN0U2V0 KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyog Q3JlYXRlIHdvcmtzcGFjZSBmb3IgcGVyLXRsaXN0LWVudHJ5IGV4cHIgc3RhdGUgJiBTUkYt aXMtZG9uZSBzdGF0ZSAqLwogCXN0YXRlLT5uZWxlbXMgPSBsaXN0X2xlbmd0aChub2RlLT5w bGFuLnRhcmdldGxpc3QpOwotCXN0YXRlLT5lbGVtcyA9IChOb2RlICoqKQotCQlwYWxsb2Mo c2l6ZW9mKE5vZGUgKikgKiBzdGF0ZS0+bmVsZW1zKTsKLQlzdGF0ZS0+ZWxlbWRvbmUgPSAo RXhwckRvbmVDb25kICopCi0JCXBhbGxvYyhzaXplb2YoRXhwckRvbmVDb25kKSAqIHN0YXRl LT5uZWxlbXMpOworCXN0YXRlLT5lbGVtcyA9IHBhbGxvY19hcnJheShOb2RlICosIHN0YXRl LT5uZWxlbXMpOworCXN0YXRlLT5lbGVtZG9uZSA9IHBhbGxvY19hcnJheShFeHByRG9uZUNv bmQsIHN0YXRlLT5uZWxlbXMpOwogCiAJLyoKIAkgKiBCdWlsZCBleHByZXNzaW9ucyB0byBl dmFsdWF0ZSB0YXJnZXRsaXN0LiAgV2UgY2FuJ3QgdXNlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYwppbmRleCA2YjNkYjc1NDhlZC4uYzI4YmM2ZmM2MjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMjI4LDcgKzIyOCw3IEBA IHRhYmxlc2FtcGxlX2luaXQoU2FtcGxlU2NhblN0YXRlICpzY2Fuc3RhdGUpCiAJTGlzdENl bGwgICAqYXJnOwogCiAJc2NhbnN0YXRlLT5kb25ldHVwbGVzID0gMDsKLQlwYXJhbXMgPSAo RGF0dW0gKikgcGFsbG9jKGxpc3RfbGVuZ3RoKHNjYW5zdGF0ZS0+YXJncykgKiBzaXplb2Yo RGF0dW0pKTsKKwlwYXJhbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGxpc3RfbGVuZ3RoKHNj YW5zdGF0ZS0+YXJncykpOwogCiAJaSA9IDA7CiAJZm9yZWFjaChhcmcsIHNjYW5zdGF0ZS0+ YXJncykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4 IDRiYWU2ODVkNDVhLi40YWJhZGEwZTAzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGFibGVGdW5jc2Nhbi5jCkBAIC0xOTIsOCArMTkyLDggQEAgRXhlY0luaXRUYWJsZUZ1 bmNTY2FuKFRhYmxlRnVuY1NjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCXNjYW5zdGF0ZS0+bm90bnVsbHMgPSB0Zi0+bm90bnVsbHM7CiAKIAkvKiB0aGVzZSBh cmUgYWxsb2NhdGVkIG5vdyBhbmQgaW5pdGlhbGl6ZWQgbGF0ZXIgKi8KLQlzY2Fuc3RhdGUt PmluX2Z1bmN0aW9ucyA9IHBhbGxvYyhzaXplb2YoRm1nckluZm8pICogdHVwZGVzYy0+bmF0 dHMpOwotCXNjYW5zdGF0ZS0+dHlwaW9wYXJhbXMgPSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiB0 dXBkZXNjLT5uYXR0cyk7CisJc2NhbnN0YXRlLT5pbl9mdW5jdGlvbnMgPSBwYWxsb2NfYXJy YXkoRm1nckluZm8sIHR1cGRlc2MtPm5hdHRzKTsKKwlzY2Fuc3RhdGUtPnR5cGlvcGFyYW1z ID0gcGFsbG9jX2FycmF5KE9pZCwgdHVwZGVzYy0+bmF0dHMpOwogCiAJLyoKIAkgKiBGaWxs IGluIHRoZSBuZWNlc3NhcnkgZm1nciBpbmZvcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRyYW5nZXNjYW4uYwppbmRleCA2ZmQ5ZjY4Y2RkZC4uNGNlYjE4MWQ2MjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTcyLDcgKzcyLDcg QEAgTWFrZVRpZE9wRXhwcihPcEV4cHIgKmV4cHIsIFRpZFJhbmdlU2NhblN0YXRlICp0aWRz dGF0ZSkKIAllbHNlCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3QgaWRlbnRpZnkgQ1RJRCB2 YXJpYWJsZSIpOwogCi0JdGlkb3BleHByID0gKFRpZE9wRXhwciAqKSBwYWxsb2Moc2l6ZW9m KFRpZE9wRXhwcikpOworCXRpZG9wZXhwciA9IHBhbGxvY19vYmplY3QoVGlkT3BFeHByKTsK IAl0aWRvcGV4cHItPmluY2x1c2l2ZSA9IGZhbHNlOwkvKiBmb3Igbm93ICovCiAKIAlzd2l0 Y2ggKGV4cHItPm9wbm8pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCBk NTBjNjYwMDM1OC4uMzVmY2Q1NjI1ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNj YW4uYwpAQCAtNzgsNyArNzgsNyBAQCBUaWRFeHByTGlzdENyZWF0ZShUaWRTY2FuU3RhdGUg KnRpZHN0YXRlKQogCWZvcmVhY2gobCwgbm9kZS0+dGlkcXVhbHMpCiAJewogCQlFeHByCSAg ICpleHByID0gKEV4cHIgKikgbGZpcnN0KGwpOwotCQlUaWRFeHByICAgICp0aWRleHByID0g KFRpZEV4cHIgKikgcGFsbG9jMChzaXplb2YoVGlkRXhwcikpOworCQlUaWRFeHByICAgICp0 aWRleHByID0gcGFsbG9jMF9vYmplY3QoVGlkRXhwcik7CiAKIAkJaWYgKGlzX29wY2xhdXNl KGV4cHIpKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXgg M2EwZDFmMGM5MjIuLmMwZTVhYjhkYmJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jCkBAIC0yNjYxLDE0ICsyNjYxLDE0IEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbnVtZnVuY3Mg PSB3aW5zdGF0ZS0+bnVtZnVuY3M7CiAJbnVtYWdncyA9IHdpbnN0YXRlLT5udW1hZ2dzOwog CWVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwotCWVjb250ZXh0 LT5lY3h0X2FnZ3ZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBu dW1mdW5jcyk7Ci0JZWNvbnRleHQtPmVjeHRfYWdnbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2Mw KHNpemVvZihib29sKSAqIG51bWZ1bmNzKTsKKwllY29udGV4dC0+ZWN4dF9hZ2d2YWx1ZXMg PSBwYWxsb2MwX2FycmF5KERhdHVtLCBudW1mdW5jcyk7CisJZWNvbnRleHQtPmVjeHRfYWdn bnVsbHMgPSBwYWxsb2MwX2FycmF5KGJvb2wsIG51bWZ1bmNzKTsKIAogCS8qCiAJICogYWxs b2NhdGUgcGVyLXdmdW5jL3Blci1hZ2cgc3RhdGUgaW5mb3JtYXRpb24uCiAJICovCi0JcGVy ZnVuYyA9IChXaW5kb3dTdGF0ZVBlckZ1bmMpIHBhbGxvYzAoc2l6ZW9mKFdpbmRvd1N0YXRl UGVyRnVuY0RhdGEpICogbnVtZnVuY3MpOwotCXBlcmFnZyA9IChXaW5kb3dTdGF0ZVBlckFn ZykgcGFsbG9jMChzaXplb2YoV2luZG93U3RhdGVQZXJBZ2dEYXRhKSAqIG51bWFnZ3MpOwor CXBlcmZ1bmMgPSBwYWxsb2MwX2FycmF5KFdpbmRvd1N0YXRlUGVyRnVuY0RhdGEsIG51bWZ1 bmNzKTsKKwlwZXJhZ2cgPSBwYWxsb2MwX2FycmF5KFdpbmRvd1N0YXRlUGVyQWdnRGF0YSwg bnVtYWdncyk7CiAJd2luc3RhdGUtPnBlcmZ1bmMgPSBwZXJmdW5jOwogCXdpbnN0YXRlLT5w ZXJhZ2cgPSBwZXJhZ2c7CiAKQEAgLTM0NjcsOCArMzQ2Nyw4IEBAIGluaXRfbm90bnVsbF9p bmZvKFdpbmRvd09iamVjdCB3aW5vYmosIFdpbmRvd1N0YXRlUGVyRnVuYyBwZXJmdW5jc3Rh dGUpCiAKIAlpZiAod2lub2JqLT5pZ25vcmVfbnVsbHMgPT0gUEFSU0VSX0lHTk9SRV9OVUxM UykKIAl7Ci0JCXdpbm9iai0+bm90bnVsbF9pbmZvID0gcGFsbG9jMChzaXplb2YodWludDgg KikgKiBudW1hcmdzKTsKLQkJd2lub2JqLT5udW1fbm90bnVsbF9pbmZvID0gcGFsbG9jMChz aXplb2YoaW50NjQpICogbnVtYXJncyk7CisJCXdpbm9iai0+bm90bnVsbF9pbmZvID0gcGFs bG9jMF9hcnJheSh1aW50OCAqLCBudW1hcmdzKTsKKwkJd2lub2JqLT5udW1fbm90bnVsbF9p bmZvID0gcGFsbG9jMF9hcnJheShpbnQ2NCwgbnVtYXJncyk7CiAJfQogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L3NwaS5jCmluZGV4IDY1MzUwMGIzOGRjLi4zNGE2M2E5NzdiNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKQEAgLTExMzAsOCArMTEzMCw4IEBAIFNQSV9tb2RpZnl0dXBsZShSZWxhdGlvbiByZWws IEhlYXBUdXBsZSB0dXBsZSwgaW50IG5hdHRzLCBpbnQgKmF0dG51bSwKIAlTUElfcmVzdWx0 ID0gMDsKIAogCW51bWJlck9mQXR0cmlidXRlcyA9IHJlbC0+cmRfYXR0LT5uYXR0czsKLQl2 ID0gKERhdHVtICopIHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMgKiBzaXplb2YoRGF0dW0p KTsKLQluID0gKGJvb2wgKikgcGFsbG9jKG51bWJlck9mQXR0cmlidXRlcyAqIHNpemVvZihi b29sKSk7CisJdiA9IHBhbGxvY19hcnJheShEYXR1bSwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsK KwluID0gcGFsbG9jX2FycmF5KGJvb2wsIG51bWJlck9mQXR0cmlidXRlcyk7CiAKIAkvKiBm ZXRjaCBvbGQgdmFsdWVzIGFuZCBudWxscyAqLwogCWhlYXBfZGVmb3JtX3R1cGxlKHR1cGxl LCByZWwtPnJkX2F0dCwgdiwgbik7CkBAIC0yMTQxLDggKzIxNDEsNyBAQCBzcGlfZGVzdF9z dGFydHVwKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNjIHR5 cGVpbmZvKQogCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8odHVwdGFiY3h0KTsKIAotCV9TUElfY3VycmVudC0+dHVwdGFibGUg PSB0dXB0YWJsZSA9IChTUElUdXBsZVRhYmxlICopCi0JCXBhbGxvYzAoc2l6ZW9mKFNQSVR1 cGxlVGFibGUpKTsKKwlfU1BJX2N1cnJlbnQtPnR1cHRhYmxlID0gdHVwdGFibGUgPSBwYWxs b2MwX29iamVjdChTUElUdXBsZVRhYmxlKTsKIAl0dXB0YWJsZS0+dHVwdGFiY3h0ID0gdHVw dGFiY3h0OwogCXR1cHRhYmxlLT5zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklk KCk7CiAKQEAgLTIxNTUsNyArMjE1NCw3IEBAIHNwaV9kZXN0X3N0YXJ0dXAoRGVzdFJlY2Vp dmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlwZWluZm8pCiAKIAkvKiBz ZXQgdXAgaW5pdGlhbCBhbGxvY2F0aW9ucyAqLwogCXR1cHRhYmxlLT5hbGxvY2VkID0gMTI4 OwotCXR1cHRhYmxlLT52YWxzID0gKEhlYXBUdXBsZSAqKSBwYWxsb2ModHVwdGFibGUtPmFs bG9jZWQgKiBzaXplb2YoSGVhcFR1cGxlKSk7CisJdHVwdGFibGUtPnZhbHMgPSBwYWxsb2Nf YXJyYXkoSGVhcFR1cGxlLCB0dXB0YWJsZS0+YWxsb2NlZCk7CiAJdHVwdGFibGUtPm51bXZh bHMgPSAwOwogCXR1cHRhYmxlLT50dXBkZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weSh0eXBl aW5mbyk7CiAKQEAgLTMxNjIsNyArMzE2MSw3IEBAIF9TUElfbWFrZV9wbGFuX25vbl90ZW1w KFNQSVBsYW5QdHIgcGxhbikKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxh bmN4dCk7CiAKIAkvKiBDb3B5IHRoZSBfU1BJX3BsYW4gc3RydWN0IGFuZCBzdWJzaWRpYXJ5 IGRhdGEgaW50byB0aGUgbmV3IGNvbnRleHQgKi8KLQluZXdwbGFuID0gKFNQSVBsYW5QdHIp IHBhbGxvYzAoc2l6ZW9mKF9TUElfcGxhbikpOworCW5ld3BsYW4gPSBwYWxsb2MwX29iamVj dChfU1BJX3BsYW4pOwogCW5ld3BsYW4tPm1hZ2ljID0gX1NQSV9QTEFOX01BR0lDOwogCW5l d3BsYW4tPnBsYW5jeHQgPSBwbGFuY3h0OwogCW5ld3BsYW4tPnBhcnNlX21vZGUgPSBwbGFu LT5wYXJzZV9tb2RlOwpAQCAtMzE3MCw3ICszMTY5LDcgQEAgX1NQSV9tYWtlX3BsYW5fbm9u X3RlbXAoU1BJUGxhblB0ciBwbGFuKQogCW5ld3BsYW4tPm5hcmdzID0gcGxhbi0+bmFyZ3M7 CiAJaWYgKHBsYW4tPm5hcmdzID4gMCkKIAl7Ci0JCW5ld3BsYW4tPmFyZ3R5cGVzID0gKE9p ZCAqKSBwYWxsb2MocGxhbi0+bmFyZ3MgKiBzaXplb2YoT2lkKSk7CisJCW5ld3BsYW4tPmFy Z3R5cGVzID0gcGFsbG9jX2FycmF5KE9pZCwgcGxhbi0+bmFyZ3MpOwogCQltZW1jcHkobmV3 cGxhbi0+YXJndHlwZXMsIHBsYW4tPmFyZ3R5cGVzLCBwbGFuLT5uYXJncyAqIHNpemVvZihP aWQpKTsKIAl9CiAJZWxzZQpAQCAtMzIyNyw3ICszMjI2LDcgQEAgX1NQSV9zYXZlX3BsYW4o U1BJUGxhblB0ciBwbGFuKQogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFu Y3h0KTsKIAogCS8qIENvcHkgdGhlIFNQSSBwbGFuIGludG8gaXRzIG93biBjb250ZXh0ICov Ci0JbmV3cGxhbiA9IChTUElQbGFuUHRyKSBwYWxsb2MwKHNpemVvZihfU1BJX3BsYW4pKTsK KwluZXdwbGFuID0gcGFsbG9jMF9vYmplY3QoX1NQSV9wbGFuKTsKIAluZXdwbGFuLT5tYWdp YyA9IF9TUElfUExBTl9NQUdJQzsKIAluZXdwbGFuLT5wbGFuY3h0ID0gcGxhbmN4dDsKIAlu ZXdwbGFuLT5wYXJzZV9tb2RlID0gcGxhbi0+cGFyc2VfbW9kZTsKQEAgLTMyMzUsNyArMzIz NCw3IEBAIF9TUElfc2F2ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbikKIAluZXdwbGFuLT5uYXJn cyA9IHBsYW4tPm5hcmdzOwogCWlmIChwbGFuLT5uYXJncyA+IDApCiAJewotCQluZXdwbGFu LT5hcmd0eXBlcyA9IChPaWQgKikgcGFsbG9jKHBsYW4tPm5hcmdzICogc2l6ZW9mKE9pZCkp OworCQluZXdwbGFuLT5hcmd0eXBlcyA9IHBhbGxvY19hcnJheShPaWQsIHBsYW4tPm5hcmdz KTsKIAkJbWVtY3B5KG5ld3BsYW4tPmFyZ3R5cGVzLCBwbGFuLT5hcmd0eXBlcywgcGxhbi0+ bmFyZ3MgKiBzaXplb2YoT2lkKSk7CiAJfQogCWVsc2UKQEAgLTMzNjksNyArMzM2OCw3IEBA IFNQSV9yZWdpc3Rlcl90cmlnZ2VyX2RhdGEoVHJpZ2dlckRhdGEgKnRkYXRhKQogCWlmICh0 ZGF0YS0+dGdfbmV3dGFibGUpCiAJewogCQlFcGhlbWVyYWxOYW1lZFJlbGF0aW9uIGVuciA9 Ci0JCQlwYWxsb2Moc2l6ZW9mKEVwaGVtZXJhbE5hbWVkUmVsYXRpb25EYXRhKSk7CisJCQlw YWxsb2Nfb2JqZWN0KEVwaGVtZXJhbE5hbWVkUmVsYXRpb25EYXRhKTsKIAkJaW50CQkJcmM7 CiAKIAkJZW5yLT5tZC5uYW1lID0gdGRhdGEtPnRnX3RyaWdnZXItPnRnbmV3dGFibGU7CkBA IC0zMzg2LDcgKzMzODUsNyBAQCBTUElfcmVnaXN0ZXJfdHJpZ2dlcl9kYXRhKFRyaWdnZXJE YXRhICp0ZGF0YSkKIAlpZiAodGRhdGEtPnRnX29sZHRhYmxlKQogCXsKIAkJRXBoZW1lcmFs TmFtZWRSZWxhdGlvbiBlbnIgPQotCQkJcGFsbG9jKHNpemVvZihFcGhlbWVyYWxOYW1lZFJl bGF0aW9uRGF0YSkpOworCQkJcGFsbG9jX29iamVjdChFcGhlbWVyYWxOYW1lZFJlbGF0aW9u RGF0YSk7CiAJCWludAkJCXJjOwogCiAJCWVuci0+bWQubmFtZSA9IHRkYXRhLT50Z190cmln Z2VyLT50Z29sZHRhYmxlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvdHF1 ZXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci90cXVldWUuYwppbmRleCA2YzVlMWYxMjYy ZC4uZDliZjU5ZjY3MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3RxdWV1 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3RxdWV1ZS5jCkBAIC0xMjAsNyArMTIw LDcgQEAgQ3JlYXRlVHVwbGVRdWV1ZURlc3RSZWNlaXZlcihzaG1fbXFfaGFuZGxlICpoYW5k bGUpCiB7CiAJVFF1ZXVlRGVzdFJlY2VpdmVyICpzZWxmOwogCi0Jc2VsZiA9IChUUXVldWVE ZXN0UmVjZWl2ZXIgKikgcGFsbG9jMChzaXplb2YoVFF1ZXVlRGVzdFJlY2VpdmVyKSk7CisJ c2VsZiA9IHBhbGxvYzBfb2JqZWN0KFRRdWV1ZURlc3RSZWNlaXZlcik7CiAKIAlzZWxmLT5w dWIucmVjZWl2ZVNsb3QgPSB0cXVldWVSZWNlaXZlU2xvdDsKIAlzZWxmLT5wdWIuclN0YXJ0 dXAgPSB0cXVldWVTdGFydHVwUmVjZWl2ZXI7CkBAIC0xMzgsNyArMTM4LDcgQEAgQ3JlYXRl VHVwbGVRdWV1ZURlc3RSZWNlaXZlcihzaG1fbXFfaGFuZGxlICpoYW5kbGUpCiBUdXBsZVF1 ZXVlUmVhZGVyICoKIENyZWF0ZVR1cGxlUXVldWVSZWFkZXIoc2htX21xX2hhbmRsZSAqaGFu ZGxlKQogewotCVR1cGxlUXVldWVSZWFkZXIgKnJlYWRlciA9IHBhbGxvYzAoc2l6ZW9mKFR1 cGxlUXVldWVSZWFkZXIpKTsKKwlUdXBsZVF1ZXVlUmVhZGVyICpyZWFkZXIgPSBwYWxsb2Mw X29iamVjdChUdXBsZVF1ZXVlUmVhZGVyKTsKIAogCXJlYWRlci0+cXVldWUgPSBoYW5kbGU7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci90c3RvcmVSZWNlaXZlci5jCmluZGV4IDAyYTNhZDNh YTY4Li4yMDEyNjE4ZTIzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvdHN0 b3JlUmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci90c3RvcmVSZWNlaXZl ci5jCkBAIC0yMzgsNyArMjM4LDcgQEAgdHN0b3JlRGVzdHJveVJlY2VpdmVyKERlc3RSZWNl aXZlciAqc2VsZikKIERlc3RSZWNlaXZlciAqCiBDcmVhdGVUdXBsZXN0b3JlRGVzdFJlY2Vp dmVyKHZvaWQpCiB7Ci0JVFN0b3JlU3RhdGUgKnNlbGYgPSAoVFN0b3JlU3RhdGUgKikgcGFs bG9jMChzaXplb2YoVFN0b3JlU3RhdGUpKTsKKwlUU3RvcmVTdGF0ZSAqc2VsZiA9IHBhbGxv YzBfb2JqZWN0KFRTdG9yZVN0YXRlKTsKIAogCXNlbGYtPnB1Yi5yZWNlaXZlU2xvdCA9IHRz dG9yZVJlY2VpdmVTbG90X25vdG9hc3Q7CS8qIG1pZ2h0IGNoYW5nZSAqLwogCXNlbGYtPnB1 Yi5yU3RhcnR1cCA9IHRzdG9yZVN0YXJ0dXBSZWNlaXZlcjsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWdu LmMKaW5kZXggYTU3ZTU5ZjI3ZWEuLmZhM2Y0Yzc1MjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9mb3JlaWduL2ZvcmVpZ24uYworKysgYi9zcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVp Z24uYwpAQCAtNjYsNyArNjYsNyBAQCBHZXRGb3JlaWduRGF0YVdyYXBwZXJFeHRlbmRlZChP aWQgZmR3aWQsIGJpdHMxNiBmbGFncykKIAogCWZkd2Zvcm0gPSAoRm9ybV9wZ19mb3JlaWdu X2RhdGFfd3JhcHBlcikgR0VUU1RSVUNUKHRwKTsKIAotCWZkdyA9IChGb3JlaWduRGF0YVdy YXBwZXIgKikgcGFsbG9jKHNpemVvZihGb3JlaWduRGF0YVdyYXBwZXIpKTsKKwlmZHcgPSBw YWxsb2Nfb2JqZWN0KEZvcmVpZ25EYXRhV3JhcHBlcik7CiAJZmR3LT5mZHdpZCA9IGZkd2lk OwogCWZkdy0+b3duZXIgPSBmZHdmb3JtLT5mZHdvd25lcjsKIAlmZHctPmZkd25hbWUgPSBw c3RyZHVwKE5hbWVTdHIoZmR3Zm9ybS0+ZmR3bmFtZSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBA IEdldEZvcmVpZ25TZXJ2ZXJFeHRlbmRlZChPaWQgc2VydmVyaWQsIGJpdHMxNiBmbGFncykK IAogCXNlcnZlcmZvcm0gPSAoRm9ybV9wZ19mb3JlaWduX3NlcnZlcikgR0VUU1RSVUNUKHRw KTsKIAotCXNlcnZlciA9IChGb3JlaWduU2VydmVyICopIHBhbGxvYyhzaXplb2YoRm9yZWln blNlcnZlcikpOworCXNlcnZlciA9IHBhbGxvY19vYmplY3QoRm9yZWlnblNlcnZlcik7CiAJ c2VydmVyLT5zZXJ2ZXJpZCA9IHNlcnZlcmlkOwogCXNlcnZlci0+c2VydmVybmFtZSA9IHBz dHJkdXAoTmFtZVN0cihzZXJ2ZXJmb3JtLT5zcnZuYW1lKSk7CiAJc2VydmVyLT5vd25lciA9 IHNlcnZlcmZvcm0tPnNydm93bmVyOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEdldFVzZXJNYXBw aW5nKE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCkKIAkJCQkJCU1hcHBpbmdVc2VyTmFtZSh1 c2VyaWQpLCBzZXJ2ZXItPnNlcnZlcm5hbWUpKSk7CiAJfQogCi0JdW0gPSAoVXNlck1hcHBp bmcgKikgcGFsbG9jKHNpemVvZihVc2VyTWFwcGluZykpOworCXVtID0gcGFsbG9jX29iamVj dChVc2VyTWFwcGluZyk7CiAJdW0tPnVtaWQgPSAoKEZvcm1fcGdfdXNlcl9tYXBwaW5nKSBH RVRTVFJVQ1QodHApKS0+b2lkOwogCXVtLT51c2VyaWQgPSB1c2VyaWQ7CiAJdW0tPnNlcnZl cmlkID0gc2VydmVyaWQ7CkBAIC0yNjUsNyArMjY1LDcgQEAgR2V0Rm9yZWlnblRhYmxlKE9p ZCByZWxpZCkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZvcmVp Z24gdGFibGUgJXUiLCByZWxpZCk7CiAJdGFibGVmb3JtID0gKEZvcm1fcGdfZm9yZWlnbl90 YWJsZSkgR0VUU1RSVUNUKHRwKTsKIAotCWZ0ID0gKEZvcmVpZ25UYWJsZSAqKSBwYWxsb2Mo c2l6ZW9mKEZvcmVpZ25UYWJsZSkpOworCWZ0ID0gcGFsbG9jX29iamVjdChGb3JlaWduVGFi bGUpOwogCWZ0LT5yZWxpZCA9IHJlbGlkOwogCWZ0LT5zZXJ2ZXJpZCA9IHRhYmxlZm9ybS0+ ZnRzZXJ2ZXI7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBHZXRGZHdSb3V0aW5lRm9yUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgbWFrZWNvcHkpCiAJLyogV2UgaGF2ZSB2YWxp ZCBjYWNoZWQgZGF0YSAtLS0gZG9lcyB0aGUgY2FsbGVyIHdhbnQgYSBjb3B5PyAqLwogCWlm IChtYWtlY29weSkKIAl7Ci0JCWZkd3JvdXRpbmUgPSAoRmR3Um91dGluZSAqKSBwYWxsb2Mo c2l6ZW9mKEZkd1JvdXRpbmUpKTsKKwkJZmR3cm91dGluZSA9IHBhbGxvY19vYmplY3QoRmR3 Um91dGluZSk7CiAJCW1lbWNweShmZHdyb3V0aW5lLCByZWxhdGlvbi0+cmRfZmR3cm91dGlu ZSwgc2l6ZW9mKEZkd1JvdXRpbmUpKTsKIAkJcmV0dXJuIGZkd3JvdXRpbmU7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5jIGIvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdC5jCmluZGV4IGU5NzhiOTk2YmFlLi4xNWMzNDc1ZWRlMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5jCisrKyBiL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXQuYwpAQCAtNTAwLDcgKzUwMCw3IEBAIGxsdm1fY29weV9h dHRyaWJ1dGVzX2F0X2luZGV4KExMVk1WYWx1ZVJlZiB2X2Zyb20sIExMVk1WYWx1ZVJlZiB2 X3RvLCB1aW50MzIgaW5kCiAJaWYgKG51bV9hdHRyaWJ1dGVzID09IDApCiAJCXJldHVybjsK IAotCWF0dHJzID0gcGFsbG9jKHNpemVvZihMTFZNQXR0cmlidXRlUmVmKSAqIG51bV9hdHRy aWJ1dGVzKTsKKwlhdHRycyA9IHBhbGxvY19hcnJheShMTFZNQXR0cmlidXRlUmVmLCBudW1f YXR0cmlidXRlcyk7CiAJTExWTUdldEF0dHJpYnV0ZXNBdEluZGV4KHZfZnJvbSwgaW5kZXgs IGF0dHJzKTsKIAogCWZvciAoaW50IGF0dG5vID0gMDsgYXR0bm8gPCBudW1fYXR0cmlidXRl czsgYXR0bm8rKykKQEAgLTExMjMsOSArMTEyMyw5IEBAIGxsdm1fcmVzb2x2ZV9zeW1ib2xz KExMVk1PcmNEZWZpbml0aW9uR2VuZXJhdG9yUmVmIEdlbmVyYXRvck9iaiwgdm9pZCAqQ3R4 LAogCQkJCQkgTExWTU9yY0NMb29rdXBTZXQgTG9va3VwU2V0LCBzaXplX3QgTG9va3VwU2V0 U2l6ZSkKIHsKICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPiAxNAotCUxMVk1PcmNDU3ltYm9s TWFwUGFpcnMgc3ltYm9scyA9IHBhbGxvYzAoc2l6ZW9mKExMVk1PcmNDU3ltYm9sTWFwUGFp cikgKiBMb29rdXBTZXRTaXplKTsKKwlMTFZNT3JjQ1N5bWJvbE1hcFBhaXJzIHN5bWJvbHMg PSBwYWxsb2MwX2FycmF5KExMVk1PcmNDU3ltYm9sTWFwUGFpciwgTG9va3VwU2V0U2l6ZSk7 CiAjZWxzZQotCUxMVk1PcmNDU3ltYm9sTWFwUGFpcnMgc3ltYm9scyA9IHBhbGxvYzAoc2l6 ZW9mKExMVk1KSVRDU3ltYm9sTWFwUGFpcikgKiBMb29rdXBTZXRTaXplKTsKKwlMTFZNT3Jj Q1N5bWJvbE1hcFBhaXJzIHN5bWJvbHMgPSBwYWxsb2MwX2FycmF5KExMVk1KSVRDU3ltYm9s TWFwUGFpciwgTG9va3VwU2V0U2l6ZSk7CiAjZW5kaWYKIAlMTFZNRXJyb3JSZWYgZXJyb3I7 CiAJTExWTU9yY01hdGVyaWFsaXphdGlvblVuaXRSZWYgbXU7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2RlZm9ybS5jIGIvc3JjL2JhY2tlbmQvaml0L2xs dm0vbGx2bWppdF9kZWZvcm0uYwppbmRleCBmNTAwY2JkYTg5My4uODkxNjdkMTVjM2YgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZGVmb3JtLmMKKysrIGIv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0uYwpAQCAtMTU2LDEyICsxNTYs MTIgQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZNSml0Q29udGV4dCAqY29udGV4dCwgVHVw bGVEZXNjIGRlc2MsCiAKIAliID0gTExWTUNyZWF0ZUJ1aWxkZXJJbkNvbnRleHQobGMpOwog Ci0JYXR0Y2hlY2thdHRub2Jsb2NrcyA9IHBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tS ZWYpICogbmF0dHMpOwotCWF0dHN0YXJ0YmxvY2tzID0gcGFsbG9jKHNpemVvZihMTFZNQmFz aWNCbG9ja1JlZikgKiBuYXR0cyk7Ci0JYXR0aXNudWxsYmxvY2tzID0gcGFsbG9jKHNpemVv ZihMTFZNQmFzaWNCbG9ja1JlZikgKiBuYXR0cyk7Ci0JYXR0Y2hlY2thbGlnbmJsb2NrcyA9 IHBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tSZWYpICogbmF0dHMpOwotCWF0dGFsaWdu YmxvY2tzID0gcGFsbG9jKHNpemVvZihMTFZNQmFzaWNCbG9ja1JlZikgKiBuYXR0cyk7Ci0J YXR0c3RvcmVibG9ja3MgPSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqIG5h dHRzKTsKKwlhdHRjaGVja2F0dG5vYmxvY2tzID0gcGFsbG9jX2FycmF5KExMVk1CYXNpY0Js b2NrUmVmLCBuYXR0cyk7CisJYXR0c3RhcnRibG9ja3MgPSBwYWxsb2NfYXJyYXkoTExWTUJh c2ljQmxvY2tSZWYsIG5hdHRzKTsKKwlhdHRpc251bGxibG9ja3MgPSBwYWxsb2NfYXJyYXko TExWTUJhc2ljQmxvY2tSZWYsIG5hdHRzKTsKKwlhdHRjaGVja2FsaWduYmxvY2tzID0gcGFs bG9jX2FycmF5KExMVk1CYXNpY0Jsb2NrUmVmLCBuYXR0cyk7CisJYXR0YWxpZ25ibG9ja3Mg PSBwYWxsb2NfYXJyYXkoTExWTUJhc2ljQmxvY2tSZWYsIG5hdHRzKTsKKwlhdHRzdG9yZWJs b2NrcyA9IHBhbGxvY19hcnJheShMTFZNQmFzaWNCbG9ja1JlZiwgbmF0dHMpOwogCiAJa25v d25fYWxpZ25tZW50ID0gMDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpp bmRleCBhYzg4ODgxZTk5NS4uYzA1ODU4M2JjYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xs dm1qaXRfZXhwci5jCkBAIC0yOTcsNyArMjk3LDcgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhw clN0YXRlICpzdGF0ZSkKIAkJCQkJCQkJICAgInYuZWNvbnRleHQuYWdnbnVsbHMiKTsKIAog CS8qIGFsbG9jYXRlIGJsb2NrcyBmb3IgZWFjaCBvcCB1cGZyb250LCBzbyB3ZSBjYW4gZG8g anVtcHMgZWFzaWx5ICovCi0Jb3BibG9ja3MgPSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Js b2NrUmVmKSAqIHN0YXRlLT5zdGVwc19sZW4pOworCW9wYmxvY2tzID0gcGFsbG9jX2FycmF5 KExMVk1CYXNpY0Jsb2NrUmVmLCBzdGF0ZS0+c3RlcHNfbGVuKTsKIAlmb3IgKGludCBvcG5v ID0gMDsgb3BubyA8IHN0YXRlLT5zdGVwc19sZW47IG9wbm8rKykKIAkJb3BibG9ja3Nbb3Bu b10gPSBsX2JiX2FwcGVuZF92KGV2YWxfZm4sICJiLm9wLiVkLnN0YXJ0Iiwgb3Bubyk7CiAK QEAgLTY5OSw3ICs2OTksNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRl KQogCiAJCQkJCQkvKiBjcmVhdGUgYmxvY2tzIGZvciBjaGVja2luZyBhcmdzLCBvbmUgZm9y IGVhY2ggKi8KIAkJCQkJCWJfY2hlY2thcmdudWxscyA9Ci0JCQkJCQkJcGFsbG9jKHNpemVv ZihMTFZNQmFzaWNCbG9ja1JlZiAqKSAqIG9wLT5kLmZ1bmMubmFyZ3MpOworCQkJCQkJCXBh bGxvY19hcnJheShMTFZNQmFzaWNCbG9ja1JlZiAqLCBvcC0+ZC5mdW5jLm5hcmdzKTsKIAkJ CQkJCWZvciAoaW50IGFyZ25vID0gMDsgYXJnbm8gPCBvcC0+ZC5mdW5jLm5hcmdzOyBhcmdu bysrKQogCQkJCQkJCWJfY2hlY2thcmdudWxsc1thcmdub10gPQogCQkJCQkJCQlsX2JiX2Jl Zm9yZV92KGJfbm9udWxsLCAiYi4lZC5pc251bGwuJWQiLCBvcG5vLApAQCAtMjUwNSw3ICsy NTA1LDcgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQkJdl9u dWxsc3AgPSBsX3B0cl9jb25zdChudWxscywgbF9wdHIoVHlwZVN0b3JhZ2VCb29sKSk7CiAK IAkJCQkJLyogY3JlYXRlIGJsb2NrcyBmb3IgY2hlY2tpbmcgYXJncyAqLwotCQkJCQliX2No ZWNrbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqIG5hcmdzKTsK KwkJCQkJYl9jaGVja251bGxzID0gcGFsbG9jX2FycmF5KExMVk1CYXNpY0Jsb2NrUmVmLCBu YXJncyk7CiAJCQkJCWZvciAoaW50IGFyZ25vID0gMDsgYXJnbm8gPCBuYXJnczsgYXJnbm8r KykKIAkJCQkJewogCQkJCQkJYl9jaGVja251bGxzW2FyZ25vXSA9CkBAIC0yOTU2LDcgKzI5 NTYsNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCSAqLwogCXsK IAotCQlDb21waWxlZEV4cHJTdGF0ZSAqY3N0YXRlID0gcGFsbG9jMChzaXplb2YoQ29tcGls ZWRFeHByU3RhdGUpKTsKKwkJQ29tcGlsZWRFeHByU3RhdGUgKmNzdGF0ZSA9IHBhbGxvYzBf b2JqZWN0KENvbXBpbGVkRXhwclN0YXRlKTsKIAogCQljc3RhdGUtPmNvbnRleHQgPSBjb250 ZXh0OwogCQljc3RhdGUtPmZ1bmNuYW1lID0gZnVuY25hbWU7CkBAIC0zMDY4LDcgKzMwNjgs NyBAQCBidWlsZF9FdmFsWEZ1bmNJbnQoTExWTUJ1aWxkZXJSZWYgYiwgTExWTU1vZHVsZVJl ZiBtb2QsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQllbG9nKEVSUk9SLCAicGFyYW1ldGVy IG1pc21hdGNoOiAlcyBleHBlY3RzICVkIHBhc3NlZCAlZCIsCiAJCQkgZnVuY25hbWUsIExM Vk1Db3VudFBhcmFtcyh2X2ZuKSwgbmFyZ3MgKyAyKTsKIAotCXBhcmFtcyA9IHBhbGxvYyhz aXplb2YoTExWTVZhbHVlUmVmKSAqICgyICsgbmFyZ3MpKTsKKwlwYXJhbXMgPSBwYWxsb2Nf YXJyYXkoTExWTVZhbHVlUmVmLCAoMiArIG5hcmdzKSk7CiAKIAlwYXJhbXNbYXJnbm8rK10g PSB2X3N0YXRlOwogCXBhcmFtc1thcmdubysrXSA9IGxfcHRyX2NvbnN0KG9wLCBsX3B0cihT dHJ1Y3RFeHByRXZhbFN0ZXApKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9iaXBh cnRpdGVfbWF0Y2guYyBiL3NyYy9iYWNrZW5kL2xpYi9iaXBhcnRpdGVfbWF0Y2guYwppbmRl eCA1YWY3ODk2NTJjNy4uZWQ1NGYxOTA0OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xp Yi9iaXBhcnRpdGVfbWF0Y2guYworKysgYi9zcmMvYmFja2VuZC9saWIvYmlwYXJ0aXRlX21h dGNoLmMKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGJvb2wgaGtfZGVwdGhfc2VhcmNoKEJp cGFydGl0ZU1hdGNoU3RhdGUgKnN0YXRlLCBpbnQgdSk7CiBCaXBhcnRpdGVNYXRjaFN0YXRl ICoKIEJpcGFydGl0ZU1hdGNoKGludCB1X3NpemUsIGludCB2X3NpemUsIHNob3J0ICoqYWRq YWNlbmN5KQogewotCUJpcGFydGl0ZU1hdGNoU3RhdGUgKnN0YXRlID0gcGFsbG9jKHNpemVv ZihCaXBhcnRpdGVNYXRjaFN0YXRlKSk7CisJQmlwYXJ0aXRlTWF0Y2hTdGF0ZSAqc3RhdGUg PSBwYWxsb2Nfb2JqZWN0KEJpcGFydGl0ZU1hdGNoU3RhdGUpOwogCiAJaWYgKHVfc2l6ZSA8 IDAgfHwgdV9zaXplID49IFNIUlRfTUFYIHx8CiAJCXZfc2l6ZSA8IDAgfHwgdl9zaXplID49 IFNIUlRfTUFYKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2RzaGFzaC5jIGIvc3Jj L2JhY2tlbmQvbGliL2RzaGFzaC5jCmluZGV4IGUxYmEzNjdjZjE3Li44MmY2YWE5NjZkZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGliL2RzaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5k L2xpYi9kc2hhc2guYwpAQCAtMjExLDcgKzIxMSw3IEBAIGRzaGFzaF9jcmVhdGUoZHNhX2Fy ZWEgKmFyZWEsIGNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJzICpwYXJhbXMsIHZvaWQgKmFyZykK IAlkc2FfcG9pbnRlciBjb250cm9sOwogCiAJLyogQWxsb2NhdGUgdGhlIGJhY2tlbmQtbG9j YWwgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgaGFzaCB0YWJsZS4gKi8KLQloYXNoX3RhYmxl ID0gcGFsbG9jKHNpemVvZihkc2hhc2hfdGFibGUpKTsKKwloYXNoX3RhYmxlID0gcGFsbG9j X29iamVjdChkc2hhc2hfdGFibGUpOwogCiAJLyogQWxsb2NhdGUgdGhlIGNvbnRyb2wgb2Jq ZWN0IGluIHNoYXJlZCBtZW1vcnkuICovCiAJY29udHJvbCA9IGRzYV9hbGxvY2F0ZShhcmVh LCBzaXplb2YoZHNoYXNoX3RhYmxlX2NvbnRyb2wpKTsKQEAgLTI3Niw3ICsyNzYsNyBAQCBk c2hhc2hfYXR0YWNoKGRzYV9hcmVhICphcmVhLCBjb25zdCBkc2hhc2hfcGFyYW1ldGVycyAq cGFyYW1zLAogCWRzYV9wb2ludGVyIGNvbnRyb2w7CiAKIAkvKiBBbGxvY2F0ZSB0aGUgYmFj a2VuZC1sb2NhbCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBoYXNoIHRhYmxlLiAqLwotCWhh c2hfdGFibGUgPSBwYWxsb2Moc2l6ZW9mKGRzaGFzaF90YWJsZSkpOworCWhhc2hfdGFibGUg PSBwYWxsb2Nfb2JqZWN0KGRzaGFzaF90YWJsZSk7CiAKIAkvKiBGaW5kIHRoZSBjb250cm9s IG9iamVjdCBpbiBzaGFyZWQgbWVtb3J5LiAqLwogCWNvbnRyb2wgPSBoYW5kbGU7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9saWIvaW50ZWdlcnNldC5jIGIvc3JjL2JhY2tlbmQvbGli L2ludGVnZXJzZXQuYwppbmRleCBmNDE1M2IwZTE1YS4uYWNhMWRmMmFkNWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2xpYi9pbnRlZ2Vyc2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvbGli L2ludGVnZXJzZXQuYwpAQCAtMjg0LDcgKzI4NCw3IEBAIGludHNldF9jcmVhdGUodm9pZCkK IHsKIAlJbnRlZ2VyU2V0ICppbnRzZXQ7CiAKLQlpbnRzZXQgPSAoSW50ZWdlclNldCAqKSBw YWxsb2Moc2l6ZW9mKEludGVnZXJTZXQpKTsKKwlpbnRzZXQgPSBwYWxsb2Nfb2JqZWN0KElu dGVnZXJTZXQpOwogCWludHNldC0+Y29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0Owog CWludHNldC0+bWVtX3VzZWQgPSBHZXRNZW1vcnlDaHVua1NwYWNlKGludHNldCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9wYWlyaW5naGVhcC5jIGIvc3JjL2JhY2tlbmQv bGliL3BhaXJpbmdoZWFwLmMKaW5kZXggZmE4NDMxZjc5NDYuLjM0OTdkYzc5MDJhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9saWIvcGFpcmluZ2hlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9saWIvcGFpcmluZ2hlYXAuYwpAQCAtNDMsNyArNDMsNyBAQCBwYWlyaW5naGVhcF9hbGxv Y2F0ZShwYWlyaW5naGVhcF9jb21wYXJhdG9yIGNvbXBhcmUsIHZvaWQgKmFyZykKIHsKIAlw YWlyaW5naGVhcCAqaGVhcDsKIAotCWhlYXAgPSAocGFpcmluZ2hlYXAgKikgcGFsbG9jKHNp emVvZihwYWlyaW5naGVhcCkpOworCWhlYXAgPSBwYWxsb2Nfb2JqZWN0KHBhaXJpbmdoZWFw KTsKIAlwYWlyaW5naGVhcF9pbml0aWFsaXplKGhlYXAsIGNvbXBhcmUsIGFyZyk7CiAKIAly ZXR1cm4gaGVhcDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9yYnRyZWUuYyBiL3Ny Yy9iYWNrZW5kL2xpYi9yYnRyZWUuYwppbmRleCAxZjA1NTNmOTE0ZC4uOGZlNmJmYzUzOWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9yYnRyZWUuYworKysgYi9zcmMvYmFja2Vu ZC9saWIvcmJ0cmVlLmMKQEAgLTEwNiw3ICsxMDYsNyBAQCByYnRfY3JlYXRlKFNpemUgbm9k ZV9zaXplLAogCQkgICByYnRfZnJlZWZ1bmMgZnJlZWZ1bmMsCiAJCSAgIHZvaWQgKmFyZykK IHsKLQlSQlRyZWUJICAgKnRyZWUgPSAoUkJUcmVlICopIHBhbGxvYyhzaXplb2YoUkJUcmVl KSk7CisJUkJUcmVlCSAgICp0cmVlID0gcGFsbG9jX29iamVjdChSQlRyZWUpOwogCiAJQXNz ZXJ0KG5vZGVfc2l6ZSA+IHNpemVvZihSQlROb2RlKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYnBxL2F1dGgtb2F1dGguYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtb2F1 dGguYwppbmRleCAyN2Y3YWY3YmUwMC4uMzJhMzcwZWRlMTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYnBxL2F1dGgtb2F1dGguYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRo LW9hdXRoLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCBvYXV0aF9pbml0KFBvcnQgKnBvcnQsIGNv bnN0IGNoYXIgKnNlbGVjdGVkX21lY2gsIGNvbnN0IGNoYXIgKnNoYWRvd19wYXNzKQogCQkJ CWVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCWVycm1zZygiY2xp ZW50IHNlbGVjdGVkIGFuIGludmFsaWQgU0FTTCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20i KSk7CiAKLQljdHggPSBwYWxsb2MwKHNpemVvZigqY3R4KSk7CisJY3R4ID0gcGFsbG9jMF9v YmplY3Qoc3RydWN0IG9hdXRoX2N0eCk7CiAKIAljdHgtPnN0YXRlID0gT0FVVEhfU1RBVEVf SU5JVDsKIAljdHgtPnBvcnQgPSBwb3J0OwpAQCAtNjU2LDcgKzY1Niw3IEBAIHZhbGlkYXRl KFBvcnQgKnBvcnQsIGNvbnN0IGNoYXIgKmF1dGgpCiAJCQkJZXJybXNnKCJ2YWxpZGF0aW9u IG9mIE9BdXRoIHRva2VuIHJlcXVlc3RlZCB3aXRob3V0IGEgdmFsaWRhdG9yIGxvYWRlZCIp KTsKIAogCS8qIENhbGwgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gZnJvbSB0aGUgdmFsaWRh dG9yIG1vZHVsZSAqLwotCXJldCA9IHBhbGxvYzAoc2l6ZW9mKFZhbGlkYXRvck1vZHVsZVJl c3VsdCkpOworCXJldCA9IHBhbGxvYzBfb2JqZWN0KFZhbGlkYXRvck1vZHVsZVJlc3VsdCk7 CiAJaWYgKCFWYWxpZGF0b3JDYWxsYmFja3MtPnZhbGlkYXRlX2NiKHZhbGlkYXRvcl9tb2R1 bGVfc3RhdGUsIHRva2VuLAogCQkJCQkJCQkJCSBwb3J0LT51c2VyX25hbWUsIHJldCkpCiAJ ewpAQCAtNzg1LDE0ICs3ODUsMTQgQEAgbG9hZF92YWxpZGF0b3JfbGlicmFyeShjb25zdCBj aGFyICpsaWJuYW1lKQogCQkJCQkgICAiT0F1dGggdmFsaWRhdG9yIiwgbGlibmFtZSwgInZh bGlkYXRlX2NiIikpOwogCiAJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB2YWxpZGF0b3IgbGli cmFyeSBwcml2YXRlIHN0YXRlIGRhdGEgKi8KLQl2YWxpZGF0b3JfbW9kdWxlX3N0YXRlID0g KFZhbGlkYXRvck1vZHVsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFZhbGlkYXRvck1vZHVs ZVN0YXRlKSk7CisJdmFsaWRhdG9yX21vZHVsZV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFZh bGlkYXRvck1vZHVsZVN0YXRlKTsKIAl2YWxpZGF0b3JfbW9kdWxlX3N0YXRlLT5zdmVyc2lv biA9IFBHX1ZFUlNJT05fTlVNOwogCiAJaWYgKFZhbGlkYXRvckNhbGxiYWNrcy0+c3RhcnR1 cF9jYiAhPSBOVUxMKQogCQlWYWxpZGF0b3JDYWxsYmFja3MtPnN0YXJ0dXBfY2IodmFsaWRh dG9yX21vZHVsZV9zdGF0ZSk7CiAKIAkvKiBTaHV0IGRvd24gdGhlIGxpYnJhcnkgYmVmb3Jl IGNsZWFuaW5nIHVwIGl0cyBzdGF0ZS4gKi8KLQltY2IgPSBwYWxsb2MwKHNpemVvZigqbWNi KSk7CisJbWNiID0gcGFsbG9jMF9vYmplY3QoTWVtb3J5Q29udGV4dENhbGxiYWNrKTsKIAlt Y2ItPmZ1bmMgPSBzaHV0ZG93bl92YWxpZGF0b3JfbGlicmFyeTsKIAogCU1lbW9yeUNvbnRl eHRSZWdpc3RlclJlc2V0Q2FsbGJhY2soQ3VycmVudE1lbW9yeUNvbnRleHQsIG1jYik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNjcmFtLmMgYi9zcmMvYmFja2Vu ZC9saWJwcS9hdXRoLXNjcmFtLmMKaW5kZXggZTM0M2ZmZWE0NmYuLjJkNmQ5N2I0YmI2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNjcmFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jCkBAIC0yNDAsNyArMjQwLDcgQEAgc2NyYW1faW5p dChQb3J0ICpwb3J0LCBjb25zdCBjaGFyICpzZWxlY3RlZF9tZWNoLCBjb25zdCBjaGFyICpz aGFkb3dfcGFzcykKIAlzY3JhbV9zdGF0ZSAqc3RhdGU7CiAJYm9vbAkJZ290X3NlY3JldDsK IAotCXN0YXRlID0gKHNjcmFtX3N0YXRlICopIHBhbGxvYzAoc2l6ZW9mKHNjcmFtX3N0YXRl KSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChzY3JhbV9zdGF0ZSk7CiAJc3RhdGUtPnBv cnQgPSBwb3J0OwogCXN0YXRlLT5zdGF0ZSA9IFNDUkFNX0FVVEhfSU5JVDsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEu YwppbmRleCA2Y2IyNTM5OWMyNi4uNGMyNTlmNThkNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL2hiYS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2hiYS5jCkBAIC0zMDks NyArMzA5LDcgQEAgcmVnY29tcF9hdXRoX3Rva2VuKEF1dGhUb2tlbiAqdG9rZW4sIGNoYXIg KmZpbGVuYW1lLCBpbnQgbGluZV9udW0sCiAJaWYgKHRva2VuLT5zdHJpbmdbMF0gIT0gJy8n KQogCQlyZXR1cm4gMDsJCQkJLyogbm90aGluZyB0byBjb21waWxlICovCiAKLQl0b2tlbi0+ cmVnZXggPSAocmVnZXhfdCAqKSBwYWxsb2MwKHNpemVvZihyZWdleF90KSk7CisJdG9rZW4t PnJlZ2V4ID0gcGFsbG9jMF9vYmplY3QocmVnZXhfdCk7CiAJd3N0ciA9IHBhbGxvYygoc3Ry bGVuKHRva2VuLT5zdHJpbmcgKyAxKSArIDEpICogc2l6ZW9mKHBnX3djaGFyKSk7CiAJd2xl biA9IHBnX21iMndjaGFyX3dpdGhfbGVuKHRva2VuLT5zdHJpbmcgKyAxLAogCQkJCQkJCQl3 c3RyLCBzdHJsZW4odG9rZW4tPnN0cmluZyArIDEpKTsKQEAgLTg5MSw3ICs4OTEsNyBAQCBw cm9jZXNzX2xpbmU6CiAJCSAqIHRvIHRoaXMgbGlzdC4KIAkJICovCiAJCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyh0b2tlbml6ZV9jb250ZXh0KTsKLQkJdG9rX2xpbmUgPSAo VG9rZW5pemVkQXV0aExpbmUgKikgcGFsbG9jMChzaXplb2YoVG9rZW5pemVkQXV0aExpbmUp KTsKKwkJdG9rX2xpbmUgPSBwYWxsb2MwX29iamVjdChUb2tlbml6ZWRBdXRoTGluZSk7CiAJ CXRva19saW5lLT5maWVsZHMgPSBjdXJyZW50X2xpbmU7CiAJCXRva19saW5lLT5maWxlX25h bWUgPSBwc3RyZHVwKGZpbGVuYW1lKTsKIAkJdG9rX2xpbmUtPmxpbmVfbnVtID0gbGluZV9u dW1iZXI7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCBwYXJzZV9oYmFfbGluZShUb2tlbml6ZWRB dXRoTGluZSAqdG9rX2xpbmUsIGludCBlbGV2ZWwpCiAJQXV0aFRva2VuICAqdG9rZW47CiAJ SGJhTGluZSAgICAqcGFyc2VkbGluZTsKIAotCXBhcnNlZGxpbmUgPSBwYWxsb2MwKHNpemVv ZihIYmFMaW5lKSk7CisJcGFyc2VkbGluZSA9IHBhbGxvYzBfb2JqZWN0KEhiYUxpbmUpOwog CXBhcnNlZGxpbmUtPnNvdXJjZWZpbGUgPSBwc3RyZHVwKGZpbGVfbmFtZSk7CiAJcGFyc2Vk bGluZS0+bGluZW51bWJlciA9IGxpbmVfbnVtOwogCXBhcnNlZGxpbmUtPnJhd2xpbmUgPSBw c3RyZHVwKHRva19saW5lLT5yYXdfbGluZSk7CkBAIC0yNjIyLDcgKzI2MjIsNyBAQCBjaGVj a19oYmEoUG9ydCAqcG9ydCkKIAl9CiAKIAkvKiBJZiBubyBtYXRjaGluZyBlbnRyeSB3YXMg Zm91bmQsIHRoZW4gaW1wbGljaXRseSByZWplY3QuICovCi0JaGJhID0gcGFsbG9jMChzaXpl b2YoSGJhTGluZSkpOworCWhiYSA9IHBhbGxvYzBfb2JqZWN0KEhiYUxpbmUpOwogCWhiYS0+ YXV0aF9tZXRob2QgPSB1YUltcGxpY2l0UmVqZWN0OwogCXBvcnQtPmhiYSA9IGhiYTsKIH0K QEAgLTI3NTgsNyArMjc1OCw3IEBAIHBhcnNlX2lkZW50X2xpbmUoVG9rZW5pemVkQXV0aExp bmUgKnRva19saW5lLCBpbnQgZWxldmVsKQogCUFzc2VydCh0b2tfbGluZS0+ZmllbGRzICE9 IE5JTCk7CiAJZmllbGQgPSBsaXN0X2hlYWQodG9rX2xpbmUtPmZpZWxkcyk7CiAKLQlwYXJz ZWRsaW5lID0gcGFsbG9jMChzaXplb2YoSWRlbnRMaW5lKSk7CisJcGFyc2VkbGluZSA9IHBh bGxvYzBfb2JqZWN0KElkZW50TGluZSk7CiAJcGFyc2VkbGluZS0+bGluZW51bWJlciA9IGxp bmVfbnVtOwogCiAJLyogR2V0IHRoZSBtYXAgdG9rZW4gKG11c3QgZXhpc3QpICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYyBiL3NyYy9iYWNrZW5kL2xpYnBx L3BxY29tbS5jCmluZGV4IDI1ZjczOWE2YTE3Li44OTlkOGJlZjlkYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFj b21tLmMKQEAgLTE3OCw3ICsxNzgsNyBAQCBwcV9pbml0KENsaWVudFNvY2tldCAqY2xpZW50 X3NvY2spCiAJaW50CQkJbGF0Y2hfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAog CS8qIGFsbG9jYXRlIHRoZSBQb3J0IHN0cnVjdCBhbmQgY29weSB0aGUgQ2xpZW50U29ja2V0 IGNvbnRlbnRzIHRvIGl0ICovCi0JcG9ydCA9IHBhbGxvYzAoc2l6ZW9mKFBvcnQpKTsKKwlw b3J0ID0gcGFsbG9jMF9vYmplY3QoUG9ydCk7CiAJcG9ydC0+c29jayA9IGNsaWVudF9zb2Nr LT5zb2NrOwogCW1lbWNweSgmcG9ydC0+cmFkZHIuYWRkciwgJmNsaWVudF9zb2NrLT5yYWRk ci5hZGRyLCBjbGllbnRfc29jay0+cmFkZHIuc2FsZW4pOwogCXBvcnQtPnJhZGRyLnNhbGVu ID0gY2xpZW50X3NvY2stPnJhZGRyLnNhbGVuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRl eCBkMjI4MzE4ZGM3Mi4uMDI0YTJiMmZkODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBA IC0yOTUzLDcgKzI5NTMsNyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUg Km5vZGUsCiAJICovCiAKICNkZWZpbmUgRkxBVENPUFkobmV3bm9kZSwgbm9kZSwgbm9kZXR5 cGUpICBcCi0JKCAobmV3bm9kZSkgPSAobm9kZXR5cGUgKikgcGFsbG9jKHNpemVvZihub2Rl dHlwZSkpLCBcCisJKCAobmV3bm9kZSkgPSBwYWxsb2Nfb2JqZWN0KG5vZGV0eXBlKSwgXAog CSAgbWVtY3B5KChuZXdub2RlKSwgKG5vZGUpLCBzaXplb2Yobm9kZXR5cGUpKSApCiAKICNk ZWZpbmUgTVVUQVRFKG5ld2ZpZWxkLCBvbGRmaWVsZCwgZmllbGR0eXBlKSAgXApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCmluZGV4IDMxZjk3MTUxOTc3Li5mZmMyMzBh ZjQyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMTgxLDcg KzE4MSw3IEBAIEluaXRKdW1ibGUodm9pZCkKIHsKIAlKdW1ibGVTdGF0ZSAqanN0YXRlOwog Ci0JanN0YXRlID0gKEp1bWJsZVN0YXRlICopIHBhbGxvYyhzaXplb2YoSnVtYmxlU3RhdGUp KTsKKwlqc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEp1bWJsZVN0YXRlKTsKIAogCS8qIFNldCB1 cCB3b3Jrc3BhY2UgZm9yIHF1ZXJ5IGp1bWJsaW5nICovCiAJanN0YXRlLT5qdW1ibGUgPSAo dW5zaWduZWQgY2hhciAqKSBwYWxsb2MoSlVNQkxFX1NJWkUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvdGlkYml0bWFwLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRt YXAuYwppbmRleCAxZjgzZDBkNTVmNS4uYTJmYTk2MzE3ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL3RpZGJpdG1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3RpZGJp dG1hcC5jCkBAIC02ODMsNyArNjgzLDcgQEAgdGJtX2JlZ2luX3ByaXZhdGVfaXRlcmF0ZShU SURCaXRtYXAgKnRibSkKIAkgKiBDcmVhdGUgdGhlIFRCTVByaXZhdGVJdGVyYXRvciBzdHJ1 Y3QsIHdpdGggZW5vdWdoIHRyYWlsaW5nIHNwYWNlIHRvCiAJICogc2VydmUgdGhlIG5lZWRz IG9mIHRoZSBUQk1JdGVyYXRlUmVzdWx0IHN1Yi1zdHJ1Y3QuCiAJICovCi0JaXRlcmF0b3Ig PSAoVEJNUHJpdmF0ZUl0ZXJhdG9yICopIHBhbGxvYyhzaXplb2YoVEJNUHJpdmF0ZUl0ZXJh dG9yKSk7CisJaXRlcmF0b3IgPSBwYWxsb2Nfb2JqZWN0KFRCTVByaXZhdGVJdGVyYXRvcik7 CiAJaXRlcmF0b3ItPnRibSA9IHRibTsKIAogCS8qCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB0 Ym1fYXR0YWNoX3NoYXJlZF9pdGVyYXRlKGRzYV9hcmVhICpkc2EsIGRzYV9wb2ludGVyIGRw KQogCSAqIENyZWF0ZSB0aGUgVEJNU2hhcmVkSXRlcmF0b3Igc3RydWN0LCB3aXRoIGVub3Vn aCB0cmFpbGluZyBzcGFjZSB0bwogCSAqIHNlcnZlIHRoZSBuZWVkcyBvZiB0aGUgVEJNSXRl cmF0ZVJlc3VsdCBzdWItc3RydWN0LgogCSAqLwotCWl0ZXJhdG9yID0gKFRCTVNoYXJlZEl0 ZXJhdG9yICopIHBhbGxvYzAoc2l6ZW9mKFRCTVNoYXJlZEl0ZXJhdG9yKSk7CisJaXRlcmF0 b3IgPSBwYWxsb2MwX29iamVjdChUQk1TaGFyZWRJdGVyYXRvcik7CiAKIAlpc3RhdGUgPSAo VEJNU2hhcmVkSXRlcmF0b3JTdGF0ZSAqKSBkc2FfZ2V0X2FkZHJlc3MoZHNhLCBkcCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXJ4LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2VyeC5jCmluZGV4IGFmMjg5ZjdlZWI3 Li5mMTFhNTllNGEyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8v Z2Vxb19lcnguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2VyeC5j CkBAIC02Miw3ICs2Miw3IEBAIGFsbG9jX2VkZ2VfdGFibGUoUGxhbm5lckluZm8gKnJvb3Qs IGludCBudW1fZ2VuZSkKIAkgKiBkaXJlY3RseTsgMCB3aWxsIG5vdCBiZSB1c2VkCiAJICov CiAKLQllZGdlX3RhYmxlID0gKEVkZ2UgKikgcGFsbG9jKChudW1fZ2VuZSArIDEpICogc2l6 ZW9mKEVkZ2UpKTsKKwllZGdlX3RhYmxlID0gcGFsbG9jX2FycmF5KEVkZ2UsIG51bV9nZW5l ICsgMSk7CiAKIAlyZXR1cm4gZWRnZV90YWJsZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L2dlcW8vZ2Vxb19ldmFsLmMKaW5kZXggODAwNTc1NGM4YzYuLmM2NWEzMWQwNjc5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwpAQCAtMTkxLDcgKzE5MSw3 IEBAIGdpbW1lX3RyZWUoUGxhbm5lckluZm8gKnJvb3QsIEdlbmUgKnRvdXIsIGludCBudW1f Z2VuZSkKIAkJCQkJCQkJCQkgIGN1cl9yZWxfaW5kZXggLSAxKTsKIAogCQkvKiBNYWtlIGl0 IGludG8gYSBzaW5nbGUtcmVsIGNsdW1wICovCi0JCWN1cl9jbHVtcCA9IChDbHVtcCAqKSBw YWxsb2Moc2l6ZW9mKENsdW1wKSk7CisJCWN1cl9jbHVtcCA9IHBhbGxvY19vYmplY3QoQ2x1 bXApOwogCQljdXJfY2x1bXAtPmpvaW5yZWwgPSBjdXJfcmVsOwogCQljdXJfY2x1bXAtPnNp emUgPSAxOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFv X3BteC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19wbXguYwppbmRleCAw MWQ1NTcxMTkyNS4uYWYxY2I4NjgzOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9nZXFvL2dlcW9fcG14LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8v Z2Vxb19wbXguYwpAQCAtNDgsMTAgKzQ4LDEwIEBACiB2b2lkCiBwbXgoUGxhbm5lckluZm8g KnJvb3QsIEdlbmUgKnRvdXIxLCBHZW5lICp0b3VyMiwgR2VuZSAqb2Zmc3ByaW5nLCBpbnQg bnVtX2dlbmUpCiB7Ci0JaW50CQkgICAqZmFpbGVkID0gKGludCAqKSBwYWxsb2MoKG51bV9n ZW5lICsgMSkgKiBzaXplb2YoaW50KSk7Ci0JaW50CQkgICAqZnJvbSA9IChpbnQgKikgcGFs bG9jKChudW1fZ2VuZSArIDEpICogc2l6ZW9mKGludCkpOwotCWludAkJICAgKmluZHggPSAo aW50ICopIHBhbGxvYygobnVtX2dlbmUgKyAxKSAqIHNpemVvZihpbnQpKTsKLQlpbnQJCSAg ICpjaGVja19saXN0ID0gKGludCAqKSBwYWxsb2MoKG51bV9nZW5lICsgMSkgKiBzaXplb2Yo aW50KSk7CisJaW50CQkgICAqZmFpbGVkID0gcGFsbG9jX2FycmF5KGludCwgbnVtX2dlbmUg KyAxKTsKKwlpbnQJCSAgICpmcm9tID0gcGFsbG9jX2FycmF5KGludCwgbnVtX2dlbmUgKyAx KTsKKwlpbnQJCSAgICppbmR4ID0gcGFsbG9jX2FycmF5KGludCwgbnVtX2dlbmUgKyAxKTsK KwlpbnQJCSAgICpjaGVja19saXN0ID0gcGFsbG9jX2FycmF5KGludCwgbnVtX2dlbmUgKyAx KTsKIAogCWludAkJCWxlZnQsCiAJCQkJcmlnaHQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX3Bvb2wuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9n ZXFvL2dlcW9fcG9vbC5jCmluZGV4IDg5ZTNkNmEwMjc3Li5kMGY1M2Q4ODhlZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19wb29sLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19wb29sLmMKQEAgLTQ2LDE3ICs0NiwxNyBA QCBhbGxvY19wb29sKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcG9vbF9zaXplLCBpbnQgc3Ry aW5nX2xlbmd0aCkKIAlpbnQJCQlpOwogCiAJLyogcG9vbCAqLwotCW5ld19wb29sID0gKFBv b2wgKikgcGFsbG9jKHNpemVvZihQb29sKSk7CisJbmV3X3Bvb2wgPSBwYWxsb2Nfb2JqZWN0 KFBvb2wpOwogCW5ld19wb29sLT5zaXplID0gcG9vbF9zaXplOwogCW5ld19wb29sLT5zdHJp bmdfbGVuZ3RoID0gc3RyaW5nX2xlbmd0aDsKIAogCS8qIGFsbCBjaHJvbW9zb21lICovCi0J bmV3X3Bvb2wtPmRhdGEgPSAoQ2hyb21vc29tZSAqKSBwYWxsb2MocG9vbF9zaXplICogc2l6 ZW9mKENocm9tb3NvbWUpKTsKKwluZXdfcG9vbC0+ZGF0YSA9IHBhbGxvY19hcnJheShDaHJv bW9zb21lLCBwb29sX3NpemUpOwogCiAJLyogYWxsIGdlbmUgKi8KIAljaHJvbW8gPSAoQ2hy b21vc29tZSAqKSBuZXdfcG9vbC0+ZGF0YTsgLyogdmVjdG9yIG9mIGFsbCBjaHJvbW9zICov CiAJZm9yIChpID0gMDsgaSA8IHBvb2xfc2l6ZTsgaSsrKQotCQljaHJvbW9baV0uc3RyaW5n ID0gcGFsbG9jKChzdHJpbmdfbGVuZ3RoICsgMSkgKiBzaXplb2YoR2VuZSkpOworCQljaHJv bW9baV0uc3RyaW5nID0gcGFsbG9jX2FycmF5KEdlbmUsIHN0cmluZ19sZW5ndGggKyAxKTsK IAogCXJldHVybiBuZXdfcG9vbDsKIH0KQEAgLTE2Myw4ICsxNjMsOCBAQCBhbGxvY19jaHJv bW8oUGxhbm5lckluZm8gKnJvb3QsIGludCBzdHJpbmdfbGVuZ3RoKQogewogCUNocm9tb3Nv bWUgKmNocm9tbzsKIAotCWNocm9tbyA9IChDaHJvbW9zb21lICopIHBhbGxvYyhzaXplb2Yo Q2hyb21vc29tZSkpOwotCWNocm9tby0+c3RyaW5nID0gKEdlbmUgKikgcGFsbG9jKChzdHJp bmdfbGVuZ3RoICsgMSkgKiBzaXplb2YoR2VuZSkpOworCWNocm9tbyA9IHBhbGxvY19vYmpl Y3QoQ2hyb21vc29tZSk7CisJY2hyb21vLT5zdHJpbmcgPSBwYWxsb2NfYXJyYXkoR2VuZSwg c3RyaW5nX2xlbmd0aCArIDEpOwogCiAJcmV0dXJuIGNocm9tbzsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fcmVjb21iaW5hdGlvbi5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19yZWNvbWJpbmF0aW9uLmMKaW5kZXggYTVk M2U0N2FkMTEuLjQxZDM1YzE3OWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvZ2Vxby9nZXFvX3JlY29tYmluYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvZ2Vxby9nZXFvX3JlY29tYmluYXRpb24uYwpAQCAtNzQsNyArNzQsNyBAQCBhbGxvY19j aXR5X3RhYmxlKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbnVtX2dlbmUpCiAJICogcGFsbG9j IG9uZSBleHRyYSBsb2NhdGlvbiBzbyB0aGF0IG5vZGVzIG51bWJlcmVkIDEuLm4gY2FuIGJl IGluZGV4ZWQKIAkgKiBkaXJlY3RseTsgMCB3aWxsIG5vdCBiZSB1c2VkCiAJICovCi0JY2l0 eV90YWJsZSA9IChDaXR5ICopIHBhbGxvYygobnVtX2dlbmUgKyAxKSAqIHNpemVvZihDaXR5 KSk7CisJY2l0eV90YWJsZSA9IHBhbGxvY19hcnJheShDaXR5LCBudW1fZ2VuZSArIDEpOwog CiAJcmV0dXJuIGNpdHlfdGFibGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9jbGF1c2VzZWwuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Ns YXVzZXNlbC5jCmluZGV4IGQwZjUxNmI3NjQ1Li5lYjliN2YzZWFiZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY2xhdXNlc2VsLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvY2xhdXNlc2VsLmMKQEAgLTQ5NSw3ICs0OTUsNyBAQCBhZGRS YW5nZUNsYXVzZShSYW5nZVF1ZXJ5Q2xhdXNlICoqcnFsaXN0LCBOb2RlICpjbGF1c2UsCiAJ fQogCiAJLyogTm8gbWF0Y2hpbmcgdmFyIGZvdW5kLCBzbyBtYWtlIGEgbmV3IGNsYXVzZS1w YWlyIGRhdGEgc3RydWN0dXJlICovCi0JcnFlbGVtID0gKFJhbmdlUXVlcnlDbGF1c2UgKikg cGFsbG9jKHNpemVvZihSYW5nZVF1ZXJ5Q2xhdXNlKSk7CisJcnFlbGVtID0gcGFsbG9jX29i amVjdChSYW5nZVF1ZXJ5Q2xhdXNlKTsKIAlycWVsZW0tPnZhciA9IHZhcjsKIAlpZiAoaXNf bG9ib3VuZCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRl eCA1YTcyODNiZDJmNS4uYTM5Y2M3OTNiNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvY29zdHNpemUuYwpAQCAtMjE3OSw3ICsyMTc5LDcgQEAgYXBwZW5kX25vbnBhcnRpYWxf Y29zdChMaXN0ICpzdWJwYXRocywgaW50IG51bXBhdGhzLCBpbnQgcGFyYWxsZWxfd29ya2Vy cykKIAkgKiB3aGljaGV2ZXIgaXMgbGVzcy4KIAkgKi8KIAlhcnJsZW4gPSBNaW4ocGFyYWxs ZWxfd29ya2VycywgbnVtcGF0aHMpOwotCWNvc3RhcnIgPSAoQ29zdCAqKSBwYWxsb2Moc2l6 ZW9mKENvc3QpICogYXJybGVuKTsKKwljb3N0YXJyID0gcGFsbG9jX2FycmF5KENvc3QsIGFy cmxlbik7CiAKIAkvKiBUaGUgZmlyc3QgZmV3IHBhdGhzIHdpbGwgZWFjaCBiZSBjbGFpbWVk IGJ5IGEgZGlmZmVyZW50IHdvcmtlci4gKi8KIAlwYXRoX2luZGV4ID0gMDsKQEAgLTQxMzcs NyArNDEzNyw3IEBAIGNhY2hlZF9zY2Fuc2VsKFBsYW5uZXJJbmZvICpyb290LCBSZXN0cmlj dEluZm8gKnJpbmZvLCBQYXRoS2V5ICpwYXRoa2V5KQogCS8qIENhY2hlIHRoZSByZXN1bHQg aW4gc3VpdGFibHkgbG9uZy1saXZlZCB3b3Jrc3BhY2UgKi8KIAlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHJvb3QtPnBsYW5uZXJfY3h0KTsKIAotCWNhY2hlID0gKE1l cmdlU2NhblNlbENhY2hlICopIHBhbGxvYyhzaXplb2YoTWVyZ2VTY2FuU2VsQ2FjaGUpKTsK KwljYWNoZSA9IHBhbGxvY19vYmplY3QoTWVyZ2VTY2FuU2VsQ2FjaGUpOwogCWNhY2hlLT5v cGZhbWlseSA9IHBhdGhrZXktPnBrX29wZmFtaWx5OwogCWNhY2hlLT5jb2xsYXRpb24gPSBw YXRoa2V5LT5wa19lY2xhc3MtPmVjX2NvbGxhdGlvbjsKIAljYWNoZS0+Y21wdHlwZSA9IHBh dGhrZXktPnBrX2NtcHR5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9pbmR4cGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YwppbmRleCAyNjU0YzU5YzRjNi4uNWQ0ZjgxZWU3N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvaW5keHBhdGguYwpAQCAtMTI5MSw3ICsxMjkxLDcgQEAgZ3JvdXBfc2ltaWxh cl9vcl9hcmdzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0 SW5mbyAqcmluZm8pCiAJICogd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHNvcnQgdGhlc2UgYXJn dW1lbnRzIGF0IHRoZSBuZXh0IHN0ZXAuCiAJICovCiAJaSA9IC0xOwotCW1hdGNoZXMgPSAo T3JBcmdJbmRleE1hdGNoICopIHBhbGxvYyhzaXplb2YoT3JBcmdJbmRleE1hdGNoKSAqIG4p OworCW1hdGNoZXMgPSBwYWxsb2NfYXJyYXkoT3JBcmdJbmRleE1hdGNoLCBuKTsKIAlmb3Jl YWNoKGxjLCBvcmFyZ3MpCiAJewogCQlOb2RlCSAgICphcmcgPSBsZmlyc3QobGMpOwpAQCAt MTg1Myw4ICsxODUzLDcgQEAgY2hvb3NlX2JpdG1hcF9hbmQoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwgTGlzdCAqcGF0aHMpCiAJICogc2FtZSBzZXQgb2YgY2xhdXNl czsga2VlcCBvbmx5IHRoZSBjaGVhcGVzdC10by1zY2FuIG9mIGFueSBzdWNoIGdyb3Vwcy4K IAkgKiBUaGUgc3Vydml2aW5nIHBhdGhzIGFyZSBwdXQgaW50byBhbiBhcnJheSBmb3IgcXNv cnQnaW5nLgogCSAqLwotCXBhdGhpbmZvYXJyYXkgPSAoUGF0aENsYXVzZVVzYWdlICoqKQot CQlwYWxsb2MobnBhdGhzICogc2l6ZW9mKFBhdGhDbGF1c2VVc2FnZSAqKSk7CisJcGF0aGlu Zm9hcnJheSA9IHBhbGxvY19hcnJheShQYXRoQ2xhdXNlVXNhZ2UgKiwgbnBhdGhzKTsKIAlj bGF1c2VsaXN0ID0gTklMOwogCW5wYXRocyA9IDA7CiAJZm9yZWFjaChsLCBwYXRocykKQEAg LTIwOTAsNyArMjA4OSw3IEBAIGNsYXNzaWZ5X2luZGV4X2NsYXVzZV91c2FnZShQYXRoICpw YXRoLCBMaXN0ICoqY2xhdXNlbGlzdCkKIAlCaXRtYXBzZXQgICpjbGF1c2VpZHM7CiAJTGlz dENlbGwgICAqbGM7CiAKLQlyZXN1bHQgPSAoUGF0aENsYXVzZVVzYWdlICopIHBhbGxvYyhz aXplb2YoUGF0aENsYXVzZVVzYWdlKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQYXRo Q2xhdXNlVXNhZ2UpOwogCXJlc3VsdC0+cGF0aCA9IHBhdGg7CiAKIAkvKiBSZWN1cnNpdmVs eSBmaW5kIHRoZSBxdWFscyBhbmQgcHJlZHMgdXNlZCBieSB0aGUgcGF0aCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKaW5kZXggNWQxZmMzODk5ZGEuLjg4Mjdi OWE1MjQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVs cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKQEAgLTE5 OTAsOCArMTk5MCw3IEBAIGNvbXB1dGVfcGFydGl0aW9uX2JvdW5kcyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJQXNzZXJ0KG5wYXJ0cyA+IDApOwogCQlqb2lu cmVsLT5ib3VuZGluZm8gPSBib3VuZGluZm87CiAJCWpvaW5yZWwtPm5wYXJ0cyA9IG5wYXJ0 czsKLQkJam9pbnJlbC0+cGFydF9yZWxzID0KLQkJCShSZWxPcHRJbmZvICoqKSBwYWxsb2Mw KHNpemVvZihSZWxPcHRJbmZvICopICogbnBhcnRzKTsKKwkJam9pbnJlbC0+cGFydF9yZWxz ID0gcGFsbG9jMF9hcnJheShSZWxPcHRJbmZvICosIG5wYXJ0cyk7CiAJfQogCWVsc2UKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCmluZGV4IGU1 OTJlMWFjM2QxLi5hNmFmNjFmOTI5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vYW5hbHl6ZWpvaW5zLmMKQEAgLTIzNTgsOCArMjM1OCw3IEBAIHJlbW92ZV9zZWxmX2pv aW5zX3JlY3Vyc2UoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5saXN0LCBSZWxpZHMg dG9SZW1vdmUpCiAJICogSW4gb3JkZXIgdG8gZmluZCByZWxhdGlvbnMgd2l0aCB0aGUgc2Ft ZSBvaWQgd2UgZmlyc3QgYnVpbGQgYW4gYXJyYXkgb2YKIAkgKiBjYW5kaWRhdGVzIGFuZCB0 aGVuIHNvcnQgaXQgYnkgb2lkLgogCSAqLwotCWNhbmRpZGF0ZXMgPSAoU2VsZkpvaW5DYW5k aWRhdGUgKikgcGFsbG9jKHNpemVvZihTZWxmSm9pbkNhbmRpZGF0ZSkgKgotCQkJCQkJCQkJ CQkgIG51bVJlbHMpOworCWNhbmRpZGF0ZXMgPSBwYWxsb2NfYXJyYXkoU2VsZkpvaW5DYW5k aWRhdGUsIG51bVJlbHMpOwogCWkgPSAtMTsKIAlqID0gMDsKIAl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIocmVsaWRzLCBpKSkgPj0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYwppbmRleCA4YWYwOTFiYTY0Ny4uYmM0MTdmOTM4NDAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTIyMDcsNyArMjIw Nyw3IEBAIHJlbWFwX2dyb3VwQ29sSWR4KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpncm91 cENsYXVzZSkKIAogCUFzc2VydChncm91cGluZ19tYXApOwogCi0JbmV3X2dycENvbElkeCA9 IHBhbGxvYzAoc2l6ZW9mKEF0dHJOdW1iZXIpICogbGlzdF9sZW5ndGgoZ3JvdXBDbGF1c2Up KTsKKwluZXdfZ3JwQ29sSWR4ID0gcGFsbG9jMF9hcnJheShBdHRyTnVtYmVyLCBsaXN0X2xl bmd0aChncm91cENsYXVzZSkpOwogCiAJaSA9IDA7CiAJZm9yZWFjaChsYywgZ3JvdXBDbGF1 c2UpCkBAIC0yNDk2LDkgKzI0OTYsOSBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkgKiBDb252ZXJ0IFNv cnRHcm91cENsYXVzZSBsaXN0cyBpbnRvIGFycmF5cyBvZiBhdHRyIGluZGV4ZXMgYW5kIGVx dWFsaXR5CiAJICogb3BlcmF0b3JzLCBhcyB3YW50ZWQgYnkgZXhlY3V0b3IuCiAJICovCi0J cGFydENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikg KiBudW1QYXJ0KTsKLQlwYXJ0T3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9p ZCkgKiBudW1QYXJ0KTsKLQlwYXJ0Q29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVv ZihPaWQpICogbnVtUGFydCk7CisJcGFydENvbElkeCA9IHBhbGxvY19hcnJheShBdHRyTnVt YmVyLCBudW1QYXJ0KTsKKwlwYXJ0T3BlcmF0b3JzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVt UGFydCk7CisJcGFydENvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1QYXJ0KTsK IAogCXBhcnROdW1Db2xzID0gMDsKIAlmb3JlYWNoKGxjLCB3Yy0+cGFydGl0aW9uQ2xhdXNl KQpAQCAtMjUxMyw5ICsyNTEzLDkgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCXBhcnROdW1Db2xzKys7 CiAJfQogCi0Jb3JkQ29sSWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRy TnVtYmVyKSAqIG51bU9yZGVyKTsKLQlvcmRPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhz aXplb2YoT2lkKSAqIG51bU9yZGVyKTsKLQlvcmRDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxs b2Moc2l6ZW9mKE9pZCkgKiBudW1PcmRlcik7CisJb3JkQ29sSWR4ID0gcGFsbG9jX2FycmF5 KEF0dHJOdW1iZXIsIG51bU9yZGVyKTsKKwlvcmRPcGVyYXRvcnMgPSBwYWxsb2NfYXJyYXko T2lkLCBudW1PcmRlcik7CisJb3JkQ29sbGF0aW9ucyA9IHBhbGxvY19hcnJheShPaWQsIG51 bU9yZGVyKTsKIAogCW9yZE51bUNvbHMgPSAwOwogCWZvcmVhY2gobGMsIHdjLT5vcmRlckNs YXVzZSkKQEAgLTU4NjIsOSArNTg2Miw5IEBAIG1ha2VfcmVjdXJzaXZlX3VuaW9uKExpc3Qg KnRsaXN0LAogCQlPaWQJCSAgICpkdXBDb2xsYXRpb25zOwogCQlMaXN0Q2VsbCAgICpzbGl0 ZW07CiAKLQkJZHVwQ29sSWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRy TnVtYmVyKSAqIG51bUNvbHMpOwotCQlkdXBPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhz aXplb2YoT2lkKSAqIG51bUNvbHMpOwotCQlkdXBDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxs b2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xzKTsKKwkJZHVwQ29sSWR4ID0gcGFsbG9jX2FycmF5 KEF0dHJOdW1iZXIsIG51bUNvbHMpOworCQlkdXBPcGVyYXRvcnMgPSBwYWxsb2NfYXJyYXko T2lkLCBudW1Db2xzKTsKKwkJZHVwQ29sbGF0aW9ucyA9IHBhbGxvY19hcnJheShPaWQsIG51 bUNvbHMpOwogCiAJCWZvcmVhY2goc2xpdGVtLCBkaXN0aW5jdExpc3QpCiAJCXsKQEAgLTY2 OTQsOSArNjY5NCw5IEBAIG1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRy ZWUsIExpc3QgKnBhdGhrZXlzLCBpbnQgbnVtQ29scywKIAkgKiBwcmVwYXJlX3NvcnRfZnJv bV9wYXRoa2V5cyAuLi4gbWF5YmUgdW5pZnkgc29tZXRpbWU/CiAJICovCiAJQXNzZXJ0KG51 bUNvbHMgPj0gMCAmJiBudW1Db2xzIDw9IGxpc3RfbGVuZ3RoKHBhdGhrZXlzKSk7Ci0JdW5p cUNvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBu dW1Db2xzKTsKLQl1bmlxT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkg KiBudW1Db2xzKTsKLQl1bmlxQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihP aWQpICogbnVtQ29scyk7CisJdW5pcUNvbElkeCA9IHBhbGxvY19hcnJheShBdHRyTnVtYmVy LCBudW1Db2xzKTsKKwl1bmlxT3BlcmF0b3JzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtQ29s cyk7CisJdW5pcUNvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1Db2xzKTsKIAog CWZvcmVhY2gobGMsIHBhdGhrZXlzKQogCXsKQEAgLTY4MzEsMTAgKzY4MzEsMTAgQEAgbWFr ZV9zZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJICogY29u dmVydCBTb3J0R3JvdXBDbGF1c2UgbGlzdCBpbnRvIGFycmF5cyBvZiBhdHRyIGluZGV4ZXMg YW5kIGNvbXBhcmlzb24KIAkgKiBvcGVyYXRvcnMsIGFzIHdhbnRlZCBieSBleGVjdXRvcgog CSAqLwotCWNtcENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51 bWJlcikgKiBudW1Db2xzKTsKLQljbXBPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXpl b2YoT2lkKSAqIG51bUNvbHMpOwotCWNtcENvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhz aXplb2YoT2lkKSAqIG51bUNvbHMpOwotCWNtcE51bGxzRmlyc3QgPSAoYm9vbCAqKSBwYWxs b2Moc2l6ZW9mKGJvb2wpICogbnVtQ29scyk7CisJY21wQ29sSWR4ID0gcGFsbG9jX2FycmF5 KEF0dHJOdW1iZXIsIG51bUNvbHMpOworCWNtcE9wZXJhdG9ycyA9IHBhbGxvY19hcnJheShP aWQsIG51bUNvbHMpOworCWNtcENvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1D b2xzKTsKKwljbXBOdWxsc0ZpcnN0ID0gcGFsbG9jX2FycmF5KGJvb2wsIG51bUNvbHMpOwog CiAJZm9yZWFjaChzbGl0ZW0sIGdyb3VwTGlzdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2luaXRzcGxhbi5jCmluZGV4IDY3MWM1Y2RlOGZjLi5mN2Y3NjQ2OWEyZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKQEAgLTQzOCw4ICs0Mzgs NyBAQCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3Qp CiAJICogRmlsbCBncm91cGJ5YXR0bm9zW2tdIHdpdGggYSBiaXRtYXBzZXQgb2YgdGhlIGNv bHVtbiBhdHRub3Mgb2YgUlRFIGsKIAkgKiB0aGF0IGFyZSBHUk9VUCBCWSBpdGVtcy4KIAkg Ki8KLQlncm91cGJ5YXR0bm9zID0gKEJpdG1hcHNldCAqKikgcGFsbG9jMChzaXplb2YoQml0 bWFwc2V0ICopICoKLQkJCQkJCQkJCQkgICAobGlzdF9sZW5ndGgocGFyc2UtPnJ0YWJsZSkg KyAxKSk7CisJZ3JvdXBieWF0dG5vcyA9IHBhbGxvYzBfYXJyYXkoQml0bWFwc2V0ICosIGxp c3RfbGVuZ3RoKHBhcnNlLT5ydGFibGUpICsgMSk7CiAJZm9yZWFjaChsYywgcm9vdC0+cHJv Y2Vzc2VkX2dyb3VwQ2xhdXNlKQogCXsKIAkJU29ydEdyb3VwQ2xhdXNlICpzZ2MgPSBsZmly c3Rfbm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKQEAgLTU5Nyw4ICs1OTYsNyBAQCByZW1v dmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3QpCiAJCQkgKiBh bGxvY2F0ZSB0aGUgc3VycGx1c3ZhcnNbXSBhcnJheSB1bnRpbCB3ZSBmaW5kIHNvbWV0aGlu Zy4KIAkJCSAqLwogCQkJaWYgKHN1cnBsdXN2YXJzID09IE5VTEwpCi0JCQkJc3VycGx1c3Zh cnMgPSAoQml0bWFwc2V0ICoqKSBwYWxsb2MwKHNpemVvZihCaXRtYXBzZXQgKikgKgotCQkJ CQkJCQkJCQkJCSAobGlzdF9sZW5ndGgocGFyc2UtPnJ0YWJsZSkgKyAxKSk7CisJCQkJc3Vy cGx1c3ZhcnMgPSBwYWxsb2MwX2FycmF5KEJpdG1hcHNldCAqLCBsaXN0X2xlbmd0aChwYXJz ZS0+cnRhYmxlKSArIDEpOwogCiAJCQkvKiBSZW1lbWJlciB0aGUgYXR0bm9zIG9mIHRoZSBy ZW1vdmFibGUgY29sdW1ucyAqLwogCQkJc3VycGx1c3ZhcnNbcmVsaWRdID0gYm1zX2RpZmZl cmVuY2UocmVsYXR0bm9zLCBiZXN0X2tleWNvbHVtbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbmFnZy5jCmluZGV4IGEyYWM1OGQyNDZlLi4xYTM1YzI2OWUwNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYwpAQCAtMzM2LDcgKzMzNiw3IEBAIGJ1 aWxkX21pbm1heF9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBNaW5NYXhBZ2dJbmZvICptbWlu Zm8sCiAJICogdGhhbiBiZWZvcmUuICAoVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgYXJlIGRv bmUsIHRoZXJlIHdpbGwgYmUgbm8gVmFycwogCSAqIG9mIGxldmVsIDEsIHdoaWNoIGlzIHdo eSB0aGUgc3VicXVlcnkgY2FuIGJlY29tZSBhbiBpbml0cGxhbi4pCiAJICovCi0Jc3Vicm9v dCA9IChQbGFubmVySW5mbyAqKSBwYWxsb2Moc2l6ZW9mKFBsYW5uZXJJbmZvKSk7CisJc3Vi cm9vdCA9IHBhbGxvY19vYmplY3QoUGxhbm5lckluZm8pOwogCW1lbWNweShzdWJyb290LCBy b290LCBzaXplb2YoUGxhbm5lckluZm8pKTsKIAlzdWJyb290LT5xdWVyeV9sZXZlbCsrOwog CXN1YnJvb3QtPnBhcmVudF9yb290ID0gcm9vdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYwppbmRleCAwZTc4NjI4YmYwMS4uMDA0OGM1YjhlYmYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTIyMTMsNyArMjIxMyw3IEBAIHByZXBy b2Nlc3NfZ3JvdXBpbmdfc2V0cyhQbGFubmVySW5mbyAqcm9vdCkKIAlMaXN0CSAgICpzZXRz OwogCWludAkJCW1heHJlZiA9IDA7CiAJTGlzdENlbGwgICAqbGNfc2V0OwotCWdyb3VwaW5n X3NldHNfZGF0YSAqZ2QgPSBwYWxsb2MwKHNpemVvZihncm91cGluZ19zZXRzX2RhdGEpKTsK Kwlncm91cGluZ19zZXRzX2RhdGEgKmdkID0gcGFsbG9jMF9vYmplY3QoZ3JvdXBpbmdfc2V0 c19kYXRhKTsKIAogCS8qCiAJICogV2UgZG9uJ3QgY3VycmVudGx5IG1ha2UgYW55IGF0dGVt cHQgdG8gb3B0aW1pemUgdGhlIGdyb3VwQ2xhdXNlIHdoZW4KQEAgLTU5NzcsOCArNTk3Nyw3 IEBAIHNlbGVjdF9hY3RpdmVfd2luZG93cyhQbGFubmVySW5mbyAqcm9vdCwgV2luZG93RnVu Y0xpc3RzICp3Zmxpc3RzKQogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2VsbCAg ICpsYzsKIAlpbnQJCQluQWN0aXZlID0gMDsKLQlXaW5kb3dDbGF1c2VTb3J0RGF0YSAqYWN0 aXZlcyA9IHBhbGxvYyhzaXplb2YoV2luZG93Q2xhdXNlU29ydERhdGEpCi0JCQkJCQkJCQkJ ICAgKiBsaXN0X2xlbmd0aCh3aW5kb3dDbGF1c2UpKTsKKwlXaW5kb3dDbGF1c2VTb3J0RGF0 YSAqYWN0aXZlcyA9IHBhbGxvY19hcnJheShXaW5kb3dDbGF1c2VTb3J0RGF0YSwgbGlzdF9s ZW5ndGgod2luZG93Q2xhdXNlKSk7CiAKIAkvKiBGaXJzdCwgY29uc3RydWN0IGFuIGFycmF5 IG9mIHRoZSBhY3RpdmUgd2luZG93cyAqLwogCWZvcmVhY2gobGMsIHdpbmRvd0NsYXVzZSkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBjY2RjOWJjMjY0YS4u Y2Q3ZWExZTZiNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAg LTMxMiw3ICszMTIsNyBAQCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290 LCBQbGFuICpwbGFuKQogCQkJICAgcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtyYy0+cnRpXSAh PSBOVUxMKTsKIAogCQkvKiBmbGF0IGNvcHkgaXMgZW5vdWdoIHNpbmNlIGFsbCBmaWVsZHMg YXJlIHNjYWxhcnMgKi8KLQkJbmV3cmMgPSAoUGxhblJvd01hcmsgKikgcGFsbG9jKHNpemVv ZihQbGFuUm93TWFyaykpOworCQluZXdyYyA9IHBhbGxvY19vYmplY3QoUGxhblJvd01hcmsp OwogCQltZW1jcHkobmV3cmMsIHJjLCBzaXplb2YoUGxhblJvd01hcmspKTsKIAogCQkvKiBh ZGp1c3QgaW5kZXhlcyAuLi4gYnV0ICpub3QqIHRoZSByb3dtYXJrSWQgKi8KQEAgLTU0NSw3 ICs1NDUsNyBAQCBhZGRfcnRlX3RvX2ZsYXRfcnRhYmxlKFBsYW5uZXJHbG9iYWwgKmdsb2Is IExpc3QgKnJ0ZXBlcm1pbmZvcywKIAlSYW5nZVRibEVudHJ5ICpuZXdydGU7CiAKIAkvKiBm bGF0IGNvcHkgdG8gZHVwbGljYXRlIGFsbCB0aGUgc2NhbGFyIGZpZWxkcyAqLwotCW5ld3J0 ZSA9IChSYW5nZVRibEVudHJ5ICopIHBhbGxvYyhzaXplb2YoUmFuZ2VUYmxFbnRyeSkpOwor CW5ld3J0ZSA9IHBhbGxvY19vYmplY3QoUmFuZ2VUYmxFbnRyeSk7CiAJbWVtY3B5KG5ld3J0 ZSwgcnRlLCBzaXplb2YoUmFuZ2VUYmxFbnRyeSkpOwogCiAJLyogemFwIHVubmVlZGVkIHN1 Yi1zdHJ1Y3R1cmUgKi8KQEAgLTIwMjgsNyArMjAyOCw3IEBAIG9mZnNldF9yZWxpZF9zZXQo UmVsaWRzIHJlbGlkcywgaW50IHJ0b2Zmc2V0KQogc3RhdGljIGlubGluZSBWYXIgKgogY29w eVZhcihWYXIgKnZhcikKIHsKLQlWYXIJCSAgICpuZXd2YXIgPSAoVmFyICopIHBhbGxvYyhz aXplb2YoVmFyKSk7CisJVmFyCQkgICAqbmV3dmFyID0gcGFsbG9jX29iamVjdChWYXIpOwog CiAJKm5ld3ZhciA9ICp2YXI7CiAJcmV0dXJuIG5ld3ZhcjsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMKaW5kZXggNzU4MTY5NTY0N2QuLmMzYjcyNmU5 M2U3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRy ZWUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpA QCAtNzQxLDcgKzc0MSw3IEBAIHB1bGxfdXBfc3VibGlua3Nfam9pbnRyZWVfcmVjdXJzZShQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLAogCQkgKiBNYWtlIGEgbW9kaWZpYWJs ZSBjb3B5IG9mIGpvaW4gbm9kZSwgYnV0IGRvbid0IGJvdGhlciBjb3B5aW5nIGl0cwogCQkg KiBzdWJub2RlcyAoeWV0KS4KIAkJICovCi0JCWogPSAoSm9pbkV4cHIgKikgcGFsbG9jKHNp emVvZihKb2luRXhwcikpOworCQlqID0gcGFsbG9jX29iamVjdChKb2luRXhwcik7CiAJCW1l bWNweShqLCBqdG5vZGUsIHNpemVvZihKb2luRXhwcikpOwogCQlqdGxpbmsgPSAoTm9kZSAq KSBqOwogCkBAIC0zMjQwLDggKzMyNDAsNyBAQCByZWR1Y2Vfb3V0ZXJfam9pbnNfcGFzczEo Tm9kZSAqanRub2RlKQogewogCXJlZHVjZV9vdXRlcl9qb2luc19wYXNzMV9zdGF0ZSAqcmVz dWx0OwogCi0JcmVzdWx0ID0gKHJlZHVjZV9vdXRlcl9qb2luc19wYXNzMV9zdGF0ZSAqKQot CQlwYWxsb2Moc2l6ZW9mKHJlZHVjZV9vdXRlcl9qb2luc19wYXNzMV9zdGF0ZSkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QocmVkdWNlX291dGVyX2pvaW5zX3Bhc3MxX3N0YXRlKTsK IAlyZXN1bHQtPnJlbGlkcyA9IE5VTEw7CiAJcmVzdWx0LT5jb250YWluc19vdXRlciA9IGZh bHNlOwogCXJlc3VsdC0+c3ViX3N0YXRlcyA9IE5JTDsKQEAgLTM1OTMsNyArMzU5Miw3IEBA IHJlcG9ydF9yZWR1Y2VkX2Z1bGxfam9pbihyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFzczJfc3Rh dGUgKnN0YXRlMiwKIHsKIAlyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFydGlhbF9zdGF0ZSAqc3Rh dGVwOwogCi0Jc3RhdGVwID0gcGFsbG9jKHNpemVvZihyZWR1Y2Vfb3V0ZXJfam9pbnNfcGFy dGlhbF9zdGF0ZSkpOworCXN0YXRlcCA9IHBhbGxvY19vYmplY3QocmVkdWNlX291dGVyX2pv aW5zX3BhcnRpYWxfc3RhdGUpOwogCXN0YXRlcC0+ZnVsbF9qb2luX3J0aSA9IHJ0aW5kZXg7 CiAJc3RhdGVwLT51bnJlZHVjZWRfc2lkZSA9IHJlbGlkczsKIAlzdGF0ZTItPnBhcnRpYWxf cmVkdWNlZCA9IGxhcHBlbmQoc3RhdGUyLT5wYXJ0aWFsX3JlZHVjZWQsIHN0YXRlcCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jCmluZGV4IGY1MjhmMDk2YTU2 Li5hMDFiMDJmM2E3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcHVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9u LmMKQEAgLTE2MjksNyArMTYyOSw3IEBAIGdlbmVyYXRlX2FwcGVuZF90bGlzdChMaXN0ICpj b2xUeXBlcywgTGlzdCAqY29sQ29sbGF0aW9ucywKIAkgKiBJZiB0aGUgaW5wdXRzIGFsbCBh Z3JlZSBvbiB0eXBlIGFuZCB0eXBtb2Qgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbiwgdXNlCiAJ ICogdGhhdCB0eXBtb2Q7IGVsc2UgdXNlIC0xLgogCSAqLwotCWNvbFR5cG1vZHMgPSAoaW50 MzIgKikgcGFsbG9jKGxpc3RfbGVuZ3RoKGNvbFR5cGVzKSAqIHNpemVvZihpbnQzMikpOwor CWNvbFR5cG1vZHMgPSBwYWxsb2NfYXJyYXkoaW50MzIsIGxpc3RfbGVuZ3RoKGNvbFR5cGVz KSk7CiAKIAlmb3JlYWNoKHRsaXN0bCwgaW5wdXRfdGxpc3RzKQogCXsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCA2OWI4YjBjMmFlMC4uMjcxYmI0 ZTY4MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGlu Zm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAg LTgwOCw4ICs4MDgsNyBAQCBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhQbGFubmVySW5mbyAq cm9vdCwgUmVsaWRzIHJlbGlkcywgaW50ICpuYXBwaW5mb3MpCiAJaW50CQkJaTsKIAogCS8q IEFsbG9jYXRlIGFuIGFycmF5IHRoYXQncyBjZXJ0YWlubHkgYmlnIGVub3VnaCAqLwotCWFw cGluZm9zID0gKEFwcGVuZFJlbEluZm8gKiopCi0JCXBhbGxvYyhzaXplb2YoQXBwZW5kUmVs SW5mbyAqKSAqIGJtc19udW1fbWVtYmVycyhyZWxpZHMpKTsKKwlhcHBpbmZvcyA9IHBhbGxv Y19hcnJheShBcHBlbmRSZWxJbmZvICosIGJtc19udW1fbWVtYmVycyhyZWxpZHMpKTsKIAog CWkgPSAtMTsKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCBpKSkgPj0g MCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCBiZGE0YzRlYjI5 Mi4uZGRhZmMyMWM4MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK QEAgLTIzOSw3ICsyMzksNyBAQCBjb250YWluX3dpbmRvd19mdW5jdGlvbihOb2RlICpjbGF1 c2UpCiBXaW5kb3dGdW5jTGlzdHMgKgogZmluZF93aW5kb3dfZnVuY3Rpb25zKE5vZGUgKmNs YXVzZSwgSW5kZXggbWF4V2luUmVmKQogewotCVdpbmRvd0Z1bmNMaXN0cyAqbGlzdHMgPSBw YWxsb2Moc2l6ZW9mKFdpbmRvd0Z1bmNMaXN0cykpOworCVdpbmRvd0Z1bmNMaXN0cyAqbGlz dHMgPSBwYWxsb2Nfb2JqZWN0KFdpbmRvd0Z1bmNMaXN0cyk7CiAKIAlsaXN0cy0+bnVtV2lu ZG93RnVuY3MgPSAwOwogCWxpc3RzLT5tYXhXaW5SZWYgPSBtYXhXaW5SZWY7CkBAIC01NzQ0 LDggKzU3NDQsOCBAQCBtYWtlX1NBT1BfZXhwcihPaWQgb3BlciwgTm9kZSAqbGVmdGV4cHIs IE9pZCBjb2x0eXBlLCBPaWQgYXJyYXljb2xsaWQsCiAKIAkJZ2V0X3R5cGxlbmJ5dmFsYWxp Z24oY29sdHlwZSwgJnR5cGxlbiwgJnR5cGJ5dmFsLCAmdHlwYWxpZ24pOwogCi0JCWVsZW1z ID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogbGlzdF9sZW5ndGgoZXhwcnMp KTsKLQkJbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbGlzdF9sZW5n dGgoZXhwcnMpKTsKKwkJZWxlbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGxpc3RfbGVuZ3Ro KGV4cHJzKSk7CisJCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGxpc3RfbGVuZ3RoKGV4 cHJzKSk7CiAJCWZvcmVhY2hfbm9kZShDb25zdCwgdmFsdWUsIGV4cHJzKQogCQl7CiAJCQll bGVtc1tpXSA9IHZhbHVlLT5jb25zdHZhbHVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvZXh0ZW5kcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvZXh0ZW5kcGxhbi5jCmluZGV4IDAzZDMyMjc3YmExLi40ZTJmOGQ0ZGFkYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvZXh0ZW5kcGxhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2V4dGVuZHBsYW4uYwpAQCAtOTgsMTAgKzk4LDcg QEAgU2V0UGxhbm5lckdsb2JhbEV4dGVuc2lvblN0YXRlKFBsYW5uZXJHbG9iYWwgKmdsb2Is IGludCBleHRlbnNpb25faWQsCiAJCWludAkJCWk7CiAKIAkJaSA9IHBnX25leHRwb3dlcjJf MzIoZXh0ZW5zaW9uX2lkICsgMSk7Ci0JCWdsb2ItPmV4dGVuc2lvbl9zdGF0ZSA9ICh2b2lk ICoqKQotCQkJcmVwYWxsb2MwKGdsb2ItPmV4dGVuc2lvbl9zdGF0ZSwKLQkJCQkJICBnbG9i LT5leHRlbnNpb25fc3RhdGVfYWxsb2NhdGVkICogc2l6ZW9mKHZvaWQgKiksCi0JCQkJCSAg aSAqIHNpemVvZih2b2lkICopKTsKKwkJZ2xvYi0+ZXh0ZW5zaW9uX3N0YXRlID0gcmVwYWxs b2MwX2FycmF5KGdsb2ItPmV4dGVuc2lvbl9zdGF0ZSwgdm9pZCAqLCBnbG9iLT5leHRlbnNp b25fc3RhdGVfYWxsb2NhdGVkLCBpKTsKIAkJZ2xvYi0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9j YXRlZCA9IGk7CiAJfQogCkBAIC0xMzQsMTAgKzEzMSw3IEBAIFNldFBsYW5uZXJJbmZvRXh0 ZW5zaW9uU3RhdGUoUGxhbm5lckluZm8gKnJvb3QsIGludCBleHRlbnNpb25faWQsCiAJCWlu dAkJCWk7CiAKIAkJaSA9IHBnX25leHRwb3dlcjJfMzIoZXh0ZW5zaW9uX2lkICsgMSk7Ci0J CXJvb3QtPmV4dGVuc2lvbl9zdGF0ZSA9ICh2b2lkICoqKQotCQkJcmVwYWxsb2MwKHJvb3Qt PmV4dGVuc2lvbl9zdGF0ZSwKLQkJCQkJICByb290LT5leHRlbnNpb25fc3RhdGVfYWxsb2Nh dGVkICogc2l6ZW9mKHZvaWQgKiksCi0JCQkJCSAgaSAqIHNpemVvZih2b2lkICopKTsKKwkJ cm9vdC0+ZXh0ZW5zaW9uX3N0YXRlID0gcmVwYWxsb2MwX2FycmF5KHJvb3QtPmV4dGVuc2lv bl9zdGF0ZSwgdm9pZCAqLCByb290LT5leHRlbnNpb25fc3RhdGVfYWxsb2NhdGVkLCBpKTsK IAkJcm9vdC0+ZXh0ZW5zaW9uX3N0YXRlX2FsbG9jYXRlZCA9IGk7CiAJfQogCkBAIC0xNzIs MTAgKzE2Niw3IEBAIFNldFJlbE9wdEluZm9FeHRlbnNpb25TdGF0ZShSZWxPcHRJbmZvICpy ZWwsIGludCBleHRlbnNpb25faWQsCiAJCWludAkJCWk7CiAKIAkJaSA9IHBnX25leHRwb3dl cjJfMzIoZXh0ZW5zaW9uX2lkICsgMSk7Ci0JCXJlbC0+ZXh0ZW5zaW9uX3N0YXRlID0gKHZv aWQgKiopCi0JCQlyZXBhbGxvYzAocmVsLT5leHRlbnNpb25fc3RhdGUsCi0JCQkJCSAgcmVs LT5leHRlbnNpb25fc3RhdGVfYWxsb2NhdGVkICogc2l6ZW9mKHZvaWQgKiksCi0JCQkJCSAg aSAqIHNpemVvZih2b2lkICopKTsKKwkJcmVsLT5leHRlbnNpb25fc3RhdGUgPSByZXBhbGxv YzBfYXJyYXkocmVsLT5leHRlbnNpb25fc3RhdGUsIHZvaWQgKiwgcmVsLT5leHRlbnNpb25f c3RhdGVfYWxsb2NhdGVkLCBpKTsKIAkJcmVsLT5leHRlbnNpb25fc3RhdGVfYWxsb2NhdGVk ID0gaTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCAw N2Y5MmZhYzIzOS4uZDc3MTQ5NmRlNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w bGFuY2F0LmMKQEAgLTI3OSwxMSArMjc5LDExIEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5u ZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJ CQlpbmZvLT5uY29sdW1ucyA9IG5jb2x1bW5zID0gaW5kZXgtPmluZG5hdHRzOwogCQkJaW5m by0+bmtleWNvbHVtbnMgPSBua2V5Y29sdW1ucyA9IGluZGV4LT5pbmRua2V5YXR0czsKIAot CQkJaW5mby0+aW5kZXhrZXlzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuY29s dW1ucyk7Ci0JCQlpbmZvLT5pbmRleGNvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXpl b2YoT2lkKSAqIG5rZXljb2x1bW5zKTsKLQkJCWluZm8tPm9wZmFtaWx5ID0gKE9pZCAqKSBw YWxsb2Moc2l6ZW9mKE9pZCkgKiBua2V5Y29sdW1ucyk7Ci0JCQlpbmZvLT5vcGNpbnR5cGUg PSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG5rZXljb2x1bW5zKTsKLQkJCWluZm8t PmNhbnJldHVybiA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBuY29sdW1ucyk7 CisJCQlpbmZvLT5pbmRleGtleXMgPSBwYWxsb2NfYXJyYXkoaW50LCBuY29sdW1ucyk7CisJ CQlpbmZvLT5pbmRleGNvbGxhdGlvbnMgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29sdW1u cyk7CisJCQlpbmZvLT5vcGZhbWlseSA9IHBhbGxvY19hcnJheShPaWQsIG5rZXljb2x1bW5z KTsKKwkJCWluZm8tPm9wY2ludHlwZSA9IHBhbGxvY19hcnJheShPaWQsIG5rZXljb2x1bW5z KTsKKwkJCWluZm8tPmNhbnJldHVybiA9IHBhbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7 CiAKIAkJCWZvciAoaSA9IDA7IGkgPCBuY29sdW1uczsgaSsrKQogCQkJewpAQCAtMzM2LDgg KzMzNiw4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVs YXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkJCUFzc2VydChhbXJvdXRpbmUt PmFtY2Fub3JkZXIpOwogCiAJCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IGluZm8tPm9wZmFt aWx5OwotCQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9m KGJvb2wpICogbmtleWNvbHVtbnMpOwotCQkJCQlpbmZvLT5udWxsc19maXJzdCA9IChib29s ICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1ucyk7CisJCQkJCWluZm8tPnJl dmVyc2Vfc29ydCA9IHBhbGxvY19hcnJheShib29sLCBua2V5Y29sdW1ucyk7CisJCQkJCWlu Zm8tPm51bGxzX2ZpcnN0ID0gcGFsbG9jX2FycmF5KGJvb2wsIG5rZXljb2x1bW5zKTsKIAog CQkJCQlmb3IgKGkgPSAwOyBpIDwgbmtleWNvbHVtbnM7IGkrKykKIAkJCQkJewpAQCAtMzU2 LDEzICszNTYsMTMgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9p ZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQkJICogb3JkZXIsIHRo aXMgaXMgYSBzdWZmaWNpZW50IHRlc3QuCiAJCQkJCSAqCiAJCQkJCSAqIFhYWCBUaGlzIG1l dGhvZCBpcyByYXRoZXIgc2xvdyBhbmQgY29tcGxpY2F0ZWQuICBJdCdkCi0JCQkJCSAqIGJl IGJldHRlciB0byBoYXZlIGEgd2F5IHRvIGV4cGxpY2l0bHkgZGVjbGFyZSB0aGUKLQkJCQkJ ICogY29ycmVzcG9uZGluZyBidHJlZSBvcGZhbWlseSBmb3IgZWFjaCBvcGZhbWlseSBvZiB0 aGUKLQkJCQkJICogb3RoZXIgaW5kZXggdHlwZS4KKwkJCQkJKiBiZSBiZXR0ZXIgdG8gaGF2 ZSBhIHdheSB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlCisJCQkJCSogY29ycmVzcG9uZGlu ZyBidHJlZSBvcGZhbWlseSBmb3IgZWFjaCBvcGZhbWlseSBvZiB0aGUKKwkJCQkJKiBvdGhl ciBpbmRleCB0eXBlLgogCQkJCQkgKi8KLQkJCQkJaW5mby0+c29ydG9wZmFtaWx5ID0gKE9p ZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBua2V5Y29sdW1ucyk7Ci0JCQkJCWluZm8tPnJl dmVyc2Vfc29ydCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1u cyk7Ci0JCQkJCWluZm8tPm51bGxzX2ZpcnN0ID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihi b29sKSAqIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5mby0+c29ydG9wZmFtaWx5ID0gcGFsbG9j X2FycmF5KE9pZCwgbmtleWNvbHVtbnMpOworCQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQgPSBw YWxsb2NfYXJyYXkoYm9vbCwgbmtleWNvbHVtbnMpOworCQkJCQlpbmZvLT5udWxsc19maXJz dCA9IHBhbGxvY19hcnJheShib29sLCBua2V5Y29sdW1ucyk7CiAKIAkJCQkJZm9yIChpID0g MDsgaSA8IG5rZXljb2x1bW5zOyBpKyspCiAJCQkJCXsKQEAgLTI3MzcsMzIgKzI3MzcsMzEg QEAgZmluZF9wYXJ0aXRpb25fc2NoZW1lKFBsYW5uZXJJbmZvICpyb290LCBSZWxhdGlvbiBy ZWxhdGlvbikKIAkgKiBhcnJheSBzaW5jZSB0aGUgcmVsY2FjaGUgZW50cnkgbWF5IG5vdCBz dXJ2aXZlIGFmdGVyIHdlIGhhdmUgY2xvc2VkIHRoZQogCSAqIHJlbGF0aW9uLgogCSAqLwot CXBhcnRfc2NoZW1lID0gKFBhcnRpdGlvblNjaGVtZSkgcGFsbG9jMChzaXplb2YoUGFydGl0 aW9uU2NoZW1lRGF0YSkpOworCXBhcnRfc2NoZW1lID0gcGFsbG9jMF9vYmplY3QoUGFydGl0 aW9uU2NoZW1lRGF0YSk7CiAJcGFydF9zY2hlbWUtPnN0cmF0ZWd5ID0gcGFydGtleS0+c3Ry YXRlZ3k7CiAJcGFydF9zY2hlbWUtPnBhcnRuYXR0cyA9IHBhcnRrZXktPnBhcnRuYXR0czsK IAotCXBhcnRfc2NoZW1lLT5wYXJ0b3BmYW1pbHkgPSAoT2lkICopIHBhbGxvYyhzaXplb2Yo T2lkKSAqIHBhcnRuYXR0cyk7CisJcGFydF9zY2hlbWUtPnBhcnRvcGZhbWlseSA9IHBhbGxv Y19hcnJheShPaWQsIHBhcnRuYXR0cyk7CiAJbWVtY3B5KHBhcnRfc2NoZW1lLT5wYXJ0b3Bm YW1pbHksIHBhcnRrZXktPnBhcnRvcGZhbWlseSwKIAkJICAgc2l6ZW9mKE9pZCkgKiBwYXJ0 bmF0dHMpOwogCi0JcGFydF9zY2hlbWUtPnBhcnRvcGNpbnR5cGUgPSAoT2lkICopIHBhbGxv YyhzaXplb2YoT2lkKSAqIHBhcnRuYXR0cyk7CisJcGFydF9zY2hlbWUtPnBhcnRvcGNpbnR5 cGUgPSBwYWxsb2NfYXJyYXkoT2lkLCBwYXJ0bmF0dHMpOwogCW1lbWNweShwYXJ0X3NjaGVt ZS0+cGFydG9wY2ludHlwZSwgcGFydGtleS0+cGFydG9wY2ludHlwZSwKIAkJICAgc2l6ZW9m KE9pZCkgKiBwYXJ0bmF0dHMpOwogCi0JcGFydF9zY2hlbWUtPnBhcnRjb2xsYXRpb24gPSAo T2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIHBhcnRuYXR0cyk7CisJcGFydF9zY2hlbWUt PnBhcnRjb2xsYXRpb24gPSBwYWxsb2NfYXJyYXkoT2lkLCBwYXJ0bmF0dHMpOwogCW1lbWNw eShwYXJ0X3NjaGVtZS0+cGFydGNvbGxhdGlvbiwgcGFydGtleS0+cGFydGNvbGxhdGlvbiwK IAkJICAgc2l6ZW9mKE9pZCkgKiBwYXJ0bmF0dHMpOwogCi0JcGFydF9zY2hlbWUtPnBhcnR0 eXBsZW4gPSAoaW50MTYgKikgcGFsbG9jKHNpemVvZihpbnQxNikgKiBwYXJ0bmF0dHMpOwor CXBhcnRfc2NoZW1lLT5wYXJ0dHlwbGVuID0gcGFsbG9jX2FycmF5KGludDE2LCBwYXJ0bmF0 dHMpOwogCW1lbWNweShwYXJ0X3NjaGVtZS0+cGFydHR5cGxlbiwgcGFydGtleS0+cGFydHR5 cGxlbiwKIAkJICAgc2l6ZW9mKGludDE2KSAqIHBhcnRuYXR0cyk7CiAKLQlwYXJ0X3NjaGVt ZS0+cGFydHR5cGJ5dmFsID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIHBhcnRu YXR0cyk7CisJcGFydF9zY2hlbWUtPnBhcnR0eXBieXZhbCA9IHBhbGxvY19hcnJheShib29s LCBwYXJ0bmF0dHMpOwogCW1lbWNweShwYXJ0X3NjaGVtZS0+cGFydHR5cGJ5dmFsLCBwYXJ0 a2V5LT5wYXJ0dHlwYnl2YWwsCiAJCSAgIHNpemVvZihib29sKSAqIHBhcnRuYXR0cyk7CiAK LQlwYXJ0X3NjaGVtZS0+cGFydHN1cGZ1bmMgPSAoRm1nckluZm8gKikKLQkJcGFsbG9jKHNp emVvZihGbWdySW5mbykgKiBwYXJ0bmF0dHMpOworCXBhcnRfc2NoZW1lLT5wYXJ0c3VwZnVu YyA9IHBhbGxvY19hcnJheShGbWdySW5mbywgcGFydG5hdHRzKTsKIAlmb3IgKGkgPSAwOyBp IDwgcGFydG5hdHRzOyBpKyspCiAJCWZtZ3JfaW5mb19jb3B5KCZwYXJ0X3NjaGVtZS0+cGFy dHN1cGZ1bmNbaV0sICZwYXJ0a2V5LT5wYXJ0c3VwZnVuY1tpXSwKIAkJCQkJICAgQ3VycmVu dE1lbW9yeUNvbnRleHQpOwpAQCAtMjc5Niw3ICsyNzk1LDcgQEAgc2V0X2Jhc2VyZWxfcGFy dGl0aW9uX2tleV9leHBycyhSZWxhdGlvbiByZWxhdGlvbiwKIAlBc3NlcnQocGFydGtleSAh PSBOVUxMKTsKIAogCXBhcnRuYXR0cyA9IHBhcnRrZXktPnBhcnRuYXR0czsKLQlwYXJ0ZXhw cnMgPSAoTGlzdCAqKikgcGFsbG9jKHNpemVvZihMaXN0ICopICogcGFydG5hdHRzKTsKKwlw YXJ0ZXhwcnMgPSBwYWxsb2NfYXJyYXkoTGlzdCAqLCBwYXJ0bmF0dHMpOwogCWxjID0gbGlz dF9oZWFkKHBhcnRrZXktPnBhcnRleHBycyk7CiAKIAlmb3IgKGNudCA9IDA7IGNudCA8IHBh cnRuYXR0czsgY250KyspCkBAIC0yODM3LDcgKzI4MzYsNyBAQCBzZXRfYmFzZXJlbF9wYXJ0 aXRpb25fa2V5X2V4cHJzKFJlbGF0aW9uIHJlbGF0aW9uLAogCSAqIGV4cHJlc3Npb24gbGlz dHMgdG8ga2VlcCBwYXJ0aXRpb24ga2V5IGV4cHJlc3Npb24gaGFuZGxpbmcgY29kZSBzaW1w bGUuCiAJICogU2VlIGJ1aWxkX2pvaW5yZWxfcGFydGl0aW9uX2luZm8oKSBhbmQgbWF0Y2hf ZXhwcl90b19wYXJ0aXRpb25fa2V5cygpLgogCSAqLwotCXJlbC0+bnVsbGFibGVfcGFydGV4 cHJzID0gKExpc3QgKiopIHBhbGxvYzAoc2l6ZW9mKExpc3QgKikgKiBwYXJ0bmF0dHMpOwor CXJlbC0+bnVsbGFibGVfcGFydGV4cHJzID0gcGFsbG9jMF9hcnJheShMaXN0ICosIHBhcnRu YXR0cyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpp bmRleCBhYzI4NTczY2QwYS4uMGExNDY1OGVkN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcHJlZHRlc3QuYwpAQCAtOTY3LDcgKzk2Nyw3IEBAIGFycmF5Y29uc3Rfc3RhcnR1 cF9mbihOb2RlICpjbGF1c2UsIFByZWRJdGVySW5mbyBpbmZvKQogCWNoYXIJCWVsbWFsaWdu OwogCiAJLyogQ3JlYXRlIHdvcmtpbmcgc3RhdGUgc3RydWN0ICovCi0Jc3RhdGUgPSAoQXJy YXlDb25zdEl0ZXJTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEFycmF5Q29uc3RJdGVyU3RhdGUp KTsKKwlzdGF0ZSA9IHBhbGxvY19vYmplY3QoQXJyYXlDb25zdEl0ZXJTdGF0ZSk7CiAJaW5m by0+c3RhdGUgPSBzdGF0ZTsKIAogCS8qIERlY29uc3RydWN0IHRoZSBhcnJheSBsaXRlcmFs ICovCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBhcnJheWV4cHJfc3RhcnR1cF9mbihOb2RlICpj bGF1c2UsIFByZWRJdGVySW5mbyBpbmZvKQogCUFycmF5RXhwciAgKmFycmF5ZXhwcjsKIAog CS8qIENyZWF0ZSB3b3JraW5nIHN0YXRlIHN0cnVjdCAqLwotCXN0YXRlID0gKEFycmF5RXhw ckl0ZXJTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEFycmF5RXhwckl0ZXJTdGF0ZSkpOworCXN0 YXRlID0gcGFsbG9jX29iamVjdChBcnJheUV4cHJJdGVyU3RhdGUpOwogCWluZm8tPnN0YXRl ID0gc3RhdGU7CiAKIAkvKiBTZXQgdXAgYSBkdW1teSBPcEV4cHIgdG8gcmV0dXJuIGFzIHRo ZSBwZXItaXRlbSBub2RlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMK aW5kZXggMTE1OGJjMTk0YzMuLjJmNDIzZmM0MmIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcmVsbm9kZS5jCkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBzZXR1cF9zaW1wbGVfcmVs X2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCkKIAkgKiBleGlzdCB5ZXQuICBJdCdsbCBiZSBm aWxsZWQgYnkgbGF0ZXIgY2FsbHMgdG8gYnVpbGRfc2ltcGxlX3JlbCgpLgogCSAqLwogCXJv b3QtPnNpbXBsZV9yZWxfYXJyYXkgPSAoUmVsT3B0SW5mbyAqKikKLQkJcGFsbG9jMChzaXpl ICogc2l6ZW9mKFJlbE9wdEluZm8gKikpOworCQlwYWxsb2MwX2FycmF5KFJlbE9wdEluZm8g Kiwgc2l6ZSk7CiAKIAkvKiBzaW1wbGVfcnRlX2FycmF5IGlzIGFuIGFycmF5IGVxdWl2YWxl bnQgb2YgdGhlIHJ0YWJsZSBsaXN0ICovCiAJcm9vdC0+c2ltcGxlX3J0ZV9hcnJheSA9IChS YW5nZVRibEVudHJ5ICoqKQotCQlwYWxsb2MwKHNpemUgKiBzaXplb2YoUmFuZ2VUYmxFbnRy eSAqKSk7CisJCXBhbGxvYzBfYXJyYXkoUmFuZ2VUYmxFbnRyeSAqLCBzaXplKTsKIAlydGkg PSAxOwogCWZvcmVhY2gobGMsIHJvb3QtPnBhcnNlLT5ydGFibGUpCiAJewpAQCAtMTQxLDcg KzE0MSw3IEBAIHNldHVwX3NpbXBsZV9yZWxfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290KQog CX0KIAogCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXkgPSAoQXBwZW5kUmVsSW5mbyAqKikKLQkJ cGFsbG9jMChzaXplICogc2l6ZW9mKEFwcGVuZFJlbEluZm8gKikpOworCQlwYWxsb2MwX2Fy cmF5KEFwcGVuZFJlbEluZm8gKiwgc2l6ZSk7CiAKIAkvKgogCSAqIGFwcGVuZF9yZWxfYXJy YXkgaXMgZmlsbGVkIHdpdGggYW55IGFscmVhZHktZXhpc3RpbmcgQXBwZW5kUmVsSW5mb3Ms CkBAIC0zNzMsOSArMzczLDkgQEAgYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9v dCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJlbnQpCiAJCQlyZWwtPm1pbl9hdHRyID0g MDsKIAkJCXJlbC0+bWF4X2F0dHIgPSBsaXN0X2xlbmd0aChydGUtPmVyZWYtPmNvbG5hbWVz KTsKIAkJCXJlbC0+YXR0cl9uZWVkZWQgPSAoUmVsaWRzICopCi0JCQkJcGFsbG9jMCgocmVs LT5tYXhfYXR0ciAtIHJlbC0+bWluX2F0dHIgKyAxKSAqIHNpemVvZihSZWxpZHMpKTsKKwkJ CQlwYWxsb2MwX2FycmF5KFJlbGlkcywgcmVsLT5tYXhfYXR0ciAtIHJlbC0+bWluX2F0dHIg KyAxKTsKIAkJCXJlbC0+YXR0cl93aWR0aHMgPSAoaW50MzIgKikKLQkJCQlwYWxsb2MwKChy ZWwtPm1heF9hdHRyIC0gcmVsLT5taW5fYXR0ciArIDEpICogc2l6ZW9mKGludDMyKSk7CisJ CQkJcGFsbG9jMF9hcnJheShpbnQzMiwgcmVsLT5tYXhfYXR0ciAtIHJlbC0+bWluX2F0dHIg KyAxKTsKIAkJCWJyZWFrOwogCQljYXNlIFJURV9SRVNVTFQ6CiAJCQkvKiBSVEVfUkVTVUxU IGhhcyBubyBjb2x1bW5zLCBub3IgY291bGQgaXQgaGF2ZSB3aG9sZS1yb3cgVmFyICovCkBA IC0yNDg2LDkgKzI0ODYsOSBAQCBzZXRfam9pbnJlbF9wYXJ0aXRpb25fa2V5X2V4cHJzKFJl bE9wdEluZm8gKmpvaW5yZWwsCiAJUGFydGl0aW9uU2NoZW1lIHBhcnRfc2NoZW1lID0gam9p bnJlbC0+cGFydF9zY2hlbWU7CiAJaW50CQkJcGFydG5hdHRzID0gcGFydF9zY2hlbWUtPnBh cnRuYXR0czsKIAotCWpvaW5yZWwtPnBhcnRleHBycyA9IChMaXN0ICoqKSBwYWxsb2MwKHNp emVvZihMaXN0ICopICogcGFydG5hdHRzKTsKKwlqb2lucmVsLT5wYXJ0ZXhwcnMgPSAoTGlz dCAqKikgcGFsbG9jMF9hcnJheShMaXN0ICosIHBhcnRuYXR0cyk7CiAJam9pbnJlbC0+bnVs bGFibGVfcGFydGV4cHJzID0KLQkJKExpc3QgKiopIHBhbGxvYzAoc2l6ZW9mKExpc3QgKikg KiBwYXJ0bmF0dHMpOworCQkoTGlzdCAqKikgcGFsbG9jMF9hcnJheShMaXN0ICosIHBhcnRu YXR0cyk7CiAKIAkvKgogCSAqIFRoZSBqb2lucmVsJ3MgcGFydGl0aW9uIGV4cHJlc3Npb25z IGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiB0aGUgaW5wdXQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC90bGlzdC5jCmluZGV4IGQyYjRlY2M1ZTUxLi5hZjdiMTliZTVjNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jCkBAIC00NjcsNyArNDY3LDcgQEAgZXh0cmFjdF9n cm91cGluZ19vcHMoTGlzdCAqZ3JvdXBDbGF1c2UpCiAJT2lkCQkgICAqZ3JvdXBPcGVyYXRv cnM7CiAJTGlzdENlbGwgICAqZ2xpdGVtOwogCi0JZ3JvdXBPcGVyYXRvcnMgPSAoT2lkICop IHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOworCWdyb3VwT3BlcmF0b3JzID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtQ29scyk7CiAKIAlmb3JlYWNoKGdsaXRlbSwgZ3JvdXBDbGF1 c2UpCiAJewpAQCAtNDkzLDcgKzQ5Myw3IEBAIGV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9u cyhMaXN0ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QpCiAJT2lkCQkgICAqZ3JwQ29sbGF0 aW9uczsKIAlMaXN0Q2VsbCAgICpnbGl0ZW07CiAKLQlncnBDb2xsYXRpb25zID0gKE9pZCAq KSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xzKTsKKwlncnBDb2xsYXRpb25zID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtQ29scyk7CiAKIAlmb3JlYWNoKGdsaXRlbSwgZ3JvdXBDbGF1 c2UpCiAJewpAQCAtNTE4LDcgKzUxOCw3IEBAIGV4dHJhY3RfZ3JvdXBpbmdfY29scyhMaXN0 ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QpCiAJaW50CQkJY29sbm8gPSAwOwogCUxpc3RD ZWxsICAgKmdsaXRlbTsKIAotCWdycENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhz aXplb2YoQXR0ck51bWJlcikgKiBudW1Db2xzKTsKKwlncnBDb2xJZHggPSBwYWxsb2NfYXJy YXkoQXR0ck51bWJlciwgbnVtQ29scyk7CiAKIAlmb3JlYWNoKGdsaXRlbSwgZ3JvdXBDbGF1 c2UpCiAJewpAQCAtMTA4OSw3ICsxMDg5LDcgQEAgc3BsaXRfcGF0aHRhcmdldF93YWxrZXIo Tm9kZSAqbm9kZSwgc3BsaXRfcGF0aHRhcmdldF9jb250ZXh0ICpjb250ZXh0KQogCSAqLwog CWlmIChsaXN0X21lbWJlcihjb250ZXh0LT5pbnB1dF90YXJnZXRfZXhwcnMsIG5vZGUpKQog CXsKLQkJc3BsaXRfcGF0aHRhcmdldF9pdGVtICppdGVtID0gcGFsbG9jKHNpemVvZihzcGxp dF9wYXRodGFyZ2V0X2l0ZW0pKTsKKwkJc3BsaXRfcGF0aHRhcmdldF9pdGVtICppdGVtID0g cGFsbG9jX29iamVjdChzcGxpdF9wYXRodGFyZ2V0X2l0ZW0pOwogCiAJCWl0ZW0tPmV4cHIg PSBub2RlOwogCQlpdGVtLT5zb3J0Z3JvdXByZWYgPSBjb250ZXh0LT5jdXJyZW50X3NncmVm OwpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgc3BsaXRfcGF0aHRhcmdldF93YWxrZXIoTm9kZSAq bm9kZSwgc3BsaXRfcGF0aHRhcmdldF9jb250ZXh0ICpjb250ZXh0KQogCQlJc0Eobm9kZSwg R3JvdXBpbmdGdW5jKSB8fAogCQlJc0Eobm9kZSwgV2luZG93RnVuYykpCiAJewotCQlzcGxp dF9wYXRodGFyZ2V0X2l0ZW0gKml0ZW0gPSBwYWxsb2Moc2l6ZW9mKHNwbGl0X3BhdGh0YXJn ZXRfaXRlbSkpOworCQlzcGxpdF9wYXRodGFyZ2V0X2l0ZW0gKml0ZW0gPSBwYWxsb2Nfb2Jq ZWN0KHNwbGl0X3BhdGh0YXJnZXRfaXRlbSk7CiAKIAkJaXRlbS0+ZXhwciA9IG5vZGU7CiAJ CWl0ZW0tPnNvcnRncm91cHJlZiA9IGNvbnRleHQtPmN1cnJlbnRfc2dyZWY7CkBAIC0xMTI0 LDcgKzExMjQsNyBAQCBzcGxpdF9wYXRodGFyZ2V0X3dhbGtlcihOb2RlICpub2RlLCBzcGxp dF9wYXRodGFyZ2V0X2NvbnRleHQgKmNvbnRleHQpCiAJICovCiAJaWYgKElTX1NSRl9DQUxM KG5vZGUpKQogCXsKLQkJc3BsaXRfcGF0aHRhcmdldF9pdGVtICppdGVtID0gcGFsbG9jKHNp emVvZihzcGxpdF9wYXRodGFyZ2V0X2l0ZW0pKTsKKwkJc3BsaXRfcGF0aHRhcmdldF9pdGVt ICppdGVtID0gcGFsbG9jX29iamVjdChzcGxpdF9wYXRodGFyZ2V0X2l0ZW0pOwogCQlMaXN0 CSAgICpzYXZlX2lucHV0X3ZhcnMgPSBjb250ZXh0LT5jdXJyZW50X2lucHV0X3ZhcnM7CiAJ CUxpc3QJICAgKnNhdmVfaW5wdXRfc3JmcyA9IGNvbnRleHQtPmN1cnJlbnRfaW5wdXRfc3Jm czsKIAkJaW50CQkJc2F2ZV9jdXJyZW50X2RlcHRoID0gY29udGV4dC0+Y3VycmVudF9kZXB0 aDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDA1MzE0ZTdlNzZiLi45MmJlMzQ1ZDlhOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yNjQxLDggKzI2NDEsNyBAQCBhZGROU0l0ZW1G b3JSZXR1cm5pbmcoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICphbGlhc25hbWUs CiAJY29sbmFtZXMgPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9ydGUtPmVyZWYtPmNv bG5hbWVzOwogCW51bWF0dHJzID0gbGlzdF9sZW5ndGgoY29sbmFtZXMpOwogCi0JbnNjb2x1 bW5zID0gKFBhcnNlTmFtZXNwYWNlQ29sdW1uICopCi0JCXBhbGxvYyhudW1hdHRycyAqIHNp emVvZihQYXJzZU5hbWVzcGFjZUNvbHVtbikpOworCW5zY29sdW1ucyA9IHBhbGxvY19hcnJh eShQYXJzZU5hbWVzcGFjZUNvbHVtbiwgbnVtYXR0cnMpOwogCiAJbWVtY3B5KG5zY29sdW1u cywgcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfbnNjb2x1bW5zLAogCQkgICBudW1hdHRy cyAqIHNpemVvZihQYXJzZU5hbWVzcGFjZUNvbHVtbikpOwpAQCAtMjY1Miw3ICsyNjUxLDcg QEAgYWRkTlNJdGVtRm9yUmV0dXJuaW5nKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hh ciAqYWxpYXNuYW1lLAogCQluc2NvbHVtbnNbaV0ucF92YXJyZXR1cm5pbmd0eXBlID0gcmV0 dXJuaW5nX3R5cGU7CiAKIAkvKiBidWlsZCB0aGUgbnNpdGVtLCBjb3B5aW5nIG1vc3QgZmll bGRzIGZyb20gdGhlIHRhcmdldCByZWxhdGlvbiAqLwotCW5zaXRlbSA9IChQYXJzZU5hbWVz cGFjZUl0ZW0gKikgcGFsbG9jKHNpemVvZihQYXJzZU5hbWVzcGFjZUl0ZW0pKTsKKwluc2l0 ZW0gPSBwYWxsb2Nfb2JqZWN0KFBhcnNlTmFtZXNwYWNlSXRlbSk7CiAJbnNpdGVtLT5wX25h bWVzID0gbWFrZUFsaWFzKGFsaWFzbmFtZSwgY29sbmFtZXMpOwogCW5zaXRlbS0+cF9ydGUg PSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9ydGU7CiAJbnNpdGVtLT5wX3J0aW5kZXgg PSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9ydGluZGV4OwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggYzNhMGEzNTRhOWMuLjc4NTZjZTlkNzhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ1NTUs MTkgKzQ1NTUsMTkgQEAgT3B0V2hlcmVDbGF1c2U6CiBrZXlfYWN0aW9uczoKIAkJCWtleV91 cGRhdGUKIAkJCQl7Ci0JCQkJCUtleUFjdGlvbnMgKm4gPSBwYWxsb2Moc2l6ZW9mKEtleUFj dGlvbnMpKTsKKwkJCQkJS2V5QWN0aW9ucyAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9u cyk7CiAKIAkJCQkJbi0+dXBkYXRlQWN0aW9uID0gJDE7Ci0JCQkJCW4tPmRlbGV0ZUFjdGlv biA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9uKSk7CisJCQkJCW4tPmRlbGV0ZUFjdGlvbiA9 IHBhbGxvY19vYmplY3QoS2V5QWN0aW9uKTsKIAkJCQkJbi0+ZGVsZXRlQWN0aW9uLT5hY3Rp b24gPSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT047CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbi0+ Y29scyA9IE5JTDsKIAkJCQkJJCQgPSBuOwogCQkJCX0KIAkJCXwga2V5X2RlbGV0ZQogCQkJ CXsKLQkJCQkJS2V5QWN0aW9ucyAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9ucykpOwor CQkJCQlLZXlBY3Rpb25zICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb25zKTsKIAotCQkJ CQluLT51cGRhdGVBY3Rpb24gPSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbikpOworCQkJCQlu LT51cGRhdGVBY3Rpb24gPSBwYWxsb2Nfb2JqZWN0KEtleUFjdGlvbik7CiAJCQkJCW4tPnVw ZGF0ZUFjdGlvbi0+YWN0aW9uID0gRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOwogCQkJCQlu LT51cGRhdGVBY3Rpb24tPmNvbHMgPSBOSUw7CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbiA9ICQx OwpAQCAtNDU3NSw3ICs0NTc1LDcgQEAga2V5X2FjdGlvbnM6CiAJCQkJfQogCQkJfCBrZXlf dXBkYXRlIGtleV9kZWxldGUKIAkJCQl7Ci0JCQkJCUtleUFjdGlvbnMgKm4gPSBwYWxsb2Mo c2l6ZW9mKEtleUFjdGlvbnMpKTsKKwkJCQkJS2V5QWN0aW9ucyAqbiA9IHBhbGxvY19vYmpl Y3QoS2V5QWN0aW9ucyk7CiAKIAkJCQkJbi0+dXBkYXRlQWN0aW9uID0gJDE7CiAJCQkJCW4t PmRlbGV0ZUFjdGlvbiA9ICQyOwpAQCAtNDU4Myw3ICs0NTgzLDcgQEAga2V5X2FjdGlvbnM6 CiAJCQkJfQogCQkJfCBrZXlfZGVsZXRlIGtleV91cGRhdGUKIAkJCQl7Ci0JCQkJCUtleUFj dGlvbnMgKm4gPSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbnMpKTsKKwkJCQkJS2V5QWN0aW9u cyAqbiA9IHBhbGxvY19vYmplY3QoS2V5QWN0aW9ucyk7CiAKIAkJCQkJbi0+dXBkYXRlQWN0 aW9uID0gJDI7CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbiA9ICQxOwpAQCAtNDU5MSwxMiArNDU5 MSwxMiBAQCBrZXlfYWN0aW9uczoKIAkJCQl9CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsKLQkJ CQkJS2V5QWN0aW9ucyAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9ucykpOworCQkJCQlL ZXlBY3Rpb25zICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb25zKTsKIAotCQkJCQluLT51 cGRhdGVBY3Rpb24gPSBwYWxsb2Moc2l6ZW9mKEtleUFjdGlvbikpOworCQkJCQluLT51cGRh dGVBY3Rpb24gPSBwYWxsb2Nfb2JqZWN0KEtleUFjdGlvbik7CiAJCQkJCW4tPnVwZGF0ZUFj dGlvbi0+YWN0aW9uID0gRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOwogCQkJCQluLT51cGRh dGVBY3Rpb24tPmNvbHMgPSBOSUw7Ci0JCQkJCW4tPmRlbGV0ZUFjdGlvbiA9IHBhbGxvYyhz aXplb2YoS2V5QWN0aW9uKSk7CisJCQkJCW4tPmRlbGV0ZUFjdGlvbiA9IHBhbGxvY19vYmpl Y3QoS2V5QWN0aW9uKTsKIAkJCQkJbi0+ZGVsZXRlQWN0aW9uLT5hY3Rpb24gPSBGS0NPTlNU Ul9BQ1RJT05fTk9BQ1RJT047CiAJCQkJCW4tPmRlbGV0ZUFjdGlvbi0+Y29scyA9IE5JTDsK IAkJCQkJJCQgPSBuOwpAQCAtNDYyNCw3ICs0NjI0LDcgQEAga2V5X2RlbGV0ZTogT04gREVM RVRFX1Aga2V5X2FjdGlvbgoga2V5X2FjdGlvbjoKIAkJCU5PIEFDVElPTgogCQkJCXsKLQkJ CQkJS2V5QWN0aW9uICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb24pKTsKKwkJCQkJS2V5 QWN0aW9uICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwogCiAJCQkJCW4tPmFjdGlv biA9IEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjsKIAkJCQkJbi0+Y29scyA9IE5JTDsKQEAg LTQ2MzIsNyArNDYzMiw3IEBAIGtleV9hY3Rpb246CiAJCQkJfQogCQkJfCBSRVNUUklDVAog CQkJCXsKLQkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rpb24pKTsK KwkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwogCiAJCQkJ CW4tPmFjdGlvbiA9IEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDsKIAkJCQkJbi0+Y29scyA9 IE5JTDsKQEAgLTQ2NDAsNyArNDY0MCw3IEBAIGtleV9hY3Rpb246CiAJCQkJfQogCQkJfCBD QVNDQURFCiAJCQkJewotCQkJCQlLZXlBY3Rpb24gKm4gPSBwYWxsb2Moc2l6ZW9mKEtleUFj dGlvbikpOworCQkJCQlLZXlBY3Rpb24gKm4gPSBwYWxsb2Nfb2JqZWN0KEtleUFjdGlvbik7 CiAKIAkJCQkJbi0+YWN0aW9uID0gRktDT05TVFJfQUNUSU9OX0NBU0NBREU7CiAJCQkJCW4t PmNvbHMgPSBOSUw7CkBAIC00NjQ4LDcgKzQ2NDgsNyBAQCBrZXlfYWN0aW9uOgogCQkJCX0K IAkJCXwgU0VUIE5VTExfUCBvcHRfY29sdW1uX2xpc3QKIAkJCQl7Ci0JCQkJCUtleUFjdGlv biAqbiA9IHBhbGxvYyhzaXplb2YoS2V5QWN0aW9uKSk7CisJCQkJCUtleUFjdGlvbiAqbiA9 IHBhbGxvY19vYmplY3QoS2V5QWN0aW9uKTsKIAogCQkJCQluLT5hY3Rpb24gPSBGS0NPTlNU Ul9BQ1RJT05fU0VUTlVMTDsKIAkJCQkJbi0+Y29scyA9ICQzOwpAQCAtNDY1Niw3ICs0NjU2 LDcgQEAga2V5X2FjdGlvbjoKIAkJCQl9CiAJCQl8IFNFVCBERUZBVUxUIG9wdF9jb2x1bW5f bGlzdAogCQkJCXsKLQkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jKHNpemVvZihLZXlBY3Rp b24pKTsKKwkJCQkJS2V5QWN0aW9uICpuID0gcGFsbG9jX29iamVjdChLZXlBY3Rpb24pOwog CiAJCQkJCW4tPmFjdGlvbiA9IEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOwogCQkJCQlu LT5jb2xzID0gJDM7CkBAIC01ODUzLDcgKzU4NTMsNyBAQCBpbXBvcnRfcXVhbGlmaWNhdGlv bl90eXBlOgogaW1wb3J0X3F1YWxpZmljYXRpb246CiAJCWltcG9ydF9xdWFsaWZpY2F0aW9u X3R5cGUgJygnIHJlbGF0aW9uX2V4cHJfbGlzdCAnKScKIAkJCXsKLQkJCQlJbXBvcnRRdWFs ICpuID0gKEltcG9ydFF1YWwgKikgcGFsbG9jKHNpemVvZihJbXBvcnRRdWFsKSk7CisJCQkJ SW1wb3J0UXVhbCAqbiA9IHBhbGxvY19vYmplY3QoSW1wb3J0UXVhbCk7CiAKIAkJCQluLT50 eXBlID0gJDE7CiAJCQkJbi0+dGFibGVfbmFtZXMgPSAkMzsKQEAgLTU4NjEsNyArNTg2MSw3 IEBAIGltcG9ydF9xdWFsaWZpY2F0aW9uOgogCQkJfQogCQl8IC8qRU1QVFkqLwogCQkJewot CQkJCUltcG9ydFF1YWwgKm4gPSAoSW1wb3J0UXVhbCAqKSBwYWxsb2Moc2l6ZW9mKEltcG9y dFF1YWwpKTsKKwkJCQlJbXBvcnRRdWFsICpuID0gcGFsbG9jX29iamVjdChJbXBvcnRRdWFs KTsKIAkJCQluLT50eXBlID0gRkRXX0lNUE9SVF9TQ0hFTUFfQUxMOwogCQkJCW4tPnRhYmxl X25hbWVzID0gTklMOwogCQkJCSQkID0gbjsKQEAgLTc5MTQsNyArNzkxNCw3IEBAIHBhcmFt ZXRlcl9uYW1lOgogcHJpdmlsZWdlX3RhcmdldDoKIAkJCXF1YWxpZmllZF9uYW1lX2xpc3QK IAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6 ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3Qo UHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsK IAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9UQUJMRTsKQEAgLTc5MjMsNyArNzkyMyw3IEBA IHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBUQUJMRSBxdWFsaWZpZWRfbmFtZV9s aXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9j KHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2Jq ZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpF Q1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVEFCTEU7CkBAIC03OTMyLDcgKzc5MzIs NyBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgU0VRVUVOQ0UgcXVhbGlmaWVk X25hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICop IHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFs bG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJH RVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1NFUVVFTkNFOwpAQCAtNzk0 MSw3ICs3OTQxLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IEZPUkVJR04g REFUQV9QIFdSQVBQRVIgbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFyZ2V0ICpuID0g KFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCVByaXZU YXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0 eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfRkRX OwpAQCAtNzk1MCw3ICs3OTUwLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8 IEZPUkVJR04gU0VSVkVSIG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9 IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQcml2 VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50YXJn dHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX0ZP UkVJR05fU0VSVkVSOwpAQCAtNzk1OSw3ICs3OTU5LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoK IAkJCQl9CiAJCQl8IEZVTkNUSU9OIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNfbGlzdAogCQkJ CXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2Yo UHJpdlRhcmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2 VGFyZ2V0KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJ CQluLT5vYmp0eXBlID0gT0JKRUNUX0ZVTkNUSU9OOwpAQCAtNzk2OCw3ICs3OTY4LDcgQEAg cHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IFBST0NFRFVSRSBmdW5jdGlvbl93aXRo X2FyZ3R5cGVzX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdl dCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9 IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xf VEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9QUk9DRURVUkU7CkBA IC03OTc3LDcgKzc5NzcsNyBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgUk9V VElORSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJn ZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJ CQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJ bi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9C SkVDVF9ST1VUSU5FOwpAQCAtNzk4Niw3ICs3OTg2LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoK IAkJCQl9CiAJCQl8IERBVEFCQVNFIG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdl dCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJ CQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQlu LT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwogCQkJCQluLT5vYmp0eXBlID0gT0JK RUNUX0RBVEFCQVNFOwpAQCAtNzk5NSw3ICs3OTk1LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoK IAkJCQl9CiAJCQl8IERPTUFJTl9QIGFueV9uYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZU YXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsK KwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJ CQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9 IE9CSkVDVF9ET01BSU47CkBAIC04MDA0LDcgKzgwMDQsNyBAQCBwcml2aWxlZ2VfdGFyZ2V0 OgogCQkJCX0KIAkJCXwgTEFOR1VBR0UgbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFy Z2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJ CQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJ CW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBP QkpFQ1RfTEFOR1VBR0U7CkBAIC04MDEzLDcgKzgwMTMsNyBAQCBwcml2aWxlZ2VfdGFyZ2V0 OgogCQkJCX0KIAkJCXwgTEFSR0VfUCBPQkpFQ1RfUCBOdW1lcmljT25seV9saXN0CiAJCQkJ ewotCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQ cml2VGFyZ2V0KSk7CisJCQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZU YXJnZXQpOwogCiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJ CW4tPm9ianR5cGUgPSBPQkpFQ1RfTEFSR0VPQkpFQ1Q7CkBAIC04MDIyLDcgKzgwMjIsNyBA QCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCX0KIAkJCXwgUEFSQU1FVEVSIHBhcmFtZXRlcl9u YW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBw YWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxv Y19vYmplY3QoUHJpdlRhcmdldCk7CiAJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9P QkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDsKIAkJCQkJ bi0+b2JqcyA9ICQyOwpAQCAtODAzMCw3ICs4MDMwLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoK IAkJCQl9CiAJCQl8IFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQg Km4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+ dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVD VF9TQ0hFTUE7CkBAIC04MDM5LDcgKzgwMzksNyBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJ CX0KIAkJCXwgVEFCTEVTUEFDRSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQg Km4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+ dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVD VF9UQUJMRVNQQUNFOwpAQCAtODA0OCw3ICs4MDQ4LDcgQEAgcHJpdmlsZWdlX3RhcmdldDoK IAkJCQl9CiAJCQl8IFRZUEVfUCBhbnlfbmFtZV9saXN0CiAJCQkJewotCQkJCQlQcml2VGFy Z2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJ CQkJCVByaXZUYXJnZXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFByaXZUYXJnZXQpOwogCiAJCQkJ CW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CiAJCQkJCW4tPm9ianR5cGUgPSBP QkpFQ1RfVFlQRTsKQEAgLTgwNTcsNyArODA1Nyw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJ CQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAogCQkJCXsKLQkJ CQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRh cmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0 KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfQUxMX0lOX1NDSEVNQTsKIAkJ CQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9UQUJMRTsKQEAgLTgwNjYsNyArODA2Niw3IEBAIHBy aXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBBTEwgU0VRVUVOQ0VTIElOX1AgU0NIRU1B IG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICop IHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQlQcml2VGFyZ2V0ICpuID0gcGFs bG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJH RVRfQUxMX0lOX1NDSEVNQTsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9TRVFVRU5DRTsK QEAgLTgwNzUsNyArODA3NSw3IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBB TEwgRlVOQ1RJT05TIElOX1AgU0NIRU1BIG5hbWVfbGlzdAogCQkJCXsKLQkJCQkJUHJpdlRh cmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOwor CQkJCQlQcml2VGFyZ2V0ICpuID0gcGFsbG9jX29iamVjdChQcml2VGFyZ2V0KTsKIAogCQkJ CQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfQUxMX0lOX1NDSEVNQTsKIAkJCQkJbi0+b2Jq dHlwZSA9IE9CSkVDVF9GVU5DVElPTjsKQEAgLTgwODQsNyArODA4NCw3IEBAIHByaXZpbGVn ZV90YXJnZXQ6CiAJCQkJfQogCQkJfCBBTEwgUFJPQ0VEVVJFUyBJTl9QIFNDSEVNQSBuYW1l X2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxs b2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IHBhbGxvY19v YmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FM TF9JTl9TQ0hFTUE7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfUFJPQ0VEVVJFOwpAQCAt ODA5Myw3ICs4MDkzLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQl9CiAJCQl8IEFMTCBS T1VUSU5FUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7Ci0JCQkJCVByaXZUYXJnZXQg Km4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IHBhbGxvY19vYmplY3QoUHJpdlRhcmdldCk7CiAKIAkJCQkJbi0+ dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CiAJCQkJCW4tPm9ianR5cGUg PSBPQkpFQ1RfUk9VVElORTsKQEAgLTEzMzkzLDcgKzEzMzkzLDcgQEAgc2VsZWN0X2xpbWl0 OgogCQkJCX0KIAkJCXwgb2Zmc2V0X2NsYXVzZQogCQkJCXsKLQkJCQkJU2VsZWN0TGltaXQg Km4gPSAoU2VsZWN0TGltaXQgKikgcGFsbG9jKHNpemVvZihTZWxlY3RMaW1pdCkpOworCQkJ CQlTZWxlY3RMaW1pdCAqbiA9IHBhbGxvY19vYmplY3QoU2VsZWN0TGltaXQpOwogCiAJCQkJ CW4tPmxpbWl0T2Zmc2V0ID0gJDE7CiAJCQkJCW4tPmxpbWl0Q291bnQgPSBOVUxMOwpAQCAt MTM0MTMsNyArMTM0MTMsNyBAQCBvcHRfc2VsZWN0X2xpbWl0OgogbGltaXRfY2xhdXNlOgog CQkJTElNSVQgc2VsZWN0X2xpbWl0X3ZhbHVlCiAJCQkJewotCQkJCQlTZWxlY3RMaW1pdCAq biA9IChTZWxlY3RMaW1pdCAqKSBwYWxsb2Moc2l6ZW9mKFNlbGVjdExpbWl0KSk7CisJCQkJ CVNlbGVjdExpbWl0ICpuID0gcGFsbG9jX29iamVjdChTZWxlY3RMaW1pdCk7CiAKIAkJCQkJ bi0+bGltaXRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5saW1pdENvdW50ID0gJDI7CkBAIC0x MzQ0MSw3ICsxMzQ0MSw3IEBAIGxpbWl0X2NsYXVzZToKIAkJCSAqLwogCQkJfCBGRVRDSCBm aXJzdF9vcl9uZXh0IHNlbGVjdF9mZXRjaF9maXJzdF92YWx1ZSByb3dfb3Jfcm93cyBPTkxZ CiAJCQkJewotCQkJCQlTZWxlY3RMaW1pdCAqbiA9IChTZWxlY3RMaW1pdCAqKSBwYWxsb2Mo c2l6ZW9mKFNlbGVjdExpbWl0KSk7CisJCQkJCVNlbGVjdExpbWl0ICpuID0gcGFsbG9jX29i amVjdChTZWxlY3RMaW1pdCk7CiAKIAkJCQkJbi0+bGltaXRPZmZzZXQgPSBOVUxMOwogCQkJ CQluLT5saW1pdENvdW50ID0gJDM7CkBAIC0xMzQ1Myw3ICsxMzQ1Myw3IEBAIGxpbWl0X2Ns YXVzZToKIAkJCQl9CiAJCQl8IEZFVENIIGZpcnN0X29yX25leHQgc2VsZWN0X2ZldGNoX2Zp cnN0X3ZhbHVlIHJvd19vcl9yb3dzIFdJVEggVElFUwogCQkJCXsKLQkJCQkJU2VsZWN0TGlt aXQgKm4gPSAoU2VsZWN0TGltaXQgKikgcGFsbG9jKHNpemVvZihTZWxlY3RMaW1pdCkpOwor CQkJCQlTZWxlY3RMaW1pdCAqbiA9IHBhbGxvY19vYmplY3QoU2VsZWN0TGltaXQpOwogCiAJ CQkJCW4tPmxpbWl0T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+bGltaXRDb3VudCA9ICQzOwpA QCAtMTM0NjUsNyArMTM0NjUsNyBAQCBsaW1pdF9jbGF1c2U6CiAJCQkJfQogCQkJfCBGRVRD SCBmaXJzdF9vcl9uZXh0IHJvd19vcl9yb3dzIE9OTFkKIAkJCQl7Ci0JCQkJCVNlbGVjdExp bWl0ICpuID0gKFNlbGVjdExpbWl0ICopIHBhbGxvYyhzaXplb2YoU2VsZWN0TGltaXQpKTsK KwkJCQkJU2VsZWN0TGltaXQgKm4gPSBwYWxsb2Nfb2JqZWN0KFNlbGVjdExpbWl0KTsKIAog CQkJCQluLT5saW1pdE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmxpbWl0Q291bnQgPSBtYWtl SW50Q29uc3QoMSwgLTEpOwpAQCAtMTM0NzcsNyArMTM0NzcsNyBAQCBsaW1pdF9jbGF1c2U6 CiAJCQkJfQogCQkJfCBGRVRDSCBmaXJzdF9vcl9uZXh0IHJvd19vcl9yb3dzIFdJVEggVElF UwogCQkJCXsKLQkJCQkJU2VsZWN0TGltaXQgKm4gPSAoU2VsZWN0TGltaXQgKikgcGFsbG9j KHNpemVvZihTZWxlY3RMaW1pdCkpOworCQkJCQlTZWxlY3RMaW1pdCAqbiA9IHBhbGxvY19v YmplY3QoU2VsZWN0TGltaXQpOwogCiAJCQkJCW4tPmxpbWl0T2Zmc2V0ID0gTlVMTDsKIAkJ CQkJbi0+bGltaXRDb3VudCA9IG1ha2VJbnRDb25zdCgxLCAtMSk7CkBAIC0xMzU3Miw3ICsx MzU3Miw3IEBAIGZpcnN0X29yX25leHQ6IEZJUlNUX1AJCQkJCQkJCXsgJCQgPSAwOyB9CiBn cm91cF9jbGF1c2U6CiAJCQlHUk9VUF9QIEJZIHNldF9xdWFudGlmaWVyIGdyb3VwX2J5X2xp c3QKIAkJCQl7Ci0JCQkJCUdyb3VwQ2xhdXNlICpuID0gKEdyb3VwQ2xhdXNlICopIHBhbGxv YyhzaXplb2YoR3JvdXBDbGF1c2UpKTsKKwkJCQkJR3JvdXBDbGF1c2UgKm4gPSBwYWxsb2Nf b2JqZWN0KEdyb3VwQ2xhdXNlKTsKIAogCQkJCQluLT5kaXN0aW5jdCA9ICQzID09IFNFVF9R VUFOVElGSUVSX0RJU1RJTkNUOwogCQkJCQluLT5hbGwgPSBmYWxzZTsKQEAgLTEzNTgxLDcg KzEzNTgxLDcgQEAgZ3JvdXBfY2xhdXNlOgogCQkJCX0KIAkJCXwgR1JPVVBfUCBCWSBBTEwK IAkJCQl7Ci0JCQkJCUdyb3VwQ2xhdXNlICpuID0gKEdyb3VwQ2xhdXNlICopIHBhbGxvYyhz aXplb2YoR3JvdXBDbGF1c2UpKTsKKwkJCQkJR3JvdXBDbGF1c2UgKm4gPSBwYWxsb2Nfb2Jq ZWN0KEdyb3VwQ2xhdXNlKTsKIAkJCQkJbi0+ZGlzdGluY3QgPSBmYWxzZTsKIAkJCQkJbi0+ YWxsID0gdHJ1ZTsKIAkJCQkJbi0+bGlzdCA9IE5JTDsKQEAgLTEzNTg5LDcgKzEzNTg5LDcg QEAgZ3JvdXBfY2xhdXNlOgogCQkJCX0KIAkJCXwgLypFTVBUWSovCiAJCQkJewotCQkJCQlH cm91cENsYXVzZSAqbiA9IChHcm91cENsYXVzZSAqKSBwYWxsb2Moc2l6ZW9mKEdyb3VwQ2xh dXNlKSk7CisJCQkJCUdyb3VwQ2xhdXNlICpuID0gcGFsbG9jX29iamVjdChHcm91cENsYXVz ZSk7CiAKIAkJCQkJbi0+ZGlzdGluY3QgPSBmYWxzZTsKIAkJCQkJbi0+YWxsID0gZmFsc2U7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXggY2EyNmY2ZjYxZjIuLjk0NDQ4 MjIwN2YzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC03MzMsNyArNzMz LDcgQEAgdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5n ZVRhYmxlRnVuYyAqcnRmKQogCXRmLT5vcmRpbmFsaXR5Y29sID0gLTE7CiAKIAkvKiBQcm9j ZXNzIGNvbHVtbiBzcGVjcyAqLwotCW5hbWVzID0gcGFsbG9jKHNpemVvZihjaGFyICopICog bGlzdF9sZW5ndGgocnRmLT5jb2x1bW5zKSk7CisJbmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hh ciAqLCBsaXN0X2xlbmd0aChydGYtPmNvbHVtbnMpKTsKIAogCWNvbG5vID0gMDsKIAlmb3Jl YWNoKGNvbCwgcnRmLT5jb2x1bW5zKQpAQCAtMTU3Myw3ICsxNTczLDcgQEAgdHJhbnNmb3Jt RnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpuLAogCQl7CiAJCQlQ YXJzZU5hbWVzcGFjZUl0ZW0gKmpuc2l0ZW07CiAKLQkJCWpuc2l0ZW0gPSAoUGFyc2VOYW1l c3BhY2VJdGVtICopIHBhbGxvYyhzaXplb2YoUGFyc2VOYW1lc3BhY2VJdGVtKSk7CisJCQlq bnNpdGVtID0gcGFsbG9jX29iamVjdChQYXJzZU5hbWVzcGFjZUl0ZW0pOwogCQkJam5zaXRl bS0+cF9uYW1lcyA9IGotPmpvaW5fdXNpbmdfYWxpYXM7CiAJCQlqbnNpdGVtLT5wX3J0ZSA9 IG5zaXRlbS0+cF9ydGU7CiAJCQlqbnNpdGVtLT5wX3J0aW5kZXggPSBuc2l0ZW0tPnBfcnRp bmRleDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDQ1MjRlNDljMzI2Li42Yjhm YTE1ZmNhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0yOTA2LDcgKzI5MDYs NyBAQCBtYWtlX3Jvd19jb21wYXJpc29uX29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq b3BuYW1lLAogCSAqIG9wZXJhdG9ycywgYW5kIHNlZSB3aGljaCBpbnRlcnByZXRhdGlvbnMg KGNtcHR5cGVzKSBleGlzdCBmb3IgZWFjaAogCSAqIG9wZXJhdG9yLgogCSAqLwotCW9waW5m b19saXN0cyA9IChMaXN0ICoqKSBwYWxsb2Mobm9wZXJzICogc2l6ZW9mKExpc3QgKikpOwor CW9waW5mb19saXN0cyA9IHBhbGxvY19hcnJheShMaXN0ICosIG5vcGVycyk7CiAJY21wdHlw ZXMgPSBOVUxMOwogCWkgPSAwOwogCWZvcmVhY2gobCwgb3BleHBycykKQEAgLTMyNDEsNyAr MzI0MSw3IEBAIGdldEpzb25FbmNvZGluZ0NvbnN0KEpzb25Gb3JtYXQgKmZvcm1hdCkKIHsK IAlKc29uRW5jb2RpbmcgZW5jb2Rpbmc7CiAJY29uc3QgY2hhciAqZW5jOwotCU5hbWUJCWVu Y25hbWUgPSBwYWxsb2Moc2l6ZW9mKE5hbWVEYXRhKSk7CisJTmFtZQkJZW5jbmFtZSA9IHBh bGxvY19vYmplY3QoTmFtZURhdGEpOwogCiAJaWYgKCFmb3JtYXQgfHwKIAkJZm9ybWF0LT5m b3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCB8fApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9u b2RlLmMKaW5kZXggMjAzYjdhMzIxNzguLmNhZmViODcyMTdjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ub2RlLmMKQEAgLTQwLDcgKzQwLDcgQEAgbWFrZV9wYXJzZXN0YXRlKFBhcnNlU3Rh dGUgKnBhcmVudFBhcnNlU3RhdGUpCiB7CiAJUGFyc2VTdGF0ZSAqcHN0YXRlOwogCi0JcHN0 YXRlID0gcGFsbG9jMChzaXplb2YoUGFyc2VTdGF0ZSkpOworCXBzdGF0ZSA9IHBhbGxvYzBf b2JqZWN0KFBhcnNlU3RhdGUpOwogCiAJcHN0YXRlLT5wYXJlbnRQYXJzZVN0YXRlID0gcGFy ZW50UGFyc2VTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3BhcmFtLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0uYwppbmRleCA5MzA5 MjE2MjZiNi4uNzcyZjNlM2MxZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9wYXJhbS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9wYXJhbS5jCkBA IC02OCw3ICs2OCw3IEBAIHZvaWQKIHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSBjb25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBu dW1QYXJhbXMpCiB7Ci0JRml4ZWRQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBhbGxvYyhzaXpl b2YoRml4ZWRQYXJhbVN0YXRlKSk7CisJRml4ZWRQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBh bGxvY19vYmplY3QoRml4ZWRQYXJhbVN0YXRlKTsKIAogCXBhcnN0YXRlLT5wYXJhbVR5cGVz ID0gcGFyYW1UeXBlczsKIAlwYXJzdGF0ZS0+bnVtUGFyYW1zID0gbnVtUGFyYW1zOwpAQCAt ODQsNyArODQsNyBAQCB2b2lkCiBzZXR1cF9wYXJzZV92YXJpYWJsZV9wYXJhbWV0ZXJzKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1Q YXJhbXMpCiB7Ci0JVmFyUGFyYW1TdGF0ZSAqcGFyc3RhdGUgPSBwYWxsb2Moc2l6ZW9mKFZh clBhcmFtU3RhdGUpKTsKKwlWYXJQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBhbGxvY19vYmpl Y3QoVmFyUGFyYW1TdGF0ZSk7CiAKIAlwYXJzdGF0ZS0+cGFyYW1UeXBlcyA9IHBhcmFtVHlw ZXM7CiAJcGFyc3RhdGUtPm51bVBhcmFtcyA9IG51bVBhcmFtczsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggZDU0NGE2OWZjODAuLmRkNjRmNDU0NzhhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtOTY0LDcgKzk2NCw3IEBAIHNl YXJjaFJhbmdlVGFibGVGb3JDb2woUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICph bGlhcywgY29uc3QgY2hhciAqY29sbmFtCiAJCQkJCSAgIGludCBsb2NhdGlvbikKIHsKIAlQ YXJzZVN0YXRlICpvcmlnX3BzdGF0ZSA9IHBzdGF0ZTsKLQlGdXp6eUF0dHJNYXRjaFN0YXRl ICpmdXp6eXN0YXRlID0gcGFsbG9jKHNpemVvZihGdXp6eUF0dHJNYXRjaFN0YXRlKSk7CisJ RnV6enlBdHRyTWF0Y2hTdGF0ZSAqZnV6enlzdGF0ZSA9IHBhbGxvY19vYmplY3QoRnV6enlB dHRyTWF0Y2hTdGF0ZSk7CiAKIAlmdXp6eXN0YXRlLT5kaXN0YW5jZSA9IE1BWF9GVVpaWV9E SVNUQU5DRSArIDE7CiAJZnV6enlzdGF0ZS0+cmZpcnN0ID0gTlVMTDsKQEAgLTEzMzYsNyAr MTMzNiw3IEBAIGJ1aWxkTlNJdGVtRnJvbVR1cGxlRGVzYyhSYW5nZVRibEVudHJ5ICpydGUs IEluZGV4IHJ0aW5kZXgsCiAJfQogCiAJLyogLi4uIGFuZCBidWlsZCB0aGUgbnNpdGVtICov Ci0JbnNpdGVtID0gKFBhcnNlTmFtZXNwYWNlSXRlbSAqKSBwYWxsb2Moc2l6ZW9mKFBhcnNl TmFtZXNwYWNlSXRlbSkpOworCW5zaXRlbSA9IHBhbGxvY19vYmplY3QoUGFyc2VOYW1lc3Bh Y2VJdGVtKTsKIAluc2l0ZW0tPnBfbmFtZXMgPSBydGUtPmVyZWY7CiAJbnNpdGVtLT5wX3J0 ZSA9IHJ0ZTsKIAluc2l0ZW0tPnBfcnRpbmRleCA9IHJ0aW5kZXg7CkBAIC0xNDAwLDcgKzE0 MDAsNyBAQCBidWlsZE5TSXRlbUZyb21MaXN0cyhSYW5nZVRibEVudHJ5ICpydGUsIEluZGV4 IHJ0aW5kZXgsCiAJfQogCiAJLyogLi4uIGFuZCBidWlsZCB0aGUgbnNpdGVtICovCi0JbnNp dGVtID0gKFBhcnNlTmFtZXNwYWNlSXRlbSAqKSBwYWxsb2Moc2l6ZW9mKFBhcnNlTmFtZXNw YWNlSXRlbSkpOworCW5zaXRlbSA9IHBhbGxvY19vYmplY3QoUGFyc2VOYW1lc3BhY2VJdGVt KTsKIAluc2l0ZW0tPnBfbmFtZXMgPSBydGUtPmVyZWY7CiAJbnNpdGVtLT5wX3J0ZSA9IHJ0 ZTsKIAluc2l0ZW0tPnBfcnRpbmRleCA9IHJ0aW5kZXg7CkBAIC0xNzkxLDcgKzE3OTEsNyBA QCBhZGRSYW5nZVRhYmxlRW50cnlGb3JGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJ cnRlLT5lcmVmID0gZXJlZjsKIAogCS8qIFByb2Nlc3MgZWFjaCBmdW5jdGlvbiAuLi4gKi8K LQlmdW5jdHVwZGVzY3MgPSAoVHVwbGVEZXNjICopIHBhbGxvYyhuZnVuY3MgKiBzaXplb2Yo VHVwbGVEZXNjKSk7CisJZnVuY3R1cGRlc2NzID0gcGFsbG9jX2FycmF5KFR1cGxlRGVzYywg bmZ1bmNzKTsKIAogCXRvdGFsYXR0cyA9IDA7CiAJZnVuY25vID0gMDsKQEAgLTIzMDIsNyAr MjMwMiw3IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvckpvaW4oUGFyc2VTdGF0ZSAqcHN0YXRl LAogCSAqIEJ1aWxkIGEgUGFyc2VOYW1lc3BhY2VJdGVtLCBidXQgZG9uJ3QgYWRkIGl0IHRv IHRoZSBwc3RhdGUncyBuYW1lc3BhY2UKIAkgKiBsaXN0IC0tLSBjYWxsZXIgbXVzdCBkbyB0 aGF0IGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCW5zaXRlbSA9IChQYXJzZU5hbWVzcGFjZUl0 ZW0gKikgcGFsbG9jKHNpemVvZihQYXJzZU5hbWVzcGFjZUl0ZW0pKTsKKwluc2l0ZW0gPSBw YWxsb2Nfb2JqZWN0KFBhcnNlTmFtZXNwYWNlSXRlbSk7CiAJbnNpdGVtLT5wX25hbWVzID0g cnRlLT5lcmVmOwogCW5zaXRlbS0+cF9ydGUgPSBydGU7CiAJbnNpdGVtLT5wX3Blcm1pbmZv ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCmluZGV4IDc3MTNiZGM2YWYwLi5j NzMzNWFkOWRiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCkBAIC0zNjksNyArMzY5 LDcgQEAgdHlwZW5hbWVUeXBlTW9kKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgVHlwZU5h bWUgKnR5cGVOYW1lLCBUeXBlIHR5cCkKIAkgKiBDdXJyZW50bHksIHdlIGFsbG93IHNpbXBs ZSBudW1lcmljIGNvbnN0YW50cywgc3RyaW5nIGxpdGVyYWxzLCBhbmQKIAkgKiBpZGVudGlm aWVyczsgcG9zc2libHkgdGhpcyBsaXN0IGNvdWxkIGJlIGV4dGVuZGVkLgogCSAqLwotCWRh dHVtcyA9IChEYXR1bSAqKSBwYWxsb2MobGlzdF9sZW5ndGgodHlwZU5hbWUtPnR5cG1vZHMp ICogc2l6ZW9mKERhdHVtKSk7CisJZGF0dW1zID0gcGFsbG9jX2FycmF5KERhdHVtLCBsaXN0 X2xlbmd0aCh0eXBlTmFtZS0+dHlwbW9kcykpOwogCW4gPSAwOwogCWZvcmVhY2gobCwgdHlw ZU5hbWUtPnR5cG1vZHMpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMKaW5kZXggOGJhMDM4YzVlZjQuLjY4N2EzMzczMjBlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMxOSw3ICszMTksNyBAQCBwYXJ0aXRpb25fYm91 bmRzX2NyZWF0ZShQYXJ0aXRpb25Cb3VuZFNwZWMgKipib3VuZHNwZWNzLCBpbnQgbnBhcnRz LAogCSAqIEluaXRpYWxpemUgbWFwcGluZyBhcnJheSB3aXRoIGludmFsaWQgdmFsdWVzLCB0 aGlzIGlzIGZpbGxlZCB3aXRoaW4KIAkgKiBlYWNoIHN1Yi1yb3V0aW5lIGJlbG93IGRlcGVu ZGluZyBvbiB0aGUgYm91bmQgdHlwZS4KIAkgKi8KLQkqbWFwcGluZyA9IChpbnQgKikgcGFs bG9jKHNpemVvZihpbnQpICogbnBhcnRzKTsKKwkqbWFwcGluZyA9IHBhbGxvY19hcnJheShp bnQsIG5wYXJ0cyk7CiAJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQogCQkoKm1hcHBp bmcpW2ldID0gLTE7CiAKQEAgLTM1Myw4ICszNTMsNyBAQCBjcmVhdGVfaGFzaF9ib3VuZHMo UGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAlpbnQJCQln cmVhdGVzdF9tb2R1bHVzOwogCURhdHVtCSAgICpib3VuZERhdHVtczsKIAotCWJvdW5kaW5m byA9IChQYXJ0aXRpb25Cb3VuZEluZm9EYXRhICopCi0JCXBhbGxvYzAoc2l6ZW9mKFBhcnRp dGlvbkJvdW5kSW5mb0RhdGEpKTsKKwlib3VuZGluZm8gPSBwYWxsb2MwX29iamVjdChQYXJ0 aXRpb25Cb3VuZEluZm9EYXRhKTsKIAlib3VuZGluZm8tPnN0cmF0ZWd5ID0ga2V5LT5zdHJh dGVneTsKIAkvKiBObyBzcGVjaWFsIGhhc2ggcGFydGl0aW9ucy4gKi8KIAlib3VuZGluZm8t Pm51bGxfaW5kZXggPSAtMTsKQEAgLTM4NCw3ICszODMsNyBAQCBjcmVhdGVfaGFzaF9ib3Vu ZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywgaW50IG5wYXJ0cywKIAlncmVh dGVzdF9tb2R1bHVzID0gaGJvdW5kc1tucGFydHMgLSAxXS5tb2R1bHVzOwogCiAJYm91bmRp bmZvLT5uZGF0dW1zID0gbnBhcnRzOwotCWJvdW5kaW5mby0+ZGF0dW1zID0gKERhdHVtICoq KSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihEYXR1bSAqKSk7CisJYm91bmRpbmZvLT5kYXR1 bXMgPSAoRGF0dW0gKiopIHBhbGxvYzBfYXJyYXkoRGF0dW0gKiwgbnBhcnRzKTsKIAlib3Vu ZGluZm8tPmtpbmQgPSBOVUxMOwogCWJvdW5kaW5mby0+aW50ZXJsZWF2ZWRfcGFydHMgPSBO VUxMOwogCWJvdW5kaW5mby0+bmluZGV4ZXMgPSBncmVhdGVzdF9tb2R1bHVzOwpAQCAtNDcy LDggKzQ3MSw3IEBAIGNyZWF0ZV9saXN0X2JvdW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMgKipi b3VuZHNwZWNzLCBpbnQgbnBhcnRzLAogCWludAkJCW51bGxfaW5kZXggPSAtMTsKIAlEYXR1 bQkgICAqYm91bmREYXR1bXM7CiAKLQlib3VuZGluZm8gPSAoUGFydGl0aW9uQm91bmRJbmZv RGF0YSAqKQotCQlwYWxsb2MwKHNpemVvZihQYXJ0aXRpb25Cb3VuZEluZm9EYXRhKSk7CisJ Ym91bmRpbmZvID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9uQm91bmRJbmZvRGF0YSk7CiAJ Ym91bmRpbmZvLT5zdHJhdGVneSA9IGtleS0+c3RyYXRlZ3k7CiAJLyogV2lsbCBiZSBzZXQg Y29ycmVjdGx5IGJlbG93LiAqLwogCWJvdW5kaW5mby0+bnVsbF9pbmRleCA9IC0xOwpAQCAt NTMzLDcgKzUzMSw3IEBAIGNyZWF0ZV9saXN0X2JvdW5kcyhQYXJ0aXRpb25Cb3VuZFNwZWMg Kipib3VuZHNwZWNzLCBpbnQgbnBhcnRzLAogCQkJICBxc29ydF9wYXJ0aXRpb25fbGlzdF92 YWx1ZV9jbXAsIGtleSk7CiAKIAlib3VuZGluZm8tPm5kYXR1bXMgPSBuZGF0dW1zOwotCWJv dW5kaW5mby0+ZGF0dW1zID0gKERhdHVtICoqKSBwYWxsb2MwKG5kYXR1bXMgKiBzaXplb2Yo RGF0dW0gKikpOworCWJvdW5kaW5mby0+ZGF0dW1zID0gKERhdHVtICoqKSBwYWxsb2MwX2Fy cmF5KERhdHVtICosIG5kYXR1bXMpOwogCWJvdW5kaW5mby0+a2luZCA9IE5VTEw7CiAJYm91 bmRpbmZvLT5pbnRlcmxlYXZlZF9wYXJ0cyA9IE5VTEw7CiAJYm91bmRpbmZvLT5uaW5kZXhl cyA9IG5kYXR1bXM7CkBAIC02OTAsOCArNjg4LDcgQEAgY3JlYXRlX3JhbmdlX2JvdW5kcyhQ YXJ0aXRpb25Cb3VuZFNwZWMgKipib3VuZHNwZWNzLCBpbnQgbnBhcnRzLAogCURhdHVtCSAg ICpib3VuZERhdHVtczsKIAlQYXJ0aXRpb25SYW5nZURhdHVtS2luZCAqYm91bmRLaW5kczsK IAotCWJvdW5kaW5mbyA9IChQYXJ0aXRpb25Cb3VuZEluZm9EYXRhICopCi0JCXBhbGxvYzAo c2l6ZW9mKFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEpKTsKKwlib3VuZGluZm8gPSBwYWxsb2Mw X29iamVjdChQYXJ0aXRpb25Cb3VuZEluZm9EYXRhKTsKIAlib3VuZGluZm8tPnN0cmF0ZWd5 ID0ga2V5LT5zdHJhdGVneTsKIAkvKiBUaGVyZSBpcyBubyBzcGVjaWFsIG51bGwtYWNjZXB0 aW5nIHJhbmdlIHBhcnRpdGlvbi4gKi8KIAlib3VuZGluZm8tPm51bGxfaW5kZXggPSAtMTsK QEAgLTY5OSw3ICs2OTYsNyBAQCBjcmVhdGVfcmFuZ2VfYm91bmRzKFBhcnRpdGlvbkJvdW5k U3BlYyAqKmJvdW5kc3BlY3MsIGludCBucGFydHMsCiAJYm91bmRpbmZvLT5kZWZhdWx0X2lu ZGV4ID0gLTE7CiAKIAlhbGxfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCi0J CXBhbGxvYzAoMiAqIG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsK KwkJcGFsbG9jMF9hcnJheShQYXJ0aXRpb25SYW5nZUJvdW5kICosIDIgKiBucGFydHMpOwog CiAJLyogQ3JlYXRlIGEgdW5pZmllZCBsaXN0IG9mIHJhbmdlIGJvdW5kcyBhY3Jvc3MgYWxs IHRoZSBwYXJ0aXRpb25zLiAqLwogCW5kYXR1bXMgPSAwOwpAQCAtODAzLDcgKzgwMCw3IEBA IGNyZWF0ZV9yYW5nZV9ib3VuZHMoUGFydGl0aW9uQm91bmRTcGVjICoqYm91bmRzcGVjcywg aW50IG5wYXJ0cywKIAkgKiBib3VuZC4KIAkgKi8KIAlib3VuZGluZm8tPm5kYXR1bXMgPSBu ZGF0dW1zOwotCWJvdW5kaW5mby0+ZGF0dW1zID0gKERhdHVtICoqKSBwYWxsb2MwKG5kYXR1 bXMgKiBzaXplb2YoRGF0dW0gKikpOworCWJvdW5kaW5mby0+ZGF0dW1zID0gKERhdHVtICoq KSBwYWxsb2MwX2FycmF5KERhdHVtICosIG5kYXR1bXMpOwogCWJvdW5kaW5mby0+a2luZCA9 IChQYXJ0aXRpb25SYW5nZURhdHVtS2luZCAqKikKIAkJcGFsbG9jKG5kYXR1bXMgKgogCQkJ ICAgc2l6ZW9mKFBhcnRpdGlvblJhbmdlRGF0dW1LaW5kICopKTsKQEAgLTEwMDgsNyArMTAw NSw3IEBAIHBhcnRpdGlvbl9ib3VuZHNfY29weShQYXJ0aXRpb25Cb3VuZEluZm8gc3JjLAog CWludAkJCW5pbmRleGVzOwogCWludAkJCXBhcnRuYXR0czsKIAotCWRlc3QgPSAoUGFydGl0 aW9uQm91bmRJbmZvKSBwYWxsb2Moc2l6ZW9mKFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEpKTsK KwlkZXN0ID0gKFBhcnRpdGlvbkJvdW5kSW5mbykgcGFsbG9jX29iamVjdChQYXJ0aXRpb25C b3VuZEluZm9EYXRhKTsKIAogCWRlc3QtPnN0cmF0ZWd5ID0gc3JjLT5zdHJhdGVneTsKIAlu ZGF0dW1zID0gZGVzdC0+bmRhdHVtcyA9IHNyYy0+bmRhdHVtczsKQEAgLTEwMTgsNyArMTAx NSw3IEBAIHBhcnRpdGlvbl9ib3VuZHNfY29weShQYXJ0aXRpb25Cb3VuZEluZm8gc3JjLAog CS8qIExpc3QgcGFydGl0aW9uZWQgdGFibGVzIGhhdmUgb25seSBhIHNpbmdsZSBwYXJ0aXRp b24ga2V5LiAqLwogCUFzc2VydChrZXktPnN0cmF0ZWd5ICE9IFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUIHx8IHBhcnRuYXR0cyA9PSAxKTsKIAotCWRlc3QtPmRhdHVtcyA9IChEYXR1bSAq KikgcGFsbG9jKHNpemVvZihEYXR1bSAqKSAqIG5kYXR1bXMpOworCWRlc3QtPmRhdHVtcyA9 IHBhbGxvY19hcnJheShEYXR1bSAqLCBuZGF0dW1zKTsKIAogCWlmIChzcmMtPmtpbmQgIT0g TlVMTCAmJiBuZGF0dW1zID4gMCkKIAl7CkBAIC0xMDkyLDcgKzEwODksNyBAQCBwYXJ0aXRp b25fYm91bmRzX2NvcHkoUGFydGl0aW9uQm91bmRJbmZvIHNyYywKIAkJfQogCX0KIAotCWRl c3QtPmluZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIG5pbmRleGVzKTsK KwlkZXN0LT5pbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbmluZGV4ZXMpOwogCW1lbWNw eShkZXN0LT5pbmRleGVzLCBzcmMtPmluZGV4ZXMsIHNpemVvZihpbnQpICogbmluZGV4ZXMp OwogCiAJZGVzdC0+bnVsbF9pbmRleCA9IHNyYy0+bnVsbF9pbmRleDsKQEAgLTE4MTUsMTAg KzE4MTIsMTAgQEAgaW5pdF9wYXJ0aXRpb25fbWFwKFJlbE9wdEluZm8gKnJlbCwgUGFydGl0 aW9uTWFwICptYXApCiAJaW50CQkJaTsKIAogCW1hcC0+bnBhcnRzID0gbnBhcnRzOwotCW1h cC0+bWVyZ2VkX2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50KSAqIG5wYXJ0 cyk7Ci0JbWFwLT5tZXJnZWQgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbnBh cnRzKTsKKwltYXAtPm1lcmdlZF9pbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbnBhcnRz KTsKKwltYXAtPm1lcmdlZCA9IHBhbGxvY19hcnJheShib29sLCBucGFydHMpOwogCW1hcC0+ ZGlkX3JlbWFwcGluZyA9IGZhbHNlOwotCW1hcC0+b2xkX2luZGV4ZXMgPSAoaW50ICopIHBh bGxvYyhzaXplb2YoaW50KSAqIG5wYXJ0cyk7CisJbWFwLT5vbGRfaW5kZXhlcyA9IHBhbGxv Y19hcnJheShpbnQsIG5wYXJ0cyk7CiAJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQog CXsKIAkJbWFwLT5tZXJnZWRfaW5kZXhlc1tpXSA9IG1hcC0+b2xkX2luZGV4ZXNbaV0gPSAt MTsKQEAgLTIzOTMsNyArMjM5MCw3IEBAIGZpeF9tZXJnZWRfaW5kZXhlcyhQYXJ0aXRpb25N YXAgKm91dGVyX21hcCwgUGFydGl0aW9uTWFwICppbm5lcl9tYXAsCiAKIAlBc3NlcnQobm1l cmdlZCA+IDApOwogCi0JbmV3X2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYyhzaXplb2YoaW50 KSAqIG5tZXJnZWQpOworCW5ld19pbmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbm1lcmdl ZCk7CiAJZm9yIChpID0gMDsgaSA8IG5tZXJnZWQ7IGkrKykKIAkJbmV3X2luZGV4ZXNbaV0g PSAtMTsKIApAQCAtMjQ1Myw4ICsyNDUwLDggQEAgZ2VuZXJhdGVfbWF0Y2hpbmdfcGFydF9w YWlycyhSZWxPcHRJbmZvICpvdXRlcl9yZWwsIFJlbE9wdEluZm8gKmlubmVyX3JlbCwKIAlB c3NlcnQoKm91dGVyX3BhcnRzID09IE5JTCk7CiAJQXNzZXJ0KCppbm5lcl9wYXJ0cyA9PSBO SUwpOwogCi0Jb3V0ZXJfaW5kZXhlcyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICog bm1lcmdlZCk7Ci0JaW5uZXJfaW5kZXhlcyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQp ICogbm1lcmdlZCk7CisJb3V0ZXJfaW5kZXhlcyA9IHBhbGxvY19hcnJheShpbnQsIG5tZXJn ZWQpOworCWlubmVyX2luZGV4ZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBubWVyZ2VkKTsKIAlm b3IgKGkgPSAwOyBpIDwgbm1lcmdlZDsgaSsrKQogCQlvdXRlcl9pbmRleGVzW2ldID0gaW5u ZXJfaW5kZXhlc1tpXSA9IC0xOwogCkBAIC0yNTI1LDExICsyNTIyLDExIEBAIGJ1aWxkX21l cmdlZF9wYXJ0aXRpb25fYm91bmRzKGNoYXIgc3RyYXRlZ3ksIExpc3QgKm1lcmdlZF9kYXR1 bXMsCiAJaW50CQkJcG9zOwogCUxpc3RDZWxsICAgKmxjOwogCi0JbWVyZ2VkX2JvdW5kcyA9 IChQYXJ0aXRpb25Cb3VuZEluZm8pIHBhbGxvYyhzaXplb2YoUGFydGl0aW9uQm91bmRJbmZv RGF0YSkpOworCW1lcmdlZF9ib3VuZHMgPSAoUGFydGl0aW9uQm91bmRJbmZvKSBwYWxsb2Nf b2JqZWN0KFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEpOwogCW1lcmdlZF9ib3VuZHMtPnN0cmF0 ZWd5ID0gc3RyYXRlZ3k7CiAJbWVyZ2VkX2JvdW5kcy0+bmRhdHVtcyA9IG5kYXR1bXM7CiAK LQltZXJnZWRfYm91bmRzLT5kYXR1bXMgPSAoRGF0dW0gKiopIHBhbGxvYyhzaXplb2YoRGF0 dW0gKikgKiBuZGF0dW1zKTsKKwltZXJnZWRfYm91bmRzLT5kYXR1bXMgPSBwYWxsb2NfYXJy YXkoRGF0dW0gKiwgbmRhdHVtcyk7CiAJcG9zID0gMDsKIAlmb3JlYWNoKGxjLCBtZXJnZWRf ZGF0dW1zKQogCQltZXJnZWRfYm91bmRzLT5kYXR1bXNbcG9zKytdID0gKERhdHVtICopIGxm aXJzdChsYyk7CkBAIC0yNTM3LDggKzI1MzQsNyBAQCBidWlsZF9tZXJnZWRfcGFydGl0aW9u X2JvdW5kcyhjaGFyIHN0cmF0ZWd5LCBMaXN0ICptZXJnZWRfZGF0dW1zLAogCWlmIChzdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCiAJewogCQlBc3NlcnQobGlzdF9s ZW5ndGgobWVyZ2VkX2tpbmRzKSA9PSBuZGF0dW1zKTsKLQkJbWVyZ2VkX2JvdW5kcy0+a2lu ZCA9IChQYXJ0aXRpb25SYW5nZURhdHVtS2luZCAqKikKLQkJCXBhbGxvYyhzaXplb2YoUGFy dGl0aW9uUmFuZ2VEYXR1bUtpbmQgKikgKiBuZGF0dW1zKTsKKwkJbWVyZ2VkX2JvdW5kcy0+ a2luZCA9IHBhbGxvY19hcnJheShQYXJ0aXRpb25SYW5nZURhdHVtS2luZCAqLCBuZGF0dW1z KTsKIAkJcG9zID0gMDsKIAkJZm9yZWFjaChsYywgbWVyZ2VkX2tpbmRzKQogCQkJbWVyZ2Vk X2JvdW5kcy0+a2luZFtwb3MrK10gPSAoUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKikgbGZp cnN0KGxjKTsKQEAgLTI1NTksNyArMjU1NSw3IEBAIGJ1aWxkX21lcmdlZF9wYXJ0aXRpb25f Ym91bmRzKGNoYXIgc3RyYXRlZ3ksIExpc3QgKm1lcmdlZF9kYXR1bXMsCiAKIAlBc3NlcnQo bGlzdF9sZW5ndGgobWVyZ2VkX2luZGV4ZXMpID09IG5kYXR1bXMpOwogCW1lcmdlZF9ib3Vu ZHMtPm5pbmRleGVzID0gbmRhdHVtczsKLQltZXJnZWRfYm91bmRzLT5pbmRleGVzID0gKGlu dCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuZGF0dW1zKTsKKwltZXJnZWRfYm91bmRzLT5p bmRleGVzID0gcGFsbG9jX2FycmF5KGludCwgbmRhdHVtcyk7CiAJcG9zID0gMDsKIAlmb3Jl YWNoKGxjLCBtZXJnZWRfaW5kZXhlcykKIAkJbWVyZ2VkX2JvdW5kcy0+aW5kZXhlc1twb3Mr K10gPSBsZmlyc3RfaW50KGxjKTsKQEAgLTM0MzQsMTEgKzM0MzAsMTAgQEAgbWFrZV9vbmVf cGFydGl0aW9uX3Jib3VuZChQYXJ0aXRpb25LZXkga2V5LCBpbnQgaW5kZXgsIExpc3QgKmRh dHVtcywgYm9vbCBsb3dlcikKIAogCUFzc2VydChkYXR1bXMgIT0gTklMKTsKIAotCWJvdW5k ID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKikgcGFsbG9jMChzaXplb2YoUGFydGl0aW9uUmFu Z2VCb3VuZCkpOworCWJvdW5kID0gcGFsbG9jMF9vYmplY3QoUGFydGl0aW9uUmFuZ2VCb3Vu ZCk7CiAJYm91bmQtPmluZGV4ID0gaW5kZXg7Ci0JYm91bmQtPmRhdHVtcyA9IChEYXR1bSAq KSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKERhdHVtKSk7Ci0JYm91bmQtPmtp bmQgPSAoUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0 cyAqCi0JCQkJCQkJCQkJCQkJICBzaXplb2YoUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQpKTsK Kwlib3VuZC0+ZGF0dW1zID0gcGFsbG9jMF9hcnJheShEYXR1bSwga2V5LT5wYXJ0bmF0dHMp OworCWJvdW5kLT5raW5kID0gcGFsbG9jMF9hcnJheShQYXJ0aXRpb25SYW5nZURhdHVtS2lu ZCwga2V5LT5wYXJ0bmF0dHMpOwogCWJvdW5kLT5sb3dlciA9IGxvd2VyOwogCiAJaSA9IDA7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyBiL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCmluZGV4IDMyOGI0ZDQ1MGU0Li41 NjI0ZjUwM2ZlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRk ZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKQEAgLTQy Niw3ICs0MjYsNyBAQCBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoTWVtb3J5Q29udGV4dCBt Y3h0LCBib29sIG9taXRfZGV0YWNoZWQpCiAJUGFydGl0aW9uRGlyZWN0b3J5IHBkaXI7CiAJ SEFTSENUTAkJY3RsOwogCi0JcGRpciA9IHBhbGxvYyhzaXplb2YoUGFydGl0aW9uRGlyZWN0 b3J5RGF0YSkpOworCXBkaXIgPSBwYWxsb2Nfb2JqZWN0KFBhcnRpdGlvbkRpcmVjdG9yeURh dGEpOwogCXBkaXItPnBkaXJfbWN4dCA9IG1jeHQ7CiAKIAljdGwua2V5c2l6ZSA9IHNpemVv ZihPaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAxYzM4NDg4 ZjJjYi4uZWQzZTcyNTU0NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j CkBAIC0xODY1LDcgKzE4NjUsNyBAQCBnZXRfZGF0YWJhc2VfbGlzdCh2b2lkKQogCQkgKi8K IAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJlc3VsdGN4dCk7CiAKLQkJYXZk YiA9IChhdndfZGJhc2UgKikgcGFsbG9jKHNpemVvZihhdndfZGJhc2UpKTsKKwkJYXZkYiA9 IHBhbGxvY19vYmplY3QoYXZ3X2RiYXNlKTsKIAogCQlhdmRiLT5hZHdfZGF0aWQgPSBwZ2Rh dGFiYXNlLT5vaWQ7CiAJCWF2ZGItPmFkd19uYW1lID0gcHN0cmR1cChOYW1lU3RyKHBnZGF0 YWJhc2UtPmRhdG5hbWUpKTsKQEAgLTI3NTMsNyArMjc1Myw3IEBAIGV4dHJhY3RfYXV0b3Zh Y19vcHRzKEhlYXBUdXBsZSB0dXAsIFR1cGxlRGVzYyBwZ19jbGFzc19kZXNjKQogCWlmIChy ZWxvcHRzID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCi0JYXYgPSBwYWxsb2Moc2l6ZW9m KEF1dG9WYWNPcHRzKSk7CisJYXYgPSBwYWxsb2Nfb2JqZWN0KEF1dG9WYWNPcHRzKTsKIAlt ZW1jcHkoYXYsICYoKChTdGRSZE9wdGlvbnMgKikgcmVsb3B0cyktPmF1dG92YWN1dW0pLCBz aXplb2YoQXV0b1ZhY09wdHMpKTsKIAlwZnJlZShyZWxvcHRzKTsKIApAQCAtMjg1Nyw3ICsy ODU3LDcgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVf dG9hc3RfbWFwLAogCQkJPyBhdm9wdHMtPm11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlCiAJ CQk6IGRlZmF1bHRfbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7CiAKLQkJdGFiID0gcGFs bG9jKHNpemVvZihhdXRvdmFjX3RhYmxlKSk7CisJCXRhYiA9IHBhbGxvY19vYmplY3QoYXV0 b3ZhY190YWJsZSk7CiAJCXRhYi0+YXRfcmVsaWQgPSByZWxpZDsKIAkJdGFiLT5hdF9zaGFy ZWRyZWwgPSBjbGFzc0Zvcm0tPnJlbGlzc2hhcmVkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jn d29ya2VyLmMKaW5kZXggMTQyYTAyZWI1ZTkuLjhlMTA2ODk2OWFlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWdpc3RlckR5bmFt aWNCYWNrZ3JvdW5kV29ya2VyKEJhY2tncm91bmRXb3JrZXIgKndvcmtlciwKIAkgKi8KIAlp ZiAoc3VjY2VzcyAmJiBoYW5kbGUpCiAJewotCQkqaGFuZGxlID0gcGFsbG9jKHNpemVvZihC YWNrZ3JvdW5kV29ya2VySGFuZGxlKSk7CisJCSpoYW5kbGUgPSBwYWxsb2Nfb2JqZWN0KEJh Y2tncm91bmRXb3JrZXJIYW5kbGUpOwogCQkoKmhhbmRsZSktPnNsb3QgPSBzbG90bm87CiAJ CSgqaGFuZGxlKS0+Z2VuZXJhdGlvbiA9IGdlbmVyYXRpb247CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggZTg0ZTg2NjNlOTYuLmY5ZDFkNWVjOTNj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTEzMTYsNyAr MTMxNiw3IEBAIENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUodm9pZCkKIAludW1f cmVxdWVzdHMgPSBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3JlcXVlc3RzOwogCiAJLyogSW5p dGlhbGl6ZSBza2lwX3Nsb3QgYXJyYXkgKi8KLQlza2lwX3Nsb3QgPSBwYWxsb2MwKHNpemVv Zihib29sKSAqIG1heF9yZXF1ZXN0cyk7CisJc2tpcF9zbG90ID0gcGFsbG9jMF9hcnJheShi b29sLCBtYXhfcmVxdWVzdHMpOwogCiAJaGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT5oZWFk OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5k LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKaW5kZXggOTc2 NjM4YTU4YWMuLjk4ZjdjNDg0OGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2xhdW5jaF9iYWNrZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVu Y2hfYmFja2VuZC5jCkBAIC0yNTgsNyArMjU4LDcgQEAgcG9zdG1hc3Rlcl9jaGlsZF9sYXVu Y2goQmFja2VuZFR5cGUgY2hpbGRfdHlwZSwgaW50IGNoaWxkX3Nsb3QsCiAJCU15UE1DaGls ZFNsb3QgPSBjaGlsZF9zbG90OwogCQlpZiAoY2xpZW50X3NvY2spCiAJCXsKLQkJCU15Q2xp ZW50U29ja2V0ID0gcGFsbG9jKHNpemVvZihDbGllbnRTb2NrZXQpKTsKKwkJCU15Q2xpZW50 U29ja2V0ID0gcGFsbG9jX29iamVjdChDbGllbnRTb2NrZXQpOwogCQkJbWVtY3B5KE15Q2xp ZW50U29ja2V0LCBjbGllbnRfc29jaywgc2l6ZW9mKENsaWVudFNvY2tldCkpOwogCQl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IGNlNmI1Mjk5MzI0Li4zYTY1ZDg0MTcy NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC0yNTcsNyArMjU3LDcgQEAgUGdB cmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVtYmVyOwogCiAJLyogQ3Jl YXRlIHdvcmtzcGFjZSBmb3IgcGdhcmNoX3JlYWR5WGxvZygpICovCi0JYXJjaF9maWxlcyA9 IHBhbGxvYyhzaXplb2Yoc3RydWN0IGFyY2hfZmlsZXNfc3RhdGUpKTsKKwlhcmNoX2ZpbGVz ID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgYXJjaF9maWxlc19zdGF0ZSk7CiAJYXJjaF9maWxl cy0+YXJjaF9maWxlc19zaXplID0gMDsKIAogCS8qIEluaXRpYWxpemUgb3VyIG1heC1oZWFw IGZvciBwcmlvcml0aXppbmcgZmlsZXMgdG8gYXJjaGl2ZS4gKi8KQEAgLTk0NSw3ICs5NDUs NyBAQCBMb2FkQXJjaGl2ZUxpYnJhcnkodm9pZCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJybXNnKCJhcmNoaXZlIG1vZHVsZXMgbXVzdCByZWdpc3RlciBhbiBhcmNoaXZlIGNhbGxi YWNrIikpKTsKIAotCWFyY2hpdmVfbW9kdWxlX3N0YXRlID0gKEFyY2hpdmVNb2R1bGVTdGF0 ZSAqKSBwYWxsb2MwKHNpemVvZihBcmNoaXZlTW9kdWxlU3RhdGUpKTsKKwlhcmNoaXZlX21v ZHVsZV9zdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEFyY2hpdmVNb2R1bGVTdGF0ZSk7CiAJaWYg KEFyY2hpdmVDYWxsYmFja3MtPnN0YXJ0dXBfY2IgIT0gTlVMTCkKIAkJQXJjaGl2ZUNhbGxi YWNrcy0+c3RhcnR1cF9jYihhcmNoaXZlX21vZHVsZV9zdGF0ZSk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggYTk1NmRiNGFkMjcuLjdkZDNhMjAxYjFjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNDU2Miw3ICs0NTYyLDcg QEAgcGd3aW4zMl9yZWdpc3Rlcl9kZWFkY2hpbGRfY2FsbGJhY2soSEFORExFIHByb2NIYW5k bGUsIERXT1JEIHByb2NJZCkKIHsKIAl3aW4zMl9kZWFkY2hpbGRfd2FpdGluZm8gKmNoaWxk aW5mbzsKIAotCWNoaWxkaW5mbyA9IHBhbGxvYyhzaXplb2Yod2luMzJfZGVhZGNoaWxkX3dh aXRpbmZvKSk7CisJY2hpbGRpbmZvID0gcGFsbG9jX29iamVjdCh3aW4zMl9kZWFkY2hpbGRf d2FpdGluZm8pOwogCWNoaWxkaW5mby0+cHJvY0hhbmRsZSA9IHByb2NIYW5kbGU7CiAJY2hp bGRpbmZvLT5wcm9jSWQgPSBwcm9jSWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dl ci5jCmluZGV4IDUwYzJlZGVjMWY2Li41MjZhZDA1M2E0NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3N5c2xvZ2dlci5jCkBAIC05NjAsNyArOTYwLDcgQEAgcHJvY2Vzc19waXBlX2lucHV0 KGNoYXIgKmxvZ2J1ZmZlciwgaW50ICpieXRlc19pbl9sb2didWZmZXIpCiAJCQkJCQkgKiBO ZWVkIGEgZnJlZSBzbG90LCBidXQgdGhlcmUgaXNuJ3Qgb25lIGluIHRoZSBsaXN0LAogCQkJ CQkJICogc28gY3JlYXRlIGEgbmV3IG9uZSBhbmQgZXh0ZW5kIHRoZSBsaXN0IHdpdGggaXQu CiAJCQkJCQkgKi8KLQkJCQkJCWZyZWVfc2xvdCA9IHBhbGxvYyhzaXplb2Yoc2F2ZV9idWZm ZXIpKTsKKwkJCQkJCWZyZWVfc2xvdCA9IHBhbGxvY19vYmplY3Qoc2F2ZV9idWZmZXIpOwog CQkJCQkJYnVmZmVyX2xpc3QgPSBsYXBwZW5kKGJ1ZmZlcl9saXN0LCBmcmVlX3Nsb3QpOwog CQkJCQkJYnVmZmVyX2xpc3RzW3AucGlkICUgTkJVRkZFUl9MSVNUU10gPSBidWZmZXJfbGlz dDsKIAkJCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1t YXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRl eCBjNGE4ODhhMDgxYy4uZTdlNGQ2NTJmOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsc3VtbWFyaXplci5jCkBAIC05MjAsOCArOTIwLDcgQEAgU3VtbWFyaXplV0FMKFRpbWVM aW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAlib29sCQlm YXN0X2ZvcndhcmQgPSB0cnVlOwogCiAJLyogSW5pdGlhbGl6ZSBwcml2YXRlIGRhdGEgZm9y IHhsb2dyZWFkZXIuICovCi0JcHJpdmF0ZV9kYXRhID0gKFN1bW1hcml6ZXJSZWFkTG9jYWxY TG9nUHJpdmF0ZSAqKQotCQlwYWxsb2MwKHNpemVvZihTdW1tYXJpemVyUmVhZExvY2FsWExv Z1ByaXZhdGUpKTsKKwlwcml2YXRlX2RhdGEgPSBwYWxsb2MwX29iamVjdChTdW1tYXJpemVy UmVhZExvY2FsWExvZ1ByaXZhdGUpOwogCXByaXZhdGVfZGF0YS0+dGxpID0gdGxpOwogCXBy aXZhdGVfZGF0YS0+aGlzdG9yaWMgPSBYTG9nUmVjUHRySXNWYWxpZChzd2l0Y2hfbHNuKTsK IAlwcml2YXRlX2RhdGEtPnJlYWRfdXB0byA9IG1heGltdW1fbHNuOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2Vp dmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYwppbmRleCAyMzk2NDFiZmJiNi4uNWRkYzllODEyZTcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxy ZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0yMTEsNyArMjExLDcgQEAgbGlicHFyY3ZfY29u bmVjdChjb25zdCBjaGFyICpjb25uaW5mbywgYm9vbCByZXBsaWNhdGlvbiwgYm9vbCBsb2dp Y2FsLAogCiAJQXNzZXJ0KGkgPCBsZW5ndGhvZihrZXlzKSk7CiAKLQljb25uID0gcGFsbG9j MChzaXplb2YoV2FsUmVjZWl2ZXJDb25uKSk7CisJY29ubiA9IHBhbGxvYzBfb2JqZWN0KFdh bFJlY2VpdmVyQ29ubik7CiAJY29ubi0+c3RyZWFtQ29ubiA9CiAJCWxpYnBxc3J2X2Nvbm5l Y3RfcGFyYW1zKGtleXMsIHZhbHMsCiAJCQkJCQkJCSAvKiBleHBhbmRfZGJuYW1lID0gKi8g dHJ1ZSwKQEAgLTExMDIsNyArMTEwMiw3IEBAIGxpYnBxcmN2X2V4ZWMoV2FsUmVjZWl2ZXJD b25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkJCSAgY29uc3QgaW50IG5SZXRUeXBl cywgY29uc3QgT2lkICpyZXRUeXBlcykKIHsKIAlQR3Jlc3VsdCAgICpwZ3JlcyA9IE5VTEw7 Ci0JV2FsUmN2RXhlY1Jlc3VsdCAqd2FscmVzID0gcGFsbG9jMChzaXplb2YoV2FsUmN2RXhl Y1Jlc3VsdCkpOworCVdhbFJjdkV4ZWNSZXN1bHQgKndhbHJlcyA9IHBhbGxvYzBfb2JqZWN0 KFdhbFJjdkV4ZWNSZXN1bHQpOwogCWNoYXIJICAgKmRpYWdfc3Fsc3RhdGU7CiAKIAlpZiAo TXlEYXRhYmFzZUlkID09IEludmFsaWRPaWQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGJhYTY4 YzFhYjZjLi40M2JlYTMxZjE3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTQyNSw3ICs0MjUs NyBAQCBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCiAJICovCiAJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0Jd2luZm8gPSAo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFsbG9jMChzaXplb2YoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8pKTsKKwl3aW5mbyA9IHBhbGxvYzBfb2JqZWN0KFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvKTsKIAogCS8qIFNldHVwIHNoYXJlZCBtZW1vcnkuICovCiAJaWYgKCFwYV9z ZXR1cF9kc20od2luZm8pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jCmluZGV4IGZkZjFjY2FkNDYyLi4zOTkxZTE0OTVkNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtMTQ3LDcgKzE0Nyw3 IEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHJlc3VsdGN4dCk7CiAKLQkJc3ViID0gKFN1YnNjcmlwdGlv biAqKSBwYWxsb2MwKHNpemVvZihTdWJzY3JpcHRpb24pKTsKKwkJc3ViID0gcGFsbG9jMF9v YmplY3QoU3Vic2NyaXB0aW9uKTsKIAkJc3ViLT5vaWQgPSBzdWJmb3JtLT5vaWQ7CiAJCXN1 Yi0+ZGJpZCA9IHN1YmZvcm0tPnN1YmRiaWQ7CiAJCXN1Yi0+b3duZXIgPSBzdWJmb3JtLT5z dWJvd25lcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK aW5kZXggODY2ZjkyY2Y3OTkuLjFiMTFlZDYzZGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0YXJ0dXBE ZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQkJCQkJCQkJ IkxvZ2ljYWwgZGVjb2RpbmcgY29udGV4dCIsCiAJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKIAlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjb250ZXh0 KTsKLQljdHggPSBwYWxsb2MwKHNpemVvZihMb2dpY2FsRGVjb2RpbmdDb250ZXh0KSk7CisJ Y3R4ID0gcGFsbG9jMF9vYmplY3QoTG9naWNhbERlY29kaW5nQ29udGV4dCk7CiAKIAljdHgt PmNvbnRleHQgPSBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCAyNWIyYjc5NTkyNS4uY2Y3N2VlMjhkZmUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYwpAQCAtMTQwLDcgKzE0MCw3IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19n dXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJ YXJyID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDMpOwogCiAJLyogc3RhdGUgdG8gd3JpdGUg b3V0cHV0IHRvICovCi0JcCA9IHBhbGxvYzAoc2l6ZW9mKERlY29kaW5nT3V0cHV0U3RhdGUp KTsKKwlwID0gcGFsbG9jMF9vYmplY3QoRGVjb2RpbmdPdXRwdXRTdGF0ZSk7CiAKIAlwLT5i aW5hcnlfb3V0cHV0ID0gYmluYXJ5OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKaW5kZXggZjBhOTEzODkyYjkuLjI3YWQ3NGZkNzU5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC02OTcsNyArNjk3LDcgQEAg bG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlk LCBSZWxhdGlvbiByZWwsCiBMb2dpY2FsUmVwUmVsYXRpb24gKgogbG9naWNhbHJlcF9yZWFk X3JlbChTdHJpbmdJbmZvIGluKQogewotCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsID0gcGFs bG9jKHNpemVvZihMb2dpY2FsUmVwUmVsYXRpb24pKTsKKwlMb2dpY2FsUmVwUmVsYXRpb24g KnJlbCA9IHBhbGxvY19vYmplY3QoTG9naWNhbFJlcFJlbGF0aW9uKTsKIAogCXJlbC0+cmVt b3RlaWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCkBAIC04NzEsNyArODcxLDcgQEAgbG9n aWNhbHJlcF9yZWFkX3R1cGxlKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBUdXBsZURhdGEg KnR1cGxlKQogCiAJLyogQWxsb2NhdGUgc3BhY2UgZm9yIHBlci1jb2x1bW4gdmFsdWVzOyB6 ZXJvIG91dCB1bnVzZWQgU3RyaW5nSW5mb0RhdGFzICovCiAJdHVwbGUtPmNvbHZhbHVlcyA9 IChTdHJpbmdJbmZvRGF0YSAqKSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKFN0cmluZ0luZm9E YXRhKSk7Ci0JdHVwbGUtPmNvbHN0YXR1cyA9IChjaGFyICopIHBhbGxvYyhuYXR0cyAqIHNp emVvZihjaGFyKSk7CisJdHVwbGUtPmNvbHN0YXR1cyA9IHBhbGxvY19hcnJheShjaGFyLCBu YXR0cyk7CiAJdHVwbGUtPm5jb2xzID0gbmF0dHM7CiAKIAkvKiBSZWFkIHRoZSBkYXRhICov CkBAIC05OTQsOCArOTk0LDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8g aW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCUJpdG1hcHNldCAgKmF0dGtleXMgPSBO VUxMOwogCiAJbmF0dHMgPSBwcV9nZXRtc2dpbnQoaW4sIDIpOwotCWF0dG5hbWVzID0gcGFs bG9jKG5hdHRzICogc2l6ZW9mKGNoYXIgKikpOwotCWF0dHR5cHMgPSBwYWxsb2MobmF0dHMg KiBzaXplb2YoT2lkKSk7CisJYXR0bmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCBuYXR0 cyk7CisJYXR0dHlwcyA9IHBhbGxvY19hcnJheShPaWQsIG5hdHRzKTsKIAogCS8qIHJlYWQg dGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCAxMGIzZDBk OWI4Mi4uMmM4NDg1Yjg4MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3JlbGF0aW9uLmMKQEAgLTE4OCw4ICsxODgsOCBAQCBsb2dpY2FscmVwX3JlbG1hcF91 cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJZW50cnktPnJlbW90ZXJl bC5uc3BuYW1lID0gcHN0cmR1cChyZW1vdGVyZWwtPm5zcG5hbWUpOwogCWVudHJ5LT5yZW1v dGVyZWwucmVsbmFtZSA9IHBzdHJkdXAocmVtb3RlcmVsLT5yZWxuYW1lKTsKIAllbnRyeS0+ cmVtb3RlcmVsLm5hdHRzID0gcmVtb3RlcmVsLT5uYXR0czsKLQllbnRyeS0+cmVtb3RlcmVs LmF0dG5hbWVzID0gcGFsbG9jKHJlbW90ZXJlbC0+bmF0dHMgKiBzaXplb2YoY2hhciAqKSk7 Ci0JZW50cnktPnJlbW90ZXJlbC5hdHR0eXBzID0gcGFsbG9jKHJlbW90ZXJlbC0+bmF0dHMg KiBzaXplb2YoT2lkKSk7CisJZW50cnktPnJlbW90ZXJlbC5hdHRuYW1lcyA9IHBhbGxvY19h cnJheShjaGFyICosIHJlbW90ZXJlbC0+bmF0dHMpOworCWVudHJ5LT5yZW1vdGVyZWwuYXR0 dHlwcyA9IHBhbGxvY19hcnJheShPaWQsIHJlbW90ZXJlbC0+bmF0dHMpOwogCWZvciAoaSA9 IDA7IGkgPCByZW1vdGVyZWwtPm5hdHRzOyBpKyspCiAJewogCQllbnRyeS0+cmVtb3RlcmVs LmF0dG5hbWVzW2ldID0gcHN0cmR1cChyZW1vdGVyZWwtPmF0dG5hbWVzW2ldKTsKQEAgLTcw NCw4ICs3MDQsOCBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqcm9vdCwKIAkJZW50cnktPnJlbW90ZXJlbC5uc3BuYW1lID0gcHN0cmR1cChy ZW1vdGVyZWwtPm5zcG5hbWUpOwogCQllbnRyeS0+cmVtb3RlcmVsLnJlbG5hbWUgPSBwc3Ry ZHVwKHJlbW90ZXJlbC0+cmVsbmFtZSk7CiAJCWVudHJ5LT5yZW1vdGVyZWwubmF0dHMgPSBy ZW1vdGVyZWwtPm5hdHRzOwotCQllbnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzID0gcGFsbG9j KHJlbW90ZXJlbC0+bmF0dHMgKiBzaXplb2YoY2hhciAqKSk7Ci0JCWVudHJ5LT5yZW1vdGVy ZWwuYXR0dHlwcyA9IHBhbGxvYyhyZW1vdGVyZWwtPm5hdHRzICogc2l6ZW9mKE9pZCkpOwor CQllbnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgcmVt b3RlcmVsLT5uYXR0cyk7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dHlwcyA9IHBhbGxvY19h cnJheShPaWQsIHJlbW90ZXJlbC0+bmF0dHMpOwogCQlmb3IgKGkgPSAwOyBpIDwgcmVtb3Rl cmVsLT5uYXR0czsgaSsrKQogCQl7CiAJCQllbnRyeS0+cmVtb3RlcmVsLmF0dG5hbWVzW2ld ID0gcHN0cmR1cChyZW1vdGVyZWwtPmF0dG5hbWVzW2ldKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggZWI2YTg0NTU0 YjcuLmYxOGM2ZmI1MmI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtMzQ4OSw4ICszNDg5LDcgQEAgUmVvcmRlckJ1 ZmZlclF1ZXVlSW52YWxpZGF0aW9ucyhSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJY2hhbmdlID0gUmVvcmRlckJ1ZmZlckFsbG9jQ2hhbmdlKHJiKTsKIAljaGFu Z2UtPmFjdGlvbiA9IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT047CiAJY2hh bmdlLT5kYXRhLmludmFsLm5pbnZhbGlkYXRpb25zID0gbm1zZ3M7Ci0JY2hhbmdlLT5kYXRh LmludmFsLmludmFsaWRhdGlvbnMgPSAoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqKQot CQlwYWxsb2Moc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UpICogbm1zZ3MpOwor CWNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zID0gcGFsbG9jX2FycmF5KFNoYXJl ZEludmFsaWRhdGlvbk1lc3NhZ2UsIG5tc2dzKTsKIAltZW1jcHkoY2hhbmdlLT5kYXRhLmlu dmFsLmludmFsaWRhdGlvbnMsIG1zZ3MsCiAJCSAgIHNpemVvZihTaGFyZWRJbnZhbGlkYXRp b25NZXNzYWdlKSAqIG5tc2dzKTsKIApAQCAtMzUxMSw4ICszNTEwLDcgQEAgUmVvcmRlckJ1 ZmZlckFjY3VtdWxhdGVJbnZhbGlkYXRpb25zKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2Ug KippbnZhbHNfb3V0LAogCWlmICgqbmludmFsc19vdXQgPT0gMCkKIAl7CiAJCSpuaW52YWxz X291dCA9IG5tc2dzX25ldzsKLQkJKmludmFsc19vdXQgPSAoU2hhcmVkSW52YWxpZGF0aW9u TWVzc2FnZSAqKQotCQkJcGFsbG9jKHNpemVvZihTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdl KSAqIG5tc2dzX25ldyk7CisJCSppbnZhbHNfb3V0ID0gcGFsbG9jX2FycmF5KFNoYXJlZElu dmFsaWRhdGlvbk1lc3NhZ2UsIG5tc2dzX25ldyk7CiAJCW1lbWNweSgqaW52YWxzX291dCwg bXNnc19uZXcsIHNpemVvZihTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlKSAqIG5tc2dzX25l dyk7CiAJfQogCWVsc2UKQEAgLTM3MDEsOCArMzY5OSw3IEBAIFJlb3JkZXJCdWZmZXJHZXRD YXRhbG9nQ2hhbmdlc1hhY3RzKFJlb3JkZXJCdWZmZXIgKnJiKQogCQlyZXR1cm4gTlVMTDsK IAogCS8qIEluaXRpYWxpemUgWElEIGFycmF5ICovCi0JeGlkcyA9IChUcmFuc2FjdGlvbklk ICopIHBhbGxvYyhzaXplb2YoVHJhbnNhY3Rpb25JZCkgKgotCQkJCQkJCQkJZGNsaXN0X2Nv dW50KCZyYi0+Y2F0Y2hhbmdlX3R4bnMpKTsKKwl4aWRzID0gcGFsbG9jX2FycmF5KFRyYW5z YWN0aW9uSWQsIGRjbGlzdF9jb3VudCgmcmItPmNhdGNoYW5nZV90eG5zKSk7CiAJZGNsaXN0 X2ZvcmVhY2goaXRlciwgJnJiLT5jYXRjaGFuZ2VfdHhucykKIAl7CiAJCVJlb3JkZXJCdWZm ZXJUWE4gKnR4biA9IGRjbGlzdF9jb250YWluZXIoUmVvcmRlckJ1ZmZlclRYTiwKQEAgLTUx MjQsOSArNTEyMSw5IEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZl ciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAl0b2FzdF9kZXNjID0gUmVsYXRpb25H ZXREZXNjcih0b2FzdF9yZWwpOwogCiAJLyogc2hvdWxkIHdlIGFsbG9jYXRlIGZyb20gc3Rh Y2sgaW5zdGVhZD8gKi8KLQlhdHRycyA9IHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIGRlc2Mt Pm5hdHRzKTsKLQlpc251bGwgPSBwYWxsb2MwKHNpemVvZihib29sKSAqIGRlc2MtPm5hdHRz KTsKLQlmcmVlID0gcGFsbG9jMChzaXplb2YoYm9vbCkgKiBkZXNjLT5uYXR0cyk7CisJYXR0 cnMgPSBwYWxsb2MwX2FycmF5KERhdHVtLCBkZXNjLT5uYXR0cyk7CisJaXNudWxsID0gcGFs bG9jMF9hcnJheShib29sLCBkZXNjLT5uYXR0cyk7CisJZnJlZSA9IHBhbGxvYzBfYXJyYXko Ym9vbCwgZGVzYy0+bmF0dHMpOwogCiAJbmV3dHVwID0gY2hhbmdlLT5kYXRhLnRwLm5ld3R1 cGxlOwogCkBAIC01NTMxLDcgKzU1MjgsNyBAQCBVcGRhdGVMb2dpY2FsTWFwcGluZ3MoSFRB QiAqdHVwbGVjaWRfZGF0YSwgT2lkIHJlbGlkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJCWNv bnRpbnVlOwogCiAJCS8qIG9rLCByZWxldmFudCwgcXVldWUgZm9yIGFwcGx5ICovCi0JCWYg PSBwYWxsb2Moc2l6ZW9mKFJld3JpdGVNYXBwaW5nRmlsZSkpOworCQlmID0gcGFsbG9jX29i amVjdChSZXdyaXRlTWFwcGluZ0ZpbGUpOwogCQlmLT5sc24gPSBmX2xzbjsKIAkJc3RyY3B5 KGYtPmZuYW1lLCBtYXBwaW5nX2RlLT5kX25hbWUpOwogCQlmaWxlcyA9IGxhcHBlbmQoZmls ZXMsIGYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j CmluZGV4IDUzYzdkNjI5MjM5Li5mYmViYzYyOGFmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtOTE5LDcgKzkxOSw3IEBAIHN5bmNo cm9uaXplX3Nsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogCXdoaWxlICh0dXBsZXN0 b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCB0dXBzbG90 KSkKIAl7CiAJCWJvb2wJCWlzbnVsbDsKLQkJUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QgPSBw YWxsb2MwKHNpemVvZihSZW1vdGVTbG90KSk7CisJCVJlbW90ZVNsb3QgKnJlbW90ZV9zbG90 ID0gcGFsbG9jMF9vYmplY3QoUmVtb3RlU2xvdCk7CiAJCURhdHVtCQlkOwogCQlpbnQJCQlj b2wgPSAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3NuYXBidWlsZC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbmFwYnVp bGQuYwppbmRleCA2ZTE4YmFhMzNjYi4uZDZhYjFlMDE3ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc25hcGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbmFwYnVpbGQuYwpAQCAtMTk5LDcgKzE5OSw3IEBA IEFsbG9jYXRlU25hcHNob3RCdWlsZGVyKFJlb3JkZXJCdWZmZXIgKnJlb3JkZXIsCiAJCQkJ CQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGNvbnRleHQpOwogCi0JYnVpbGRlciA9IHBhbGxvYzAoc2l6ZW9mKFNu YXBCdWlsZCkpOworCWJ1aWxkZXIgPSBwYWxsb2MwX29iamVjdChTbmFwQnVpbGQpOwogCiAJ YnVpbGRlci0+c3RhdGUgPSBTTkFQQlVJTERfU1RBUlQ7CiAJYnVpbGRlci0+Y29udGV4dCA9 IGNvbnRleHQ7CkBAIC00ODYsOCArNDg2LDcgQEAgU25hcEJ1aWxkSW5pdGlhbFNuYXBzaG90 KFNuYXBCdWlsZCAqYnVpbGRlcikKIAlNeVByb2MtPnhtaW4gPSBzbmFwLT54bWluOwogCiAJ LyogYWxsb2NhdGUgaW4gdHJhbnNhY3Rpb24gY29udGV4dCAqLwotCW5ld3hpcCA9IChUcmFu c2FjdGlvbklkICopCi0JCXBhbGxvYyhzaXplb2YoVHJhbnNhY3Rpb25JZCkgKiBHZXRNYXhT bmFwc2hvdFhpZENvdW50KCkpOworCW5ld3hpcCA9IHBhbGxvY19hcnJheShUcmFuc2FjdGlv bklkLCBHZXRNYXhTbmFwc2hvdFhpZENvdW50KCkpOwogCiAJLyoKIAkgKiBzbmFwYnVpbGQu YyBidWlsZHMgdHJhbnNhY3Rpb25zIGluIGFuICJpbnZlcnRlZCIgbWFubmVyLCB3aGljaCBt ZWFucyBpdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z eW5jdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxz LmMKaW5kZXggYTY5NmIxZjJkYzAuLjMzMjgxOTgwNGJlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBG ZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRhYmxlcywKIAkJCQlo YXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IHRydWU7CiAJCQllbHNlCiAJCQl7Ci0JCQkJ cnN0YXRlID0gcGFsbG9jKHNpemVvZihTdWJzY3JpcHRpb25SZWxTdGF0ZSkpOworCQkJCXJz dGF0ZSA9IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3RhdGUpOwogCQkJCW1lbWNw eShyc3RhdGUsIHN1YnJlbCwgc2l6ZW9mKFN1YnNjcmlwdGlvblJlbFN0YXRlKSk7CiAJCQkJ dGFibGVfc3RhdGVzX25vdF9yZWFkeSA9IGxhcHBlbmQodGFibGVfc3RhdGVzX25vdF9yZWFk eSwKIAkJCQkJCQkJCQkJCSByc3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggOTM5NzBjNmFmMjkuLmZmZGUyODRkZDNjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTg3NSw3ICs4NzUs NyBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq cmVsKQogCUxpc3QJICAgKnBlcm1pbmZvcyA9IE5JTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvOwogCi0JZWRhdGEgPSAoQXBwbHlFeGVjdXRpb25EYXRhICopIHBhbGxvYzAo c2l6ZW9mKEFwcGx5RXhlY3V0aW9uRGF0YSkpOworCWVkYXRhID0gcGFsbG9jMF9vYmplY3Qo QXBwbHlFeGVjdXRpb25EYXRhKTsKIAllZGF0YS0+dGFyZ2V0UmVsID0gcmVsOwogCiAJZWRh dGEtPmVzdGF0ZSA9IGVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKQEAgLTE3MDIs NyArMTcwMiw3IEBAIHN0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBmaXJzdF9zZWdtZW50KQogCiAJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhBcHBseUNvbnRleHQpOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCA9IHBhbGxvY19vYmplY3QoRmlsZVNldCk7CiAJCUZpbGVTZXRJbml0 KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCiAJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAtMzk1MSw3ICszOTUxLDcgQEAgc3RvcmVfZmx1c2hf cG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbikK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAogCS8qIFRyYWNrIGNv bW1pdCBsc24gICovCi0JZmx1c2hwb3MgPSAoRmx1c2hQb3NpdGlvbiAqKSBwYWxsb2Moc2l6 ZW9mKEZsdXNoUG9zaXRpb24pKTsKKwlmbHVzaHBvcyA9IHBhbGxvY19vYmplY3QoRmx1c2hQ b3NpdGlvbik7CiAJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2FsX2xzbjsKIAlmbHVzaHBv cy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDk0MmUxYWJkYjU4Li43ODc5OThhYmI4 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CkBAIC00NDcsNyArNDQ3LDcgQEAgc3RhdGljIHZvaWQKIHBnb3V0cHV0X3N0YXJ0dXAoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJ CQkJIGJvb2wgaXNfaW5pdCkKIHsKLQlQR091dHB1dERhdGEgKmRhdGEgPSBwYWxsb2MwKHNp emVvZihQR091dHB1dERhdGEpKTsKKwlQR091dHB1dERhdGEgKmRhdGEgPSBwYWxsb2MwX29i amVjdChQR091dHB1dERhdGEpOwogCXN0YXRpYyBib29sIHB1YmxpY2F0aW9uX2NhbGxiYWNr X3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAlNZW1vcnlDb250ZXh0Q2FsbGJhY2sgKm1jYWxsYmFj azsKIApAQCAtNDY4LDcgKzQ2OCw3IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJICogRW5zdXJl IHRvIGNsZWFudXAgUmVsYXRpb25TeW5jQ2FjaGUgZXZlbiB3aGVuIGxvZ2ljYWwgZGVjb2Rp bmcgaW52b2tlZAogCSAqIHZpYSBTUUwgaW50ZXJmYWNlIGVuZHMgdXAgd2l0aCBhbiBlcnJv ci4KIAkgKi8KLQltY2FsbGJhY2sgPSBwYWxsb2MwKHNpemVvZihNZW1vcnlDb250ZXh0Q2Fs bGJhY2spKTsKKwltY2FsbGJhY2sgPSBwYWxsb2MwX29iamVjdChNZW1vcnlDb250ZXh0Q2Fs bGJhY2spOwogCW1jYWxsYmFjay0+ZnVuYyA9IHBnb3V0cHV0X21lbW9yeV9jb250ZXh0X3Jl c2V0OwogCU1lbW9yeUNvbnRleHRSZWdpc3RlclJlc2V0Q2FsbGJhY2soY3R4LT5jb250ZXh0 LCBtY2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z eW5jcmVwLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKaW5kZXggYTBj Nzk5NThmZDUuLjI5OGEzNzY2ZDc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zeW5jcmVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5j CkBAIC03MDUsOSArNzA1LDkgQEAgU3luY1JlcEdldE50aExhdGVzdFN5bmNSZWNQdHIoWExv Z1JlY1B0ciAqd3JpdGVQdHIsCiAJLyogU2hvdWxkIGhhdmUgZW5vdWdoIGNhbmRpZGF0ZXMs IG9yIHNvbWVib2R5IG1lc3NlZCB1cCAqLwogCUFzc2VydChudGggPiAwICYmIG50aCA8PSBu dW1fc3RhbmRieXMpOwogCi0Jd3JpdGVfYXJyYXkgPSAoWExvZ1JlY1B0ciAqKSBwYWxsb2Mo c2l6ZW9mKFhMb2dSZWNQdHIpICogbnVtX3N0YW5kYnlzKTsKLQlmbHVzaF9hcnJheSA9IChY TG9nUmVjUHRyICopIHBhbGxvYyhzaXplb2YoWExvZ1JlY1B0cikgKiBudW1fc3RhbmRieXMp OwotCWFwcGx5X2FycmF5ID0gKFhMb2dSZWNQdHIgKikgcGFsbG9jKHNpemVvZihYTG9nUmVj UHRyKSAqIG51bV9zdGFuZGJ5cyk7CisJd3JpdGVfYXJyYXkgPSBwYWxsb2NfYXJyYXkoWExv Z1JlY1B0ciwgbnVtX3N0YW5kYnlzKTsKKwlmbHVzaF9hcnJheSA9IHBhbGxvY19hcnJheShY TG9nUmVjUHRyLCBudW1fc3RhbmRieXMpOworCWFwcGx5X2FycmF5ID0gcGFsbG9jX2FycmF5 KFhMb2dSZWNQdHIsIG51bV9zdGFuZGJ5cyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3N0 YW5kYnlzOyBpKyspCiAJewpAQCAtNzU3LDggKzc1Nyw3IEBAIFN5bmNSZXBHZXRDYW5kaWRh dGVTdGFuZGJ5cyhTeW5jUmVwU3RhbmRieURhdGEgKipzdGFuZGJ5cykKIAlpbnQJCQluOwog CiAJLyogQ3JlYXRlIHJlc3VsdCBhcnJheSAqLwotCSpzdGFuZGJ5cyA9IChTeW5jUmVwU3Rh bmRieURhdGEgKikKLQkJcGFsbG9jKG1heF93YWxfc2VuZGVycyAqIHNpemVvZihTeW5jUmVw U3RhbmRieURhdGEpKTsKKwkqc3RhbmRieXMgPSBwYWxsb2NfYXJyYXkoU3luY1JlcFN0YW5k YnlEYXRhLCBtYXhfd2FsX3NlbmRlcnMpOwogCiAJLyogUXVpY2sgZXhpdCBpZiBzeW5jIHJl cGxpY2F0aW9uIGlzIG5vdCByZXF1ZXN0ZWQgKi8KIAlpZiAoU3luY1JlcENvbmZpZyA9PSBO VUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggNDIxN2Zj NTRlMmUuLjNhYzQ4YTg0N2IzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmMKQEAgLTE0NTAsOCArMTQ1MCw4IEBAIHBnX3N0YXRfZ2V0X3dhbF9yZWNlaXZlcihQ R19GVU5DVElPTl9BUkdTKQogCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5V TEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCiAJCWVsb2coRVJST1IsICJy ZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKIAotCXZhbHVlcyA9IHBhbGxvYzAo c2l6ZW9mKERhdHVtKSAqIHR1cGRlc2MtPm5hdHRzKTsKLQludWxscyA9IHBhbGxvYzAoc2l6 ZW9mKGJvb2wpICogdHVwZGVzYy0+bmF0dHMpOworCXZhbHVlcyA9IHBhbGxvYzBfYXJyYXko RGF0dW0sIHR1cGRlc2MtPm5hdHRzKTsKKwludWxscyA9IHBhbGxvYzBfYXJyYXkoYm9vbCwg dHVwZGVzYy0+bmF0dHMpOwogCiAJLyogRmV0Y2ggdmFsdWVzICovCiAJdmFsdWVzWzBdID0g SW50MzJHZXREYXR1bShwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpp bmRleCBhMWI0MzAxYTRlZS4uZTJkMDc3ODYyODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCkBAIC0zOTczLDcgKzM5NzMsNyBAQCBXYWxTbmRHZXRTdGF0ZVN0cmlu ZyhXYWxTbmRTdGF0ZSBzdGF0ZSkKIHN0YXRpYyBJbnRlcnZhbCAqCiBvZmZzZXRfdG9faW50 ZXJ2YWwoVGltZU9mZnNldCBvZmZzZXQpCiB7Ci0JSW50ZXJ2YWwgICAqcmVzdWx0ID0gcGFs bG9jKHNpemVvZihJbnRlcnZhbCkpOworCUludGVydmFsICAgKnJlc3VsdCA9IHBhbGxvY19v YmplY3QoSW50ZXJ2YWwpOwogCiAJcmVzdWx0LT5tb250aCA9IDA7CiAJcmVzdWx0LT5kYXkg PSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IGZmY2YyZmYx ZmUyLi42ODhkY2QwOWNhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YwpAQCAtNDI4Nyw3ICs0Mjg3LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUs IExpc3QgKnJld3JpdGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgsCiAJCQkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShydF9lbnRyeV9yZWxhdGlvbikpKSk7CiAJCQl9CiAK LQkJCXJldiA9IChyZXdyaXRlX2V2ZW50ICopIHBhbGxvYyhzaXplb2YocmV3cml0ZV9ldmVu dCkpOworCQkJcmV2ID0gcGFsbG9jX29iamVjdChyZXdyaXRlX2V2ZW50KTsKIAkJCXJldi0+ cmVsYXRpb24gPSBSZWxhdGlvbkdldFJlbGlkKHJ0X2VudHJ5X3JlbGF0aW9uKTsKIAkJCXJl di0+ZXZlbnQgPSBldmVudDsKIAkJCXJld3JpdGVfZXZlbnRzID0gbGFwcGVuZChyZXdyaXRl X2V2ZW50cywgcmV2KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0 ZU1hbmlwLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5pcC5jCmluZGV4IDBm Y2QxZmJkMTRlLi5mM2MyODg2ZWQ1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlTWFuaXAuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5p cC5jCkBAIC0xNTkwLDcgKzE1OTAsNyBAQCBtYXBfdmFyaWFibGVfYXR0bm9zX211dGF0b3Io Tm9kZSAqbm9kZSwKIAkJCXZhci0+dmFybGV2ZWxzdXAgPT0gY29udGV4dC0+c3VibGV2ZWxz X3VwKQogCQl7CiAJCQkvKiBGb3VuZCBhIG1hdGNoaW5nIHZhcmlhYmxlLCBtYWtlIHRoZSBz dWJzdGl0dXRpb24gKi8KLQkJCVZhcgkJICAgKm5ld3ZhciA9IChWYXIgKikgcGFsbG9jKHNp emVvZihWYXIpKTsKKwkJCVZhcgkJICAgKm5ld3ZhciA9IHBhbGxvY19vYmplY3QoVmFyKTsK IAkJCWludAkJCWF0dG5vID0gdmFyLT52YXJhdHRubzsKIAogCQkJKm5ld3ZhciA9ICp2YXI7 CQkvKiBpbml0aWFsbHkgY29weSBhbGwgZmllbGRzIG9mIHRoZSBWYXIgKi8KQEAgLTE2NjEs NyArMTY2MSw3IEBAIG1hcF92YXJpYWJsZV9hdHRub3NfbXV0YXRvcihOb2RlICpub2RlLAog CQkJY29udGV4dC0+dG9fcm93dHlwZSAhPSB2YXItPnZhcnR5cGUpCiAJCXsKIAkJCUNvbnZl cnRSb3d0eXBlRXhwciAqbmV3bm9kZTsKLQkJCVZhcgkJICAgKm5ld3ZhciA9IChWYXIgKikg cGFsbG9jKHNpemVvZihWYXIpKTsKKwkJCVZhcgkJICAgKm5ld3ZhciA9IHBhbGxvY19vYmpl Y3QoVmFyKTsKIAogCQkJLyogd2hvbGUtcm93IHZhcmlhYmxlLCB3YXJuIGNhbGxlciAqLwog CQkJKihjb250ZXh0LT5mb3VuZF93aG9sZV9yb3cpID0gdHJ1ZTsKQEAgLTE2NzQsNyArMTY3 NCw3IEBAIG1hcF92YXJpYWJsZV9hdHRub3NfbXV0YXRvcihOb2RlICpub2RlLAogCQkJLyog VmFyIGl0c2VsZiBpcyBjaGFuZ2VkIHRvIHRoZSByZXF1ZXN0ZWQgdHlwZS4gKi8KIAkJCW5l d3Zhci0+dmFydHlwZSA9IGNvbnRleHQtPnRvX3Jvd3R5cGU7CiAKLQkJCW5ld25vZGUgPSAo Q29udmVydFJvd3R5cGVFeHByICopIHBhbGxvYyhzaXplb2YoQ29udmVydFJvd3R5cGVFeHBy KSk7CisJCQluZXdub2RlID0gcGFsbG9jX29iamVjdChDb252ZXJ0Um93dHlwZUV4cHIpOwog CQkJKm5ld25vZGUgPSAqcjsJCS8qIGluaXRpYWxseSBjb3B5IGFsbCBmaWVsZHMgb2YgdGhl IENSRSAqLwogCQkJbmV3bm9kZS0+YXJnID0gKEV4cHIgKikgbmV3dmFyOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zbm93YmFsbC9kaWN0X3Nub3diYWxsLmMgYi9zcmMvYmFja2Vu ZC9zbm93YmFsbC9kaWN0X3Nub3diYWxsLmMKaW5kZXggZTJiODExYTM4MDYuLmQzYzAyMmFl NTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zbm93YmFsbC9kaWN0X3Nub3diYWxsLmMK KysrIGIvc3JjL2JhY2tlbmQvc25vd2JhbGwvZGljdF9zbm93YmFsbC5jCkBAIC0yMjksNyAr MjI5LDcgQEAgZHNub3diYWxsX2luaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlib29sCQlzdG9w bG9hZGVkID0gZmFsc2U7CiAJTGlzdENlbGwgICAqbDsKIAotCWQgPSAoRGljdFNub3diYWxs ICopIHBhbGxvYzAoc2l6ZW9mKERpY3RTbm93YmFsbCkpOworCWQgPSBwYWxsb2MwX29iamVj dChEaWN0U25vd2JhbGwpOwogCiAJZm9yZWFjaChsLCBkaWN0b3B0aW9ucykKIAl7CkBAIC0y NzgsNyArMjc4LDcgQEAgZHNub3diYWxsX2xleGl6ZShQR19GVU5DVElPTl9BUkdTKQogCWNo YXIJICAgKmluID0gKGNoYXIgKikgUEdfR0VUQVJHX1BPSU5URVIoMSk7CiAJaW50MzIJCWxl biA9IFBHX0dFVEFSR19JTlQzMigyKTsKIAljaGFyCSAgICp0eHQgPSBzdHJfdG9sb3dlcihp biwgbGVuLCBERUZBVUxUX0NPTExBVElPTl9PSUQpOwotCVRTTGV4ZW1lICAgKnJlcyA9IHBh bGxvYzAoc2l6ZW9mKFRTTGV4ZW1lKSAqIDIpOworCVRTTGV4ZW1lICAgKnJlcyA9IHBhbGxv YzBfYXJyYXkoVFNMZXhlbWUsIDIpOwogCiAJLyoKIAkgKiBEbyBub3QgcGFzcyBzdHJpbmdz IGV4Y2VlZGluZyAxMDAwIGJ5dGVzIHRvIHRoZSBzdGVtbWVyLCBhcyB0aGV5J3JlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jIGIvc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYwppbmRleCBkN2JmNmI3ZTg0Ni4uMmFl ZDg2N2Q1ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5j aWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYwpAQCAt MTUwLDcgKzE1MCw3IEBAIGdlbmVyYXRlX2RlcGVuZGVuY2llc19yZWN1cnNlKERlcGVuZGVu Y3lHZW5lcmF0b3Igc3RhdGUsIGludCBpbmRleCwKIHN0YXRpYyB2b2lkCiBnZW5lcmF0ZV9k ZXBlbmRlbmNpZXMoRGVwZW5kZW5jeUdlbmVyYXRvciBzdGF0ZSkKIHsKLQlBdHRyTnVtYmVy ICpjdXJyZW50ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChzaXplb2YoQXR0ck51bWJlcikg KiBzdGF0ZS0+ayk7CisJQXR0ck51bWJlciAqY3VycmVudCA9IHBhbGxvYzBfYXJyYXkoQXR0 ck51bWJlciwgc3RhdGUtPmspOwogCiAJZ2VuZXJhdGVfZGVwZW5kZW5jaWVzX3JlY3Vyc2Uo c3RhdGUsIDAsIDAsIGN1cnJlbnQpOwogCkBAIC0xNzEsOCArMTcxLDggQEAgRGVwZW5kZW5j eUdlbmVyYXRvcl9pbml0KGludCBuLCBpbnQgaykKIAlBc3NlcnQoKG4gPj0gaykgJiYgKGsg PiAwKSk7CiAKIAkvKiBhbGxvY2F0ZSB0aGUgRGVwZW5kZW5jeUdlbmVyYXRvciBzdGF0ZSAq LwotCXN0YXRlID0gKERlcGVuZGVuY3lHZW5lcmF0b3IpIHBhbGxvYzAoc2l6ZW9mKERlcGVu ZGVuY3lHZW5lcmF0b3JEYXRhKSk7Ci0Jc3RhdGUtPmRlcGVuZGVuY2llcyA9IChBdHRyTnVt YmVyICopIHBhbGxvYyhrICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKKwlzdGF0ZSA9IHBhbGxv YzBfb2JqZWN0KERlcGVuZGVuY3lHZW5lcmF0b3JEYXRhKTsKKwlzdGF0ZS0+ZGVwZW5kZW5j aWVzID0gcGFsbG9jX2FycmF5KEF0dHJOdW1iZXIsIGspOwogCiAJc3RhdGUtPm5kZXBlbmRl bmNpZXMgPSAwOwogCXN0YXRlLT5jdXJyZW50ID0gMDsKQEAgLTIzNyw3ICsyMzcsNyBAQCBk ZXBlbmRlbmN5X2RlZ3JlZShTdGF0c0J1aWxkRGF0YSAqZGF0YSwgaW50IGssIEF0dHJOdW1i ZXIgKmRlcGVuZGVuY3kpCiAJICogVHJhbnNsYXRlIHRoZSBhcnJheSBvZiBpbmRleGVzIHRv IHJlZ3VsYXIgYXR0bnVtcyBmb3IgdGhlIGRlcGVuZGVuY3kKIAkgKiAod2Ugd2lsbCBuZWVk IHRoaXMgdG8gaWRlbnRpZnkgdGhlIGNvbHVtbnMgaW4gU3RhdHNCdWlsZERhdGEpLgogCSAq LwotCWF0dG51bXNfZGVwID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKGsgKiBzaXplb2YoQXR0 ck51bWJlcikpOworCWF0dG51bXNfZGVwID0gcGFsbG9jX2FycmF5KEF0dHJOdW1iZXIsIGsp OwogCWZvciAoaSA9IDA7IGkgPCBrOyBpKyspCiAJCWF0dG51bXNfZGVwW2ldID0gZGF0YS0+ YXR0bnVtc1tkZXBlbmRlbmN5W2ldXTsKIApAQCAtNDAyLDggKzQwMiw3IEBAIHN0YXRleHRf ZGVwZW5kZW5jaWVzX2J1aWxkKFN0YXRzQnVpbGREYXRhICpkYXRhKQogCQkJLyogaW5pdGlh bGl6ZSB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMgKi8KIAkJCWlmIChkZXBlbmRlbmNpZXMg PT0gTlVMTCkKIAkJCXsKLQkJCQlkZXBlbmRlbmNpZXMKLQkJCQkJPSAoTVZEZXBlbmRlbmNp ZXMgKikgcGFsbG9jMChzaXplb2YoTVZEZXBlbmRlbmNpZXMpKTsKKwkJCQlkZXBlbmRlbmNp ZXMgPSBwYWxsb2MwX29iamVjdChNVkRlcGVuZGVuY2llcyk7CiAKIAkJCQlkZXBlbmRlbmNp ZXMtPm1hZ2ljID0gU1RBVFNfREVQU19NQUdJQzsKIAkJCQlkZXBlbmRlbmNpZXMtPnR5cGUg PSBTVEFUU19ERVBTX1RZUEVfQkFTSUM7CkBAIC01MDUsNyArNTA0LDcgQEAgc3RhdGV4dF9k ZXBlbmRlbmNpZXNfZGVzZXJpYWxpemUoYnl0ZWEgKmRhdGEpCiAJCQkgVkFSU0laRV9BTllf RVhIRFIoZGF0YSksIFNpemVPZkhlYWRlcik7CiAKIAkvKiByZWFkIHRoZSBNVkRlcGVuZGVu Y2llcyBoZWFkZXIgKi8KLQlkZXBlbmRlbmNpZXMgPSAoTVZEZXBlbmRlbmNpZXMgKikgcGFs bG9jMChzaXplb2YoTVZEZXBlbmRlbmNpZXMpKTsKKwlkZXBlbmRlbmNpZXMgPSBwYWxsb2Mw X29iamVjdChNVkRlcGVuZGVuY2llcyk7CiAKIAkvKiBpbml0aWFsaXplIHBvaW50ZXIgdG8g dGhlIGRhdGEgcGFydCAoc2tpcCB0aGUgdmFybGVuYSBoZWFkZXIpICovCiAJdG1wID0gVkFS REFUQV9BTlkoZGF0YSk7CkBAIC05NTksNyArOTU4LDcgQEAgY2xhdXNlbGlzdF9hcHBseV9k ZXBlbmRlbmNpZXMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsCiAJICogYW5k IG1hcmsgYWxsIHRoZSBjb3JyZXNwb25kaW5nIGNsYXVzZXMgYXMgZXN0aW1hdGVkLgogCSAq LwogCW5hdHRycyA9IGJtc19udW1fbWVtYmVycyhhdHRudW1zKTsKLQlhdHRyX3NlbCA9IChT ZWxlY3Rpdml0eSAqKSBwYWxsb2Moc2l6ZW9mKFNlbGVjdGl2aXR5KSAqIG5hdHRycyk7CisJ YXR0cl9zZWwgPSBwYWxsb2NfYXJyYXkoU2VsZWN0aXZpdHksIG5hdHRycyk7CiAKIAlhdHRp ZHggPSAwOwogCWkgPSAtMTsKQEAgLTEzMDYsOCArMTMwNSw3IEBAIGRlcGVuZGVuY2llc19j bGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCWlmICghaGFzX3N0 YXRzX29mX2tpbmQocmVsLT5zdGF0bGlzdCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykpCiAJ CXJldHVybiAxLjA7CiAKLQlsaXN0X2F0dG51bXMgPSAoQXR0ck51bWJlciAqKSBwYWxsb2Mo c2l6ZW9mKEF0dHJOdW1iZXIpICoKLQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoY2xhdXNlcykp OworCWxpc3RfYXR0bnVtcyA9IHBhbGxvY19hcnJheShBdHRyTnVtYmVyLCBsaXN0X2xlbmd0 aChjbGF1c2VzKSk7CiAKIAkvKgogCSAqIFdlIGFsbG9jYXRlIHNwYWNlIGFzIGlmIGV2ZXJ5 IGNsYXVzZSB3YXMgYSB1bmlxdWUgZXhwcmVzc2lvbiwgYWx0aG91Z2gKQEAgLTEzMTUsNyAr MTMxMyw3IEBAIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJ bmZvICpyb290LAogCSAqIHdlJ2xsIHRyYW5zbGF0ZSB0byBhdHRudW1zLCBhbmQgdGhlcmUg bWlnaHQgYmUgZHVwbGljYXRlcy4gQnV0IGl0J3MKIAkgKiBlYXNpZXIgYW5kIGNoZWFwZXIg dG8ganVzdCBkbyBvbmUgYWxsb2NhdGlvbiB0aGFuIHJlcGFsbG9jIGxhdGVyLgogCSAqLwot CXVuaXF1ZV9leHBycyA9IChOb2RlICoqKSBwYWxsb2Moc2l6ZW9mKE5vZGUgKikgKiBsaXN0 X2xlbmd0aChjbGF1c2VzKSk7CisJdW5pcXVlX2V4cHJzID0gcGFsbG9jX2FycmF5KE5vZGUg KiwgbGlzdF9sZW5ndGgoY2xhdXNlcykpOwogCXVuaXF1ZV9leHByc19jbnQgPSAwOwogCiAJ LyoKQEAgLTE0NjgsOCArMTQ2Niw3IEBAIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVj dGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCSAqIG1ha2UgaXQganVzdCB0aGUgcmlnaHQg c2l6ZSwgYnV0IGl0J3MgbGlrZWx5IHdhc3RlZnVsIGFueXdheSB0aGFua3MgdG8KIAkgKiBt b3ZpbmcgdGhlIGZyZWVkIGNodW5rcyB0byBmcmVlbGlzdHMgZXRjLgogCSAqLwotCWZ1bmNf ZGVwZW5kZW5jaWVzID0gKE1WRGVwZW5kZW5jaWVzICoqKSBwYWxsb2Moc2l6ZW9mKE1WRGVw ZW5kZW5jaWVzICopICoKLQkJCQkJCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKHJlbC0+c3RhdGxp c3QpKTsKKwlmdW5jX2RlcGVuZGVuY2llcyA9IHBhbGxvY19hcnJheShNVkRlcGVuZGVuY2ll cyAqLCBsaXN0X2xlbmd0aChyZWwtPnN0YXRsaXN0KSk7CiAJbmZ1bmNfZGVwZW5kZW5jaWVz ID0gMDsKIAl0b3RhbF9uZGVwcyA9IDA7CiAKQEAgLTE2OTIsOCArMTY4OSw3IEBAIGRlcGVu ZGVuY2llc19jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCSAq IFdvcmsgb3V0IHdoaWNoIGRlcGVuZGVuY2llcyB3ZSBjYW4gYXBwbHksIHN0YXJ0aW5nIHdp dGggdGhlCiAJICogd2lkZXN0L3N0cm9uZ2VzdCBvbmVzLCBhbmQgcHJvY2VlZGluZyB0byBz bWFsbGVyL3dlYWtlciBvbmVzLgogCSAqLwotCWRlcGVuZGVuY2llcyA9IChNVkRlcGVuZGVu Y3kgKiopIHBhbGxvYyhzaXplb2YoTVZEZXBlbmRlbmN5ICopICoKLQkJCQkJCQkJCQkJdG90 YWxfbmRlcHMpOworCWRlcGVuZGVuY2llcyA9IHBhbGxvY19hcnJheShNVkRlcGVuZGVuY3kg KiwgdG90YWxfbmRlcHMpOwogCW5kZXBlbmRlbmNpZXMgPSAwOwogCiAJd2hpbGUgKHRydWUp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMg Yi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggZjAwM2Q3 YjRhNzMuLjE5Nzc4Yjc3M2QyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRl ZF9zdGF0cy5jCkBAIC00NDYsNyArNDQ2LDcgQEAgZmV0Y2hfc3RhdGVudHJpZXNfZm9yX3Jl bGF0aW9uKFJlbGF0aW9uIHBnX3N0YXRleHQsIE9pZCByZWxpZCkKIAkJRm9ybV9wZ19zdGF0 aXN0aWNfZXh0IHN0YUZvcm07CiAJCUxpc3QJICAgKmV4cHJzID0gTklMOwogCi0JCWVudHJ5 ID0gcGFsbG9jMChzaXplb2YoU3RhdEV4dEVudHJ5KSk7CisJCWVudHJ5ID0gcGFsbG9jMF9v YmplY3QoU3RhdEV4dEVudHJ5KTsKIAkJc3RhRm9ybSA9IChGb3JtX3BnX3N0YXRpc3RpY19l eHQpIEdFVFNUUlVDVChodHVwKTsKIAkJZW50cnktPnN0YXRPaWQgPSBzdGFGb3JtLT5vaWQ7 CiAJCWVudHJ5LT5zY2hlbWEgPSBnZXRfbmFtZXNwYWNlX25hbWUoc3RhRm9ybS0+c3R4bmFt ZXNwYWNlKTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBleGFtaW5lX2F0dHJpYnV0ZShOb2RlICpl eHByKQogCS8qCiAJICogQ3JlYXRlIHRoZSBWYWNBdHRyU3RhdHMgc3RydWN0LgogCSAqLwot CXN0YXRzID0gKFZhY0F0dHJTdGF0cyAqKSBwYWxsb2MwKHNpemVvZihWYWNBdHRyU3RhdHMp KTsKKwlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KFZhY0F0dHJTdGF0cyk7CiAJc3RhdHMtPmF0 dHN0YXR0YXJnZXQgPSAtMTsKIAogCS8qCkBAIC02MTMsNyArNjEzLDcgQEAgZXhhbWluZV9l eHByZXNzaW9uKE5vZGUgKmV4cHIsIGludCBzdGF0dGFyZ2V0KQogCS8qCiAJICogQ3JlYXRl IHRoZSBWYWNBdHRyU3RhdHMgc3RydWN0LgogCSAqLwotCXN0YXRzID0gKFZhY0F0dHJTdGF0 cyAqKSBwYWxsb2MwKHNpemVvZihWYWNBdHRyU3RhdHMpKTsKKwlzdGF0cyA9IHBhbGxvYzBf b2JqZWN0KFZhY0F0dHJTdGF0cyk7CiAKIAkvKgogCSAqIFdlIGNhbid0IGhhdmUgc3RhdGlz dGljcyB0YXJnZXQgc3BlY2lmaWVkIGZvciB0aGUgZXhwcmVzc2lvbiwgc28gd2UKQEAgLTk0 Niw3ICs5NDYsNyBAQCBidWlsZF9hdHRudW1zX2FycmF5KEJpdG1hcHNldCAqYXR0cnMsIGlu dCBuZXhwcnMsIGludCAqbnVtYXR0cnMpCiAJCSpudW1hdHRycyA9IG51bTsKIAogCS8qIGJ1 aWxkIGF0dG51bXMgZnJvbSB0aGUgYml0bWFwc2V0ICovCi0JYXR0bnVtcyA9IChBdHRyTnVt YmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51bWJlcikgKiBudW0pOworCWF0dG51bXMgPSBw YWxsb2NfYXJyYXkoQXR0ck51bWJlciwgbnVtKTsKIAlpID0gMDsKIAlqID0gLTE7CiAJd2hp bGUgKChqID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBqKSkgPj0gMCkKQEAgLTEwMjgsNyAr MTAyOCw3IEBAIGJ1aWxkX3NvcnRlZF9pdGVtcyhTdGF0c0J1aWxkRGF0YSAqZGF0YSwgaW50 ICpuaXRlbXMsCiAJfQogCiAJLyogYnVpbGQgYSBsb2NhbCBjYWNoZSBvZiB0eXBsZW4gZm9y IGFsbCBhdHRyaWJ1dGVzICovCi0JdHlwbGVuID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGlu dCkgKiBkYXRhLT5uYXR0bnVtcyk7CisJdHlwbGVuID0gcGFsbG9jX2FycmF5KGludCwgZGF0 YS0+bmF0dG51bXMpOwogCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5uYXR0bnVtczsgaSsrKQog CQl0eXBsZW5baV0gPSBnZXRfdHlwbGVuKGRhdGEtPnN0YXRzW2ldLT5hdHRydHlwaWQpOwog CkBAIC0xNzA3LDExICsxNzA3LDEwIEBAIHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0 aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJ aWYgKCFoYXNfc3RhdHNfb2Zfa2luZChyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfTUNWKSkK IAkJcmV0dXJuIHNlbDsKIAotCWxpc3RfYXR0bnVtcyA9IChCaXRtYXBzZXQgKiopIHBhbGxv YyhzaXplb2YoQml0bWFwc2V0ICopICoKLQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoY2xhdXNl cykpOworCWxpc3RfYXR0bnVtcyA9IHBhbGxvY19hcnJheShCaXRtYXBzZXQgKiwgbGlzdF9s ZW5ndGgoY2xhdXNlcykpOwogCiAJLyogZXhwcmVzc2lvbnMgZXh0cmFjdGVkIGZyb20gY29t cGxleCBleHByZXNzaW9ucyAqLwotCWxpc3RfZXhwcnMgPSAoTGlzdCAqKikgcGFsbG9jKHNp emVvZihOb2RlICopICogbGlzdF9sZW5ndGgoY2xhdXNlcykpOworCWxpc3RfZXhwcnMgPSBw YWxsb2NfYXJyYXkoTGlzdCAqLCBsaXN0X2xlbmd0aChjbGF1c2VzKSk7CiAKIAkvKgogCSAq IFByZS1wcm9jZXNzIHRoZSBjbGF1c2VzIGxpc3QgdG8gZXh0cmFjdCB0aGUgYXR0bnVtcyBh bmQgZXhwcmVzc2lvbnMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2 LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCmluZGV4IDI4ZjkyNWYzOTdlLi43 MGVlYjg0MTJjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYwor KysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCkBAIC0yNzAsNyArMjcwLDcgQEAg c3RhdGV4dF9tY3ZfYnVpbGQoU3RhdHNCdWlsZERhdGEgKmRhdGEsIGRvdWJsZSB0b3RhbHJv d3MsIGludCBzdGF0dGFyZ2V0KQogCQkJCQkJCQkJCSsgc2l6ZW9mKFNvcnRTdXBwb3J0RGF0 YSkpOwogCiAJCS8qIGNvbXB1dGUgZnJlcXVlbmNpZXMgZm9yIHZhbHVlcyBpbiBlYWNoIGNv bHVtbiAqLwotCQluZnJlcXMgPSAoaW50ICopIHBhbGxvYzAoc2l6ZW9mKGludCkgKiBudW1h dHRycyk7CisJCW5mcmVxcyA9IChpbnQgKikgcGFsbG9jMF9hcnJheShpbnQsIG51bWF0dHJz KTsKIAkJZnJlcXMgPSBidWlsZF9jb2x1bW5fZnJlcXVlbmNpZXMoZ3JvdXBzLCBuZ3JvdXBz LCBtc3MsIG5mcmVxcyk7CiAKIAkJLyoKQEAgLTI5NCw4ICsyOTQsOCBAQCBzdGF0ZXh0X21j dl9idWlsZChTdGF0c0J1aWxkRGF0YSAqZGF0YSwgZG91YmxlIHRvdGFscm93cywgaW50IHN0 YXR0YXJnZXQpCiAJCQkvKiBqdXN0IHBvaW50IHRvIHRoZSBwcm9wZXIgcGxhY2UgaW4gdGhl IGxpc3QgKi8KIAkJCU1DVkl0ZW0gICAgKml0ZW0gPSAmbWN2bGlzdC0+aXRlbXNbaV07CiAK LQkJCWl0ZW0tPnZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIG51 bWF0dHJzKTsKLQkJCWl0ZW0tPmlzbnVsbCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9v bCkgKiBudW1hdHRycyk7CisJCQlpdGVtLT52YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0s IG51bWF0dHJzKTsKKwkJCWl0ZW0tPmlzbnVsbCA9IHBhbGxvY19hcnJheShib29sLCBudW1h dHRycyk7CiAKIAkJCS8qIGNvcHkgdmFsdWVzIGZvciB0aGUgZ3JvdXAgKi8KIAkJCW1lbWNw eShpdGVtLT52YWx1ZXMsIGdyb3Vwc1tpXS52YWx1ZXMsIHNpemVvZihEYXR1bSkgKiBudW1h dHRycyk7CkBAIC02MzUsOCArNjM1LDggQEAgc3RhdGV4dF9tY3Zfc2VyaWFsaXplKE1DVkxp c3QgKm1jdmxpc3QsIFZhY0F0dHJTdGF0cyAqKnN0YXRzKQogCWNoYXIJICAgKmVuZHB0ciBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkvKiB2YWx1ZXMgcGVyIGRpbWVuc2lvbiAo YW5kIG51bWJlciBvZiBub24tTlVMTCB2YWx1ZXMpICovCi0JRGF0dW0JICAqKnZhbHVlcyA9 IChEYXR1bSAqKikgcGFsbG9jMChzaXplb2YoRGF0dW0gKikgKiBuZGltcyk7Ci0JaW50CQkg ICAqY291bnRzID0gKGludCAqKSBwYWxsb2MwKHNpemVvZihpbnQpICogbmRpbXMpOworCURh dHVtCSAgKip2YWx1ZXMgPSAoRGF0dW0gKiopIHBhbGxvYzBfYXJyYXkoRGF0dW0gKiwgbmRp bXMpOworCWludAkJICAgKmNvdW50cyA9IChpbnQgKikgcGFsbG9jMF9hcnJheShpbnQsIG5k aW1zKTsKIAogCS8qCiAJICogV2UnbGwgaW5jbHVkZSBzb21lIHJ1ZGltZW50YXJ5IGluZm9y bWF0aW9uIGFib3V0IHRoZSBhdHRyaWJ1dGUgdHlwZXMKQEAgLTY0NiwxMCArNjQ2LDEwIEBA IHN0YXRleHRfbWN2X3NlcmlhbGl6ZShNQ1ZMaXN0ICptY3ZsaXN0LCBWYWNBdHRyU3RhdHMg KipzdGF0cykKIAkgKiB0aGUgc3RhdGlzdGljcyBnZXRzIGRyb3BwZWQgYXV0b21hdGljYWxs eS4gIFdlIG5lZWQgdG8gc3RvcmUgdGhlIGluZm8KIAkgKiBhYm91dCB0aGUgYXJyYXlzIG9m IGRlZHVwbGljYXRlZCB2YWx1ZXMgYW55d2F5LgogCSAqLwotCWluZm8gPSAoRGltZW5zaW9u SW5mbyAqKSBwYWxsb2MwKHNpemVvZihEaW1lbnNpb25JbmZvKSAqIG5kaW1zKTsKKwlpbmZv ID0gKERpbWVuc2lvbkluZm8gKikgcGFsbG9jMF9hcnJheShEaW1lbnNpb25JbmZvLCBuZGlt cyk7CiAKIAkvKiBzb3J0IHN1cHBvcnQgZGF0YSBmb3IgYWxsIGF0dHJpYnV0ZXMgaW5jbHVk ZWQgaW4gdGhlIE1DViBsaXN0ICovCi0Jc3N1cCA9IChTb3J0U3VwcG9ydCkgcGFsbG9jMChz aXplb2YoU29ydFN1cHBvcnREYXRhKSAqIG5kaW1zKTsKKwlzc3VwID0gKFNvcnRTdXBwb3J0 KSBwYWxsb2MwX2FycmF5KFNvcnRTdXBwb3J0RGF0YSwgbmRpbXMpOwogCiAJLyogY29sbGVj dCBhbmQgZGVkdXBsaWNhdGUgdmFsdWVzIGZvciBlYWNoIGRpbWVuc2lvbiAoYXR0cmlidXRl KSAqLwogCWZvciAoZGltID0gMDsgZGltIDwgbmRpbXM7IGRpbSsrKQpAQCAtNjY4LDcgKzY2 OCw3IEBAIHN0YXRleHRfbWN2X3NlcmlhbGl6ZShNQ1ZMaXN0ICptY3ZsaXN0LCBWYWNBdHRy U3RhdHMgKipzdGF0cykKIAkJaW5mb1tkaW1dLnR5cGJ5dmFsID0gc3RhdHNbZGltXS0+YXR0 cnR5cGUtPnR5cGJ5dmFsOwogCiAJCS8qIGFsbG9jYXRlIHNwYWNlIGZvciB2YWx1ZXMgaW4g dGhlIGF0dHJpYnV0ZSBhbmQgY29sbGVjdCB0aGVtICovCi0JCXZhbHVlc1tkaW1dID0gKERh dHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIG1jdmxpc3QtPm5pdGVtcyk7CisJCXZh bHVlc1tkaW1dID0gKERhdHVtICopIHBhbGxvYzBfYXJyYXkoRGF0dW0sIG1jdmxpc3QtPm5p dGVtcyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IG1jdmxpc3QtPm5pdGVtczsgaSsrKQogCQl7 CkBAIC0xMTM0LDExICsxMTM0LDExIEBAIHN0YXRleHRfbWN2X2Rlc2VyaWFsaXplKGJ5dGVh ICpkYXRhKQogCSAqIG9yaWdpbmFsIHZhbHVlcyAoaXQgbWlnaHQgZ28gYXdheSkuCiAJICov CiAJZGF0YWxlbiA9IDA7CQkJCS8qIHNwYWNlIGZvciBieS1yZWYgZGF0YSAqLwotCW1hcCA9 IChEYXR1bSAqKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKERhdHVtICopKTsKKwltYXAgPSBw YWxsb2NfYXJyYXkoRGF0dW0gKiwgbmRpbXMpOwogCiAJZm9yIChkaW0gPSAwOyBkaW0gPCBu ZGltczsgZGltKyspCiAJewotCQltYXBbZGltXSA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9m KERhdHVtKSAqIGluZm9bZGltXS5udmFsdWVzKTsKKwkJbWFwW2RpbV0gPSBwYWxsb2NfYXJy YXkoRGF0dW0sIGluZm9bZGltXS5udmFsdWVzKTsKIAogCQkvKiBzcGFjZSBuZWVkZWQgZm9y IGEgY29weSBvZiBkYXRhIGZvciBieS1yZWYgdHlwZXMgKi8KIAkJZGF0YWxlbiArPSBpbmZv W2RpbV0ubmJ5dGVzX2FsaWduZWQ7CkBAIC0xNjA5LDcgKzE2MDksNyBAQCBtY3ZfZ2V0X21h dGNoX2JpdG1hcChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xhdXNlcywKIAlBc3NlcnQo bWN2bGlzdC0+bml0ZW1zID4gMCk7CiAJQXNzZXJ0KG1jdmxpc3QtPm5pdGVtcyA8PSBTVEFU U19NQ1ZMSVNUX01BWF9JVEVNUyk7CiAKLQltYXRjaGVzID0gcGFsbG9jKHNpemVvZihib29s KSAqIG1jdmxpc3QtPm5pdGVtcyk7CisJbWF0Y2hlcyA9IHBhbGxvY19hcnJheShib29sLCBt Y3ZsaXN0LT5uaXRlbXMpOwogCW1lbXNldChtYXRjaGVzLCAhaXNfb3IsIHNpemVvZihib29s KSAqIG1jdmxpc3QtPm5pdGVtcyk7CiAKIAkvKgpAQCAtMjEzNCw3ICsyMTM0LDcgQEAgbWN2 X2NsYXVzZV9zZWxlY3Rpdml0eV9vcihQbGFubmVySW5mbyAqcm9vdCwgU3RhdGlzdGljRXh0 SW5mbyAqc3RhdCwKIAogCS8qIGJ1aWxkIHRoZSBPUi1tYXRjaGVzIGJpdG1hcCwgaWYgbm90 IGJ1aWx0IGFscmVhZHkgKi8KIAlpZiAoKm9yX21hdGNoZXMgPT0gTlVMTCkKLQkJKm9yX21h dGNoZXMgPSBwYWxsb2MwKHNpemVvZihib29sKSAqIG1jdi0+bml0ZW1zKTsKKwkJKm9yX21h dGNoZXMgPSBwYWxsb2MwX2FycmF5KGJvb2wsIG1jdi0+bml0ZW1zKTsKIAogCS8qIGJ1aWxk IHRoZSBtYXRjaCBiaXRtYXAgZm9yIHRoZSBuZXcgY2xhdXNlICovCiAJbmV3X21hdGNoZXMg PSBtY3ZfZ2V0X21hdGNoX2JpdG1hcChyb290LCBsaXN0X21ha2UxKGNsYXVzZSksIHN0YXQt PmtleXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwppbmRleCAzNjZkNzBkMzhh MS4uNGU1MjAwNjVhZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9i dWZmaWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwpAQCAt MTE3LDcgKzExNyw3IEBAIHN0YXRpYyBGaWxlIE1ha2VOZXdGaWxlU2V0U2VnbWVudChCdWZG aWxlICpidWZmaWxlLCBpbnQgc2VnbWVudCk7CiBzdGF0aWMgQnVmRmlsZSAqCiBtYWtlQnVm RmlsZUNvbW1vbihpbnQgbmZpbGVzKQogewotCUJ1ZkZpbGUgICAgKmZpbGUgPSAoQnVmRmls ZSAqKSBwYWxsb2Moc2l6ZW9mKEJ1ZkZpbGUpKTsKKwlCdWZGaWxlICAgICpmaWxlID0gcGFs bG9jX29iamVjdChCdWZGaWxlKTsKIAogCWZpbGUtPm51bUZpbGVzID0gbmZpbGVzOwogCWZp bGUtPmlzSW50ZXJYYWN0ID0gZmFsc2U7CkBAIC0xNDAsNyArMTQwLDcgQEAgbWFrZUJ1ZkZp bGUoRmlsZSBmaXJzdGZpbGUpCiB7CiAJQnVmRmlsZSAgICAqZmlsZSA9IG1ha2VCdWZGaWxl Q29tbW9uKDEpOwogCi0JZmlsZS0+ZmlsZXMgPSAoRmlsZSAqKSBwYWxsb2Moc2l6ZW9mKEZp bGUpKTsKKwlmaWxlLT5maWxlcyA9IHBhbGxvY19vYmplY3QoRmlsZSk7CiAJZmlsZS0+Zmls ZXNbMF0gPSBmaXJzdGZpbGU7CiAJZmlsZS0+cmVhZE9ubHkgPSBmYWxzZTsKIAlmaWxlLT5m aWxlc2V0ID0gTlVMTDsKQEAgLTI3MSw3ICsyNzEsNyBAQCBCdWZGaWxlQ3JlYXRlRmlsZVNl dChGaWxlU2V0ICpmaWxlc2V0LCBjb25zdCBjaGFyICpuYW1lKQogCWZpbGUgPSBtYWtlQnVm RmlsZUNvbW1vbigxKTsKIAlmaWxlLT5maWxlc2V0ID0gZmlsZXNldDsKIAlmaWxlLT5uYW1l ID0gcHN0cmR1cChuYW1lKTsKLQlmaWxlLT5maWxlcyA9IChGaWxlICopIHBhbGxvYyhzaXpl b2YoRmlsZSkpOworCWZpbGUtPmZpbGVzID0gcGFsbG9jX29iamVjdChGaWxlKTsKIAlmaWxl LT5maWxlc1swXSA9IE1ha2VOZXdGaWxlU2V0U2VnbWVudChmaWxlLCAwKTsKIAlmaWxlLT5y ZWFkT25seSA9IGZhbHNlOwogCkBAIC0yOTcsNyArMjk3LDcgQEAgQnVmRmlsZU9wZW5GaWxl U2V0KEZpbGVTZXQgKmZpbGVzZXQsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLAogCUZp bGUJICAgKmZpbGVzOwogCWludAkJCW5maWxlcyA9IDA7CiAKLQlmaWxlcyA9IHBhbGxvYyhz aXplb2YoRmlsZSkgKiBjYXBhY2l0eSk7CisJZmlsZXMgPSBwYWxsb2NfYXJyYXkoRmlsZSwg Y2FwYWNpdHkpOwogCiAJLyoKIAkgKiBXZSBkb24ndCBrbm93IGhvdyBtYW55IHNlZ21lbnRz IHRoZXJlIGFyZSwgc28gd2UnbGwgcHJvYmUgdGhlCkBAIC0zMDksNyArMzA5LDcgQEAgQnVm RmlsZU9wZW5GaWxlU2V0KEZpbGVTZXQgKmZpbGVzZXQsIGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBtb2RlLAogCQlpZiAobmZpbGVzICsgMSA+IGNhcGFjaXR5KQogCQl7CiAJCQljYXBhY2l0 eSAqPSAyOwotCQkJZmlsZXMgPSByZXBhbGxvYyhmaWxlcywgc2l6ZW9mKEZpbGUpICogY2Fw YWNpdHkpOworCQkJZmlsZXMgPSByZXBhbGxvY19hcnJheShmaWxlcywgRmlsZSwgY2FwYWNp dHkpOwogCQl9CiAJCS8qIFRyeSB0byBsb2FkIGEgc2VnbWVudC4gKi8KIAkJRmlsZVNldFNl Z21lbnROYW1lKHNlZ21lbnRfbmFtZSwgbmFtZSwgbmZpbGVzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUuLmYzYTE2MDMyMDRlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtMTE2Miw3ICsxMTYyLDcgQEAg UHJvY0FycmF5QXBwbHlSZWNvdmVyeUluZm8oUnVubmluZ1RyYW5zYWN0aW9ucyBydW5uaW5n KQogCSAqIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGFycmF5IHRvIGF2b2lkIG1vZGlmeWluZyB0 aGUgYXJyYXkgcGFzc2VkIGFzCiAJICogYXJndW1lbnQuCiAJICovCi0JeGlkcyA9IHBhbGxv YyhzaXplb2YoVHJhbnNhY3Rpb25JZCkgKiAocnVubmluZy0+eGNudCArIHJ1bm5pbmctPnN1 YnhjbnQpKTsKKwl4aWRzID0gcGFsbG9jX2FycmF5KFRyYW5zYWN0aW9uSWQsIHJ1bm5pbmct PnhjbnQgKyBydW5uaW5nLT5zdWJ4Y250KTsKIAogCS8qCiAJICogQWRkIHRvIHRoZSB0ZW1w IGFycmF5IGFueSB4aWRzIHdoaWNoIGhhdmUgbm90IGFscmVhZHkgY29tcGxldGVkLgpAQCAt MzAxMiw4ICszMDEyLDcgQEAgR2V0VmlydHVhbFhJRHNEZWxheWluZ0Noa3B0KGludCAqbnZ4 aWRzLCBpbnQgdHlwZSkKIAlBc3NlcnQodHlwZSAhPSAwKTsKIAogCS8qIGFsbG9jYXRlIHdo YXQncyBjZXJ0YWlubHkgZW5vdWdoIHJlc3VsdCBzcGFjZSAqLwotCXZ4aWRzID0gKFZpcnR1 YWxUcmFuc2FjdGlvbklkICopCi0JCXBhbGxvYyhzaXplb2YoVmlydHVhbFRyYW5zYWN0aW9u SWQpICogYXJyYXlQLT5tYXhQcm9jcyk7CisJdnhpZHMgPSBwYWxsb2NfYXJyYXkoVmlydHVh bFRyYW5zYWN0aW9uSWQsIGFycmF5UC0+bWF4UHJvY3MpOwogCiAJTFdMb2NrQWNxdWlyZShQ cm9jQXJyYXlMb2NrLCBMV19TSEFSRUQpOwogCkBAIC0zMjkzLDggKzMyOTIsNyBAQCBHZXRD dXJyZW50VmlydHVhbFhJRHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4sIGJvb2wgZXhjbHVk ZVhtaW4wLAogCWludAkJCWluZGV4OwogCiAJLyogYWxsb2NhdGUgd2hhdCdzIGNlcnRhaW5s eSBlbm91Z2ggcmVzdWx0IHNwYWNlICovCi0JdnhpZHMgPSAoVmlydHVhbFRyYW5zYWN0aW9u SWQgKikKLQkJcGFsbG9jKHNpemVvZihWaXJ0dWFsVHJhbnNhY3Rpb25JZCkgKiBhcnJheVAt Pm1heFByb2NzKTsKKwl2eGlkcyA9IHBhbGxvY19hcnJheShWaXJ0dWFsVHJhbnNhY3Rpb25J ZCwgYXJyYXlQLT5tYXhQcm9jcyk7CiAKIAlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ss IExXX1NIQVJFRCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bV9tcS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXggMmM3OWE2 NDlmNDYuLjljODg4ZDNlYjc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1fbXEuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAt Mjg5LDcgKzI4OSw3IEBAIHNobV9tcV9nZXRfc2VuZGVyKHNobV9tcSAqbXEpCiBzaG1fbXFf aGFuZGxlICoKIHNobV9tcV9hdHRhY2goc2htX21xICptcSwgZHNtX3NlZ21lbnQgKnNlZywg QmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogewotCXNobV9tcV9oYW5kbGUgKm1x aCA9IHBhbGxvYyhzaXplb2Yoc2htX21xX2hhbmRsZSkpOworCXNobV9tcV9oYW5kbGUgKm1x aCA9IHBhbGxvY19vYmplY3Qoc2htX21xX2hhbmRsZSk7CiAKIAlBc3NlcnQobXEtPm1xX3Jl Y2VpdmVyID09IE15UHJvYyB8fCBtcS0+bXFfc2VuZGVyID09IE15UHJvYyk7CiAJbXFoLT5t cWhfcXVldWUgPSBtcTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IGVlMzQwOGRm MzAxLi43YjYzYzdkYzkwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC01OTks NyArNTk5LDcgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05f QVJHUykKIAlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CiAKIAltYXhfbm9kZXMg PSBwZ19udW1hX2dldF9tYXhfbm9kZSgpOwotCW5vZGVzID0gcGFsbG9jKHNpemVvZihTaXpl KSAqIChtYXhfbm9kZXMgKyAxKSk7CisJbm9kZXMgPSBwYWxsb2NfYXJyYXkoU2l6ZSwgbWF4 X25vZGVzICsgMSk7CiAKIAkvKgogCSAqIFNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbnMgY2Fu IHZhcnkgaW4gc2l6ZSBhbmQgbWF5IG5vdCBhbGlnbiB3aXRoIE9TCkBAIC02MjQsOCArNjI0 LDggQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05fQVJHUykK IAkgKiB0aGVtIHVzaW5nIG9ubHkgZnJhY3Rpb24gb2YgdGhlIHRvdGFsIHBhZ2VzLgogCSAq LwogCXNobV90b3RhbF9wYWdlX2NvdW50ID0gKFNobWVtU2VnSGRyLT50b3RhbHNpemUgLyBv c19wYWdlX3NpemUpICsgMTsKLQlwYWdlX3B0cnMgPSBwYWxsb2MwKHNpemVvZih2b2lkICop ICogc2htX3RvdGFsX3BhZ2VfY291bnQpOwotCXBhZ2VzX3N0YXR1cyA9IHBhbGxvYyhzaXpl b2YoaW50KSAqIHNobV90b3RhbF9wYWdlX2NvdW50KTsKKwlwYWdlX3B0cnMgPSBwYWxsb2Mw X2FycmF5KHZvaWQgKiwgc2htX3RvdGFsX3BhZ2VfY291bnQpOworCXBhZ2VzX3N0YXR1cyA9 IHBhbGxvY19hcnJheShpbnQsIHNobV90b3RhbF9wYWdlX2NvdW50KTsKIAogCWlmIChmaXJz dE51bWFUb3VjaCkKIAkJZWxvZyhERUJVRzEsICJOVU1BOiBwYWdlLWZhdWx0aW5nIHNoYXJl ZCBtZW1vcnkgc2VnbWVudHMgZm9yIHByb3BlciBOVU1BIHJlYWRvdXRzIik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2xvY2suYwppbmRleCA5Y2I3OGVhZDEwNS4uOTAxNWJhM2NhZjcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAtMzEwMCw5ICszMTAwLDcgQEAgR2V0TG9ja0Nv bmZsaWN0cyhjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50 ICpjb3VudHApCiAJCQkJCQkJCSAgIChNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0 cyArIDEpKTsKIAl9CiAJZWxzZQotCQl2eGlkcyA9IChWaXJ0dWFsVHJhbnNhY3Rpb25JZCAq KQotCQkJcGFsbG9jMChzaXplb2YoVmlydHVhbFRyYW5zYWN0aW9uSWQpICoKLQkJCQkJKE1h eEJhY2tlbmRzICsgbWF4X3ByZXBhcmVkX3hhY3RzICsgMSkpOworCQl2eGlkcyA9IHBhbGxv YzBfYXJyYXkoVmlydHVhbFRyYW5zYWN0aW9uSWQsIChNYXhCYWNrZW5kcyArIG1heF9wcmVw YXJlZF94YWN0cyArIDEpKTsKIAogCS8qIENvbXB1dGUgaGFzaCBjb2RlIGFuZCBwYXJ0aXRp b24gbG9jaywgYW5kIGxvb2sgdXAgY29uZmxpY3RpbmcgbW9kZXMuICovCiAJaGFzaGNvZGUg PSBMb2NrVGFnSGFzaENvZGUobG9ja3RhZyk7CkBAIC0zODAxLDEyICszNzk5LDEyIEBAIEdl dExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJZWw7CiAJaW50CQkJaTsKIAotCWRhdGEg PSAoTG9ja0RhdGEgKikgcGFsbG9jKHNpemVvZihMb2NrRGF0YSkpOworCWRhdGEgPSBwYWxs b2Nfb2JqZWN0KExvY2tEYXRhKTsKIAogCS8qIEd1ZXNzIGhvdyBtdWNoIHNwYWNlIHdlJ2xs IG5lZWQuICovCiAJZWxzID0gTWF4QmFja2VuZHM7CiAJZWwgPSAwOwotCWRhdGEtPmxvY2tz ID0gKExvY2tJbnN0YW5jZURhdGEgKikgcGFsbG9jKHNpemVvZihMb2NrSW5zdGFuY2VEYXRh KSAqIGVscyk7CisJZGF0YS0+bG9ja3MgPSBwYWxsb2NfYXJyYXkoTG9ja0luc3RhbmNlRGF0 YSwgZWxzKTsKIAogCS8qCiAJICogRmlyc3QsIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcGVy LWJhY2tlbmQgZmFzdC1wYXRoIGFycmF5cywgbG9ja2luZwpAQCAtNDAwMSw3ICszOTk5LDcg QEAgR2V0QmxvY2tlclN0YXR1c0RhdGEoaW50IGJsb2NrZWRfcGlkKQogCVBHUFJPQwkgICAq cHJvYzsKIAlpbnQJCQlpOwogCi0JZGF0YSA9IChCbG9ja2VkUHJvY3NEYXRhICopIHBhbGxv YyhzaXplb2YoQmxvY2tlZFByb2NzRGF0YSkpOworCWRhdGEgPSBwYWxsb2Nfb2JqZWN0KEJs b2NrZWRQcm9jc0RhdGEpOwogCiAJLyoKIAkgKiBHdWVzcyBob3cgbXVjaCBzcGFjZSB3ZSds bCBuZWVkLCBhbmQgcHJlYWxsb2NhdGUuICBNb3N0IG9mIHRoZSB0aW1lCkBAIC00MDExLDkg KzQwMDksOSBAQCBHZXRCbG9ja2VyU3RhdHVzRGF0YShpbnQgYmxvY2tlZF9waWQpCiAJICov CiAJZGF0YS0+bnByb2NzID0gZGF0YS0+bmxvY2tzID0gZGF0YS0+bnBpZHMgPSAwOwogCWRh dGEtPm1heHByb2NzID0gZGF0YS0+bWF4bG9ja3MgPSBkYXRhLT5tYXhwaWRzID0gTWF4QmFj a2VuZHM7Ci0JZGF0YS0+cHJvY3MgPSAoQmxvY2tlZFByb2NEYXRhICopIHBhbGxvYyhzaXpl b2YoQmxvY2tlZFByb2NEYXRhKSAqIGRhdGEtPm1heHByb2NzKTsKLQlkYXRhLT5sb2NrcyA9 IChMb2NrSW5zdGFuY2VEYXRhICopIHBhbGxvYyhzaXplb2YoTG9ja0luc3RhbmNlRGF0YSkg KiBkYXRhLT5tYXhsb2Nrcyk7Ci0JZGF0YS0+d2FpdGVyX3BpZHMgPSAoaW50ICopIHBhbGxv YyhzaXplb2YoaW50KSAqIGRhdGEtPm1heHBpZHMpOworCWRhdGEtPnByb2NzID0gcGFsbG9j X2FycmF5KEJsb2NrZWRQcm9jRGF0YSwgZGF0YS0+bWF4cHJvY3MpOworCWRhdGEtPmxvY2tz ID0gcGFsbG9jX2FycmF5KExvY2tJbnN0YW5jZURhdGEsIGRhdGEtPm1heGxvY2tzKTsKKwlk YXRhLT53YWl0ZXJfcGlkcyA9IHBhbGxvY19hcnJheShpbnQsIGRhdGEtPm1heHBpZHMpOwog CiAJLyoKIAkgKiBJbiBvcmRlciB0byBzZWFyY2ggdGhlIFByb2NBcnJheSBmb3IgYmxvY2tl ZF9waWQgYW5kIGFzc3VtZSB0aGF0IHRoYXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYwppbmRleCBmMTJmOGY3N2FhZC4uMTQ5YzY5YTE4NzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIEdldFByZWRp Y2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAJSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7CiAJ UFJFRElDQVRFTE9DSyAqcHJlZGxvY2s7CiAKLQlkYXRhID0gKFByZWRpY2F0ZUxvY2tEYXRh ICopIHBhbGxvYyhzaXplb2YoUHJlZGljYXRlTG9ja0RhdGEpKTsKKwlkYXRhID0gcGFsbG9j X29iamVjdChQcmVkaWNhdGVMb2NrRGF0YSk7CiAKIAkvKgogCSAqIFRvIGVuc3VyZSBjb25z aXN0ZW5jeSwgdGFrZSBzaW11bHRhbmVvdXMgbG9ja3Mgb24gYWxsIHBhcnRpdGlvbiBsb2Nr cwpAQCAtMTQ2NCwxMCArMTQ2NCw4IEBAIEdldFByZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZv aWQpCiAJLyogR2V0IG51bWJlciBvZiBsb2NrcyBhbmQgYWxsb2NhdGUgYXBwcm9wcmlhdGVs eS1zaXplZCBhcnJheXMuICovCiAJZWxzID0gaGFzaF9nZXRfbnVtX2VudHJpZXMoUHJlZGlj YXRlTG9ja0hhc2gpOwogCWRhdGEtPm5lbGVtZW50cyA9IGVsczsKLQlkYXRhLT5sb2NrdGFn cyA9IChQUkVESUNBVEVMT0NLVEFSR0VUVEFHICopCi0JCXBhbGxvYyhzaXplb2YoUFJFRElD QVRFTE9DS1RBUkdFVFRBRykgKiBlbHMpOwotCWRhdGEtPnhhY3RzID0gKFNFUklBTElaQUJM RVhBQ1QgKikKLQkJcGFsbG9jKHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSAqIGVscyk7CisJ ZGF0YS0+bG9ja3RhZ3MgPSBwYWxsb2NfYXJyYXkoUFJFRElDQVRFTE9DS1RBUkdFVFRBRywg ZWxzKTsKKwlkYXRhLT54YWN0cyA9IHBhbGxvY19hcnJheShTRVJJQUxJWkFCTEVYQUNULCBl bHMpOwogCiAKIAkvKiBTY2FuIHRocm91Z2ggUHJlZGljYXRlTG9ja0hhc2ggYW5kIGNvcHkg Y29udGVudHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9idWxr X3dyaXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3IvYnVsa193cml0ZS5jCmluZGV4 IGI5NThiZTE1NzE2Li5kNDNjMzBkYTQ4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zbWdyL2J1bGtfd3JpdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Iv YnVsa193cml0ZS5jCkBAIC0xMDEsNyArMTAxLDcgQEAgc21ncl9idWxrX3N0YXJ0X3NtZ3Io U01nclJlbGF0aW9uIHNtZ3IsIEZvcmtOdW1iZXIgZm9ya251bSwgYm9vbCB1c2Vfd2FsKQog ewogCUJ1bGtXcml0ZVN0YXRlICpzdGF0ZTsKIAotCXN0YXRlID0gcGFsbG9jKHNpemVvZihC dWxrV3JpdGVTdGF0ZSkpOworCXN0YXRlID0gcGFsbG9jX29iamVjdChCdWxrV3JpdGVTdGF0 ZSk7CiAJc3RhdGUtPnNtZ3IgPSBzbWdyOwogCXN0YXRlLT5mb3JrbnVtID0gZm9ya251bTsK IAlzdGF0ZS0+dXNlX3dhbCA9IHVzZV93YWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL3NtZ3IvbWQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCmluZGV4 IGUzZjMzNWE4MzQwLi43MWJjZGViNjYwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zbWdyL21kLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMKQEAg LTE1OTksNyArMTU5OSw3IEBAIERyb3BSZWxhdGlvbkZpbGVzKFJlbEZpbGVMb2NhdG9yICpk ZWxyZWxzLCBpbnQgbmRlbHJlbHMsIGJvb2wgaXNSZWRvKQogCVNNZ3JSZWxhdGlvbiAqc3Jl bHM7CiAJaW50CQkJaTsKIAotCXNyZWxzID0gcGFsbG9jKHNpemVvZihTTWdyUmVsYXRpb24p ICogbmRlbHJlbHMpOworCXNyZWxzID0gcGFsbG9jX2FycmF5KFNNZ3JSZWxhdGlvbiwgbmRl bHJlbHMpOwogCWZvciAoaSA9IDA7IGkgPCBuZGVscmVsczsgaSsrKQogCXsKIAkJU01nclJl bGF0aW9uIHNyZWwgPSBzbWdyb3BlbihkZWxyZWxzW2ldLCBJTlZBTElEX1BST0NfTlVNQkVS KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCmluZGV4IGJjZTM3YTM2ZDUxLi5mOTA2NmFi OGM0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC01NjEsNyArNTYxLDcgQEAg c21ncmRvdW5saW5rYWxsKFNNZ3JSZWxhdGlvbiAqcmVscywgaW50IG5yZWxzLCBib29sIGlz UmVkbykKIAkgKiBjcmVhdGUgYW4gYXJyYXkgd2hpY2ggY29udGFpbnMgYWxsIHJlbGF0aW9u cyB0byBiZSBkcm9wcGVkLCBhbmQgY2xvc2UKIAkgKiBlYWNoIHJlbGF0aW9uJ3MgZm9ya3Mg YXQgdGhlIHNtZ3IgbGV2ZWwgd2hpbGUgYXQgaXQKIAkgKi8KLQlybG9jYXRvcnMgPSBwYWxs b2Moc2l6ZW9mKFJlbEZpbGVMb2NhdG9yQmFja2VuZCkgKiBucmVscyk7CisJcmxvY2F0b3Jz ID0gcGFsbG9jX2FycmF5KFJlbEZpbGVMb2NhdG9yQmFja2VuZCwgbnJlbHMpOwogCWZvciAo aSA9IDA7IGkgPCBucmVsczsgaSsrKQogCXsKIAkJUmVsRmlsZUxvY2F0b3JCYWNrZW5kIHJs b2NhdG9yID0gcmVsc1tpXS0+c21ncl9ybG9jYXRvcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3lu Yy5jCmluZGV4IGZjMTZkYjkwMTMzLi45ZDRjNWVhZTVmNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jCkBAIC01MzEsNyArNTMxLDcgQEAgUmVtZW1iZXJTeW5jUmVxdWVzdChjb25z dCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSkKIAkJTWVtb3J5Q29udGV4 dCBvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGVuZGluZ09wc0N4dCk7CiAJCVBl bmRpbmdVbmxpbmtFbnRyeSAqZW50cnk7CiAKLQkJZW50cnkgPSBwYWxsb2Moc2l6ZW9mKFBl bmRpbmdVbmxpbmtFbnRyeSkpOworCQllbnRyeSA9IHBhbGxvY19vYmplY3QoUGVuZGluZ1Vu bGlua0VudHJ5KTsKIAkJZW50cnktPnRhZyA9ICpmdGFnOwogCQllbnRyeS0+Y3ljbGVfY3Ry ID0gY2hlY2twb2ludF9jeWNsZV9jdHI7CiAJCWVudHJ5LT5jYW5jZWxlZCA9IGZhbHNlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvcHF1ZXJ5LmMKaW5kZXggZmRlNzhjNTUxNjAuLjZkZDY0NzI2ZjA2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKQEAgLTc0LDcgKzc0LDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKIAkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQlpbnQg aW5zdHJ1bWVudF9vcHRpb25zKQogewotCVF1ZXJ5RGVzYyAgKnFkID0gKFF1ZXJ5RGVzYyAq KSBwYWxsb2Moc2l6ZW9mKFF1ZXJ5RGVzYykpOworCVF1ZXJ5RGVzYyAgKnFkID0gcGFsbG9j X29iamVjdChRdWVyeURlc2MpOwogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5j b21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5l ZHN0bXQ7CS8qIHBsYW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGlj dC5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0LmMKaW5kZXggZWI5Njg4NTg2ODMuLmQw NzI1MTA4YjgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3QuYworKysg Yi9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3QuYwpAQCAtNjEsNyArNjEsNyBAQCB0c19sZXhp emUoUEdfRlVOQ1RJT05fQVJHUykKIAlwdHIgPSByZXM7CiAJd2hpbGUgKHB0ci0+bGV4ZW1l KQogCQlwdHIrKzsKLQlkYSA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIChw dHIgLSByZXMpKTsKKwlkYSA9IChEYXR1bSAqKSBwYWxsb2NfYXJyYXkoRGF0dW0sIHB0ciAt IHJlcyk7IAogCXB0ciA9IHJlczsKIAl3aGlsZSAocHRyLT5sZXhlbWUpCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X2lzcGVsbC5jIGIvc3JjL2JhY2tlbmQv dHNlYXJjaC9kaWN0X2lzcGVsbC5jCmluZGV4IGRlYmZiZjk1NmNjLi4xNGU1ZGE0ODZlMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC9kaWN0X2lzcGVsbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvZGljdF9pc3BlbGwuYwpAQCAtMzcsNyArMzcsNyBAQCBkaXNw ZWxsX2luaXQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlzdG9wbG9hZGVkID0gZmFsc2U7CiAJ TGlzdENlbGwgICAqbDsKIAotCWQgPSAoRGljdElTcGVsbCAqKSBwYWxsb2MwKHNpemVvZihE aWN0SVNwZWxsKSk7CisJZCA9IHBhbGxvYzBfb2JqZWN0KERpY3RJU3BlbGwpOwogCiAJTklT dGFydEJ1aWxkKCYoZC0+b2JqKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFy Y2gvZGljdF9zaW1wbGUuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF9zaW1wbGUuYwpp bmRleCAyYzk3MmZjMDUzOC4uZjY2MzlhYzdjOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3RzZWFyY2gvZGljdF9zaW1wbGUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3Rf c2ltcGxlLmMKQEAgLTMxLDcgKzMxLDcgQEAgRGF0dW0KIGRzaW1wbGVfaW5pdChQR19GVU5D VElPTl9BUkdTKQogewogCUxpc3QJICAgKmRpY3RvcHRpb25zID0gKExpc3QgKikgUEdfR0VU QVJHX1BPSU5URVIoMCk7Ci0JRGljdFNpbXBsZSAqZCA9IChEaWN0U2ltcGxlICopIHBhbGxv YzAoc2l6ZW9mKERpY3RTaW1wbGUpKTsKKwlEaWN0U2ltcGxlICpkID0gcGFsbG9jMF9vYmpl Y3QoRGljdFNpbXBsZSk7CiAJYm9vbAkJc3RvcGxvYWRlZCA9IGZhbHNlLAogCQkJCWFjY2Vw dGxvYWRlZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmw7CkBAIC04NywxMyArODcsMTMgQEAg ZHNpbXBsZV9sZXhpemUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCS8qIHJlamVjdCBhcyBz dG9wd29yZCAqLwogCQlwZnJlZSh0eHQpOwotCQlyZXMgPSBwYWxsb2MwKHNpemVvZihUU0xl eGVtZSkgKiAyKTsKKwkJcmVzID0gcGFsbG9jMF9hcnJheShUU0xleGVtZSwgMik7CiAJCVBH X1JFVFVSTl9QT0lOVEVSKHJlcyk7CiAJfQogCWVsc2UgaWYgKGQtPmFjY2VwdCkKIAl7CiAJ CS8qIGFjY2VwdCAqLwotCQlyZXMgPSBwYWxsb2MwKHNpemVvZihUU0xleGVtZSkgKiAyKTsK KwkJcmVzID0gcGFsbG9jMF9hcnJheShUU0xleGVtZSwgMik7CiAJCXJlc1swXS5sZXhlbWUg PSB0eHQ7CiAJCVBHX1JFVFVSTl9QT0lOVEVSKHJlcyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdHNlYXJjaC9kaWN0X3N5bm9ueW0uYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gv ZGljdF9zeW5vbnltLmMKaW5kZXggYzI3NzNlYjAxYWQuLmUwNzY2NjBiNWVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3Rfc3lub255bS5jCisrKyBiL3NyYy9iYWNr ZW5kL3RzZWFyY2gvZGljdF9zeW5vbnltLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBkc3lub255 bV9pbml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVycm1zZygiY291bGQgbm90IG9wZW4g c3lub255bSBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJZmlsZW5hbWUpKSk7CiAKLQlkID0g KERpY3RTeW4gKikgcGFsbG9jMChzaXplb2YoRGljdFN5bikpOworCWQgPSBwYWxsb2MwX29i amVjdChEaWN0U3luKTsKIAogCXdoaWxlICgobGluZSA9IHRzZWFyY2hfcmVhZGxpbmUoJnRy c3QpKSAhPSBOVUxMKQogCXsKQEAgLTE2OSwxMiArMTY5LDEyIEBAIGRzeW5vbnltX2luaXQo UEdfRlVOQ1RJT05fQVJHUykKIAkJCWlmIChkLT5sZW4gPT0gMCkKIAkJCXsKIAkJCQlkLT5s ZW4gPSA2NDsKLQkJCQlkLT5zeW4gPSAoU3luICopIHBhbGxvYyhzaXplb2YoU3luKSAqIGQt Pmxlbik7CisJCQkJZC0+c3luID0gcGFsbG9jX2FycmF5KFN5biwgZC0+bGVuKTsKIAkJCX0K IAkJCWVsc2UKIAkJCXsKIAkJCQlkLT5sZW4gKj0gMjsKLQkJCQlkLT5zeW4gPSAoU3luICop IHJlcGFsbG9jKGQtPnN5biwgc2l6ZW9mKFN5bikgKiBkLT5sZW4pOworCQkJCWQtPnN5biA9 IHJlcGFsbG9jX2FycmF5KGQtPnN5biwgU3luLCBkLT5sZW4pOwogCQkJfQogCQl9CiAKQEAg LTIzNiw3ICsyMzYsNyBAQCBkc3lub255bV9sZXhpemUoUEdfRlVOQ1RJT05fQVJHUykKIAlp ZiAoIWZvdW5kKQogCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAotCXJlcyA9IHBhbGxv YzAoc2l6ZW9mKFRTTGV4ZW1lKSAqIDIpOworCXJlcyA9IHBhbGxvYzBfYXJyYXkoVFNMZXhl bWUsIDIpOwogCXJlc1swXS5sZXhlbWUgPSBwbnN0cmR1cChmb3VuZC0+b3V0LCBmb3VuZC0+ b3V0bGVuKTsKIAlyZXNbMF0uZmxhZ3MgPSBmb3VuZC0+ZmxhZ3M7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF90aGVzYXVydXMuYyBiL3NyYy9iYWNrZW5kL3Rz ZWFyY2gvZGljdF90aGVzYXVydXMuYwppbmRleCAxZTZiYmRlMWNhNy4uNmEzZDMzNjk4NTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvZGljdF90aGVzYXVydXMuYworKysg Yi9zcmMvYmFja2VuZC90c2VhcmNoL2RpY3RfdGhlc2F1cnVzLmMKQEAgLTc4LDEyICs3OCwx MiBAQCBuZXdMZXhlbWUoRGljdFRoZXNhdXJ1cyAqZCwgY2hhciAqYiwgY2hhciAqZSwgdWlu dDMyIGlkc3Vic3QsIHVpbnQxNiBwb3NpbnN1YnN0KQogCQlpZiAoZC0+bnR3cmRzID09IDAp CiAJCXsKIAkJCWQtPm50d3JkcyA9IDE2OwotCQkJZC0+d3JkcyA9IChUaGVMZXhlbWUgKikg cGFsbG9jKHNpemVvZihUaGVMZXhlbWUpICogZC0+bnR3cmRzKTsKKwkJCWQtPndyZHMgPSBw YWxsb2NfYXJyYXkoVGhlTGV4ZW1lLCBkLT5udHdyZHMpOwogCQl9CiAJCWVsc2UKIAkJewog CQkJZC0+bnR3cmRzICo9IDI7Ci0JCQlkLT53cmRzID0gKFRoZUxleGVtZSAqKSByZXBhbGxv YyhkLT53cmRzLCBzaXplb2YoVGhlTGV4ZW1lKSAqIGQtPm50d3Jkcyk7CisJCQlkLT53cmRz ID0gcmVwYWxsb2NfYXJyYXkoZC0+d3JkcywgVGhlTGV4ZW1lLCBkLT5udHdyZHMpOwogCQl9 CiAJfQogCkBAIC05NSw3ICs5NSw3IEBAIG5ld0xleGVtZShEaWN0VGhlc2F1cnVzICpkLCBj aGFyICpiLCBjaGFyICplLCB1aW50MzIgaWRzdWJzdCwgdWludDE2IHBvc2luc3Vic3QpCiAJ bWVtY3B5KHB0ci0+bGV4ZW1lLCBiLCBlIC0gYik7CiAJcHRyLT5sZXhlbWVbZSAtIGJdID0g J1wwJzsKIAotCXB0ci0+ZW50cmllcyA9IChMZXhlbWVJbmZvICopIHBhbGxvYyhzaXplb2Yo TGV4ZW1lSW5mbykpOworCXB0ci0+ZW50cmllcyA9IHBhbGxvY19vYmplY3QoTGV4ZW1lSW5m byk7CiAKIAlwdHItPmVudHJpZXMtPm5leHRlbnRyeSA9IE5VTEw7CiAJcHRyLT5lbnRyaWVz LT5pZHN1YnN0ID0gaWRzdWJzdDsKQEAgLTExOCwxMiArMTE4LDEyIEBAIGFkZFdyZChEaWN0 VGhlc2F1cnVzICpkLCBjaGFyICpiLCBjaGFyICplLCB1aW50MzIgaWRzdWJzdCwgdWludDE2 IG53cmQsIHVpbnQxNiBwCiAJCQlpZiAoZC0+bnN1YnN0ID09IDApCiAJCQl7CiAJCQkJZC0+ bnN1YnN0ID0gMTY7Ci0JCQkJZC0+c3Vic3QgPSAoVGhlU3Vic3RpdHV0ZSAqKSBwYWxsb2Mo c2l6ZW9mKFRoZVN1YnN0aXR1dGUpICogZC0+bnN1YnN0KTsKKwkJCQlkLT5zdWJzdCA9IHBh bGxvY19hcnJheShUaGVTdWJzdGl0dXRlLCBkLT5uc3Vic3QpOwogCQkJfQogCQkJZWxzZQog CQkJewogCQkJCWQtPm5zdWJzdCAqPSAyOwotCQkJCWQtPnN1YnN0ID0gKFRoZVN1YnN0aXR1 dGUgKikgcmVwYWxsb2MoZC0+c3Vic3QsIHNpemVvZihUaGVTdWJzdGl0dXRlKSAqIGQtPm5z dWJzdCk7CisJCQkJZC0+c3Vic3QgPSByZXBhbGxvY19hcnJheShkLT5zdWJzdCwgVGhlU3Vi c3RpdHV0ZSwgZC0+bnN1YnN0KTsKIAkJCX0KIAkJfQogCX0KQEAgLTEzNywxMiArMTM3LDEy IEBAIGFkZFdyZChEaWN0VGhlc2F1cnVzICpkLCBjaGFyICpiLCBjaGFyICplLCB1aW50MzIg aWRzdWJzdCwgdWludDE2IG53cmQsIHVpbnQxNiBwCiAJCWlmIChudHJlcyA9PSAwKQogCQl7 CiAJCQludHJlcyA9IDI7Ci0JCQlwdHItPnJlcyA9IChUU0xleGVtZSAqKSBwYWxsb2Moc2l6 ZW9mKFRTTGV4ZW1lKSAqIG50cmVzKTsKKwkJCXB0ci0+cmVzID0gcGFsbG9jX2FycmF5KFRT TGV4ZW1lLCBudHJlcyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQludHJlcyAqPSAyOwotCQkJ cHRyLT5yZXMgPSAoVFNMZXhlbWUgKikgcmVwYWxsb2MocHRyLT5yZXMsIHNpemVvZihUU0xl eGVtZSkgKiBudHJlcyk7CisJCQlwdHItPnJlcyA9IHJlcGFsbG9jX2FycmF5KHB0ci0+cmVz LCBUU0xleGVtZSwgbnRyZXMpOwogCQl9CiAJfQogCkBAIC0zMDksNyArMzA5LDcgQEAgYWRk Q29tcGlsZWRMZXhlbWUoVGhlTGV4ZW1lICpuZXd3cmRzLCBpbnQgKm5udywgaW50ICp0bm0s IFRTTGV4ZW1lICpsZXhlbWUsIExleGUKIAkJbmV3d3JkcyA9IChUaGVMZXhlbWUgKikgcmVw YWxsb2MobmV3d3Jkcywgc2l6ZW9mKFRoZUxleGVtZSkgKiAqdG5tKTsKIAl9CiAKLQluZXd3 cmRzWypubnddLmVudHJpZXMgPSAoTGV4ZW1lSW5mbyAqKSBwYWxsb2Moc2l6ZW9mKExleGVt ZUluZm8pKTsKKwluZXd3cmRzWypubnddLmVudHJpZXMgPSBwYWxsb2Nfb2JqZWN0KExleGVt ZUluZm8pOwogCiAJaWYgKGxleGVtZSAmJiBsZXhlbWUtPmxleGVtZSkKIAl7CkBAIC0zOTQs NyArMzk0LDcgQEAgY29tcGlsZVRoZUxleGVtZShEaWN0VGhlc2F1cnVzICpkKQogCWludAkJ CWksCiAJCQkJbm53ID0gMCwKIAkJCQl0bm0gPSAxNjsKLQlUaGVMZXhlbWUgICpuZXd3cmRz ID0gKFRoZUxleGVtZSAqKSBwYWxsb2Moc2l6ZW9mKFRoZUxleGVtZSkgKiB0bm0pLAorCVRo ZUxleGVtZSAgKm5ld3dyZHMgPSBwYWxsb2NfYXJyYXkoVGhlTGV4ZW1lLCB0bm0pLAogCQkJ ICAgKnB0cndyZHM7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZC0+bndyZHM7IGkrKykKQEAgLTUx MSw3ICs1MTEsNyBAQCBjb21waWxlVGhlU3Vic3RpdHV0ZShEaWN0VGhlc2F1cnVzICpkKQog CQkJCSAgICppbnB0cjsKIAkJaW50CQkJbiA9IDI7CiAKLQkJb3V0cHRyID0gZC0+c3Vic3Rb aV0ucmVzID0gKFRTTGV4ZW1lICopIHBhbGxvYyhzaXplb2YoVFNMZXhlbWUpICogbik7CisJ CW91dHB0ciA9IGQtPnN1YnN0W2ldLnJlcyA9IHBhbGxvY19hcnJheShUU0xleGVtZSwgbik7 CiAJCW91dHB0ci0+bGV4ZW1lID0gTlVMTDsKIAkJaW5wdHIgPSByZW07CiAKQEAgLTYwMyw3 ICs2MDMsNyBAQCB0aGVzYXVydXNfaW5pdChQR19GVU5DVElPTl9BUkdTKQogCUxpc3QJICAg Km5hbWVsaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQlkID0gKERpY3RUaGVzYXVydXMgKikg cGFsbG9jMChzaXplb2YoRGljdFRoZXNhdXJ1cykpOworCWQgPSBwYWxsb2MwX29iamVjdChE aWN0VGhlc2F1cnVzKTsKIAogCWZvcmVhY2gobCwgZGljdG9wdGlvbnMpCiAJewpAQCAtNzU2 LDcgKzc1Niw3IEBAIGNvcHlUU0xleGVtZShUaGVTdWJzdGl0dXRlICp0cykKIAlUU0xleGVt ZSAgICpyZXM7CiAJdWludDE2CQlpOwogCi0JcmVzID0gKFRTTGV4ZW1lICopIHBhbGxvYyhz aXplb2YoVFNMZXhlbWUpICogKHRzLT5yZXNsZW4gKyAxKSk7CisJcmVzID0gcGFsbG9jX2Fy cmF5KFRTTGV4ZW1lLCB0cy0+cmVzbGVuICsgMSk7CiAJZm9yIChpID0gMDsgaSA8IHRzLT5y ZXNsZW47IGkrKykKIAl7CiAJCXJlc1tpXSA9IHRzLT5yZXNbaV07CkBAIC04MzQsNyArODM0 LDcgQEAgdGhlc2F1cnVzX2xleGl6ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCXB0cisrOwog CQkJfQogCi0JCQlpbmZvcyA9IChMZXhlbWVJbmZvICoqKSBwYWxsb2Moc2l6ZW9mKExleGVt ZUluZm8gKikgKiBubGV4KTsKKwkJCWluZm9zID0gcGFsbG9jX2FycmF5KExleGVtZUluZm8g KiwgbmxleCk7CiAJCQlmb3IgKGkgPSAwOyBpIDwgbmxleDsgaSsrKQogCQkJCWlmICgoaW5m b3NbaV0gPSBmaW5kVGhlTGV4ZW1lKGQsIGJhc2V2YXJbaV0ubGV4ZW1lKSkgPT0gTlVMTCkK IAkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMg Yi9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMKaW5kZXggMTQ2ODAxODg1ZDcuLjc5YzMz M2U2OTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMKKysrIGIv c3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jCkBAIC02OTEsNyArNjkxLDcgQEAgTklBZGRB ZmZpeChJc3BlbGxEaWN0ICpDb25mLCBjb25zdCBjaGFyICpmbGFnLCBjaGFyIGZsYWdmbGFn cywgY29uc3QgY2hhciAqbWFzaywKIAkJZWxzZQogCQl7CiAJCQlDb25mLT5tYWZmaXhlcyA9 IDE2OwotCQkJQ29uZi0+QWZmaXggPSAoQUZGSVggKikgcGFsbG9jKENvbmYtPm1hZmZpeGVz ICogc2l6ZW9mKEFGRklYKSk7CisJCQlDb25mLT5BZmZpeCA9IHBhbGxvY19hcnJheShBRkZJ WCwgQ29uZi0+bWFmZml4ZXMpOwogCQl9CiAJfQogCkBAIC03MzcsNyArNzM3LDcgQEAgTklB ZGRBZmZpeChJc3BlbGxEaWN0ICpDb25mLCBjb25zdCBjaGFyICpmbGFnLCBjaGFyIGZsYWdm bGFncywgY29uc3QgY2hhciAqbWFzaywKIAkJICogYWxsb2NhdGVkIGluIHRoZSBkaWN0aW9u YXJ5J3MgbWVtb3J5IGNvbnRleHQsIGFuZCB3aWxsIGJlIGZyZWVkCiAJCSAqIGF1dG9tYXRp Y2FsbHkgd2hlbiBpdCBpcyBkZXN0cm95ZWQuCiAJCSAqLwotCQlBZmZpeC0+cmVnLnByZWdl eCA9IHBhbGxvYyhzaXplb2YocmVnZXhfdCkpOworCQlBZmZpeC0+cmVnLnByZWdleCA9IHBh bGxvY19vYmplY3QocmVnZXhfdCk7CiAJCWVyciA9IHBnX3JlZ2NvbXAoQWZmaXgtPnJlZy5w cmVnZXgsIHdtYXNrLCB3bWFza2xlbiwKIAkJCQkJCSBSRUdfQURWQU5DRUQgfCBSRUdfTk9T VUIsCiAJCQkJCQkgREVGQVVMVF9DT0xMQVRJT05fT0lEKTsKQEAgLTEzMjcsNyArMTMyNyw3 IEBAIE5JSW1wb3J0T09BZmZpeGVzKElzcGVsbERpY3QgKkNvbmYsIGNvbnN0IGNoYXIgKmZp bGVuYW1lKQogCQkJCS8qIEFsc28gcmVzZXJ2ZSBwbGFjZSBmb3IgZW1wdHkgZmxhZyBzZXQg Ki8KIAkJCQluYWZmaXgrKzsKIAotCQkJCUNvbmYtPkFmZml4RGF0YSA9IChjb25zdCBjaGFy ICoqKSBwYWxsb2MwKG5hZmZpeCAqIHNpemVvZihjaGFyICopKTsKKwkJCQlDb25mLT5BZmZp eERhdGEgPSAoY29uc3QgY2hhciAqKikgcGFsbG9jMF9hcnJheShjaGFyICosIG5hZmZpeCk7 CiAJCQkJQ29uZi0+bGVuQWZmaXhEYXRhID0gQ29uZi0+bkFmZml4RGF0YSA9IG5hZmZpeDsK IAogCQkJCS8qIEFkZCBlbXB0eSBmbGFnIHNldCBpbnRvIEFmZml4RGF0YSAqLwpAQCAtMTc5 NCw3ICsxNzk0LDcgQEAgTklTb3J0RGljdGlvbmFyeShJc3BlbGxEaWN0ICpDb25mKQogCQkg KiBkaWN0aW9uYXJ5LiBSZXBsYWNlIHRleHR1YWwgZmxhZy1maWVsZCBvZiBDb25mLT5TcGVs bCBlbnRyaWVzIHdpdGgKIAkJICogaW5kZXhlcyBpbnRvIENvbmYtPkFmZml4RGF0YSBhcnJh eS4KIAkJICovCi0JCUNvbmYtPkFmZml4RGF0YSA9IChjb25zdCBjaGFyICoqKSBwYWxsb2Mw KG5hZmZpeCAqIHNpemVvZihjb25zdCBjaGFyICopKTsKKwkJQ29uZi0+QWZmaXhEYXRhID0g KGNvbnN0IGNoYXIgKiopIHBhbGxvYzBfYXJyYXkoY29uc3QgY2hhciAqLCBuYWZmaXgpOwog CiAJCWN1cmFmZml4ID0gLTE7CiAJCWZvciAoaSA9IDA7IGkgPCBDb25mLT5uc3BlbGw7IGkr KykKQEAgLTE5OTEsNyArMTk5MSw3IEBAIE5JU29ydEFmZml4ZXMoSXNwZWxsRGljdCAqQ29u ZikKIAkvKiBTdG9yZSBjb21wb3VuZCBhZmZpeGVzIGluIHRoZSBDb25mLT5Db21wb3VuZEFm Zml4IGFycmF5ICovCiAJaWYgKENvbmYtPm5hZmZpeGVzID4gMSkKIAkJcXNvcnQoQ29uZi0+ QWZmaXgsIENvbmYtPm5hZmZpeGVzLCBzaXplb2YoQUZGSVgpLCBjbXBhZmZpeCk7Ci0JQ29u Zi0+Q29tcG91bmRBZmZpeCA9IHB0ciA9IChDTVBEQWZmaXggKikgcGFsbG9jKHNpemVvZihD TVBEQWZmaXgpICogQ29uZi0+bmFmZml4ZXMpOworCUNvbmYtPkNvbXBvdW5kQWZmaXggPSBw dHIgPSBwYWxsb2NfYXJyYXkoQ01QREFmZml4LCBDb25mLT5uYWZmaXhlcyk7CiAJcHRyLT5h ZmZpeCA9IE5VTEw7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQ29uZi0+bmFmZml4ZXM7IGkrKykK QEAgLTIxNDcsNyArMjE0Nyw3IEBAIENoZWNrQWZmaXgoY29uc3QgY2hhciAqd29yZCwgc2l6 ZV90IGxlbiwgQUZGSVggKkFmZml4LCBpbnQgZmxhZ2ZsYWdzLCBjaGFyICpuZXd3CiAKIAkJ LyogQ29udmVydCBkYXRhIHN0cmluZyB0byB3aWRlIGNoYXJhY3RlcnMgKi8KIAkJbmV3d29y ZF9sZW4gPSBzdHJsZW4obmV3d29yZCk7Ci0JCWRhdGEgPSAocGdfd2NoYXIgKikgcGFsbG9j KChuZXd3b3JkX2xlbiArIDEpICogc2l6ZW9mKHBnX3djaGFyKSk7CisJCWRhdGEgPSBwYWxs b2NfYXJyYXkocGdfd2NoYXIsIG5ld3dvcmRfbGVuICsgMSk7CiAJCWRhdGFfbGVuID0gcGdf bWIyd2NoYXJfd2l0aF9sZW4obmV3d29yZCwgZGF0YSwgbmV3d29yZF9sZW4pOwogCiAJCWlm IChwZ19yZWdleGVjKEFmZml4LT5yZWcucHJlZ2V4LCBkYXRhLCBkYXRhX2xlbiwKQEAgLTIx OTcsNyArMjE5Nyw3IEBAIE5vcm1hbGl6ZVN1YldvcmQoSXNwZWxsRGljdCAqQ29uZiwgY29u c3QgY2hhciAqd29yZCwgaW50IGZsYWcpCiAKIAlpZiAod3JkbGVuID4gTUFYTk9STUxFTikK IAkJcmV0dXJuIE5VTEw7Ci0JY3VyID0gZm9ybXMgPSAoY2hhciAqKikgcGFsbG9jKE1BWF9O T1JNICogc2l6ZW9mKGNoYXIgKikpOworCWN1ciA9IGZvcm1zID0gcGFsbG9jX2FycmF5KGNo YXIgKiwgTUFYX05PUk0pOwogCSpjdXIgPSBOVUxMOwogCiAKQEAgLTIzNDAsNyArMjM0MCw3 IEBAIENoZWNrQ29tcG91bmRBZmZpeGVzKENNUERBZmZpeCAqKnB0ciwgY29uc3QgY2hhciAq d29yZCwgaW50IGxlbiwgYm9vbCBDaGVja0luUGxhCiBzdGF0aWMgU3BsaXRWYXIgKgogQ29w eVZhcihTcGxpdFZhciAqcywgaW50IG1ha2VkdXApCiB7Ci0JU3BsaXRWYXIgICAqdiA9IChT cGxpdFZhciAqKSBwYWxsb2Moc2l6ZW9mKFNwbGl0VmFyKSk7CisJU3BsaXRWYXIgICAqdiA9 IHBhbGxvY19vYmplY3QoU3BsaXRWYXIpOwogCiAJdi0+bmV4dCA9IE5VTEw7CiAJaWYgKHMp CkBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBDb3B5VmFyKFNwbGl0VmFyICpzLCBpbnQgbWFrZWR1 cCkKIAkJaW50CQkJaTsKIAogCQl2LT5sZW5zdGVtID0gcy0+bGVuc3RlbTsKLQkJdi0+c3Rl bSA9IChjaGFyICoqKSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2LT5sZW5zdGVtKTsKKwkJ di0+c3RlbSA9IHBhbGxvY19hcnJheShjaGFyICosIHYtPmxlbnN0ZW0pOwogCQl2LT5uc3Rl bSA9IHMtPm5zdGVtOwogCQlmb3IgKGkgPSAwOyBpIDwgcy0+bnN0ZW07IGkrKykKIAkJCXYt PnN0ZW1baV0gPSAobWFrZWR1cCkgPyBwc3RyZHVwKHMtPnN0ZW1baV0pIDogcy0+c3RlbVtp XTsKQEAgLTIzNTYsNyArMjM1Niw3IEBAIENvcHlWYXIoU3BsaXRWYXIgKnMsIGludCBtYWtl ZHVwKQogCWVsc2UKIAl7CiAJCXYtPmxlbnN0ZW0gPSAxNjsKLQkJdi0+c3RlbSA9IChjaGFy ICoqKSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2LT5sZW5zdGVtKTsKKwkJdi0+c3RlbSA9 IHBhbGxvY19hcnJheShjaGFyICosIHYtPmxlbnN0ZW0pOwogCQl2LT5uc3RlbSA9IDA7CiAJ fQogCXJldHVybiB2OwpAQCAtMjUyOSw3ICsyNTI5LDcgQEAgc3RhdGljIHZvaWQKIGFkZE5v cm0oVFNMZXhlbWUgKipscmVzLCBUU0xleGVtZSAqKmxjdXIsIGNoYXIgKndvcmQsIGludCBm bGFncywgdWludDE2IE5WYXJpYW50KQogewogCWlmICgqbHJlcyA9PSBOVUxMKQotCQkqbGN1 ciA9ICpscmVzID0gKFRTTGV4ZW1lICopIHBhbGxvYyhNQVhfTk9STSAqIHNpemVvZihUU0xl eGVtZSkpOworCQkqbGN1ciA9ICpscmVzID0gcGFsbG9jX2FycmF5KFRTTGV4ZW1lLCBNQVhf Tk9STSk7CiAKIAlpZiAoKmxjdXIgLSAqbHJlcyA8IE1BWF9OT1JNIC0gMSkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3RvX3RzYW55LmMgYi9zcmMvYmFja2VuZC90 c2VhcmNoL3RvX3RzYW55LmMKaW5kZXggNGRmY2MyY2QzYmQuLmI2ZWZlMTA4NDI0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3RvX3RzYW55LmMKKysrIGIvc3JjL2JhY2tl bmQvdHNlYXJjaC90b190c2FueS5jCkBAIC04NCw3ICs4NCw3IEBAIHVuaXF1ZVdPUkQoUGFy c2VkV29yZCAqYSwgaW50MzIgbCkKIAl7CiAJCXRtcHBvcyA9IExJTUlUUE9TKGEtPnBvcy5w b3MpOwogCQlhLT5hbGVuID0gMjsKLQkJYS0+cG9zLmFwb3MgPSAodWludDE2ICopIHBhbGxv YyhzaXplb2YodWludDE2KSAqIGEtPmFsZW4pOworCQlhLT5wb3MuYXBvcyA9IHBhbGxvY19h cnJheSh1aW50MTYsIGEtPmFsZW4pOwogCQlhLT5wb3MuYXBvc1swXSA9IDE7CiAJCWEtPnBv cy5hcG9zWzFdID0gdG1wcG9zOwogCQlyZXR1cm4gbDsKQEAgLTEwMyw3ICsxMDMsNyBAQCB1 bmlxdWVXT1JEKFBhcnNlZFdvcmQgKmEsIGludDMyIGwpCiAJICovCiAJdG1wcG9zID0gTElN SVRQT1MoYS0+cG9zLnBvcyk7CiAJYS0+YWxlbiA9IDI7Ci0JYS0+cG9zLmFwb3MgPSAodWlu dDE2ICopIHBhbGxvYyhzaXplb2YodWludDE2KSAqIGEtPmFsZW4pOworCWEtPnBvcy5hcG9z ID0gcGFsbG9jX2FycmF5KHVpbnQxNiwgYS0+YWxlbik7CiAJYS0+cG9zLmFwb3NbMF0gPSAx OwogCWEtPnBvcy5hcG9zWzFdID0gdG1wcG9zOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdW5p cXVlV09SRChQYXJzZWRXb3JkICphLCBpbnQzMiBsKQogCQkJcmVzLT53b3JkID0gcHRyLT53 b3JkOwogCQkJdG1wcG9zID0gTElNSVRQT1MocHRyLT5wb3MucG9zKTsKIAkJCXJlcy0+YWxl biA9IDI7Ci0JCQlyZXMtPnBvcy5hcG9zID0gKHVpbnQxNiAqKSBwYWxsb2Moc2l6ZW9mKHVp bnQxNikgKiByZXMtPmFsZW4pOworCQkJcmVzLT5wb3MuYXBvcyA9IHBhbGxvY19hcnJheSh1 aW50MTYsIHJlcy0+YWxlbik7CiAJCQlyZXMtPnBvcy5hcG9zWzBdID0gMTsKIAkJCXJlcy0+ cG9zLmFwb3NbMV0gPSB0bXBwb3M7CiAJCX0KQEAgLTE0MSw3ICsxNDEsNyBAQCB1bmlxdWVX T1JEKFBhcnNlZFdvcmQgKmEsIGludDMyIGwpCiAJCQkJaWYgKHJlcy0+cG9zLmFwb3NbMF0g KyAxID49IHJlcy0+YWxlbikKIAkJCQl7CiAJCQkJCXJlcy0+YWxlbiAqPSAyOwotCQkJCQly ZXMtPnBvcy5hcG9zID0gKHVpbnQxNiAqKSByZXBhbGxvYyhyZXMtPnBvcy5hcG9zLCBzaXpl b2YodWludDE2KSAqIHJlcy0+YWxlbik7CisJCQkJCXJlcy0+cG9zLmFwb3MgPSByZXBhbGxv Y19hcnJheShyZXMtPnBvcy5hcG9zLCB1aW50MTYsIHJlcy0+YWxlbik7CiAJCQkJfQogCQkJ CWlmIChyZXMtPnBvcy5hcG9zWzBdID09IDAgfHwgcmVzLT5wb3MuYXBvc1tyZXMtPnBvcy5h cG9zWzBdXSAhPSBMSU1JVFBPUyhwdHItPnBvcy5wb3MpKQogCQkJCXsKQEAgLTI1NSw3ICsy NTUsNyBAQCB0b190c3ZlY3Rvcl9ieWlkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXBycy5sZW53 b3JkcyA9IE1heEFsbG9jU2l6ZSAvIHNpemVvZihQYXJzZWRXb3JkKTsKIAlwcnMuY3Vyd29y ZHMgPSAwOwogCXBycy5wb3MgPSAwOwotCXBycy53b3JkcyA9IChQYXJzZWRXb3JkICopIHBh bGxvYyhzaXplb2YoUGFyc2VkV29yZCkgKiBwcnMubGVud29yZHMpOworCXBycy53b3JkcyA9 IHBhbGxvY19hcnJheShQYXJzZWRXb3JkLCBwcnMubGVud29yZHMpOwogCiAJcGFyc2V0ZXh0 KGNmZ0lkLCAmcHJzLCBWQVJEQVRBX0FOWShpbiksIFZBUlNJWkVfQU5ZX0VYSERSKGluKSk7 CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBhZGRfdG9fdHN2ZWN0b3Iodm9pZCAqX3N0YXRlLCBj aGFyICplbGVtX3ZhbHVlLCBpbnQgZWxlbV9sZW4pCiAJCSAqIChwYXJzZXRleHQoKSB3aWxs IHJlYWxsb2MgaXQgYmlnZ2VyIGFzIG5lZWRlZC4pCiAJCSAqLwogCQlwcnMtPmxlbndvcmRz ID0gMTY7Ci0JCXBycy0+d29yZHMgPSAoUGFyc2VkV29yZCAqKSBwYWxsb2Moc2l6ZW9mKFBh cnNlZFdvcmQpICogcHJzLT5sZW53b3Jkcyk7CisJCXBycy0+d29yZHMgPSBwYWxsb2NfYXJy YXkoUGFyc2VkV29yZCwgcHJzLT5sZW53b3Jkcyk7CiAJCXBycy0+Y3Vyd29yZHMgPSAwOwog CQlwcnMtPnBvcyA9IDA7CiAJfQpAQCAtNTAzLDcgKzUwMyw3IEBAIHB1c2h2YWxfbW9ycGgo RGF0dW0gb3BhcXVlLCBUU1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsIGNoYXIgKnN0cnZhbCwg aW50IGxlbnZhbCwKIAlwcnMubGVud29yZHMgPSA0OwogCXBycy5jdXJ3b3JkcyA9IDA7CiAJ cHJzLnBvcyA9IDA7Ci0JcHJzLndvcmRzID0gKFBhcnNlZFdvcmQgKikgcGFsbG9jKHNpemVv ZihQYXJzZWRXb3JkKSAqIHBycy5sZW53b3Jkcyk7CisJcHJzLndvcmRzID0gcGFsbG9jX2Fy cmF5KFBhcnNlZFdvcmQsIHBycy5sZW53b3Jkcyk7CiAKIAlwYXJzZXRleHQoZGF0YS0+Y2Zn X2lkLCAmcHJzLCBzdHJ2YWwsIGxlbnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3RzZWFyY2gvdHNfcGFyc2UuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfcGFyc2UuYwpp bmRleCBjYmE0MjE4OTJiZi4uNmVlYmZmNmM0NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3RzZWFyY2gvdHNfcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3BhcnNl LmMKQEAgLTk5LDcgKzk5LDcgQEAgTFBMUmVtb3ZlSGVhZChMaXN0UGFyc2VkTGV4ICpsaXN0 KQogc3RhdGljIHZvaWQKIExleGl6ZUFkZExlbW0oTGV4aXplRGF0YSAqbGQsIGludCB0eXBl LCBjaGFyICpsZW1tLCBpbnQgbGVubGVtbSkKIHsKLQlQYXJzZWRMZXggICpuZXdwbCA9IChQ YXJzZWRMZXggKikgcGFsbG9jKHNpemVvZihQYXJzZWRMZXgpKTsKKwlQYXJzZWRMZXggICpu ZXdwbCA9IHBhbGxvY19vYmplY3QoUGFyc2VkTGV4KTsKIAogCW5ld3BsLT50eXBlID0gdHlw ZTsKIAluZXdwbC0+bGVtbSA9IGxlbW07CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2Vh cmNoL3RzX3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3NlbGZ1bmNzLmMK aW5kZXggZmIzNjdhZDc0ZDIuLjYzYTZlY2QzZTJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90c2VhcmNoL3RzX3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19z ZWxmdW5jcy5jCkBAIC0yMjYsNyArMjI2LDcgQEAgbWNlbGVtX3RzcXVlcnlfc2VsZWMoVFNR dWVyeSBxdWVyeSwgY29uc3QgRGF0dW0gKm1jZWxlbSwgaW50IG5tY2VsZW0sCiAJLyoKIAkg KiBUcmFuc3Bvc2UgdGhlIGRhdGEgaW50byBhIHNpbmdsZSBhcnJheSBzbyB3ZSBjYW4gdXNl IGJzZWFyY2goKS4KIAkgKi8KLQlsb29rdXAgPSAoVGV4dEZyZXEgKikgcGFsbG9jKHNpemVv ZihUZXh0RnJlcSkgKiBubWNlbGVtKTsKKwlsb29rdXAgPSBwYWxsb2NfYXJyYXkoVGV4dEZy ZXEsIG5tY2VsZW0pOwogCWZvciAoaSA9IDA7IGkgPCBubWNlbGVtOyBpKyspCiAJewogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9z cmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwppbmRleCA5M2FhYjAwYTNjYS4u OWI4YjA5OTVhYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5h bHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0z MjAsNyArMzIwLDcgQEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0 YXRzLAogCQljdXRvZmZfZnJlcSA9IDkgKiBsZXhlbWVfbm8gLyBidWNrZXRfd2lkdGg7CiAK IAkJaSA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKGxleGVtZXNfdGFiKTsJLyogc3VyZWx5IGVu b3VnaCBzcGFjZSAqLwotCQlzb3J0X3RhYmxlID0gKFRyYWNrSXRlbSAqKikgcGFsbG9jKHNp emVvZihUcmFja0l0ZW0gKikgKiBpKTsKKwkJc29ydF90YWJsZSA9IHBhbGxvY19hcnJheShU cmFja0l0ZW0gKiwgaSk7CiAKIAkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGxleGVt ZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKQEAgLTQxMiw4ICs0MTIsOCBAQCBjb21wdXRl X3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCQkgKiBjcmVhdGUgdGhh dCBmb3IgYSB0c3ZlY3RvciBjb2x1bW4sIHNpbmNlIG51bGwgZWxlbWVudHMgYXJlbid0CiAJ CQkgKiBwb3NzaWJsZS4pCiAJCQkgKi8KLQkJCW1jZWxlbV92YWx1ZXMgPSAoRGF0dW0gKikg cGFsbG9jKG51bV9tY2VsZW0gKiBzaXplb2YoRGF0dW0pKTsKLQkJCW1jZWxlbV9mcmVxcyA9 IChmbG9hdDQgKikgcGFsbG9jKChudW1fbWNlbGVtICsgMikgKiBzaXplb2YoZmxvYXQ0KSk7 CisJCQltY2VsZW1fdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBudW1fbWNlbGVtKTsK KwkJCW1jZWxlbV9mcmVxcyA9IHBhbGxvY19hcnJheShmbG9hdDQsIG51bV9tY2VsZW0gKyAy KTsKIAogCQkJLyoKIAkJCSAqIFNlZSBjb21tZW50cyBhYm92ZSBhYm91dCB1c2Ugb2Ygbm9u bnVsbF9jbnQgYXMgdGhlIGRpdmlzb3IgZm9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3V0aWxzLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3V0aWxzLmMKaW5k ZXggMGI0YTU3ODY2NDQuLjY0N2U0NjQ5NjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c191dGlscy5j CkBAIC0xMDUsMTIgKzEwNSwxMiBAQCByZWFkc3RvcGxpc3QoY29uc3QgY2hhciAqZm5hbWUs IFN0b3BMaXN0ICpzLCBjaGFyICooKndvcmRvcCkgKGNvbnN0IGNoYXIgKiwgc2l6ZQogCQkJ CWlmIChyZWFsbGVuID09IDApCiAJCQkJewogCQkJCQlyZWFsbGVuID0gNjQ7Ci0JCQkJCXN0 b3AgPSAoY2hhciAqKikgcGFsbG9jKHNpemVvZihjaGFyICopICogcmVhbGxlbik7CisJCQkJ CXN0b3AgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCByZWFsbGVuKTsKIAkJCQl9CiAJCQkJZWxz ZQogCQkJCXsKIAkJCQkJcmVhbGxlbiAqPSAyOwotCQkJCQlzdG9wID0gKGNoYXIgKiopIHJl cGFsbG9jKHN0b3AsIHNpemVvZihjaGFyICopICogcmVhbGxlbik7CisJCQkJCXN0b3AgPSBy ZXBhbGxvY19hcnJheShzdG9wLCBjaGFyICosIHJlYWxsZW4pOwogCQkJCX0KIAkJCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC93cGFyc2VyLmMgYi9zcmMvYmFja2Vu ZC90c2VhcmNoL3dwYXJzZXIuYwppbmRleCA1NTE3MWFhOGRhMS4uOWU1M2Y1NzMyNGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3RzZWFyY2gvd3BhcnNlci5jCkBAIC01OCw3ICs1OCw3IEBAIHR0X3NldHVwX2ZpcnN0 Y2FsbChGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHgsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LAogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0 aV9jYWxsX21lbW9yeV9jdHgpOwogCi0Jc3QgPSAoVFNUb2tlblR5cGVTdG9yYWdlICopIHBh bGxvYyhzaXplb2YoVFNUb2tlblR5cGVTdG9yYWdlKSk7CisJc3QgPSBwYWxsb2Nfb2JqZWN0 KFRTVG9rZW5UeXBlU3RvcmFnZSk7CiAJc3QtPmN1ciA9IDA7CiAJLyogbGV4dHlwZSB0YWtl cyBvbmUgZHVtbXkgYXJndW1lbnQgKi8KIAlzdC0+bGlzdCA9IChMZXhEZXNjciAqKSBEYXR1 bUdldFBvaW50ZXIoT2lkRnVuY3Rpb25DYWxsMShwcnMtPmxleHR5cGVPaWQsCkBAIC0xNzMs MTAgKzE3MywxMCBAQCBwcnNfc2V0dXBfZmlyc3RjYWxsKEZ1bmNDYWxsQ29udGV4dCAqZnVu Y2N0eCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKLQlz dCA9IChQcnNTdG9yYWdlICopIHBhbGxvYyhzaXplb2YoUHJzU3RvcmFnZSkpOworCXN0ID0g cGFsbG9jX29iamVjdChQcnNTdG9yYWdlKTsKIAlzdC0+Y3VyID0gMDsKIAlzdC0+bGVuID0g MTY7Ci0Jc3QtPmxpc3QgPSAoTGV4ZW1lRW50cnkgKikgcGFsbG9jKHNpemVvZihMZXhlbWVF bnRyeSkgKiBzdC0+bGVuKTsKKwlzdC0+bGlzdCA9IHBhbGxvY19hcnJheShMZXhlbWVFbnRy eSwgc3QtPmxlbik7CiAKIAlwcnNkYXRhID0gRGF0dW1HZXRQb2ludGVyKEZ1bmN0aW9uQ2Fs bDIoJnBycy0+cHJzc3RhcnQsCiAJCQkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bShWQVJEQVRB X0FOWSh0eHQpKSwKQEAgLTMwNyw3ICszMDcsNyBAQCB0c19oZWFkbGluZV9ieWlkX29wdChQ R19GVU5DVElPTl9BUkdTKQogCiAJbWVtc2V0KCZwcnMsIDAsIHNpemVvZihIZWFkbGluZVBh cnNlZFRleHQpKTsKIAlwcnMubGVud29yZHMgPSAzMjsKLQlwcnMud29yZHMgPSAoSGVhZGxp bmVXb3JkRW50cnkgKikgcGFsbG9jKHNpemVvZihIZWFkbGluZVdvcmRFbnRyeSkgKiBwcnMu bGVud29yZHMpOworCXBycy53b3JkcyA9IHBhbGxvY19hcnJheShIZWFkbGluZVdvcmRFbnRy eSwgcHJzLmxlbndvcmRzKTsKIAogCWhscGFyc2V0ZXh0KGNmZy0+Y2ZnSWQsICZwcnMsIHF1 ZXJ5LAogCQkJCVZBUkRBVEFfQU5ZKGluKSwgVkFSU0laRV9BTllfRVhIRFIoaW4pKTsKQEAg LTM3MywxMSArMzczLDExIEBAIHRzX2hlYWRsaW5lX2pzb25iX2J5aWRfb3B0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJSnNvbmIJICAgKm91dDsKIAlKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVz QWN0aW9uIGFjdGlvbiA9IChKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uKSBoZWFk bGluZV9qc29uX3ZhbHVlOwogCUhlYWRsaW5lUGFyc2VkVGV4dCBwcnM7Ci0JSGVhZGxpbmVK c29uU3RhdGUgKnN0YXRlID0gcGFsbG9jMChzaXplb2YoSGVhZGxpbmVKc29uU3RhdGUpKTsK KwlIZWFkbGluZUpzb25TdGF0ZSAqc3RhdGUgPSBwYWxsb2MwX29iamVjdChIZWFkbGluZUpz b25TdGF0ZSk7CiAKIAltZW1zZXQoJnBycywgMCwgc2l6ZW9mKEhlYWRsaW5lUGFyc2VkVGV4 dCkpOwogCXBycy5sZW53b3JkcyA9IDMyOwotCXBycy53b3JkcyA9IChIZWFkbGluZVdvcmRF bnRyeSAqKSBwYWxsb2Moc2l6ZW9mKEhlYWRsaW5lV29yZEVudHJ5KSAqIHBycy5sZW53b3Jk cyk7CisJcHJzLndvcmRzID0gcGFsbG9jX2FycmF5KEhlYWRsaW5lV29yZEVudHJ5LCBwcnMu bGVud29yZHMpOwogCiAJc3RhdGUtPnBycyA9ICZwcnM7CiAJc3RhdGUtPmNmZyA9IGxvb2t1 cF90c19jb25maWdfY2FjaGUodHNjb25maWcpOwpAQCAtNDUwLDExICs0NTAsMTEgQEAgdHNf aGVhZGxpbmVfanNvbl9ieWlkX29wdChQR19GVU5DVElPTl9BUkdTKQogCUpzb25UcmFuc2Zv cm1TdHJpbmdWYWx1ZXNBY3Rpb24gYWN0aW9uID0gKEpzb25UcmFuc2Zvcm1TdHJpbmdWYWx1 ZXNBY3Rpb24pIGhlYWRsaW5lX2pzb25fdmFsdWU7CiAKIAlIZWFkbGluZVBhcnNlZFRleHQg cHJzOwotCUhlYWRsaW5lSnNvblN0YXRlICpzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEhlYWRs aW5lSnNvblN0YXRlKSk7CisJSGVhZGxpbmVKc29uU3RhdGUgKnN0YXRlID0gcGFsbG9jMF9v YmplY3QoSGVhZGxpbmVKc29uU3RhdGUpOwogCiAJbWVtc2V0KCZwcnMsIDAsIHNpemVvZihI ZWFkbGluZVBhcnNlZFRleHQpKTsKIAlwcnMubGVud29yZHMgPSAzMjsKLQlwcnMud29yZHMg PSAoSGVhZGxpbmVXb3JkRW50cnkgKikgcGFsbG9jKHNpemVvZihIZWFkbGluZVdvcmRFbnRy eSkgKiBwcnMubGVud29yZHMpOworCXBycy53b3JkcyA9IHBhbGxvY19hcnJheShIZWFkbGlu ZVdvcmRFbnRyeSwgcHJzLmxlbndvcmRzKTsKIAogCXN0YXRlLT5wcnMgPSAmcHJzOwogCXN0 YXRlLT5jZmcgPSBsb29rdXBfdHNfY29uZmlnX2NhY2hlKHRzY29uZmlnKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYyBiL3NyYy9iYWNrZW5kL3Rz ZWFyY2gvd3BhcnNlcl9kZWYuYwppbmRleCAyNTFhMmFlNjU2My4uOWZiZWFiNDc1NDUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYworKysgYi9zcmMv YmFja2VuZC90c2VhcmNoL3dwYXJzZXJfZGVmLmMKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0 aWMgYm9vbCBUUGFyc2VyR2V0KFRQYXJzZXIgKnBycyk7CiBzdGF0aWMgVFBhcnNlclBvc2l0 aW9uICoKIG5ld1RQYXJzZXJQb3NpdGlvbihUUGFyc2VyUG9zaXRpb24gKnByZXYpCiB7Ci0J VFBhcnNlclBvc2l0aW9uICpyZXMgPSAoVFBhcnNlclBvc2l0aW9uICopIHBhbGxvYyhzaXpl b2YoVFBhcnNlclBvc2l0aW9uKSk7CisJVFBhcnNlclBvc2l0aW9uICpyZXMgPSBwYWxsb2Nf b2JqZWN0KFRQYXJzZXJQb3NpdGlvbik7CiAKIAlpZiAocHJldikKIAkJbWVtY3B5KHJlcywg cHJldiwgc2l6ZW9mKFRQYXJzZXJQb3NpdGlvbikpOwpAQCAtMjg2LDEyICsyODYsMTIgQEAg bmV3VFBhcnNlclBvc2l0aW9uKFRQYXJzZXJQb3NpdGlvbiAqcHJldikKIHN0YXRpYyBUUGFy c2VyICoKIFRQYXJzZXJJbml0KGNoYXIgKnN0ciwgaW50IGxlbikKIHsKLQlUUGFyc2VyICAg ICpwcnMgPSAoVFBhcnNlciAqKSBwYWxsb2MwKHNpemVvZihUUGFyc2VyKSk7CisJVFBhcnNl ciAgICAqcHJzID0gcGFsbG9jMF9vYmplY3QoVFBhcnNlcik7CiAKIAlwcnMtPmNoYXJtYXhs ZW4gPSBwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCk7CiAJcHJzLT5zdHIgPSBz dHI7CiAJcHJzLT5sZW5zdHIgPSBsZW47Ci0JcHJzLT5wZ3dzdHIgPSAocGdfd2NoYXIgKikg cGFsbG9jKHNpemVvZihwZ193Y2hhcikgKiAocHJzLT5sZW5zdHIgKyAxKSk7CisJcHJzLT5w Z3dzdHIgPSBwYWxsb2NfYXJyYXkocGdfd2NoYXIsIHBycy0+bGVuc3RyICsgMSk7CiAJcGdf bWIyd2NoYXJfd2l0aF9sZW4ocHJzLT5zdHIsIHBycy0+cGd3c3RyLCBwcnMtPmxlbnN0cik7 CiAKIAlwcnMtPnN0YXRlID0gbmV3VFBhcnNlclBvc2l0aW9uKE5VTEwpOwpAQCAtMzE4LDcg KzMxOCw3IEBAIFRQYXJzZXJJbml0KGNoYXIgKnN0ciwgaW50IGxlbikKIHN0YXRpYyBUUGFy c2VyICoKIFRQYXJzZXJDb3B5SW5pdChjb25zdCBUUGFyc2VyICpvcmlnKQogewotCVRQYXJz ZXIgICAgKnBycyA9IChUUGFyc2VyICopIHBhbGxvYzAoc2l6ZW9mKFRQYXJzZXIpKTsKKwlU UGFyc2VyICAgICpwcnMgPSBwYWxsb2MwX29iamVjdChUUGFyc2VyKTsKIAogCXBycy0+Y2hh cm1heGxlbiA9IG9yaWctPmNoYXJtYXhsZW47CiAJcHJzLT5zdHIgPSBvcmlnLT5zdHIgKyBv cmlnLT5zdGF0ZS0+cG9zYnl0ZTsKQEAgLTE4MzIsNyArMTgzMiw3IEBAIFRQYXJzZXJHZXQo VFBhcnNlciAqcHJzKQogRGF0dW0KIHByc2RfbGV4dHlwZShQR19GVU5DVElPTl9BUkdTKQog ewotCUxleERlc2NyICAgKmRlc2NyID0gKExleERlc2NyICopIHBhbGxvYyhzaXplb2YoTGV4 RGVzY3IpICogKExBU1ROVU0gKyAxKSk7CisJTGV4RGVzY3IgICAqZGVzY3IgPSBwYWxsb2Nf YXJyYXkoTGV4RGVzY3IsIExBU1ROVU0gKyAxKTsKIAlpbnQJCQlpOwogCiAJZm9yIChpID0g MTsgaSA8PSBMQVNUTlVNOyBpKyspCkBAIC0xOTQ5LDcgKzE5NDksNyBAQCBjaGVja2NvbmRp dGlvbl9ITCh2b2lkICpvcGFxdWUsIFF1ZXJ5T3BlcmFuZCAqdmFsLCBFeGVjUGhyYXNlRGF0 YSAqZGF0YSkKIAogCQkJaWYgKCFkYXRhLT5wb3MpCiAJCQl7Ci0JCQkJZGF0YS0+cG9zID0g cGFsbG9jKHNpemVvZihXb3JkRW50cnlQb3MpICogY2hlY2t2YWwtPmxlbik7CisJCQkJZGF0 YS0+cG9zID0gcGFsbG9jX2FycmF5KFdvcmRFbnRyeVBvcywgY2hlY2t2YWwtPmxlbik7CiAJ CQkJZGF0YS0+YWxsb2NhdGVkID0gdHJ1ZTsKIAkJCQlkYXRhLT5ucG9zID0gMTsKIAkJCQlk YXRhLT5wb3NbMF0gPSBjaGVja3ZhbC0+d29yZHNbaV0ucG9zOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYwppbmRleCAxZGU0NzdjYmVlYi4u YjkwNzU0Zjg1NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCkBAIC01MTQsNyArNTE0LDcgQEAgZmluZF90YWJzdGF0X2VudHJ5KE9p ZCByZWxfaWQpCiAJfQogCiAJdGFiZW50cnkgPSAoUGdTdGF0X1RhYmxlU3RhdHVzICopIGVu dHJ5X3JlZi0+cGVuZGluZzsKLQl0YWJsZXN0YXR1cyA9IHBhbGxvYyhzaXplb2YoUGdTdGF0 X1RhYmxlU3RhdHVzKSk7CisJdGFibGVzdGF0dXMgPSBwYWxsb2Nfb2JqZWN0KFBnU3RhdF9U YWJsZVN0YXR1cyk7CiAJKnRhYmxlc3RhdHVzID0gKnRhYmVudHJ5OwogCiAJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBkOWI4ZjM0YTM1NS4u ZTgxYjRmOTZhMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 LmMKQEAgLTMxNyw3ICszMTcsNyBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIg Y2xhc3NJZCwgaW50ICpud2FpdGV2ZW50cykKIAllbHMgPSBoYXNoX2dldF9udW1fZW50cmll cyhXYWl0RXZlbnRDdXN0b21IYXNoQnlOYW1lKTsKIAogCS8qIEFsbG9jYXRlIGVub3VnaCBz cGFjZSBmb3IgYWxsIGVudHJpZXMgKi8KLQl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvYyhlbHMg KiBzaXplb2YoY2hhciAqKSk7CisJd2FpdGV2ZW50bmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hh ciAqLCBlbHMpOwogCiAJLyogTm93IHNjYW4gdGhlIGhhc2ggdGFibGUgdG8gY29weSB0aGUg ZGF0YSAqLwogCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBXYWl0RXZlbnRDdXN0b21IYXNo QnlOYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBmYmNkNjRhMjYwOS4uMDVkNDg0MTJm ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTYxOCw3ICs2MTgsNyBAQCBhY2xpdGVtaW4o UEdfRlVOQ1RJT05fQVJHUykKIAlOb2RlCSAgICplc2NvbnRleHQgPSBmY2luZm8tPmNvbnRl eHQ7CiAJQWNsSXRlbSAgICAqYWlwOwogCi0JYWlwID0gKEFjbEl0ZW0gKikgcGFsbG9jKHNp emVvZihBY2xJdGVtKSk7CisJYWlwID0gcGFsbG9jX29iamVjdChBY2xJdGVtKTsKIAogCXMg PSBhY2xwYXJzZShzLCBhaXAsIGVzY29udGV4dCk7CiAJaWYgKHMgPT0gTlVMTCkKQEAgLTE2 NjEsNyArMTY2MSw3IEBAIG1ha2VhY2xpdGVtKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlwcml2 ID0gY29udmVydF9hbnlfcHJpdl9zdHJpbmcocHJpdnRleHQsIGFueV9wcml2X21hcCk7CiAK LQlyZXN1bHQgPSAoQWNsSXRlbSAqKSBwYWxsb2Moc2l6ZW9mKEFjbEl0ZW0pKTsKKwlyZXN1 bHQgPSBwYWxsb2Nfb2JqZWN0KEFjbEl0ZW0pOwogCiAJcmVzdWx0LT5haV9ncmFudGVlID0g Z3JhbnRlZTsKIAlyZXN1bHQtPmFpX2dyYW50b3IgPSBncmFudG9yOwpAQCAtMTgyMSw3ICsx ODIxLDcgQEAgYWNsZXhwbG9kZShQR19GVU5DVElPTl9BUkdTKQogCQlmdW5jY3R4LT50dXBs ZV9kZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkJLyogYWxsb2NhdGUgbWVt b3J5IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJaWR4ID0gKGludCAqKSBwYWxsb2Moc2l6ZW9m KGludFsyXSkpOworCQlpZHggPSBwYWxsb2NfYXJyYXkoaW50LCAyKTsKIAkJaWR4WzBdID0g MDsJCQkJLyogQUNMIGFycmF5IGl0ZW0gaW5kZXggKi8KIAkJaWR4WzFdID0gLTE7CQkJLyog cHJpdmlsZWdlIHR5cGUgY291bnRlciAqLwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBpZHg7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfc2VsZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV9zZWxmdW5jcy5jCmluZGV4IDRkYWIzNWIw MDU3Li5jZDIwMTQ2MWMxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5X3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3NlbGZ1 bmNzLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBtY2VsZW1fYXJyYXlfY29udGFpbmVkX3NlbGVj KGNvbnN0IERhdHVtICptY2VsZW0sIGludCBubWNlbGVtLAogCSAqIGVsZW1fc2VsZWMgaXMg YXJyYXkgb2YgZXN0aW1hdGVkIGZyZXF1ZW5jaWVzIGZvciBlbGVtZW50cyBpbiB0aGUKIAkg KiBjb25zdGFudC4KIAkgKi8KLQllbGVtX3NlbGVjID0gKGZsb2F0ICopIHBhbGxvYyhzaXpl b2YoZmxvYXQpICogbml0ZW1zKTsKKwllbGVtX3NlbGVjID0gcGFsbG9jX2FycmF5KGZsb2F0 LCBuaXRlbXMpOwogCiAJLyogU2NhbiBtY2VsZW0gYW5kIGFycmF5IGluIHBhcmFsbGVsLiAq LwogCW1jZWxlbV9pbmRleCA9IDA7CkBAIC05MzYsNyArOTM2LDcgQEAgY2FsY19oaXN0KGNv bnN0IGZsb2F0NCAqaGlzdCwgaW50IG5oaXN0LCBpbnQgbikKIAkJCQluZXh0X2ludGVydmFs OwogCWZsb2F0CQlmcmFjOwogCi0JaGlzdF9wYXJ0ID0gKGZsb2F0ICopIHBhbGxvYygobiAr IDEpICogc2l6ZW9mKGZsb2F0KSk7CisJaGlzdF9wYXJ0ID0gcGFsbG9jX2FycmF5KGZsb2F0 LCBuICsgMSk7CiAKIAkvKgogCSAqIGZyYWMgaXMgYSBwcm9iYWJpbGl0eSBjb250cmlidXRp b24gZm9yIGVhY2ggaW50ZXJ2YWwgYmV0d2VlbiBoaXN0b2dyYW0KQEAgLTEwMjgsOCArMTAy OCw4IEBAIGNhbGNfZGlzdHIoY29uc3QgZmxvYXQgKnAsIGludCBuLCBpbnQgbSwgZmxvYXQg cmVzdCkKIAkgKiBTaW5jZSB3ZSByZXR1cm4gb25seSB0aGUgbGFzdCByb3cgb2YgdGhlIG1h dHJpeCBhbmQgbmVlZCBvbmx5IHRoZQogCSAqIGN1cnJlbnQgYW5kIHByZXZpb3VzIHJvdyBm b3IgY2FsY3VsYXRpb25zLCBhbGxvY2F0ZSB0d28gcm93cy4KIAkgKi8KLQlyb3cgPSAoZmxv YXQgKikgcGFsbG9jKChtICsgMSkgKiBzaXplb2YoZmxvYXQpKTsKLQlwcmV2X3JvdyA9IChm bG9hdCAqKSBwYWxsb2MoKG0gKyAxKSAqIHNpemVvZihmbG9hdCkpOworCXJvdyA9IHBhbGxv Y19hcnJheShmbG9hdCwgbSArIDEpOworCXByZXZfcm93ID0gcGFsbG9jX2FycmF5KGZsb2F0 LCBtICsgMSk7CiAKIAkvKiBNWzAsMF0gPSAxICovCiAJcm93WzBdID0gMS4wZjsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDU2MGIyN2YzY2E3 Li42MWFlZGQzMWZmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5h bHl6ZS5jCkBAIC0xMzIsNyArMTMyLDcgQEAgYXJyYXlfdHlwYW5hbHl6ZShQR19GVU5DVElP Tl9BUkdTKQogCQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIAogCS8qIFN0b3JlIG91ciBmaW5k aW5ncyBmb3IgdXNlIGJ5IGNvbXB1dGVfYXJyYXlfc3RhdHMoKSAqLwotCWV4dHJhX2RhdGEg PSAoQXJyYXlBbmFseXplRXh0cmFEYXRhICopIHBhbGxvYyhzaXplb2YoQXJyYXlBbmFseXpl RXh0cmFEYXRhKSk7CisJZXh0cmFfZGF0YSA9IHBhbGxvY19vYmplY3QoQXJyYXlBbmFseXpl RXh0cmFEYXRhKTsKIAlleHRyYV9kYXRhLT50eXBlX2lkID0gdHlwZW50cnktPnR5cGVfaWQ7 CiAJZXh0cmFfZGF0YS0+ZXFfb3ByID0gdHlwZW50cnktPmVxX29wcjsKIAlleHRyYV9kYXRh LT5jb2xsX2lkID0gc3RhdHMtPmF0dHJjb2xsaWQ7CS8qIGNvbGxhdGlvbiB3ZSBzaG91bGQg dXNlICovCkBAIC00NjksNyArNDY5LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRy U3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWN1dG9m Zl9mcmVxID0gOSAqIGVsZW1lbnRfbm8gLyBidWNrZXRfd2lkdGg7CiAKIAkJaSA9IGhhc2hf Z2V0X251bV9lbnRyaWVzKGVsZW1lbnRzX3RhYik7IC8qIHN1cmVseSBlbm91Z2ggc3BhY2Ug Ki8KLQkJc29ydF90YWJsZSA9IChUcmFja0l0ZW0gKiopIHBhbGxvYyhzaXplb2YoVHJhY2tJ dGVtICopICogaSk7CisJCXNvcnRfdGFibGUgPSBwYWxsb2NfYXJyYXkoVHJhY2tJdGVtICos IGkpOwogCiAJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBlbGVtZW50c190YWIpOwog CQl0cmFja19sZW4gPSAwOwpAQCAtNjA2LDggKzYwNiw3IEBAIGNvbXB1dGVfYXJyYXlfc3Rh dHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5j LAogCQkJICogQ3JlYXRlIGFuIGFycmF5IG9mIERFQ291bnRJdGVtIHBvaW50ZXJzLCBhbmQg c29ydCB0aGVtIGludG8KIAkJCSAqIGluY3JlYXNpbmcgY291bnQgb3JkZXIuCiAJCQkgKi8K LQkJCXNvcnRlZF9jb3VudF9pdGVtcyA9IChERUNvdW50SXRlbSAqKikKLQkJCQlwYWxsb2Mo c2l6ZW9mKERFQ291bnRJdGVtICopICogY291bnRfaXRlbXNfY291bnQpOworCQkJc29ydGVk X2NvdW50X2l0ZW1zID0gcGFsbG9jX2FycmF5KERFQ291bnRJdGVtICosIGNvdW50X2l0ZW1z X2NvdW50KTsKIAkJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBjb3VudF90YWIpOwog CQkJaiA9IDA7CiAJCQl3aGlsZSAoKGNvdW50X2l0ZW0gPSAoREVDb3VudEl0ZW0gKikgaGFz aF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlfdXNlcmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlfdXNlcmZ1bmNzLmMKaW5kZXggOGViMzQyZTMzODIuLmMwMWJmNDY2MTIx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdXNlcmZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3VzZXJmdW5jcy5jCkBAIC00MzMs OCArNDMzLDggQEAgYXJyYXlfY2F0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIHRoZW1zZWx2 ZXMpIG9mIHRoZSBpbnB1dCBhcmd1bWVudCBhcnJheXMKIAkJICovCiAJCW5kaW1zID0gbmRp bXMxOwotCQlkaW1zID0gKGludCAqKSBwYWxsb2MobmRpbXMgKiBzaXplb2YoaW50KSk7Ci0J CWxicyA9IChpbnQgKikgcGFsbG9jKG5kaW1zICogc2l6ZW9mKGludCkpOworCQlkaW1zID0g cGFsbG9jX2FycmF5KGludCwgbmRpbXMpOworCQlsYnMgPSBwYWxsb2NfYXJyYXkoaW50LCBu ZGltcyk7CiAKIAkJZGltc1swXSA9IGRpbXMxWzBdICsgZGltczJbMF07CiAJCWxic1swXSA9 IGxiczFbMF07CkBAIC00NTksOCArNDU5LDggQEAgYXJyYXlfY2F0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJCSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbnNlcnRlZCBhdCB0aGUgZnJvbnQgb2Yg dGhlIG91dGVyIGRpbWVuc2lvbgogCQkgKi8KIAkJbmRpbXMgPSBuZGltczI7Ci0JCWRpbXMg PSAoaW50ICopIHBhbGxvYyhuZGltcyAqIHNpemVvZihpbnQpKTsKLQkJbGJzID0gKGludCAq KSBwYWxsb2MobmRpbXMgKiBzaXplb2YoaW50KSk7CisJCWRpbXMgPSBwYWxsb2NfYXJyYXko aW50LCBuZGltcyk7CisJCWxicyA9IHBhbGxvY19hcnJheShpbnQsIG5kaW1zKTsKIAkJbWVt Y3B5KGRpbXMsIGRpbXMyLCBuZGltcyAqIHNpemVvZihpbnQpKTsKIAkJbWVtY3B5KGxicywg bGJzMiwgbmRpbXMgKiBzaXplb2YoaW50KSk7CiAKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBhcnJh eV9jYXQoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogc2Vjb25kIGFyZ3VtZW50IGFwcGVuZGVk IHRvIHRoZSBlbmQgb2YgdGhlIG91dGVyIGRpbWVuc2lvbgogCQkgKi8KIAkJbmRpbXMgPSBu ZGltczE7Ci0JCWRpbXMgPSAoaW50ICopIHBhbGxvYyhuZGltcyAqIHNpemVvZihpbnQpKTsK LQkJbGJzID0gKGludCAqKSBwYWxsb2MobmRpbXMgKiBzaXplb2YoaW50KSk7CisJCWRpbXMg PSBwYWxsb2NfYXJyYXkoaW50LCBuZGltcyk7CisJCWxicyA9IHBhbGxvY19hcnJheShpbnQs IG5kaW1zKTsKIAkJbWVtY3B5KGRpbXMsIGRpbXMxLCBuZGltcyAqIHNpemVvZihpbnQpKTsK IAkJbWVtY3B5KGxicywgbGJzMSwgbmRpbXMgKiBzaXplb2YoaW50KSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IDVhMWI4NDgzYmVhLi5kMDFmY2Y5Y2M3ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCkBAIC0zNTgyLDcgKzM1ODIsNyBA QCBjb25zdHJ1Y3RfZW1wdHlfYXJyYXkoT2lkIGVsbXR5cGUpCiB7CiAJQXJyYXlUeXBlICAq cmVzdWx0OwogCi0JcmVzdWx0ID0gKEFycmF5VHlwZSAqKSBwYWxsb2MwKHNpemVvZihBcnJh eVR5cGUpKTsKKwlyZXN1bHQgPSAoQXJyYXlUeXBlICopIHBhbGxvYzBfb2JqZWN0KEFycmF5 VHlwZSk7CiAJU0VUX1ZBUlNJWkUocmVzdWx0LCBzaXplb2YoQXJyYXlUeXBlKSk7CiAJcmVz dWx0LT5uZGltID0gMDsKIAlyZXN1bHQtPmRhdGFvZmZzZXQgPSAwOwpAQCAtMzY0Nyw3ICsz NjQ3LDcgQEAgZGVjb25zdHJ1Y3RfYXJyYXkoY29uc3QgQXJyYXlUeXBlICphcnJheSwKIAlu ZWxlbXMgPSBBcnJheUdldE5JdGVtcyhBUlJfTkRJTShhcnJheSksIEFSUl9ESU1TKGFycmF5 KSk7CiAJKmVsZW1zcCA9IGVsZW1zID0gKERhdHVtICopIHBhbGxvYyhuZWxlbXMgKiBzaXpl b2YoRGF0dW0pKTsKIAlpZiAobnVsbHNwKQotCQkqbnVsbHNwID0gbnVsbHMgPSAoYm9vbCAq KSBwYWxsb2MwKG5lbGVtcyAqIHNpemVvZihib29sKSk7CisJCSpudWxsc3AgPSBudWxscyA9 IChib29sICopIHBhbGxvYzBfYXJyYXkoYm9vbCwgbmVsZW1zKTsKIAllbHNlCiAJCW51bGxz ID0gTlVMTDsKIAkqbmVsZW1zcCA9IG5lbGVtczsKQEAgLTQyMDksNyArNDIwOSw3IEBAIGhh c2hfYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIG1vZGlmeSB0eXBlbnRyeSwgc2lu Y2UgdGhhdCBwb2ludHMgZGlyZWN0bHkgaW50byB0aGUgdHlwZQogCQkJICogY2FjaGUuCiAJ CQkgKi8KLQkJCXJlY29yZF90eXBlbnRyeSA9IHBhbGxvYzAoc2l6ZW9mKCpyZWNvcmRfdHlw ZW50cnkpKTsKKwkJCXJlY29yZF90eXBlbnRyeSA9IHBhbGxvYzBfb2JqZWN0KFR5cGVDYWNo ZUVudHJ5KTsKIAkJCXJlY29yZF90eXBlbnRyeS0+dHlwZV9pZCA9IGVsZW1lbnRfdHlwZTsK IAogCQkJLyogZmlsbCBpbiB3aGF0IHdlIG5lZWQgYmVsb3cgKi8KQEAgLTQ1OTcsNyArNDU5 Nyw3IEBAIGFycmF5Y29udGFpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiBBcnJheUl0ZXJhdG9y CiBhcnJheV9jcmVhdGVfaXRlcmF0b3IoQXJyYXlUeXBlICphcnIsIGludCBzbGljZV9uZGlt LCBBcnJheU1ldGFTdGF0ZSAqbXN0YXRlKQogewotCUFycmF5SXRlcmF0b3IgaXRlcmF0b3Ig PSBwYWxsb2MwKHNpemVvZihBcnJheUl0ZXJhdG9yRGF0YSkpOworCUFycmF5SXRlcmF0b3Ig aXRlcmF0b3IgPSBwYWxsb2MwX29iamVjdChBcnJheUl0ZXJhdG9yRGF0YSk7CiAKIAkvKgog CSAqIFNhbml0eS1jaGVjayBpbnB1dHMgLS0tIGNhbGxlciBzaG91bGQgaGF2ZSBnb3QgdGhp cyByaWdodCBhbHJlYWR5CkBAIC01OTQ0LDcgKzU5NDQsNyBAQCBnZW5lcmF0ZV9zdWJzY3Jp cHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCBh cHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gY2FsbHMKIAkJICovCiAJCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1v cnlfY3R4KTsKLQkJZmN0eCA9IChnZW5lcmF0ZV9zdWJzY3JpcHRzX2ZjdHggKikgcGFsbG9j KHNpemVvZihnZW5lcmF0ZV9zdWJzY3JpcHRzX2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19v YmplY3QoZ2VuZXJhdGVfc3Vic2NyaXB0c19mY3R4KTsKIAogCQlsYiA9IEFBUlJfTEJPVU5E KHYpOwogCQlkaW12ID0gQUFSUl9ESU1TKHYpOwpAQCAtNjI5MSw3ICs2MjkxLDcgQEAgYXJy YXlfdW5uZXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWFyciA9IFBHX0dFVEFSR19BTllfQVJS QVlfUCgwKTsKIAogCQkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVzZXIgY29udGV4dCAqLwot CQlmY3R4ID0gKGFycmF5X3VubmVzdF9mY3R4ICopIHBhbGxvYyhzaXplb2YoYXJyYXlfdW5u ZXN0X2ZjdHgpKTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QoYXJyYXlfdW5uZXN0X2ZjdHgp OwogCiAJCS8qIGluaXRpYWxpemUgc3RhdGUgKi8KIAkJYXJyYXlfaXRlcl9zZXR1cCgmZmN0 eC0+aXRlciwgYXJyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwppbmRleCAyOTQw ZmI4ZThkNy4uNzFjYTE4MWZiYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMK QEAgLTQ5Nyw3ICs0OTcsNyBAQCBhcnJheV9leGVjX3NldHVwKGNvbnN0IFN1YnNjcmlwdGlu Z1JlZiAqc2JzcmVmLAogCS8qCiAJICogQWxsb2NhdGUgdHlwZS1zcGVjaWZpYyB3b3Jrc3Bh Y2UuCiAJICovCi0Jd29ya3NwYWNlID0gKEFycmF5U3ViV29ya3NwYWNlICopIHBhbGxvYyhz aXplb2YoQXJyYXlTdWJXb3Jrc3BhY2UpKTsKKwl3b3Jrc3BhY2UgPSBwYWxsb2Nfb2JqZWN0 KEFycmF5U3ViV29ya3NwYWNlKTsKIAlzYnNyZWZzdGF0ZS0+d29ya3NwYWNlID0gd29ya3Nw YWNlOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCmluZGV4IGM0YjgxMjVkZDY2Li40MjFj Y2MzMDZmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCkBAIC0zNTgsNyArMzU4LDcgQEAgR2V0 U1FMQ3VycmVudFRpbWUoaW50MzIgdHlwbW9kKQogCiAJR2V0Q3VycmVudFRpbWVVc2VjKHRt LCAmZnNlYywgJnR6KTsKIAotCXJlc3VsdCA9IChUaW1lVHpBRFQgKikgcGFsbG9jKHNpemVv ZihUaW1lVHpBRFQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFRpbWVUekFEVCk7CiAJ dG0ydGltZXR6KHRtLCBmc2VjLCB0eiwgcmVzdWx0KTsKIAlBZGp1c3RUaW1lRm9yVHlwbW9k KCYocmVzdWx0LT50aW1lKSwgdHlwbW9kKTsKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMjA4Nyw3 ICsyMDg3LDcgQEAgdGltZV9pbnRlcnZhbChQR19GVU5DVElPTl9BUkdTKQogCVRpbWVBRFQJ CXRpbWUgPSBQR19HRVRBUkdfVElNRUFEVCgwKTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAK LQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJcmVzdWx0LT50aW1lID0gdGlt ZTsKIAlyZXN1bHQtPmRheSA9IDA7CkBAIC0yMTMyLDcgKzIxMzIsNyBAQCB0aW1lX21pX3Rp bWUoUEdfRlVOQ1RJT05fQVJHUykKIAlUaW1lQURUCQl0aW1lMiA9IFBHX0dFVEFSR19USU1F QURUKDEpOwogCUludGVydmFsICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChJbnRlcnZhbCAq KSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJ bnRlcnZhbCk7CiAKIAlyZXN1bHQtPm1vbnRoID0gMDsKIAlyZXN1bHQtPmRheSA9IDA7CkBA IC0yMzk5LDcgKzIzOTksNyBAQCB0aW1ldHpfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdf UkVUVVJOX05VTEwoKTsKIAl9CiAKLQlyZXN1bHQgPSAoVGltZVR6QURUICopIHBhbGxvYyhz aXplb2YoVGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChUaW1lVHpBRFQp OwogCXRtMnRpbWV0eih0bSwgZnNlYywgdHosIHJlc3VsdCk7CiAJQWRqdXN0VGltZUZvclR5 cG1vZCgmKHJlc3VsdC0+dGltZSksIHR5cG1vZCk7CiAKQEAgLTI0MzgsNyArMjQzOCw3IEBA IHRpbWV0el9yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50MzIJCXR5cG1vZCA9IFBHX0dF VEFSR19JTlQzMigyKTsKIAlUaW1lVHpBRFQgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoVGlt ZVR6QURUICopIHBhbGxvYyhzaXplb2YoVGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChUaW1lVHpBRFQpOwogCiAJcmVzdWx0LT50aW1lID0gcHFfZ2V0bXNnaW50NjQo YnVmKTsKIApAQCAtMjUyNCw3ICsyNTI0LDcgQEAgdGltZXR6X3NjYWxlKFBHX0ZVTkNUSU9O X0FSR1MpCiAJaW50MzIJCXR5cG1vZCA9IFBHX0dFVEFSR19JTlQzMigxKTsKIAlUaW1lVHpB RFQgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoVGltZVR6QURUICopIHBhbGxvYyhzaXplb2Yo VGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChUaW1lVHpBRFQpOwogCiAJ cmVzdWx0LT50aW1lID0gdGltZS0+dGltZTsKIAlyZXN1bHQtPnpvbmUgPSB0aW1lLT56b25l OwpAQCAtMjcwMCw3ICsyNzAwLDcgQEAgdGltZXR6X3BsX2ludGVydmFsKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFO R0UpLAogCQkJCSBlcnJtc2coImNhbm5vdCBhZGQgaW5maW5pdGUgaW50ZXJ2YWwgdG8gdGlt ZSIpKSk7CiAKLQlyZXN1bHQgPSAoVGltZVR6QURUICopIHBhbGxvYyhzaXplb2YoVGltZVR6 QURUKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChUaW1lVHpBRFQpOwogCiAJcmVzdWx0 LT50aW1lID0gdGltZS0+dGltZSArIHNwYW4tPnRpbWU7CiAJcmVzdWx0LT50aW1lIC09IHJl c3VsdC0+dGltZSAvIFVTRUNTX1BFUl9EQVkgKiBVU0VDU19QRVJfREFZOwpAQCAtMjcyNyw3 ICsyNzI3LDcgQEAgdGltZXR6X21pX2ludGVydmFsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBl cnJtc2coImNhbm5vdCBzdWJ0cmFjdCBpbmZpbml0ZSBpbnRlcnZhbCBmcm9tIHRpbWUiKSkp OwogCi0JcmVzdWx0ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9mKFRpbWVUekFEVCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoVGltZVR6QURUKTsKIAogCXJlc3VsdC0+dGlt ZSA9IHRpbWUtPnRpbWUgLSBzcGFuLT50aW1lOwogCXJlc3VsdC0+dGltZSAtPSByZXN1bHQt PnRpbWUgLyBVU0VDU19QRVJfREFZICogVVNFQ1NfUEVSX0RBWTsKQEAgLTI5MzQsNyArMjkz NCw3IEBAIHRpbWVfdGltZXR6KFBHX0ZVTkNUSU9OX0FSR1MpCiAJdGltZTJ0bSh0aW1lLCB0 bSwgJmZzZWMpOwogCXR6ID0gRGV0ZXJtaW5lVGltZVpvbmVPZmZzZXQodG0sIHNlc3Npb25f dGltZXpvbmUpOwogCi0JcmVzdWx0ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9mKFRp bWVUekFEVCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoVGltZVR6QURUKTsKIAogCXJl c3VsdC0+dGltZSA9IHRpbWU7CiAJcmVzdWx0LT56b25lID0gdHo7CkBAIC0yOTY0LDcgKzI5 NjQsNyBAQCB0aW1lc3RhbXB0el90aW1ldHooUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1z ZygidGltZXN0YW1wIG91dCBvZiByYW5nZSIpKSk7CiAKLQlyZXN1bHQgPSAoVGltZVR6QURU ICopIHBhbGxvYyhzaXplb2YoVGltZVR6QURUKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVj dChUaW1lVHpBRFQpOwogCiAJdG0ydGltZXR6KHRtLCBmc2VjLCB0eiwgcmVzdWx0KTsKIApA QCAtMzE5Nyw3ICszMTk3LDcgQEAgdGltZXR6X3pvbmUoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJIGVycm1zZygidGltZXN0YW1wIG91dCBvZiByYW5nZSIpKSk7CiAJfQogCi0JcmVzdWx0 ID0gKFRpbWVUekFEVCAqKSBwYWxsb2Moc2l6ZW9mKFRpbWVUekFEVCkpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QoVGltZVR6QURUKTsKIAogCXJlc3VsdC0+dGltZSA9IHQtPnRpbWUg KyAodC0+em9uZSAtIHR6KSAqIFVTRUNTX1BFUl9TRUM7CiAJLyogQzk5IG1vZHVsbyBoYXMg dGhlIHdyb25nIHNpZ24gY29udmVudGlvbiBmb3IgbmVnYXRpdmUgaW5wdXQgKi8KQEAgLTMy MzgsNyArMzIzOCw3IEBAIHRpbWV0el9pem9uZShQR19GVU5DVElPTl9BUkdTKQogCiAJdHog PSAtKHpvbmUtPnRpbWUgLyBVU0VDU19QRVJfU0VDKTsKIAotCXJlc3VsdCA9IChUaW1lVHpB RFQgKikgcGFsbG9jKHNpemVvZihUaW1lVHpBRFQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2Jq ZWN0KFRpbWVUekFEVCk7CiAKIAlyZXN1bHQtPnRpbWUgPSB0aW1lLT50aW1lICsgKHRpbWUt PnpvbmUgLSB0eikgKiBVU0VDU19QRVJfU0VDOwogCS8qIEM5OSBtb2R1bG8gaGFzIHRoZSB3 cm9uZyBzaWduIGNvbnZlbnRpb24gZm9yIG5lZ2F0aXZlIGlucHV0ICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZXRpbWUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9kYXRldGltZS5jCmluZGV4IDY4MGZlZTJhODQ0Li5lM2EwOTllYWE2NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKQEAgLTUxNTIsNyArNTE1Miw3IEBAIHBnX3RpbWV6 b25lX2FiYnJldnNfem9uZShQR19GVU5DVElPTl9BUkdTKQogCQlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAK IAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJcGluZGV4ID0g KGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkpOworCQlwaW5kZXggPSBwYWxsb2Nfb2JqZWN0 KGludCk7CiAJCSpwaW5kZXggPSAwOwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBwaW5kZXg7 CiAKQEAgLTUxODcsNyArNTE4Nyw3IEBAIHBnX3RpbWV6b25lX2FiYnJldnNfem9uZShQR19G VU5DVElPTl9BUkdTKQogCQkvKiBDb252ZXJ0IG9mZnNldCAoaW4gc2Vjb25kcykgdG8gYW4g aW50ZXJ2YWw7IGNhbid0IG92ZXJmbG93ICovCiAJCU1lbVNldCgmaXRtX2luLCAwLCBzaXpl b2Yoc3RydWN0IHBnX2l0bV9pbikpOwogCQlpdG1faW4udG1fdXNlYyA9IChpbnQ2NCkgZ210 b2ZmICogVVNFQ1NfUEVSX1NFQzsKLQkJcmVzSW50ZXJ2YWwgPSAoSW50ZXJ2YWwgKikgcGFs bG9jKHNpemVvZihJbnRlcnZhbCkpOworCQlyZXNJbnRlcnZhbCA9IHBhbGxvY19vYmplY3Qo SW50ZXJ2YWwpOwogCQkodm9pZCkgaXRtaW4yaW50ZXJ2YWwoJml0bV9pbiwgcmVzSW50ZXJ2 YWwpOwogCQl2YWx1ZXNbMV0gPSBJbnRlcnZhbFBHZXREYXR1bShyZXNJbnRlcnZhbCk7CiAK QEAgLTUyMzksNyArNTIzOSw3IEBAIHBnX3RpbWV6b25lX2FiYnJldnNfYWJicmV2cyhQR19G VU5DVElPTl9BUkdTKQogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1 bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5 IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJcGluZGV4ID0gKGludCAqKSBwYWxsb2Moc2l6ZW9m KGludCkpOworCQlwaW5kZXggPSBwYWxsb2Nfb2JqZWN0KGludCk7CiAJCSpwaW5kZXggPSAw OwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBwaW5kZXg7CiAKQEAgLTUzMTAsNyArNTMxMCw3 IEBAIHBnX3RpbWV6b25lX2FiYnJldnNfYWJicmV2cyhQR19GVU5DVElPTl9BUkdTKQogCS8q IENvbnZlcnQgb2Zmc2V0IChpbiBzZWNvbmRzKSB0byBhbiBpbnRlcnZhbDsgY2FuJ3Qgb3Zl cmZsb3cgKi8KIAlNZW1TZXQoJml0bV9pbiwgMCwgc2l6ZW9mKHN0cnVjdCBwZ19pdG1faW4p KTsKIAlpdG1faW4udG1fdXNlYyA9IChpbnQ2NCkgZ210b2Zmc2V0ICogVVNFQ1NfUEVSX1NF QzsKLQlyZXNJbnRlcnZhbCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFs KSk7CisJcmVzSW50ZXJ2YWwgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAkodm9pZCkg aXRtaW4yaW50ZXJ2YWwoJml0bV9pbiwgcmVzSW50ZXJ2YWwpOwogCXZhbHVlc1sxXSA9IElu dGVydmFsUEdldERhdHVtKHJlc0ludGVydmFsKTsKIApAQCAtNTM3OCw3ICs1Mzc4LDcgQEAg cGdfdGltZXpvbmVfbmFtZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJLyogQ29udmVydCB0em9m ZiB0byBhbiBpbnRlcnZhbDsgY2FuJ3Qgb3ZlcmZsb3cgKi8KIAkJTWVtU2V0KCZpdG1faW4s IDAsIHNpemVvZihzdHJ1Y3QgcGdfaXRtX2luKSk7CiAJCWl0bV9pbi50bV91c2VjID0gKGlu dDY0KSAtdHpvZmYgKiBVU0VDU19QRVJfU0VDOwotCQlyZXNJbnRlcnZhbCA9IChJbnRlcnZh bCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJCXJlc0ludGVydmFsID0gcGFsbG9j X29iamVjdChJbnRlcnZhbCk7CiAJCSh2b2lkKSBpdG1pbjJpbnRlcnZhbCgmaXRtX2luLCBy ZXNJbnRlcnZhbCk7CiAJCXZhbHVlc1syXSA9IEludGVydmFsUEdldERhdHVtKHJlc0ludGVy dmFsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggNWJmZWRhMmZm ZGUuLmE5ZmEyMDllMzQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9y bWF0dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKQEAg LTQyNjMsNyArNDI2Myw3IEBAIHBhcnNlX2RhdGV0aW1lKHRleHQgKmRhdGVfdHh0LCB0ZXh0 ICpmbXQsIE9pZCBjb2xsaWQsIGJvb2wgc3RyaWN0LAogCXsKIAkJaWYgKGZsYWdzICYgRENI X1pPTkVEKQogCQl7Ci0JCQlUaW1lVHpBRFQgICpyZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKFRp bWVUekFEVCkpOworCQkJVGltZVR6QURUICAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChUaW1l VHpBRFQpOwogCiAJCQlpZiAoZnR6Lmhhc190eikKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2Vv X29wcy5jCmluZGV4IDkxMDFhNzIwNzQ0Li40M2I3ZWI0M2E3OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCkBAIC00MjMsNyArNDIzLDcgQEAgYm94X2luKFBHX0ZVTkNUSU9OX0FS R1MpCiB7CiAJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7CiAJTm9kZQkg ICAqZXNjb250ZXh0ID0gZmNpbmZvLT5jb250ZXh0OwotCUJPWAkJICAgKmJveCA9IChCT1gg KikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlCT1gJCSAgICpib3ggPSBwYWxsb2Nfb2JqZWN0 KEJPWCk7CiAJYm9vbAkJaXNvcGVuOwogCWZsb2F0OAkJeCwKIAkJCQl5OwpAQCAtNDcwLDcg KzQ3MCw3IEBAIGJveF9yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJZmxvYXQ4CQl4LAogCQkJ CXk7CiAKLQlib3ggPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJYm94ID0gcGFs bG9jX29iamVjdChCT1gpOwogCiAJYm94LT5oaWdoLnggPSBwcV9nZXRtc2dmbG9hdDgoYnVm KTsKIAlib3gtPmhpZ2gueSA9IHBxX2dldG1zZ2Zsb2F0OChidWYpOwpAQCAtODQ5LDcgKzg0 OSw3IEBAIERhdHVtCiBib3hfY2VudGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQk9YCQkg ICAqYm94ID0gUEdfR0VUQVJHX0JPWF9QKDApOwotCVBvaW50CSAgICpyZXN1bHQgPSAoUG9p bnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkpOworCVBvaW50CSAgICpyZXN1bHQgPSBwYWxs b2Nfb2JqZWN0KFBvaW50KTsKIAogCWJveF9jbihyZXN1bHQsIGJveCk7CiAKQEAgLTkxNCw3 ICs5MTQsNyBAQCBib3hfaW50ZXJzZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKCFib3hf b3YoYm94MSwgYm94MikpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CiAKLQlyZXN1bHQgPSAoQk9Y ICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChCT1gp OwogCiAJcmVzdWx0LT5oaWdoLnggPSBmbG9hdDhfbWluKGJveDEtPmhpZ2gueCwgYm94Mi0+ aGlnaC54KTsKIAlyZXN1bHQtPmxvdy54ID0gZmxvYXQ4X21heChib3gxLT5sb3cueCwgYm94 Mi0+bG93LngpOwpAQCAtOTMzLDcgKzkzMyw3IEBAIERhdHVtCiBib3hfZGlhZ29uYWwoUEdf RlVOQ1RJT05fQVJHUykKIHsKIAlCT1gJCSAgICpib3ggPSBQR19HRVRBUkdfQk9YX1AoMCk7 Ci0JTFNFRwkgICAqcmVzdWx0ID0gKExTRUcgKikgcGFsbG9jKHNpemVvZihMU0VHKSk7CisJ TFNFRwkgICAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChMU0VHKTsKIAogCXN0YXRsc2VnX2Nv bnN0cnVjdChyZXN1bHQsICZib3gtPmhpZ2gsICZib3gtPmxvdyk7CiAKQEAgLTk4MCw3ICs5 ODAsNyBAQCBsaW5lX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJY2hhcgkgICAqc3RyID0g UEdfR0VUQVJHX0NTVFJJTkcoMCk7CiAJTm9kZQkgICAqZXNjb250ZXh0ID0gZmNpbmZvLT5j b250ZXh0OwotCUxJTkUJICAgKmxpbmUgPSAoTElORSAqKSBwYWxsb2Moc2l6ZW9mKExJTkUp KTsKKwlMSU5FCSAgICpsaW5lID0gcGFsbG9jX29iamVjdChMSU5FKTsKIAlMU0VHCQlsc2Vn OwogCWJvb2wJCWlzb3BlbjsKIAljaGFyCSAgICpzOwpAQCAtMTA0MCw3ICsxMDQwLDcgQEAg bGluZV9yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJU3RyaW5nSW5mbwlidWYgPSAoU3RyaW5n SW5mbykgUEdfR0VUQVJHX1BPSU5URVIoMCk7CiAJTElORQkgICAqbGluZTsKIAotCWxpbmUg PSAoTElORSAqKSBwYWxsb2Moc2l6ZW9mKExJTkUpKTsKKwlsaW5lID0gcGFsbG9jX29iamVj dChMSU5FKTsKIAogCWxpbmUtPkEgPSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKIAlsaW5lLT5C ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBsaW5lX2Nv bnN0cnVjdF9wcChQR19GVU5DVElPTl9BUkdTKQogewogCVBvaW50CSAgICpwdDEgPSBQR19H RVRBUkdfUE9JTlRfUCgwKTsKIAlQb2ludAkgICAqcHQyID0gUEdfR0VUQVJHX1BPSU5UX1Ao MSk7Ci0JTElORQkgICAqcmVzdWx0ID0gKExJTkUgKikgcGFsbG9jKHNpemVvZihMSU5FKSk7 CisJTElORQkgICAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChMSU5FKTsKIAogCWlmIChwb2lu dF9lcV9wb2ludChwdDEsIHB0MikpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xMjg5LDcgKzEy ODksNyBAQCBsaW5lX2ludGVycHQoUEdfRlVOQ1RJT05fQVJHUykKIAlMSU5FCSAgICpsMiA9 IFBHX0dFVEFSR19MSU5FX1AoMSk7CiAJUG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9 IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9jX29i amVjdChQb2ludCk7CiAKIAlpZiAoIWxpbmVfaW50ZXJwdF9saW5lKHJlc3VsdCwgbDEsIGwy KSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTE4MzEsNyArMTgzMSw3IEBAIERhdHVtCiBw b2ludF9pbihQR19GVU5DVElPTl9BUkdTKQogewogCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFS R19DU1RSSU5HKDApOwotCVBvaW50CSAgICpwb2ludCA9IChQb2ludCAqKSBwYWxsb2Moc2l6 ZW9mKFBvaW50KSk7CisJUG9pbnQJICAgKnBvaW50ID0gcGFsbG9jX29iamVjdChQb2ludCk7 CiAKIAkvKiBJZ25vcmUgZmFpbHVyZSBmcm9tIHBhaXJfZGVjb2RlLCBzaW5jZSBvdXIgcmV0 dXJuIHZhbHVlIHdvbid0IG1hdHRlciAqLwogCXBhaXJfZGVjb2RlKHN0ciwgJnBvaW50LT54 LCAmcG9pbnQtPnksIE5VTEwsICJwb2ludCIsIHN0ciwgZmNpbmZvLT5jb250ZXh0KTsKQEAg LTE4NTUsNyArMTg1NSw3IEBAIHBvaW50X3JlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAlTdHJp bmdJbmZvCWJ1ZiA9IChTdHJpbmdJbmZvKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlQb2lu dAkgICAqcG9pbnQ7CiAKLQlwb2ludCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50 KSk7CisJcG9pbnQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAlwb2ludC0+eCA9IHBxX2dl dG1zZ2Zsb2F0OChidWYpOwogCXBvaW50LT55ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CiAJ UEdfUkVUVVJOX1BPSU5UX1AocG9pbnQpOwpAQCAtMjA2Niw3ICsyMDY2LDcgQEAgbHNlZ19p bihQR19GVU5DVElPTl9BUkdTKQogewogCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFSR19DU1RS SU5HKDApOwogCU5vZGUJICAgKmVzY29udGV4dCA9IGZjaW5mby0+Y29udGV4dDsKLQlMU0VH CSAgICpsc2VnID0gKExTRUcgKikgcGFsbG9jKHNpemVvZihMU0VHKSk7CisJTFNFRwkgICAq bHNlZyA9IHBhbGxvY19vYmplY3QoTFNFRyk7CiAJYm9vbAkJaXNvcGVuOwogCiAJaWYgKCFw YXRoX2RlY29kZShzdHIsIHRydWUsIDIsICZsc2VnLT5wWzBdLCAmaXNvcGVuLCBOVUxMLCAi bHNlZyIsIHN0ciwKQEAgLTIwOTQsNyArMjA5NCw3IEBAIGxzZWdfcmVjdihQR19GVU5DVElP Tl9BUkdTKQogCVN0cmluZ0luZm8JYnVmID0gKFN0cmluZ0luZm8pIFBHX0dFVEFSR19QT0lO VEVSKDApOwogCUxTRUcJICAgKmxzZWc7CiAKLQlsc2VnID0gKExTRUcgKikgcGFsbG9jKHNp emVvZihMU0VHKSk7CisJbHNlZyA9IHBhbGxvY19vYmplY3QoTFNFRyk7CiAKIAlsc2VnLT5w WzBdLnggPSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKIAlsc2VnLT5wWzBdLnkgPSBwcV9nZXRt c2dmbG9hdDgoYnVmKTsKQEAgLTIxMzAsNyArMjEzMCw3IEBAIGxzZWdfY29uc3RydWN0KFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJUG9pbnQJICAgKnB0MSA9IFBHX0dFVEFSR19QT0lOVF9Q KDApOwogCVBvaW50CSAgICpwdDIgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKLQlMU0VHCSAg ICpyZXN1bHQgPSAoTFNFRyAqKSBwYWxsb2Moc2l6ZW9mKExTRUcpKTsKKwlMU0VHCSAgICpy ZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KExTRUcpOwogCiAJc3RhdGxzZWdfY29uc3RydWN0KHJl c3VsdCwgcHQxLCBwdDIpOwogCkBAIC0yMzE4LDcgKzIzMTgsNyBAQCBsc2VnX2NlbnRlcihQ R19GVU5DVElPTl9BUkdTKQogCUxTRUcJICAgKmxzZWcgPSBQR19HRVRBUkdfTFNFR19QKDAp OwogCVBvaW50CSAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNp emVvZihQb2ludCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJcmVz dWx0LT54ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwobHNlZy0+cFswXS54LCBsc2VnLT5wWzFd LngpLCAyLjApOwogCXJlc3VsdC0+eSA9IGZsb2F0OF9kaXYoZmxvYXQ4X3BsKGxzZWctPnBb MF0ueSwgbHNlZy0+cFsxXS55KSwgMi4wKTsKQEAgLTIzNjQsNyArMjM2NCw3IEBAIGxzZWdf aW50ZXJwdChQR19GVU5DVElPTl9BUkdTKQogCUxTRUcJICAgKmwyID0gUEdfR0VUQVJHX0xT RUdfUCgxKTsKIAlQb2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBh bGxvYyhzaXplb2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsK IAogCWlmICghbHNlZ19pbnRlcnB0X2xzZWcocmVzdWx0LCBsMSwgbDIpKQogCQlQR19SRVRV Uk5fTlVMTCgpOwpAQCAtMjc1Myw3ICsyNzUzLDcgQEAgY2xvc2VfcGwoUEdfRlVOQ1RJT05f QVJHUykKIAlMSU5FCSAgICpsaW5lID0gUEdfR0VUQVJHX0xJTkVfUCgxKTsKIAlQb2ludAkg ICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2YoUG9pbnQp KTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCWlmIChpc25hbihsaW5l X2Nsb3NlcHRfcG9pbnQocmVzdWx0LCBsaW5lLCBwdCkpKQogCQlQR19SRVRVUk5fTlVMTCgp OwpAQCAtMjc5NCw3ICsyNzk0LDcgQEAgY2xvc2VfcHMoUEdfRlVOQ1RJT05fQVJHUykKIAlM U0VHCSAgICpsc2VnID0gUEdfR0VUQVJHX0xTRUdfUCgxKTsKIAlQb2ludAkgICAqcmVzdWx0 OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2YoUG9pbnQpKTsKKwlyZXN1 bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCWlmIChpc25hbihsc2VnX2Nsb3NlcHRf cG9pbnQocmVzdWx0LCBsc2VnLCBwdCkpKQogCQlQR19SRVRVUk5fTlVMTCgpOwpAQCAtMjg1 OSw3ICsyODU5LDcgQEAgY2xvc2VfbHNlZyhQR19GVU5DVElPTl9BUkdTKQogCWlmIChsc2Vn X3NsKGwxKSA9PSBsc2VnX3NsKGwyKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKIAotCXJlc3Vs dCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChQb2ludCk7CiAKIAlpZiAoaXNuYW4obHNlZ19jbG9zZXB0X2xzZWcocmVzdWx0 LCBsMiwgbDEpKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTI5MzYsNyArMjkzNiw3IEBA IGNsb3NlX3BiKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQk9YCQkgICAqYm94ID0gUEdfR0VUQVJH X0JPWF9QKDEpOwogCVBvaW50CSAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikg cGFsbG9jKHNpemVvZihQb2ludCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQp OwogCiAJaWYgKGlzbmFuKGJveF9jbG9zZXB0X3BvaW50KHJlc3VsdCwgYm94LCBwdCkpKQog CQlQR19SRVRVUk5fTlVMTCgpOwpAQCAtMjk5NCw3ICsyOTk0LDcgQEAgY2xvc2VfbHMoUEdf RlVOQ1RJT05fQVJHUykKIAlpZiAobHNlZ19zbChsc2VnKSA9PSBsaW5lX3NsKGxpbmUpKQog CQlQR19SRVRVUk5fTlVMTCgpOwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXpl b2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCWlmIChp c25hbihsc2VnX2Nsb3NlcHRfbGluZShyZXN1bHQsIGxzZWcsIGxpbmUpKSkKIAkJUEdfUkVU VVJOX05VTEwoKTsKQEAgLTMwNjYsNyArMzA2Niw3IEBAIGNsb3NlX3NiKFBHX0ZVTkNUSU9O X0FSR1MpCiAJQk9YCQkgICAqYm94ID0gUEdfR0VUQVJHX0JPWF9QKDEpOwogCVBvaW50CSAg ICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJaWYgKGlzbmFuKGJveF9j bG9zZXB0X2xzZWcocmVzdWx0LCBib3gsIGxzZWcpKSkKIAkJUEdfUkVUVVJOX05VTEwoKTsK QEAgLTQwOTksNyArNDA5OSw3IEBAIGNvbnN0cnVjdF9wb2ludChQR19GVU5DVElPTl9BUkdT KQogCWZsb2F0OAkJeSA9IFBHX0dFVEFSR19GTE9BVDgoMSk7CiAJUG9pbnQJICAgKnJlc3Vs dDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVz dWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAKIAlwb2ludF9jb25zdHJ1Y3QocmVzdWx0 LCB4LCB5KTsKIApAQCAtNDEyMiw3ICs0MTIyLDcgQEAgcG9pbnRfYWRkKFBHX0ZVTkNUSU9O X0FSR1MpCiAJUG9pbnQJICAgKnAyID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJUG9pbnQJ ICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50 KSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChQb2ludCk7CiAKIAlwb2ludF9hZGRfcG9p bnQocmVzdWx0LCBwMSwgcDIpOwogCkBAIC00MTQ1LDcgKzQxNDUsNyBAQCBwb2ludF9zdWIo UEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcDIgPSBQR19HRVRBUkdfUE9JTlRfUCgx KTsKIAlQb2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhz aXplb2YoUG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAogCXBv aW50X3N1Yl9wb2ludChyZXN1bHQsIHAxLCBwMik7CiAKQEAgLTQxNzAsNyArNDE3MCw3IEBA IHBvaW50X211bChQR19GVU5DVElPTl9BUkdTKQogCVBvaW50CSAgICpwMiA9IFBHX0dFVEFS R19QT0lOVF9QKDEpOwogCVBvaW50CSAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoUG9pbnQg KikgcGFsbG9jKHNpemVvZihQb2ludCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9p bnQpOwogCiAJcG9pbnRfbXVsX3BvaW50KHJlc3VsdCwgcDEsIHAyKTsKIApAQCAtNDE5OSw3 ICs0MTk5LDcgQEAgcG9pbnRfZGl2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAgKnAy ID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJUG9pbnQJICAgKnJlc3VsdDsKIAotCXJlc3Vs dCA9IChQb2ludCAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50KSk7CisJcmVzdWx0ID0gcGFsbG9j X29iamVjdChQb2ludCk7CiAKIAlwb2ludF9kaXZfcG9pbnQocmVzdWx0LCBwMSwgcDIpOwog CkBAIC00MjIwLDcgKzQyMjAsNyBAQCBwb2ludHNfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UG9pbnQJICAgKnAyID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJQk9YCQkgICAqcmVzdWx0 OwogCi0JcmVzdWx0ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QoQk9YKTsKIAogCWJveF9jb25zdHJ1Y3QocmVzdWx0LCBwMSwgcDIp OwogCkBAIC00MjM0LDcgKzQyMzQsNyBAQCBib3hfYWRkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UG9pbnQJICAgKnAgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlCT1gJCSAgICpyZXN1bHQ7 CiAKLQlyZXN1bHQgPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJcmVzdWx0ID0g cGFsbG9jX29iamVjdChCT1gpOwogCiAJcG9pbnRfYWRkX3BvaW50KCZyZXN1bHQtPmhpZ2gs ICZib3gtPmhpZ2gsIHApOwogCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5sb3csICZib3gt PmxvdywgcCk7CkBAIC00MjQ5LDcgKzQyNDksNyBAQCBib3hfc3ViKFBHX0ZVTkNUSU9OX0FS R1MpCiAJUG9pbnQJICAgKnAgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlCT1gJCSAgICpy ZXN1bHQ7CiAKLQlyZXN1bHQgPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CisJcmVz dWx0ID0gcGFsbG9jX29iamVjdChCT1gpOwogCiAJcG9pbnRfc3ViX3BvaW50KCZyZXN1bHQt PmhpZ2gsICZib3gtPmhpZ2gsIHApOwogCXBvaW50X3N1Yl9wb2ludCgmcmVzdWx0LT5sb3cs ICZib3gtPmxvdywgcCk7CkBAIC00MjY2LDcgKzQyNjYsNyBAQCBib3hfbXVsKFBHX0ZVTkNU SU9OX0FSR1MpCiAJUG9pbnQJCWhpZ2gsCiAJCQkJbG93OwogCi0JcmVzdWx0ID0gKEJPWCAq KSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsK IAogCXBvaW50X211bF9wb2ludCgmaGlnaCwgJmJveC0+aGlnaCwgcCk7CiAJcG9pbnRfbXVs X3BvaW50KCZsb3csICZib3gtPmxvdywgcCk7CkBAIC00Mjg1LDcgKzQyODUsNyBAQCBib3hf ZGl2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJCWhpZ2gsCiAJCQkJbG93OwogCi0JcmVz dWx0ID0gKEJPWCAqKSBwYWxsb2Moc2l6ZW9mKEJPWCkpOworCXJlc3VsdCA9IHBhbGxvY19v YmplY3QoQk9YKTsKIAogCXBvaW50X2Rpdl9wb2ludCgmaGlnaCwgJmJveC0+aGlnaCwgcCk7 CiAJcG9pbnRfZGl2X3BvaW50KCZsb3csICZib3gtPmxvdywgcCk7CkBAIC00MzA0LDcgKzQz MDQsNyBAQCBwb2ludF9ib3goUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcHQgPSBQ R19HRVRBUkdfUE9JTlRfUCgwKTsKIAlCT1gJCSAgICpib3g7CiAKLQlib3ggPSAoQk9YICop IHBhbGxvYyhzaXplb2YoQk9YKSk7CisJYm94ID0gcGFsbG9jX29iamVjdChCT1gpOwogCiAJ Ym94LT5oaWdoLnggPSBwdC0+eDsKIAlib3gtPmxvdy54ID0gcHQtPng7CkBAIC00MzI0LDcg KzQzMjQsNyBAQCBib3hlc19ib3VuZF9ib3goUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAgICpi b3gyID0gUEdfR0VUQVJHX0JPWF9QKDEpLAogCQkJICAgKmNvbnRhaW5lcjsKIAotCWNvbnRh aW5lciA9IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwljb250YWluZXIgPSBwYWxs b2Nfb2JqZWN0KEJPWCk7CiAKIAljb250YWluZXItPmhpZ2gueCA9IGZsb2F0OF9tYXgoYm94 MS0+aGlnaC54LCBib3gyLT5oaWdoLngpOwogCWNvbnRhaW5lci0+bG93LnggPSBmbG9hdDhf bWluKGJveDEtPmxvdy54LCBib3gyLT5sb3cueCk7CkBAIC00NTA2LDcgKzQ1MDYsNyBAQCBw b2x5X2NlbnRlcihQR19GVU5DVElPTl9BUkdTKQogCVBvaW50CSAgICpyZXN1bHQ7CiAJQ0lS Q0xFCQljaXJjbGU7CiAKLQlyZXN1bHQgPSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2lu dCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCiAJcG9seV90b19jaXJj bGUoJmNpcmNsZSwgcG9seSk7CiAJKnJlc3VsdCA9IGNpcmNsZS5jZW50ZXI7CkBAIC00NTIx LDcgKzQ1MjEsNyBAQCBwb2x5X2JveChQR19GVU5DVElPTl9BUkdTKQogCVBPTFlHT04gICAg KnBvbHkgPSBQR19HRVRBUkdfUE9MWUdPTl9QKDApOwogCUJPWAkJICAgKmJveDsKIAotCWJv eCA9IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlib3ggPSBwYWxsb2Nfb2JqZWN0 KEJPWCk7CiAJKmJveCA9IHBvbHktPmJvdW5kYm94OwogCiAJUEdfUkVUVVJOX0JPWF9QKGJv eCk7CkBAIC00NjEyLDcgKzQ2MTIsNyBAQCBjaXJjbGVfaW4oUEdfRlVOQ1RJT05fQVJHUykK IHsKIAljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdfQ1NUUklORygwKTsKIAlOb2RlCSAgICpl c2NvbnRleHQgPSBmY2luZm8tPmNvbnRleHQ7Ci0JQ0lSQ0xFCSAgICpjaXJjbGUgPSAoQ0lS Q0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7CisJQ0lSQ0xFCSAgICpjaXJjbGUgPSBw YWxsb2Nfb2JqZWN0KENJUkNMRSk7CiAJY2hhcgkgICAqcywKIAkJCSAgICpjcDsKIAlpbnQJ CQlkZXB0aCA9IDA7CkBAIC00NzA1LDcgKzQ3MDUsNyBAQCBjaXJjbGVfcmVjdihQR19GVU5D VElPTl9BUkdTKQogCVN0cmluZ0luZm8JYnVmID0gKFN0cmluZ0luZm8pIFBHX0dFVEFSR19Q T0lOVEVSKDApOwogCUNJUkNMRQkgICAqY2lyY2xlOwogCi0JY2lyY2xlID0gKENJUkNMRSAq KSBwYWxsb2Moc2l6ZW9mKENJUkNMRSkpOworCWNpcmNsZSA9IHBhbGxvY19vYmplY3QoQ0lS Q0xFKTsKIAogCWNpcmNsZS0+Y2VudGVyLnggPSBwcV9nZXRtc2dmbG9hdDgoYnVmKTsKIAlj aXJjbGUtPmNlbnRlci55ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CkBAIC00OTY4LDcgKzQ5 NjgsNyBAQCBjaXJjbGVfYWRkX3B0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9pbnQJICAgKnBv aW50ID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJQ0lSQ0xFCSAgICpyZXN1bHQ7CiAKLQly ZXN1bHQgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7CisJcmVzdWx0ID0g cGFsbG9jX29iamVjdChDSVJDTEUpOwogCiAJcG9pbnRfYWRkX3BvaW50KCZyZXN1bHQtPmNl bnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCk7CiAJcmVzdWx0LT5yYWRpdXMgPSBjaXJj bGUtPnJhZGl1czsKQEAgLTQ5ODMsNyArNDk4Myw3IEBAIGNpcmNsZV9zdWJfcHQoUEdfRlVO Q1RJT05fQVJHUykKIAlQb2ludAkgICAqcG9pbnQgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsK IAlDSVJDTEUJICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChDSVJDTEUgKikgcGFsbG9jKHNp emVvZihDSVJDTEUpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KENJUkNMRSk7CiAKIAlw b2ludF9zdWJfcG9pbnQoJnJlc3VsdC0+Y2VudGVyLCAmY2lyY2xlLT5jZW50ZXIsIHBvaW50 KTsKIAlyZXN1bHQtPnJhZGl1cyA9IGNpcmNsZS0+cmFkaXVzOwpAQCAtNTAwMiw3ICs1MDAy LDcgQEAgY2lyY2xlX211bF9wdChQR19GVU5DVElPTl9BUkdTKQogCVBvaW50CSAgICpwb2lu dCA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCUNJUkNMRQkgICAqcmVzdWx0OwogCi0JcmVz dWx0ID0gKENJUkNMRSAqKSBwYWxsb2Moc2l6ZW9mKENJUkNMRSkpOworCXJlc3VsdCA9IHBh bGxvY19vYmplY3QoQ0lSQ0xFKTsKIAogCXBvaW50X211bF9wb2ludCgmcmVzdWx0LT5jZW50 ZXIsICZjaXJjbGUtPmNlbnRlciwgcG9pbnQpOwogCXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4 X211bChjaXJjbGUtPnJhZGl1cywgaHlwb3QocG9pbnQtPngsIHBvaW50LT55KSk7CkBAIC01 MDE3LDcgKzUwMTcsNyBAQCBjaXJjbGVfZGl2X3B0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUG9p bnQJICAgKnBvaW50ID0gUEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAJQ0lSQ0xFCSAgICpyZXN1 bHQ7CiAKLQlyZXN1bHQgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7CisJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCiAJcG9pbnRfZGl2X3BvaW50KCZy ZXN1bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCk7CiAJcmVzdWx0LT5yYWRp dXMgPSBmbG9hdDhfZGl2KGNpcmNsZS0+cmFkaXVzLCBoeXBvdChwb2ludC0+eCwgcG9pbnQt PnkpKTsKQEAgLTUxNDUsNyArNTE0NSw3IEBAIGNpcmNsZV9jZW50ZXIoUEdfRlVOQ1RJT05f QVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZSA9IFBHX0dFVEFSR19DSVJDTEVfUCgwKTsKIAlQ b2ludAkgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2Yo UG9pbnQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAlyZXN1bHQtPngg PSBjaXJjbGUtPmNlbnRlci54OwogCXJlc3VsdC0+eSA9IGNpcmNsZS0+Y2VudGVyLnk7CiAK QEAgLTUxNzMsNyArNTE3Myw3IEBAIGNyX2NpcmNsZShQR19GVU5DVElPTl9BUkdTKQogCWZs b2F0OAkJcmFkaXVzID0gUEdfR0VUQVJHX0ZMT0FUOCgxKTsKIAlDSVJDTEUJICAgKnJlc3Vs dDsKIAotCXJlc3VsdCA9IChDSVJDTEUgKikgcGFsbG9jKHNpemVvZihDSVJDTEUpKTsKKwly ZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KENJUkNMRSk7CiAKIAlyZXN1bHQtPmNlbnRlci54ID0g Y2VudGVyLT54OwogCXJlc3VsdC0+Y2VudGVyLnkgPSBjZW50ZXItPnk7CkBAIC01MTg5LDcg KzUxODksNyBAQCBjaXJjbGVfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAJQk9YCQkgICAqYm94 OwogCWZsb2F0OAkJZGVsdGE7CiAKLQlib3ggPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9Y KSk7CisJYm94ID0gcGFsbG9jX29iamVjdChCT1gpOwogCiAJZGVsdGEgPSBmbG9hdDhfZGl2 KGNpcmNsZS0+cmFkaXVzLCBzcXJ0KDIuMCkpOwogCkBAIC01MjEwLDcgKzUyMTAsNyBAQCBi b3hfY2lyY2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQk9YCQkgICAqYm94ID0gUEdfR0VUQVJH X0JPWF9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlOwogCi0JY2lyY2xlID0gKENJUkNMRSAq KSBwYWxsb2Moc2l6ZW9mKENJUkNMRSkpOworCWNpcmNsZSA9IHBhbGxvY19vYmplY3QoQ0lS Q0xFKTsKIAogCWNpcmNsZS0+Y2VudGVyLnggPSBmbG9hdDhfZGl2KGZsb2F0OF9wbChib3gt PmhpZ2gueCwgYm94LT5sb3cueCksIDIuMCk7CiAJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0 OF9kaXYoZmxvYXQ4X3BsKGJveC0+aGlnaC55LCBib3gtPmxvdy55KSwgMi4wKTsKQEAgLTUz MDksNyArNTMwOSw3IEBAIHBvbHlfY2lyY2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUE9MWUdP TiAgICAqcG9seSA9IFBHX0dFVEFSR19QT0xZR09OX1AoMCk7CiAJQ0lSQ0xFCSAgICpyZXN1 bHQ7CiAKLQlyZXN1bHQgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7CisJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCiAJcG9seV90b19jaXJjbGUocmVz dWx0LCBwb2x5KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19z cGdpc3QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fc3BnaXN0LmMKaW5kZXggNDMw OGEzMDY1Y2QuLjk0ZDM1MWQ0Nzg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX3NwZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fc3BnaXN0 LmMKQEAgLTE1Niw3ICsxNTYsNyBAQCBnZXRRdWFkcmFudChCT1ggKmNlbnRyb2lkLCBCT1gg KmluQm94KQogc3RhdGljIFJhbmdlQm94ICoKIGdldFJhbmdlQm94KEJPWCAqYm94KQogewot CVJhbmdlQm94ICAgKnJhbmdlX2JveCA9IChSYW5nZUJveCAqKSBwYWxsb2Moc2l6ZW9mKFJh bmdlQm94KSk7CisJUmFuZ2VCb3ggICAqcmFuZ2VfYm94ID0gcGFsbG9jX29iamVjdChSYW5n ZUJveCk7CiAKIAlyYW5nZV9ib3gtPmxlZnQubG93ID0gYm94LT5sb3cueDsKIAlyYW5nZV9i b3gtPmxlZnQuaGlnaCA9IGJveC0+aGlnaC54OwpAQCAtMTc2LDcgKzE3Niw3IEBAIGdldFJh bmdlQm94KEJPWCAqYm94KQogc3RhdGljIFJlY3RCb3ggKgogaW5pdFJlY3RCb3godm9pZCkK IHsKLQlSZWN0Qm94ICAgICpyZWN0X2JveCA9IChSZWN0Qm94ICopIHBhbGxvYyhzaXplb2Yo UmVjdEJveCkpOworCVJlY3RCb3ggICAgKnJlY3RfYm94ID0gcGFsbG9jX29iamVjdChSZWN0 Qm94KTsKIAlmbG9hdDgJCWluZmluaXR5ID0gZ2V0X2Zsb2F0OF9pbmZpbml0eSgpOwogCiAJ cmVjdF9ib3gtPnJhbmdlX2JveF94LmxlZnQubG93ID0gLWluZmluaXR5OwpAQCAtMjA0LDcg KzIwNCw3IEBAIGluaXRSZWN0Qm94KHZvaWQpCiBzdGF0aWMgUmVjdEJveCAqCiBuZXh0UmVj dEJveChSZWN0Qm94ICpyZWN0X2JveCwgUmFuZ2VCb3ggKmNlbnRyb2lkLCB1aW50OCBxdWFk cmFudCkKIHsKLQlSZWN0Qm94ICAgICpuZXh0X3JlY3RfYm94ID0gKFJlY3RCb3ggKikgcGFs bG9jKHNpemVvZihSZWN0Qm94KSk7CisJUmVjdEJveCAgICAqbmV4dF9yZWN0X2JveCA9IHBh bGxvY19vYmplY3QoUmVjdEJveCk7CiAKIAltZW1jcHkobmV4dF9yZWN0X2JveCwgcmVjdF9i b3gsIHNpemVvZihSZWN0Qm94KSk7CiAKQEAgLTQ0NSwxMCArNDQ1LDEwIEBAIHNwZ19ib3hf cXVhZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlCT1gJCSAgICpjZW50cm9pZDsK IAlpbnQJCQltZWRpYW4sCiAJCQkJaTsKLQlmbG9hdDgJICAgKmxvd1hzID0gcGFsbG9jKHNp emVvZihmbG9hdDgpICogaW4tPm5UdXBsZXMpOwotCWZsb2F0OAkgICAqaGlnaFhzID0gcGFs bG9jKHNpemVvZihmbG9hdDgpICogaW4tPm5UdXBsZXMpOwotCWZsb2F0OAkgICAqbG93WXMg PSBwYWxsb2Moc2l6ZW9mKGZsb2F0OCkgKiBpbi0+blR1cGxlcyk7Ci0JZmxvYXQ4CSAgICpo aWdoWXMgPSBwYWxsb2Moc2l6ZW9mKGZsb2F0OCkgKiBpbi0+blR1cGxlcyk7CisJZmxvYXQ4 CSAgICpsb3dYcyA9IHBhbGxvY19hcnJheShmbG9hdDgsIGluLT5uVHVwbGVzKTsKKwlmbG9h dDgJICAgKmhpZ2hYcyA9IHBhbGxvY19hcnJheShmbG9hdDgsIGluLT5uVHVwbGVzKTsKKwlm bG9hdDgJICAgKmxvd1lzID0gcGFsbG9jX2FycmF5KGZsb2F0OCwgaW4tPm5UdXBsZXMpOwor CWZsb2F0OAkgICAqaGlnaFlzID0gcGFsbG9jX2FycmF5KGZsb2F0OCwgaW4tPm5UdXBsZXMp OwogCiAJLyogQ2FsY3VsYXRlIG1lZGlhbiBvZiBhbGwgNEQgY29vcmRpbmF0ZXMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgaW4tPm5UdXBsZXM7IGkrKykKQEAgLTQ2OCw3ICs0NjgsNyBAQCBz cGdfYm94X3F1YWRfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAltZWRpYW4gPSBp bi0+blR1cGxlcyAvIDI7CiAKLQljZW50cm9pZCA9IHBhbGxvYyhzaXplb2YoQk9YKSk7CisJ Y2VudHJvaWQgPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAKIAljZW50cm9pZC0+bG93LnggPSBs b3dYc1ttZWRpYW5dOwogCWNlbnRyb2lkLT5oaWdoLnggPSBoaWdoWHNbbWVkaWFuXTsKQEAg LTQ4Miw4ICs0ODIsOCBAQCBzcGdfYm94X3F1YWRfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJb3V0LT5uTm9kZXMgPSAxNjsKIAlvdXQtPm5vZGVMYWJlbHMgPSBOVUxMOwkJLyog V2UgZG9uJ3QgbmVlZCBub2RlIGxhYmVscy4gKi8KIAotCW91dC0+bWFwVHVwbGVzVG9Ob2Rl cyA9IHBhbGxvYyhzaXplb2YoaW50KSAqIGluLT5uVHVwbGVzKTsKLQlvdXQtPmxlYWZUdXBs ZURhdHVtcyA9IHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5UdXBsZXMpOworCW91dC0+ bWFwVHVwbGVzVG9Ob2RlcyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uVHVwbGVzKTsKKwlv dXQtPmxlYWZUdXBsZURhdHVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgaW4tPm5UdXBsZXMp OwogCiAJLyoKIAkgKiBBc3NpZ24gcmFuZ2VzIHRvIGNvcnJlc3BvbmRpbmcgbm9kZXMgYWNj b3JkaW5nIHRvIHF1YWRyYW50cyByZWxhdGl2ZSB0bwpAQCAtNTc0LDEzICs1NzQsMTMgQEAg c3BnX2JveF9xdWFkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJ CS8qIFJlcG9ydCB0aGF0IGFsbCBub2RlcyBzaG91bGQgYmUgdmlzaXRlZCAqLwogCQlvdXQt Pm5Ob2RlcyA9IGluLT5uTm9kZXM7Ci0JCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBh bGxvYyhzaXplb2YoaW50KSAqIGluLT5uTm9kZXMpOworCQlvdXQtPm5vZGVOdW1iZXJzID0g cGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CiAJCWZvciAoaSA9IDA7IGkgPCBpbi0+ bk5vZGVzOyBpKyspCiAJCQlvdXQtPm5vZGVOdW1iZXJzW2ldID0gaTsKIAogCQlpZiAoaW4t Pm5vcmRlcmJ5cyA+IDAgJiYgaW4tPm5Ob2RlcyA+IDApCiAJCXsKLQkJCWRvdWJsZQkgICAq ZGlzdGFuY2VzID0gcGFsbG9jKHNpemVvZihkb3VibGUpICogaW4tPm5vcmRlcmJ5cyk7CisJ CQlkb3VibGUJICAgKmRpc3RhbmNlcyA9IHBhbGxvY19hcnJheShkb3VibGUsIGluLT5ub3Jk ZXJieXMpOwogCQkJaW50CQkJajsKIAogCQkJZm9yIChqID0gMDsgaiA8IGluLT5ub3JkZXJi eXM7IGorKykKQEAgLTU5MCwxMiArNTkwLDEyIEBAIHNwZ19ib3hfcXVhZF9pbm5lcl9jb25z aXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJZGlzdGFuY2VzW2pdID0gcG9pbnRUb1Jl Y3RCb3hEaXN0YW5jZShwdCwgcmVjdF9ib3gpOwogCQkJfQogCi0JCQlvdXQtPmRpc3RhbmNl cyA9IChkb3VibGUgKiopIHBhbGxvYyhzaXplb2YoZG91YmxlICopICogaW4tPm5Ob2Rlcyk7 CisJCQlvdXQtPmRpc3RhbmNlcyA9IHBhbGxvY19hcnJheShkb3VibGUgKiwgaW4tPm5Ob2Rl cyk7CiAJCQlvdXQtPmRpc3RhbmNlc1swXSA9IGRpc3RhbmNlczsKIAogCQkJZm9yIChpID0g MTsgaSA8IGluLT5uTm9kZXM7IGkrKykKIAkJCXsKLQkJCQlvdXQtPmRpc3RhbmNlc1tpXSA9 IHBhbGxvYyhzaXplb2YoZG91YmxlKSAqIGluLT5ub3JkZXJieXMpOworCQkJCW91dC0+ZGlz dGFuY2VzW2ldID0gcGFsbG9jX2FycmF5KGRvdWJsZSwgaW4tPm5vcmRlcmJ5cyk7CiAJCQkJ bWVtY3B5KG91dC0+ZGlzdGFuY2VzW2ldLCBkaXN0YW5jZXMsCiAJCQkJCSAgIHNpemVvZihk b3VibGUpICogaW4tPm5vcmRlcmJ5cyk7CiAJCQl9CkBAIC02MDksNyArNjA5LDcgQEAgc3Bn X2JveF9xdWFkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBmb2xs b3dpbmcgb3BlcmF0aW9ucy4KIAkgKi8KIAljZW50cm9pZCA9IGdldFJhbmdlQm94KERhdHVt R2V0Qm94UChpbi0+cHJlZml4RGF0dW0pKTsKLQlxdWVyaWVzID0gKFJhbmdlQm94ICoqKSBw YWxsb2MoaW4tPm5rZXlzICogc2l6ZW9mKFJhbmdlQm94ICopKTsKKwlxdWVyaWVzID0gcGFs bG9jX2FycmF5KFJhbmdlQm94ICosIGluLT5ua2V5cyk7CiAJZm9yIChpID0gMDsgaSA8IGlu LT5ua2V5czsgaSsrKQogCXsKIAkJQk9YCQkgICAqYm94ID0gc3BnX2JveF9xdWFkX2dldF9z Y2Fua2V5X2Jib3goJmluLT5zY2Fua2V5c1tpXSwgTlVMTCk7CkBAIC02MTksMTAgKzYxOSwx MCBAQCBzcGdfYm94X3F1YWRfaW5uZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQog CiAJLyogQWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Igbm9kZXMgKi8KIAlvdXQtPm5Ob2Rl cyA9IDA7Ci0Jb3V0LT5ub2RlTnVtYmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQp ICogaW4tPm5Ob2Rlcyk7Ci0Jb3V0LT50cmF2ZXJzYWxWYWx1ZXMgPSAodm9pZCAqKikgcGFs bG9jKHNpemVvZih2b2lkICopICogaW4tPm5Ob2Rlcyk7CisJb3V0LT5ub2RlTnVtYmVycyA9 IHBhbGxvY19hcnJheShpbnQsIGluLT5uTm9kZXMpOworCW91dC0+dHJhdmVyc2FsVmFsdWVz ID0gcGFsbG9jX2FycmF5KHZvaWQgKiwgaW4tPm5Ob2Rlcyk7CiAJaWYgKGluLT5ub3JkZXJi eXMgPiAwKQotCQlvdXQtPmRpc3RhbmNlcyA9IChkb3VibGUgKiopIHBhbGxvYyhzaXplb2Yo ZG91YmxlICopICogaW4tPm5Ob2Rlcyk7CisJCW91dC0+ZGlzdGFuY2VzID0gcGFsbG9jX2Fy cmF5KGRvdWJsZSAqLCBpbi0+bk5vZGVzKTsKIAogCS8qCiAJICogV2Ugc3dpdGNoIG1lbW9y eSBjb250ZXh0LCBiZWNhdXNlIHdlIHdhbnQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcK QEAgLTcwMyw3ICs3MDMsNyBAQCBzcGdfYm94X3F1YWRfaW5uZXJfY29uc2lzdGVudChQR19G VU5DVElPTl9BUkdTKQogCiAJCQlpZiAoaW4tPm5vcmRlcmJ5cyA+IDApCiAJCQl7Ci0JCQkJ ZG91YmxlCSAgICpkaXN0YW5jZXMgPSBwYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBpbi0+bm9y ZGVyYnlzKTsKKwkJCQlkb3VibGUJICAgKmRpc3RhbmNlcyA9IHBhbGxvY19hcnJheShkb3Vi bGUsIGluLT5ub3JkZXJieXMpOwogCQkJCWludAkJCWo7CiAKIAkJCQlvdXQtPmRpc3RhbmNl c1tvdXQtPm5Ob2Rlc10gPSBkaXN0YW5jZXM7CkBAIC04NzgsNyArODc4LDcgQEAgc3BnX3Bv bHlfcXVhZF9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCVBPTFlHT04gICAgKnBvbHln b24gPSBQR19HRVRBUkdfUE9MWUdPTl9QKDApOwogCUJPWAkJICAgKmJveDsKIAotCWJveCA9 IChCT1ggKikgcGFsbG9jKHNpemVvZihCT1gpKTsKKwlib3ggPSBwYWxsb2Nfb2JqZWN0KEJP WCk7CiAJKmJveCA9IHBvbHlnb24tPmJvdW5kYm94OwogCiAJUEdfUkVUVVJOX0JPWF9QKGJv eCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvaW50LmMKaW5kZXggYjU3ODE5ODlhNjQuLjYwNDExZWUwMjRkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2ludC5jCkBAIC0xNTM3LDcgKzE1MzcsNyBAQCBnZW5lcmF0ZV9zZXJp ZXNfc3RlcF9pbnQ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKIAogCQkv KiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVzZXIgY29udGV4dCAqLwotCQlmY3R4ID0gKGdlbmVy YXRlX3Nlcmllc19mY3R4ICopIHBhbGxvYyhzaXplb2YoZ2VuZXJhdGVfc2VyaWVzX2ZjdHgp KTsKKwkJZmN0eCA9IHBhbGxvY19vYmplY3QoZ2VuZXJhdGVfc2VyaWVzX2ZjdHgpOwogCiAJ CS8qCiAJCSAqIFVzZSBmY3R4IHRvIGtlZXAgc3RhdGUgZnJvbSBjYWxsIHRvIGNhbGwuIFNl ZWQgY3VycmVudCB3aXRoIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2ludDguYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKaW5kZXggOWNkNDIwYjRi OWQuLjY3OGY5NzE1MDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50 OC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKQEAgLTE0MTEsNyArMTQx MSw3IEBAIGdlbmVyYXRlX3Nlcmllc19zdGVwX2ludDgoUEdfRlVOQ1RJT05fQVJHUykKIAkJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxs X21lbW9yeV9jdHgpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0 ICovCi0JCWZjdHggPSAoZ2VuZXJhdGVfc2VyaWVzX2ZjdHggKikgcGFsbG9jKHNpemVvZihn ZW5lcmF0ZV9zZXJpZXNfZmN0eCkpOworCQlmY3R4ID0gcGFsbG9jX29iamVjdChnZW5lcmF0 ZV9zZXJpZXNfZmN0eCk7CiAKIAkJLyoKIAkJICogVXNlIGZjdHggdG8ga2VlcCBzdGF0ZSBm cm9tIGNhbGwgdG8gY2FsbC4gU2VlZCBjdXJyZW50IHdpdGggdGhlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYwppbmRleCAwNmRkNjJmMDAwOC4uNzNjYWNmMzNlNjEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYwpAQCAtODA3LDcgKzgwNyw3IEBAIGpzb25fYWdnX3RyYW5zZm5fd29ya2VyKEZ1bmN0 aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGFic2VudF9vbl9udWxsKQogCQkgKiB1c2UgdGhl IHJpZ2h0IGNvbnRleHQgdG8gZW5sYXJnZSB0aGUgb2JqZWN0IGlmIG5lY2Vzc2FyeS4KIAkJ ICovCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYWdnY29udGV4dCk7 Ci0JCXN0YXRlID0gKEpzb25BZ2dTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEpzb25BZ2dTdGF0 ZSkpOworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QoSnNvbkFnZ1N0YXRlKTsKIAkJc3RhdGUt PnN0ciA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKIApAQCAtMTAyOSw3ICsxMDI5LDcgQEAganNvbl9vYmplY3RfYWdnX3RyYW5z Zm5fd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkgKiBzdXJlIHRoZXkgdXNl IHRoZSByaWdodCBjb250ZXh0IHRvIGVubGFyZ2UgdGhlIG9iamVjdCBpZiBuZWNlc3Nhcnku CiAJCSAqLwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGFnZ2NvbnRl eHQpOwotCQlzdGF0ZSA9IChKc29uQWdnU3RhdGUgKikgcGFsbG9jKHNpemVvZihKc29uQWdn U3RhdGUpKTsKKwkJc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KEpzb25BZ2dTdGF0ZSk7CiAJCXN0 YXRlLT5zdHIgPSBtYWtlU3RyaW5nSW5mbygpOwogCQlpZiAodW5pcXVlX2tleXMpCiAJCQlq c29uX3VuaXF1ZV9idWlsZGVyX2luaXQoJnN0YXRlLT51bmlxdWVfY2hlY2spOwpAQCAtMTc2 Miw3ICsxNzYyLDcgQEAganNvbl91bmlxdWVfb2JqZWN0X3N0YXJ0KHZvaWQgKl9zdGF0ZSkK IAkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIAogCS8qIHB1c2ggb2JqZWN0IGVudHJ5IHRvIHN0 YWNrICovCi0JZW50cnkgPSBwYWxsb2Moc2l6ZW9mKCplbnRyeSkpOworCWVudHJ5ID0gcGFs bG9jX29iamVjdChKc29uVW5pcXVlU3RhY2tFbnRyeSk7CiAJZW50cnktPm9iamVjdF9pZCA9 IHN0YXRlLT5pZF9jb3VudGVyKys7CiAJZW50cnktPnBhcmVudCA9IHN0YXRlLT5zdGFjazsK IAlzdGF0ZS0+c3RhY2sgPSBlbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKaW5kZXggOTM5 OWNkYjQ5MWEuLjFjYzY1MGU3MTdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwpAQCAtMTQ3 OCw3ICsxNDc4LDcgQEAgY2xvbmVfcGFyc2Vfc3RhdGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0 ZSkKIAlpZiAoc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CiAKLQlyZXN1bHQgPSBw YWxsb2Moc2l6ZW9mKEpzb25iUGFyc2VTdGF0ZSkpOworCXJlc3VsdCA9IHBhbGxvY19vYmpl Y3QoSnNvbmJQYXJzZVN0YXRlKTsKIAlpY3Vyc29yID0gc3RhdGU7CiAJb2N1cnNvciA9IHJl c3VsdDsKIAlmb3IgKDs7KQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgY2xvbmVfcGFyc2Vfc3Rh dGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSkKIAkJaWN1cnNvciA9IGljdXJzb3ItPm5leHQ7 CiAJCWlmIChpY3Vyc29yID09IE5VTEwpCiAJCQlicmVhazsKLQkJb2N1cnNvci0+bmV4dCA9 IHBhbGxvYyhzaXplb2YoSnNvbmJQYXJzZVN0YXRlKSk7CisJCW9jdXJzb3ItPm5leHQgPSBw YWxsb2Nfb2JqZWN0KEpzb25iUGFyc2VTdGF0ZSk7CiAJCW9jdXJzb3IgPSBvY3Vyc29yLT5u ZXh0OwogCX0KIAlvY3Vyc29yLT5uZXh0ID0gTlVMTDsKQEAgLTE1MzEsOCArMTUzMSw4IEBA IGpzb25iX2FnZ190cmFuc2ZuX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9v bCBhYnNlbnRfb25fbnVsbCkKIAkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSBp bnB1dCBkYXRhIHR5cGUiKSkpOwogCiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oYWdnY29udGV4dCk7Ci0JCXN0YXRlID0gcGFsbG9jKHNpemVvZihKc29uYkFnZ1N0 YXRlKSk7Ci0JCXJlc3VsdCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25iSW5TdGF0ZSkpOworCQlz dGF0ZSA9IHBhbGxvY19vYmplY3QoSnNvbmJBZ2dTdGF0ZSk7CisJCXJlc3VsdCA9IHBhbGxv YzBfb2JqZWN0KEpzb25iSW5TdGF0ZSk7CiAJCXN0YXRlLT5yZXMgPSByZXN1bHQ7CiAJCXJl c3VsdC0+cmVzID0gcHVzaEpzb25iVmFsdWUoJnJlc3VsdC0+cGFyc2VTdGF0ZSwKIAkJCQkJ CQkJCSBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOwpAQCAtMTcwMSw4ICsxNzAxLDggQEAganNv bmJfb2JqZWN0X2FnZ190cmFuc2ZuX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywK IAkJT2lkCQkJYXJnX3R5cGU7CiAKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhhZ2djb250ZXh0KTsKLQkJc3RhdGUgPSBwYWxsb2Moc2l6ZW9mKEpzb25iQWdnU3Rh dGUpKTsKLQkJcmVzdWx0ID0gcGFsbG9jMChzaXplb2YoSnNvbmJJblN0YXRlKSk7CisJCXN0 YXRlID0gcGFsbG9jX29iamVjdChKc29uYkFnZ1N0YXRlKTsKKwkJcmVzdWx0ID0gcGFsbG9j MF9vYmplY3QoSnNvbmJJblN0YXRlKTsKIAkJc3RhdGUtPnJlcyA9IHJlc3VsdDsKIAkJcmVz dWx0LT5yZXMgPSBwdXNoSnNvbmJWYWx1ZSgmcmVzdWx0LT5wYXJzZVN0YXRlLAogCQkJCQkJ CQkJIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25iX2dpbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX2dp bi5jCmluZGV4IDliNTYyNDhjZjBiLi4yMTkwMDkyYjE0ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25iX2dpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYl9naW4uYwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyB2b2lkCiBpbml0X2dp bl9lbnRyaWVzKEdpbkVudHJpZXMgKmVudHJpZXMsIGludCBwcmVhbGxvY2F0ZWQpCiB7CiAJ ZW50cmllcy0+YWxsb2NhdGVkID0gcHJlYWxsb2NhdGVkOwotCWVudHJpZXMtPmJ1ZiA9IHBy ZWFsbG9jYXRlZCA/IHBhbGxvYyhzaXplb2YoRGF0dW0pICogcHJlYWxsb2NhdGVkKSA6IE5V TEw7CisJZW50cmllcy0+YnVmID0gcHJlYWxsb2NhdGVkID8gcGFsbG9jX2FycmF5KERhdHVt LCBwcmVhbGxvY2F0ZWQpIDogTlVMTDsKIAllbnRyaWVzLT5jb3VudCA9IDA7CiB9CiAKQEAg LTE3OCwxMyArMTc4LDE0IEBAIGFkZF9naW5fZW50cnkoR2luRW50cmllcyAqZW50cmllcywg RGF0dW0gZW50cnkpCiAJCWlmIChlbnRyaWVzLT5hbGxvY2F0ZWQpCiAJCXsKIAkJCWVudHJp ZXMtPmFsbG9jYXRlZCAqPSAyOwotCQkJZW50cmllcy0+YnVmID0gcmVwYWxsb2MoZW50cmll cy0+YnVmLAotCQkJCQkJCQkJc2l6ZW9mKERhdHVtKSAqIGVudHJpZXMtPmFsbG9jYXRlZCk7 CisJCQllbnRyaWVzLT5idWYgPSByZXBhbGxvY19hcnJheShlbnRyaWVzLT5idWYsCisJCQkJ CQkJCQkJIERhdHVtLAorCQkJCQkJCQkJCSBlbnRyaWVzLT5hbGxvY2F0ZWQpOwogCQl9CiAJ CWVsc2UKIAkJewogCQkJZW50cmllcy0+YWxsb2NhdGVkID0gODsKLQkJCWVudHJpZXMtPmJ1 ZiA9IHBhbGxvYyhzaXplb2YoRGF0dW0pICogZW50cmllcy0+YWxsb2NhdGVkKTsKKwkJCWVu dHJpZXMtPmJ1ZiA9IHBhbGxvY19hcnJheShEYXR1bSwgZW50cmllcy0+YWxsb2NhdGVkKTsK IAkJfQogCX0KIApAQCAtMzA3LDcgKzMwOCw3IEBAIGpzb25iX29wc19fYWRkX3BhdGhfaXRl bShKc29uUGF0aEdpblBhdGggKnBhdGgsIEpzb25QYXRoSXRlbSAqanNwKQogCQkJcmV0dXJu IGZhbHNlOwogCX0KIAotCXBlbnRyeSA9IHBhbGxvYyhzaXplb2YoKnBlbnRyeSkpOworCXBl bnRyeSA9IHBhbGxvY19vYmplY3QoSnNvblBhdGhHaW5QYXRoSXRlbSk7CiAKIAlwZW50cnkt PnR5cGUgPSBqc3AtPnR5cGU7CiAJcGVudHJ5LT5rZXlOYW1lID0ga2V5TmFtZTsKQEAgLTc4 NSw3ICs3ODYsNyBAQCBleHRyYWN0X2pzcF9xdWVyeShKc29uUGF0aCAqanAsIFN0cmF0ZWd5 TnVtYmVyIHN0cmF0LCBib29sIHBhdGhPcHMsCiAJaWYgKCEqbmVudHJpZXMpCiAJCXJldHVy biBOVUxMOwogCi0JKmV4dHJhX2RhdGEgPSBwYWxsb2MwKHNpemVvZigqKmV4dHJhX2RhdGEp ICogZW50cmllcy5jb3VudCk7CisJKmV4dHJhX2RhdGEgPSBwYWxsb2MwX2FycmF5KFBvaW50 ZXIsIGVudHJpZXMuY291bnQpOwogCSoqZXh0cmFfZGF0YSA9IChQb2ludGVyKSBub2RlOwog CiAJcmV0dXJuIGVudHJpZXMuYnVmOwpAQCAtODY5LDcgKzg3MCw3IEBAIGdpbl9leHRyYWN0 X2pzb25iX3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXRleHQJICAgKnF1ZXJ5ID0gUEdf R0VUQVJHX1RFWFRfUFAoMCk7CiAKIAkJKm5lbnRyaWVzID0gMTsKLQkJZW50cmllcyA9IChE YXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7CisJCWVudHJpZXMgPSBwYWxsb2Nfb2Jq ZWN0KERhdHVtKTsKIAkJZW50cmllc1swXSA9IG1ha2VfdGV4dF9rZXkoSkdJTkZMQUdfS0VZ LAogCQkJCQkJCQkgICBWQVJEQVRBX0FOWShxdWVyeSksCiAJCQkJCQkJCSAgIFZBUlNJWkVf QU5ZX0VYSERSKHF1ZXJ5KSk7CkBAIC04ODcsNyArODg4LDcgQEAgZ2luX2V4dHJhY3RfanNv bmJfcXVlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlkZWNvbnN0cnVjdF9hcnJheV9idWls dGluKHF1ZXJ5LCBURVhUT0lELCAma2V5X2RhdHVtcywgJmtleV9udWxscywgJmtleV9jb3Vu dCk7CiAKLQkJZW50cmllcyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIGtl eV9jb3VudCk7CisJCWVudHJpZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGtleV9jb3VudCk7 CiAKIAkJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBrZXlfY291bnQ7IGkrKykKIAkJewpAQCAt MTEyNiw3ICsxMTI3LDcgQEAgZ2luX2V4dHJhY3RfanNvbmJfcGF0aChQR19GVU5DVElPTl9B UkdTKQogCQkJY2FzZSBXSkJfQkVHSU5fT0JKRUNUOgogCQkJCS8qIFB1c2ggYSBzdGFjayBs ZXZlbCBmb3IgdGhpcyBvYmplY3QgKi8KIAkJCQlwYXJlbnQgPSBzdGFjazsKLQkJCQlzdGFj ayA9IChQYXRoSGFzaFN0YWNrICopIHBhbGxvYyhzaXplb2YoUGF0aEhhc2hTdGFjaykpOwor CQkJCXN0YWNrID0gcGFsbG9jX29iamVjdChQYXRoSGFzaFN0YWNrKTsKIAogCQkJCS8qCiAJ CQkJICogV2UgcGFzcyBmb3J3YXJkIGhhc2hlcyBmcm9tIG91dGVyIG5lc3RpbmcgbGV2ZWxz IHNvIHRoYXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGls LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCmluZGV4IDgyYjgwN2Qw NjdhLi43MTRiMDdhNTU1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25iX3V0aWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCkBA IC0zNTYsNyArMzU2LDcgQEAgZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKEpzb25iQ29u dGFpbmVyICpjb250YWluZXIsIHVpbnQzMiBmbGFncywKIAogCWlmICgoZmxhZ3MgJiBKQl9G QVJSQVkpICYmIEpzb25Db250YWluZXJJc0FycmF5KGNvbnRhaW5lcikpCiAJewotCQlKc29u YlZhbHVlICpyZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKwkJSnNvbmJW YWx1ZSAqcmVzdWx0ID0gcGFsbG9jX29iamVjdChKc29uYlZhbHVlKTsKIAkJY2hhcgkgICAq YmFzZV9hZGRyID0gKGNoYXIgKikgKGNoaWxkcmVuICsgY291bnQpOwogCQl1aW50MzIJCW9m ZnNldCA9IDA7CiAJCWludAkJCWk7CkBAIC00MzksNyArNDM5LDcgQEAgZ2V0S2V5SnNvblZh bHVlRnJvbUNvbnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFpbmVyLAogCQkJaW50CQkJ aW5kZXggPSBzdG9wTWlkZGxlICsgY291bnQ7CiAKIAkJCWlmICghcmVzKQotCQkJCXJlcyA9 IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkpOworCQkJCXJlcyA9IHBhbGxvY19vYmplY3Qo SnNvbmJWYWx1ZSk7CiAKIAkJCWZpbGxKc29uYlZhbHVlKGNvbnRhaW5lciwgaW5kZXgsIGJh c2VBZGRyLAogCQkJCQkJICAgZ2V0SnNvbmJPZmZzZXQoY29udGFpbmVyLCBpbmRleCksCkBA IC00ODEsNyArNDgxLDcgQEAgZ2V0SXRoSnNvbmJWYWx1ZUZyb21Db250YWluZXIoSnNvbmJD b250YWluZXIgKmNvbnRhaW5lciwgdWludDMyIGkpCiAJaWYgKGkgPj0gbmVsZW1lbnRzKQog CQlyZXR1cm4gTlVMTDsKIAotCXJlc3VsdCA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkp OworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSnNvbmJWYWx1ZSk7CiAKIAlmaWxsSnNvbmJW YWx1ZShjb250YWluZXIsIGksIGJhc2VfYWRkciwKIAkJCQkgICBnZXRKc29uYk9mZnNldChj b250YWluZXIsIGkpLApAQCAtNjYzLDggKzY2Myw4IEBAIHB1c2hKc29uYlZhbHVlU2NhbGFy KEpzb25iUGFyc2VTdGF0ZSAqKnBzdGF0ZSwgSnNvbmJJdGVyYXRvclRva2VuIHNlcSwKIAkJ CXsKIAkJCQkoKnBzdGF0ZSktPnNpemUgPSA0OwogCQkJfQotCQkJKCpwc3RhdGUpLT5jb250 VmFsLnZhbC5hcnJheS5lbGVtcyA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1ZSkgKgotCQkJ CQkJCQkJCQkJCQkoKnBzdGF0ZSktPnNpemUpOworCQkJKCpwc3RhdGUpLT5jb250VmFsLnZh bC5hcnJheS5lbGVtcyA9IHBhbGxvY19hcnJheShKc29uYlZhbHVlLAorCQkJCQkJCQkJCQkJ CQkJKCpwc3RhdGUpLT5zaXplKTsKIAkJCWJyZWFrOwogCQljYXNlIFdKQl9CRUdJTl9PQkpF Q1Q6CiAJCQlBc3NlcnQoIXNjYWxhclZhbCk7CkBAIC02NzMsOCArNjczLDggQEAgcHVzaEpz b25iVmFsdWVTY2FsYXIoSnNvbmJQYXJzZVN0YXRlICoqcHN0YXRlLCBKc29uYkl0ZXJhdG9y VG9rZW4gc2VxLAogCQkJKCpwc3RhdGUpLT5jb250VmFsLnR5cGUgPSBqYnZPYmplY3Q7CiAJ CQkoKnBzdGF0ZSktPmNvbnRWYWwudmFsLm9iamVjdC5uUGFpcnMgPSAwOwogCQkJKCpwc3Rh dGUpLT5zaXplID0gNDsKLQkJCSgqcHN0YXRlKS0+Y29udFZhbC52YWwub2JqZWN0LnBhaXJz ID0gcGFsbG9jKHNpemVvZihKc29uYlBhaXIpICoKLQkJCQkJCQkJCQkJCQkJICgqcHN0YXRl KS0+c2l6ZSk7CisJCQkoKnBzdGF0ZSktPmNvbnRWYWwudmFsLm9iamVjdC5wYWlycyA9IHBh bGxvY19hcnJheShKc29uYlBhaXIsCisJCQkJCQkJCQkJCQkJCQkJICgqcHN0YXRlKS0+c2l6 ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBXSkJfS0VZOgogCQkJQXNzZXJ0KHNjYWxhclZhbC0+ dHlwZSA9PSBqYnZTdHJpbmcpOwpAQCAtNzMxLDcgKzczMSw3IEBAIHB1c2hKc29uYlZhbHVl U2NhbGFyKEpzb25iUGFyc2VTdGF0ZSAqKnBzdGF0ZSwgSnNvbmJJdGVyYXRvclRva2VuIHNl cSwKIHN0YXRpYyBKc29uYlBhcnNlU3RhdGUgKgogcHVzaFN0YXRlKEpzb25iUGFyc2VTdGF0 ZSAqKnBzdGF0ZSkKIHsKLQlKc29uYlBhcnNlU3RhdGUgKm5zID0gcGFsbG9jKHNpemVvZihK c29uYlBhcnNlU3RhdGUpKTsKKwlKc29uYlBhcnNlU3RhdGUgKm5zID0gcGFsbG9jX29iamVj dChKc29uYlBhcnNlU3RhdGUpOwogCiAJbnMtPm5leHQgPSAqcHN0YXRlOwogCW5zLT51bmlx dWVfa2V5cyA9IGZhbHNlOwpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgaXRlcmF0b3JGcm9tQ29u dGFpbmVyKEpzb25iQ29udGFpbmVyICpjb250YWluZXIsIEpzb25iSXRlcmF0b3IgKnBhcmVu dCkKIHsKIAlKc29uYkl0ZXJhdG9yICppdDsKIAotCWl0ID0gcGFsbG9jMChzaXplb2YoSnNv bmJJdGVyYXRvcikpOworCWl0ID0gcGFsbG9jMF9vYmplY3QoSnNvbmJJdGVyYXRvcik7CiAJ aXQtPmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKIAlpdC0+cGFyZW50ID0gcGFyZW50OwogCWl0 LT5uRWxlbXMgPSBKc29uQ29udGFpbmVyU2l6ZShjb250YWluZXIpOwpAQCAtMTI1Niw3ICsx MjU2LDcgQEAgSnNvbmJEZWVwQ29udGFpbnMoSnNvbmJJdGVyYXRvciAqKnZhbCwgSnNvbmJJ dGVyYXRvciAqKm1Db250YWluZWQpCiAJCQkJCXVpbnQzMgkJaiA9IDA7CiAKIAkJCQkJLyog TWFrZSByb29tIGZvciBhbGwgcG9zc2libGUgdmFsdWVzICovCi0JCQkJCWxoc0NvbnRzID0g cGFsbG9jKHNpemVvZihKc29uYlZhbHVlKSAqIG5MaHNFbGVtcyk7CisJCQkJCWxoc0NvbnRz ID0gcGFsbG9jX2FycmF5KEpzb25iVmFsdWUsIG5MaHNFbGVtcyk7CiAKIAkJCQkJZm9yIChp ID0gMDsgaSA8IG5MaHNFbGVtczsgaSsrKQogCQkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKaW5kZXggZGUzMmUzMjk5NzUuLmZmMmQ4MDAxZmM3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25mdW5jcy5jCkBAIC01OTMsMTIgKzU5MywxMiBAQCBqc29uYl9vYmplY3Rf a2V5cyhQR19GVU5DVElPTl9BUkdTKQogCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9JTklU KCk7CiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVs dGlfY2FsbF9tZW1vcnlfY3R4KTsKIAotCQlzdGF0ZSA9IHBhbGxvYyhzaXplb2YoT2tleXNT dGF0ZSkpOworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QoT2tleXNTdGF0ZSk7CiAKIAkJc3Rh dGUtPnJlc3VsdF9zaXplID0gSkJfUk9PVF9DT1VOVChqYik7CiAJCXN0YXRlLT5yZXN1bHRf Y291bnQgPSAwOwogCQlzdGF0ZS0+c2VudF9jb3VudCA9IDA7Ci0JCXN0YXRlLT5yZXN1bHQg PSBwYWxsb2Moc3RhdGUtPnJlc3VsdF9zaXplICogc2l6ZW9mKGNoYXIgKikpOworCQlzdGF0 ZS0+cmVzdWx0ID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgc3RhdGUtPnJlc3VsdF9zaXplKTsK IAogCQlpdCA9IEpzb25iSXRlcmF0b3JJbml0KCZqYi0+cm9vdCk7CiAKQEAgLTc0NCwxNCAr NzQ0LDE0IEBAIGpzb25fb2JqZWN0X2tleXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJZnVuY2N0 eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKLQkJc3RhdGUg PSBwYWxsb2Moc2l6ZW9mKE9rZXlzU3RhdGUpKTsKLQkJc2VtID0gcGFsbG9jMChzaXplb2Yo SnNvblNlbUFjdGlvbikpOworCQlzdGF0ZSA9IHBhbGxvY19vYmplY3QoT2tleXNTdGF0ZSk7 CisJCXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOwogCiAJCXN0YXRlLT5s ZXggPSBtYWtlSnNvbkxleENvbnRleHQoJmxleCwganNvbiwgdHJ1ZSk7CiAJCXN0YXRlLT5y ZXN1bHRfc2l6ZSA9IDI1NjsKIAkJc3RhdGUtPnJlc3VsdF9jb3VudCA9IDA7CiAJCXN0YXRl LT5zZW50X2NvdW50ID0gMDsKLQkJc3RhdGUtPnJlc3VsdCA9IHBhbGxvYygyNTYgKiBzaXpl b2YoY2hhciAqKSk7CisJCXN0YXRlLT5yZXN1bHQgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCAy NTYpOwogCiAJCXNlbS0+c2Vtc3RhdGUgPSBzdGF0ZTsKIAkJc2VtLT5hcnJheV9zdGFydCA9 IG9rZXlzX2FycmF5X3N0YXJ0OwpAQCAtMTA0NSw4ICsxMDQ1LDggQEAgZ2V0X3BhdGhfYWxs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGFzX3RleHQpCiAKIAlkZWNvbnN0cnVj dF9hcnJheV9idWlsdGluKHBhdGgsIFRFWFRPSUQsICZwYXRodGV4dCwgJnBhdGhudWxscywg Jm5wYXRoKTsKIAotCXRwYXRoID0gcGFsbG9jKG5wYXRoICogc2l6ZW9mKGNoYXIgKikpOwot CWlwYXRoID0gcGFsbG9jKG5wYXRoICogc2l6ZW9mKGludCkpOworCXRwYXRoID0gcGFsbG9j X2FycmF5KGNoYXIgKiwgbnBhdGgpOworCWlwYXRoID0gcGFsbG9jX2FycmF5KGludCwgbnBh dGgpOwogCiAJZm9yIChpID0gMDsgaSA8IG5wYXRoOyBpKyspCiAJewpAQCAtMTEwNiw4ICsx MTA2LDggQEAgZ2V0X3dvcmtlcih0ZXh0ICpqc29uLAogCQkgICBpbnQgbnBhdGgsCiAJCSAg IGJvb2wgbm9ybWFsaXplX3Jlc3VsdHMpCiB7Ci0JSnNvblNlbUFjdGlvbiAqc2VtID0gcGFs bG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOwotCUdldFN0YXRlICAgKnN0YXRlID0gcGFs bG9jMChzaXplb2YoR2V0U3RhdGUpKTsKKwlKc29uU2VtQWN0aW9uICpzZW0gPSBwYWxsb2Mw X29iamVjdChKc29uU2VtQWN0aW9uKTsKKwlHZXRTdGF0ZSAgICpzdGF0ZSA9IHBhbGxvYzBf b2JqZWN0KEdldFN0YXRlKTsKIAogCUFzc2VydChucGF0aCA+PSAwKTsKIApAQCAtMTExOCw4 ICsxMTE4LDggQEAgZ2V0X3dvcmtlcih0ZXh0ICpqc29uLAogCXN0YXRlLT5ucGF0aCA9IG5w YXRoOwogCXN0YXRlLT5wYXRoX25hbWVzID0gdHBhdGg7CiAJc3RhdGUtPnBhdGhfaW5kZXhl cyA9IGlwYXRoOwotCXN0YXRlLT5wYXRob2sgPSBwYWxsb2MwKHNpemVvZihib29sKSAqIG5w YXRoKTsKLQlzdGF0ZS0+YXJyYXlfY3VyX2luZGV4ID0gcGFsbG9jKHNpemVvZihpbnQpICog bnBhdGgpOworCXN0YXRlLT5wYXRob2sgPSBwYWxsb2MwX2FycmF5KGJvb2wsIG5wYXRoKTsK KwlzdGF0ZS0+YXJyYXlfY3VyX2luZGV4ID0gcGFsbG9jX2FycmF5KGludCwgbnBhdGgpOwog CiAJaWYgKG5wYXRoID4gMCkKIAkJc3RhdGUtPnBhdGhva1swXSA9IHRydWU7CkBAIC0xNjgy LDcgKzE2ODIsNyBAQCBqc29uYl9zZXRfZWxlbWVudChKc29uYiAqamIsIGNvbnN0IERhdHVt ICpwYXRoLCBpbnQgcGF0aF9sZW4sCiAJSnNvbmJWYWx1ZSAqcmVzOwogCUpzb25iUGFyc2VT dGF0ZSAqc3RhdGUgPSBOVUxMOwogCUpzb25iSXRlcmF0b3IgKml0OwotCWJvb2wJICAgKnBh dGhfbnVsbHMgPSBwYWxsb2MwKHBhdGhfbGVuICogc2l6ZW9mKGJvb2wpKTsKKwlib29sCSAg ICpwYXRoX251bGxzID0gcGFsbG9jMF9hcnJheShib29sLCBwYXRoX2xlbik7CiAKIAlpZiAo bmV3dmFsLT50eXBlID09IGpidkFycmF5ICYmIG5ld3ZhbC0+dmFsLmFycmF5LnJhd1NjYWxh cikKIAkJKm5ld3ZhbCA9IG5ld3ZhbC0+dmFsLmFycmF5LmVsZW1zWzBdOwpAQCAtMTcyNyw3 ICsxNzI3LDcgQEAgcHVzaF9wYXRoKEpzb25iUGFyc2VTdGF0ZSAqKnN0LCBpbnQgbGV2ZWws IGNvbnN0IERhdHVtICpwYXRoX2VsZW1zLAogCSAqIGl0IGNvbnRhaW5zIG9ubHkgaW5mb3Jt YXRpb24gYWJvdXQgcGF0aCBzbGljZSBmcm9tIGxldmVsIHRvIHRoZSBlbmQsCiAJICogdGhl IGFjY2VzcyBpbmRleCBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgbGV2ZWwuCiAJICovCi0JZW51 bSBqYnZUeXBlICp0cGF0aCA9IHBhbGxvYzAoKHBhdGhfbGVuIC0gbGV2ZWwpICogc2l6ZW9m KGVudW0gamJ2VHlwZSkpOworCWVudW0gamJ2VHlwZSAqdHBhdGggPSBwYWxsb2MwX2FycmF5 KGVudW0gamJ2VHlwZSwgcGF0aF9sZW4gLSBsZXZlbCk7CiAJSnNvbmJWYWx1ZQluZXdrZXk7 CiAKIAkvKgpAQCAtMTg1NiwxNCArMTg1NiwxNCBAQCBqc29uX2FycmF5X2xlbmd0aChQR19G VU5DVElPTl9BUkdTKQogCUpzb25MZXhDb250ZXh0IGxleDsKIAlKc29uU2VtQWN0aW9uICpz ZW07CiAKLQlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEFsZW5TdGF0ZSkpOworCXN0YXRlID0g cGFsbG9jMF9vYmplY3QoQWxlblN0YXRlKTsKIAlzdGF0ZS0+bGV4ID0gbWFrZUpzb25MZXhD b250ZXh0KCZsZXgsIGpzb24sIGZhbHNlKTsKIAkvKiBwYWxsb2MwIGRvZXMgdGhpcyBmb3Ig dXMgKi8KICNpZiAwCiAJc3RhdGUtPmNvdW50ID0gMDsKICNlbmRpZgogCi0Jc2VtID0gcGFs bG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOworCXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpz b25TZW1BY3Rpb24pOwogCXNlbS0+c2Vtc3RhdGUgPSBzdGF0ZTsKIAlzZW0tPm9iamVjdF9z dGFydCA9IGFsZW5fb2JqZWN0X3N0YXJ0OwogCXNlbS0+c2NhbGFyID0gYWxlbl9zY2FsYXI7 CkBAIC0yMDYzLDggKzIwNjMsOCBAQCBlYWNoX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbywgYm9vbCBhc190ZXh0KQogCVJldHVyblNldEluZm8gKnJzaTsKIAlFYWNoU3RhdGUg ICpzdGF0ZTsKIAotCXN0YXRlID0gcGFsbG9jMChzaXplb2YoRWFjaFN0YXRlKSk7Ci0Jc2Vt ID0gcGFsbG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOworCXN0YXRlID0gcGFsbG9jMF9v YmplY3QoRWFjaFN0YXRlKTsKKwlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9u KTsKIAogCXJzaSA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIApA QCAtMjMxNiw4ICsyMzE2LDggQEAgZWxlbWVudHNfd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8g ZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgYm9vbCBhc190ZXh0KQogCS8qIGVsZW1l bnRzIG9ubHkgbmVlZHMgZXNjYXBlZCBzdHJpbmdzIHdoZW4gYXNfdGV4dCAqLwogCW1ha2VK c29uTGV4Q29udGV4dCgmbGV4LCBqc29uLCBhc190ZXh0KTsKIAotCXN0YXRlID0gcGFsbG9j MChzaXplb2YoRWxlbWVudHNTdGF0ZSkpOwotCXNlbSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25T ZW1BY3Rpb24pKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KEVsZW1lbnRzU3RhdGUpOwor CXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpzb25TZW1BY3Rpb24pOwogCiAJSW5pdE1hdGVyaWFs aXplZFNSRihmY2luZm8sIE1BVF9TUkZfVVNFX0VYUEVDVEVEX0RFU0MgfCBNQVRfU1JGX0JM RVNTKTsKIAlyc2kgPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBA IC0yNTcyLDggKzI1NzIsOCBAQCBwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoUG9wdWxh dGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW1zKQogCX0KIAogCWN0eC0+bmRpbXMgPSBu ZGltczsKLQljdHgtPmRpbXMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuZGltcyk7Ci0JY3R4 LT5zaXplcyA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiBuZGltcyk7CisJY3R4LT5kaW1zID0g cGFsbG9jX2FycmF5KGludCwgbmRpbXMpOworCWN0eC0+c2l6ZXMgPSBwYWxsb2MwX2FycmF5 KGludCwgbmRpbXMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5kaW1zOyBpKyspCiAJCWN0eC0+ ZGltc1tpXSA9IC0xOwkJLyogZGltZW5zaW9ucyBhcmUgdW5rbm93biB5ZXQgKi8KQEAgLTI5 NTgsNyArMjk1OCw3IEBAIHBvcHVsYXRlX2FycmF5KEFycmF5SU9EYXRhICphaW8sCiAKIAlB c3NlcnQoY3R4Lm5kaW1zID4gMCk7CiAKLQlsYnMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBj dHgubmRpbXMpOworCWxicyA9IHBhbGxvY19hcnJheShpbnQsIGN0eC5uZGltcyk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgY3R4Lm5kaW1zOyBpKyspCiAJCWxic1tpXSA9IDE7CkBAIC0zODI0 LDggKzM4MjQsOCBAQCBnZXRfanNvbl9vYmplY3RfYXNfaGFzaChjb25zdCBjaGFyICpqc29u LCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJCQkJICAmY3RsLAogCQkJCQkg IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CiAKLQlzdGF0ZSA9 IHBhbGxvYzAoc2l6ZW9mKEpIYXNoU3RhdGUpKTsKLQlzZW0gPSBwYWxsb2MwKHNpemVvZihK c29uU2VtQWN0aW9uKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChKSGFzaFN0YXRlKTsK KwlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKIAogCXN0YXRlLT5mdW5j dGlvbl9uYW1lID0gZnVuY25hbWU7CiAJc3RhdGUtPmhhc2ggPSB0YWI7CkBAIC00MTIyLDcg KzQxMjIsNyBAQCBwb3B1bGF0ZV9yZWNvcmRzZXRfd29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8g ZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkgKi8KIAl1cGRhdGVfY2FjaGVkX3R1 cGRlc2MoJmNhY2hlLT5jLmlvLmNvbXBvc2l0ZSwgY2FjaGUtPmZuX21jeHQpOwogCi0Jc3Rh dGUgPSBwYWxsb2MwKHNpemVvZihQb3B1bGF0ZVJlY29yZHNldFN0YXRlKSk7CisJc3RhdGUg PSBwYWxsb2MwX29iamVjdChQb3B1bGF0ZVJlY29yZHNldFN0YXRlKTsKIAogCS8qIG1ha2Ug dHVwbGVzdG9yZSBpbiBhIHN1ZmZpY2llbnRseSBsb25nLWxpdmVkIG1lbW9yeSBjb250ZXh0 ICovCiAJb2xkX2N4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhyc2ktPmVjb250ZXh0LT5l Y3h0X3Blcl9xdWVyeV9tZW1vcnkpOwpAQCAtNDE0MSw3ICs0MTQxLDcgQEAgcG9wdWxhdGVf cmVjb3Jkc2V0X3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAq ZnVuY25hbWUsCiAJCUpzb25MZXhDb250ZXh0IGxleDsKIAkJSnNvblNlbUFjdGlvbiAqc2Vt OwogCi0JCXNlbSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKKwkJc2VtID0g cGFsbG9jMF9vYmplY3QoSnNvblNlbUFjdGlvbik7CiAKIAkJbWFrZUpzb25MZXhDb250ZXh0 KCZsZXgsIGpzb24sIHRydWUpOwogCkBAIC00NTExLDggKzQ1MTEsOCBAQCBqc29uX3N0cmlw X251bGxzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSnNvbkxleENvbnRleHQgbGV4OwogCUpzb25T ZW1BY3Rpb24gKnNlbTsKIAotCXN0YXRlID0gcGFsbG9jMChzaXplb2YoU3RyaXBudWxsU3Rh dGUpKTsKLQlzZW0gPSBwYWxsb2MwKHNpemVvZihKc29uU2VtQWN0aW9uKSk7CisJc3RhdGUg PSBwYWxsb2MwX29iamVjdChTdHJpcG51bGxTdGF0ZSk7CisJc2VtID0gcGFsbG9jMF9vYmpl Y3QoSnNvblNlbUFjdGlvbik7CiAJaW5pdFN0cmluZ0luZm8oJnN0cmJ1Zik7CiAKIAlzdGF0 ZS0+bGV4ID0gbWFrZUpzb25MZXhDb250ZXh0KCZsZXgsIGpzb24sIHRydWUpOwpAQCAtNTcz NCw4ICs1NzM0LDggQEAgaXRlcmF0ZV9qc29uX3ZhbHVlcyh0ZXh0ICpqc29uLCB1aW50MzIg ZmxhZ3MsIHZvaWQgKmFjdGlvbl9zdGF0ZSwKIAkJCQkJSnNvbkl0ZXJhdGVTdHJpbmdWYWx1 ZXNBY3Rpb24gYWN0aW9uKQogewogCUpzb25MZXhDb250ZXh0IGxleDsKLQlKc29uU2VtQWN0 aW9uICpzZW0gPSBwYWxsb2MwKHNpemVvZihKc29uU2VtQWN0aW9uKSk7Ci0JSXRlcmF0ZUpz b25TdHJpbmdWYWx1ZXNTdGF0ZSAqc3RhdGUgPSBwYWxsb2MwKHNpemVvZihJdGVyYXRlSnNv blN0cmluZ1ZhbHVlc1N0YXRlKSk7CisJSnNvblNlbUFjdGlvbiAqc2VtID0gcGFsbG9jMF9v YmplY3QoSnNvblNlbUFjdGlvbik7CisJSXRlcmF0ZUpzb25TdHJpbmdWYWx1ZXNTdGF0ZSAq c3RhdGUgPSBwYWxsb2MwX29iamVjdChJdGVyYXRlSnNvblN0cmluZ1ZhbHVlc1N0YXRlKTsK IAogCXN0YXRlLT5sZXggPSBtYWtlSnNvbkxleENvbnRleHQoJmxleCwganNvbiwgdHJ1ZSk7 CiAJc3RhdGUtPmFjdGlvbiA9IGFjdGlvbjsKQEAgLTU4NTUsOCArNTg1NSw4IEBAIHRyYW5z Zm9ybV9qc29uX3N0cmluZ192YWx1ZXModGV4dCAqanNvbiwgdm9pZCAqYWN0aW9uX3N0YXRl LAogCQkJCQkJCSBKc29uVHJhbnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uIHRyYW5zZm9ybV9h Y3Rpb24pCiB7CiAJSnNvbkxleENvbnRleHQgbGV4OwotCUpzb25TZW1BY3Rpb24gKnNlbSA9 IHBhbGxvYzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKLQlUcmFuc2Zvcm1Kc29uU3RyaW5n VmFsdWVzU3RhdGUgKnN0YXRlID0gcGFsbG9jMChzaXplb2YoVHJhbnNmb3JtSnNvblN0cmlu Z1ZhbHVlc1N0YXRlKSk7CisJSnNvblNlbUFjdGlvbiAqc2VtID0gcGFsbG9jMF9vYmplY3Qo SnNvblNlbUFjdGlvbik7CisJVHJhbnNmb3JtSnNvblN0cmluZ1ZhbHVlc1N0YXRlICpzdGF0 ZSA9IHBhbGxvYzBfb2JqZWN0KFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNTdGF0ZSk7CiAJ U3RyaW5nSW5mb0RhdGEgc3RyYnVmOwogCiAJaW5pdFN0cmluZ0luZm8oJnN0cmJ1Zik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCA4MTU2Njk1ZTk3ZS4u N2FhNTE5NGJlN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0 aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpA QCAtNzc1LDcgKzc3NSw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRo RXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJCWJyZWFrOwogCQkJ CX0KIAotCQkJCXYgPSBoYXNOZXh0ID8gJnZidWYgOiBwYWxsb2Moc2l6ZW9mKCp2KSk7CisJ CQkJdiA9IGhhc05leHQgPyAmdmJ1ZiA6IHBhbGxvY19vYmplY3QoSnNvbmJWYWx1ZSk7CiAK IAkJCQliYXNlT2JqZWN0ID0gY3h0LT5iYXNlT2JqZWN0OwogCQkJCWdldEpzb25QYXRoSXRl bShjeHQsIGpzcCwgdik7CkBAIC0xMDg4LDcgKzEwODgsNyBAQCBleGVjdXRlSXRlbU9wdFVu d3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNw LAogCiAJCWNhc2UganBpVHlwZToKIAkJCXsKLQkJCQlKc29uYlZhbHVlICpqYnYgPSBwYWxs b2Moc2l6ZW9mKCpqYnYpKTsKKwkJCQlKc29uYlZhbHVlICpqYnYgPSBwYWxsb2Nfb2JqZWN0 KEpzb25iVmFsdWUpOwogCiAJCQkJamJ2LT50eXBlID0gamJ2U3RyaW5nOwogCQkJCWpidi0+ dmFsLnN0cmluZy52YWwgPSBwc3RyZHVwKEpzb25iVHlwZU5hbWUoamIpKTsKQEAgLTExMTgs NyArMTExOCw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAJCQkJCXNpemUgPSAxOwogCQkJCX0K IAotCQkJCWpiID0gcGFsbG9jKHNpemVvZigqamIpKTsKKwkJCQlqYiA9IHBhbGxvY19vYmpl Y3QoSnNvbmJWYWx1ZSk7CiAKIAkJCQlqYi0+dHlwZSA9IGpidk51bWVyaWM7CiAJCQkJamIt PnZhbC5udW1lcmljID0gaW50NjRfdG9fbnVtZXJpYyhzaXplKTsKQEAgLTEyNDksNyArMTI0 OSw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQg KmN4dCwgSnNvblBhdGhJdGVtICpqc3AsCiAKIAkJCQlsYXN0ID0gY3h0LT5pbm5lcm1vc3RB cnJheVNpemUgLSAxOwogCi0JCQkJbGFzdGpidiA9IGhhc05leHQgPyAmdG1wamJ2IDogcGFs bG9jKHNpemVvZigqbGFzdGpidikpOworCQkJCWxhc3RqYnYgPSBoYXNOZXh0ID8gJnRtcGpi diA6IHBhbGxvY19vYmplY3QoSnNvbmJWYWx1ZSk7CiAKIAkJCQlsYXN0amJ2LT50eXBlID0g amJ2TnVtZXJpYzsKIAkJCQlsYXN0amJ2LT52YWwubnVtZXJpYyA9IGludDY0X3RvX251bWVy aWMobGFzdCk7CkBAIC0yMTYyLDcgKzIxNjIsNyBAQCBleGVjdXRlQmluYXJ5QXJpdGhtRXhw cihKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCWlmICgh anNwR2V0TmV4dChqc3AsICZlbGVtKSAmJiAhZm91bmQpCiAJCXJldHVybiBqcGVyT2s7CiAK LQlsdmFsID0gcGFsbG9jKHNpemVvZigqbHZhbCkpOworCWx2YWwgPSBwYWxsb2Nfb2JqZWN0 KEpzb25iVmFsdWUpOwogCWx2YWwtPnR5cGUgPSBqYnZOdW1lcmljOwogCWx2YWwtPnZhbC5u dW1lcmljID0gcmVzOwogCkBAIC0yMzE3LDcgKzIzMTcsNyBAQCBleGVjdXRlTnVtZXJpY0l0 ZW1NZXRob2QoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwK IAlpZiAoIWpzcEdldE5leHQoanNwLCAmbmV4dCkgJiYgIWZvdW5kKQogCQlyZXR1cm4ganBl ck9rOwogCi0JamIgPSBwYWxsb2Moc2l6ZW9mKCpqYikpOworCWpiID0gcGFsbG9jX29iamVj dChKc29uYlZhbHVlKTsKIAlqYi0+dHlwZSA9IGpidk51bWVyaWM7CiAJamItPnZhbC5udW1l cmljID0gRGF0dW1HZXROdW1lcmljKGRhdHVtKTsKIApAQCAtMjc4Myw3ICsyNzgzLDcgQEAg ZXhlY3V0ZURhdGVUaW1lTWV0aG9kKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBh dGhJdGVtICpqc3AsCiAJaWYgKCFoYXNOZXh0ICYmICFmb3VuZCkKIAkJcmV0dXJuIHJlczsK IAotCWpiID0gaGFzTmV4dCA/ICZqYnZidWYgOiBwYWxsb2Moc2l6ZW9mKCpqYikpOworCWpi ID0gaGFzTmV4dCA/ICZqYnZidWYgOiBwYWxsb2Nfb2JqZWN0KEpzb25iVmFsdWUpOwogCiAJ amItPnR5cGUgPSBqYnZEYXRldGltZTsKIAlqYi0+dmFsLmRhdGV0aW1lLnZhbHVlID0gdmFs dWU7CkBAIC0zMDE4LDcgKzMwMTgsNyBAQCBHZXRKc29uUGF0aFZhcih2b2lkICpjeHQsIGNo YXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQly ZXN1bHQgPSBwYWxsb2Moc2l6ZW9mKEpzb25iVmFsdWUpKTsKKwlyZXN1bHQgPSBwYWxsb2Nf b2JqZWN0KEpzb25iVmFsdWUpOwogCWlmICh2YXItPmlzbnVsbCkKIAl7CiAJCSpiYXNlT2Jq ZWN0SWQgPSAwOwpAQCAtMzQ0NSw3ICszNDQ1LDcgQEAgY29tcGFyZU51bWVyaWMoTnVtZXJp YyBhLCBOdW1lcmljIGIpCiBzdGF0aWMgSnNvbmJWYWx1ZSAqCiBjb3B5SnNvbmJWYWx1ZShK c29uYlZhbHVlICpzcmMpCiB7Ci0JSnNvbmJWYWx1ZSAqZHN0ID0gcGFsbG9jKHNpemVvZigq ZHN0KSk7CisJSnNvbmJWYWx1ZSAqZHN0ID0gcGFsbG9jX29iamVjdChKc29uYlZhbHVlKTsK IAogCSpkc3QgPSAqc3JjOwogCkBAIC00MTE5LDcgKzQxMTksNyBAQCBKc29uVGFibGVJbml0 T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cykKIAlKc29uRXhw ciAgICpqZSA9IGNhc3ROb2RlKEpzb25FeHByLCB0Zi0+ZG9jZXhwcik7CiAJTGlzdAkgICAq YXJncyA9IE5JTDsKIAotCWN4dCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25UYWJsZUV4ZWNDb250 ZXh0KSk7CisJY3h0ID0gcGFsbG9jMF9vYmplY3QoSnNvblRhYmxlRXhlY0NvbnRleHQpOwog CWN4dC0+bWFnaWMgPSBKU09OX1RBQkxFX0VYRUNfQ09OVEVYVF9NQUdJQzsKIAogCS8qCkBA IC00MTM4LDcgKzQxMzgsNyBAQCBKc29uVGFibGVJbml0T3BhcXVlKFRhYmxlRnVuY1NjYW5T dGF0ZSAqc3RhdGUsIGludCBuYXR0cykKIAkJewogCQkJRXhwclN0YXRlICAqc3RhdGUgPSBs Zmlyc3Rfbm9kZShFeHByU3RhdGUsIGV4cHJsYyk7CiAJCQlTdHJpbmcJICAgKm5hbWUgPSBs Zmlyc3Rfbm9kZShTdHJpbmcsIG5hbWVsYyk7Ci0JCQlKc29uUGF0aFZhcmlhYmxlICp2YXIg PSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKwkJCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IHBh bGxvY19vYmplY3QoSnNvblBhdGhWYXJpYWJsZSk7CiAKIAkJCXZhci0+bmFtZSA9IHBzdHJk dXAobmFtZS0+c3ZhbCk7CiAJCQl2YXItPm5hbWVsZW4gPSBzdHJsZW4odmFyLT5uYW1lKTsK QEAgLTQxNTYsOCArNDE1Niw3IEBAIEpzb25UYWJsZUluaXRPcGFxdWUoVGFibGVGdW5jU2Nh blN0YXRlICpzdGF0ZSwgaW50IG5hdHRzKQogCQl9CiAJfQogCi0JY3h0LT5jb2xwbGFuc3Rh dGVzID0gcGFsbG9jKHNpemVvZihKc29uVGFibGVQbGFuU3RhdGUgKikgKgotCQkJCQkJCQls aXN0X2xlbmd0aCh0Zi0+Y29sdmFsZXhwcnMpKTsKKwljeHQtPmNvbHBsYW5zdGF0ZXMgPSBw YWxsb2NfYXJyYXkoSnNvblRhYmxlUGxhblN0YXRlICosIGxpc3RfbGVuZ3RoKHRmLT5jb2x2 YWxleHBycykpOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHBsYW4gZm9yIHRoZSByb290IHBh dGggYW5kLCByZWN1cnNpdmVseSwgYWxzbyBhbnkgY2hpbGQKQEAgLTQxOTUsNyArNDE5NCw3 IEBAIEpzb25UYWJsZUluaXRQbGFuKEpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQsIEpzb25U YWJsZVBsYW4gKnBsYW4sCiAJCQkJICBKc29uVGFibGVQbGFuU3RhdGUgKnBhcmVudHN0YXRl LAogCQkJCSAgTGlzdCAqYXJncywgTWVtb3J5Q29udGV4dCBtY3h0KQogewotCUpzb25UYWJs ZVBsYW5TdGF0ZSAqcGxhbnN0YXRlID0gcGFsbG9jMChzaXplb2YoKnBsYW5zdGF0ZSkpOwor CUpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlID0gcGFsbG9jMF9vYmplY3QoSnNvblRh YmxlUGxhblN0YXRlKTsKIAogCXBsYW5zdGF0ZS0+cGxhbiA9IHBsYW47CiAJcGxhbnN0YXRl LT5wYXJlbnQgPSBwYXJlbnRzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29ucGF0aF9ncmFtLnkgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf Z3JhbS55CmluZGV4IDQ5OTc0NWE4ZmVmLi40MTFhOGJhZjM4MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGJv b2wgbWFrZUl0ZW1MaWtlUmVnZXgoSnNvblBhdGhQYXJzZUl0ZW0gKmV4cHIsCiAKIHJlc3Vs dDoKIAltb2RlIGV4cHJfb3JfcHJlZGljYXRlCQkJewotCQkJCQkJCQkJCSpyZXN1bHQgPSBw YWxsb2Moc2l6ZW9mKEpzb25QYXRoUGFyc2VSZXN1bHQpKTsKKwkJCQkJCQkJCQkqcmVzdWx0 ID0gcGFsbG9jX29iamVjdChKc29uUGF0aFBhcnNlUmVzdWx0KTsKIAkJCQkJCQkJCQkoKnJl c3VsdCktPmV4cHIgPSAkMjsKIAkJCQkJCQkJCQkoKnJlc3VsdCktPmxheCA9ICQxOwogCQkJ CQkJCQkJCSh2b2lkKSB5eW5lcnJzOwpAQCAtMzg0LDcgKzM4NCw3IEBAIG1ldGhvZDoKIHN0 YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCiBtYWtlSXRlbVR5cGUoSnNvblBhdGhJdGVtVHlw ZSB0eXBlKQogewotCUpzb25QYXRoUGFyc2VJdGVtICp2ID0gcGFsbG9jKHNpemVvZigqdikp OworCUpzb25QYXRoUGFyc2VJdGVtICp2ID0gcGFsbG9jX29iamVjdChKc29uUGF0aFBhcnNl SXRlbSk7CiAKIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv bG9ja2Z1bmNzLmMKaW5kZXggZGY5Mzg4MTJkZDMuLmJmMzhkNjhhYTAzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC0xNTIsNyArMTUyLDcgQEAgcGdfbG9ja19zdGF0 dXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogQ29sbGVjdCBhbGwgdGhlIGxvY2tpbmcgaW5m b3JtYXRpb24gdGhhdCB3ZSB3aWxsIGZvcm1hdCBhbmQgc2VuZAogCQkgKiBvdXQgYXMgYSBy ZXN1bHQgc2V0LgogCQkgKi8KLQkJbXlzdGF0dXMgPSAoUEdfTG9ja19TdGF0dXMgKikgcGFs bG9jKHNpemVvZihQR19Mb2NrX1N0YXR1cykpOworCQlteXN0YXR1cyA9IHBhbGxvY19vYmpl Y3QoUEdfTG9ja19TdGF0dXMpOwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBteXN0YXR1czsK IAogCQlteXN0YXR1cy0+bG9ja0RhdGEgPSBHZXRMb2NrU3RhdHVzRGF0YSgpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L21hYy5jCmluZGV4IGJiMzhlZjJmNWU0Li4zNTIzNGU3MDBmZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9tYWMuYwpAQCAtMTAxLDcgKzEwMSw3IEBAIG1hY2FkZHJfaW4oUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwK IAkJCQkgZXJybXNnKCJpbnZhbGlkIG9jdGV0IHZhbHVlIGluIFwibWFjYWRkclwiIHZhbHVl OiBcIiVzXCIiLCBzdHIpKSk7CiAKLQlyZXN1bHQgPSAobWFjYWRkciAqKSBwYWxsb2Moc2l6 ZW9mKG1hY2FkZHIpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KG1hY2FkZHIpOwogCiAJ cmVzdWx0LT5hID0gYTsKIAlyZXN1bHQtPmIgPSBiOwpAQCAtMTQyLDcgKzE0Miw3IEBAIG1h Y2FkZHJfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCVN0cmluZ0luZm8JYnVmID0gKFN0cmlu Z0luZm8pIFBHX0dFVEFSR19QT0lOVEVSKDApOwogCW1hY2FkZHIgICAgKmFkZHI7CiAKLQlh ZGRyID0gKG1hY2FkZHIgKikgcGFsbG9jKHNpemVvZihtYWNhZGRyKSk7CisJYWRkciA9IHBh bGxvY19vYmplY3QobWFjYWRkcik7CiAKIAlhZGRyLT5hID0gcHFfZ2V0bXNnYnl0ZShidWYp OwogCWFkZHItPmIgPSBwcV9nZXRtc2dieXRlKGJ1Zik7CkBAIC0yODksNyArMjg5LDcgQEAg bWFjYWRkcl9ub3QoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRyICAgICphZGRyID0gUEdf R0VUQVJHX01BQ0FERFJfUCgwKTsKIAltYWNhZGRyICAgICpyZXN1bHQ7CiAKLQlyZXN1bHQg PSAobWFjYWRkciAqKSBwYWxsb2Moc2l6ZW9mKG1hY2FkZHIpKTsKKwlyZXN1bHQgPSBwYWxs b2Nfb2JqZWN0KG1hY2FkZHIpOwogCXJlc3VsdC0+YSA9IH5hZGRyLT5hOwogCXJlc3VsdC0+ YiA9IH5hZGRyLT5iOwogCXJlc3VsdC0+YyA9IH5hZGRyLT5jOwpAQCAtMzA2LDcgKzMwNiw3 IEBAIG1hY2FkZHJfYW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbWFjYWRkciAgICAqYWRkcjIg PSBQR19HRVRBUkdfTUFDQUREUl9QKDEpOwogCW1hY2FkZHIgICAgKnJlc3VsdDsKIAotCXJl c3VsdCA9IChtYWNhZGRyICopIHBhbGxvYyhzaXplb2YobWFjYWRkcikpOworCXJlc3VsdCA9 IHBhbGxvY19vYmplY3QobWFjYWRkcik7CiAJcmVzdWx0LT5hID0gYWRkcjEtPmEgJiBhZGRy Mi0+YTsKIAlyZXN1bHQtPmIgPSBhZGRyMS0+YiAmIGFkZHIyLT5iOwogCXJlc3VsdC0+YyA9 IGFkZHIxLT5jICYgYWRkcjItPmM7CkBAIC0zMjMsNyArMzIzLDcgQEAgbWFjYWRkcl9vcihQ R19GVU5DVElPTl9BUkdTKQogCW1hY2FkZHIgICAgKmFkZHIyID0gUEdfR0VUQVJHX01BQ0FE RFJfUCgxKTsKIAltYWNhZGRyICAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAobWFjYWRkciAq KSBwYWxsb2Moc2l6ZW9mKG1hY2FkZHIpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KG1h Y2FkZHIpOwogCXJlc3VsdC0+YSA9IGFkZHIxLT5hIHwgYWRkcjItPmE7CiAJcmVzdWx0LT5i ID0gYWRkcjEtPmIgfCBhZGRyMi0+YjsKIAlyZXN1bHQtPmMgPSBhZGRyMS0+YyB8IGFkZHIy LT5jOwpAQCAtMzQzLDcgKzM0Myw3IEBAIG1hY2FkZHJfdHJ1bmMoUEdfRlVOQ1RJT05fQVJH UykKIAltYWNhZGRyICAgICphZGRyID0gUEdfR0VUQVJHX01BQ0FERFJfUCgwKTsKIAltYWNh ZGRyICAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAobWFjYWRkciAqKSBwYWxsb2Moc2l6ZW9m KG1hY2FkZHIpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KG1hY2FkZHIpOwogCiAJcmVz dWx0LT5hID0gYWRkci0+YTsKIAlyZXN1bHQtPmIgPSBhZGRyLT5iOwpAQCAtMzc0LDcgKzM3 NCw3IEBAIG1hY2FkZHJfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNzdXAtPnNzdXBfY3h0KTsKIAotCQl1 c3MgPSBwYWxsb2Moc2l6ZW9mKG1hY2FkZHJfc29ydHN1cHBvcnRfc3RhdGUpKTsKKwkJdXNz ID0gcGFsbG9jX29iamVjdChtYWNhZGRyX3NvcnRzdXBwb3J0X3N0YXRlKTsKIAkJdXNzLT5p bnB1dF9jb3VudCA9IDA7CiAJCXVzcy0+ZXN0aW1hdGluZyA9IHRydWU7CiAJCWluaXRIeXBl ckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsIDEwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tYWM4LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWFjOC5jCmluZGV4 IDA4ZTQxYmE0ZWVhLi5lYTcxNWE3YTBkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L21hYzguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWFjOC5jCkBAIC0y MDcsNyArMjA3LDcgQEAgbWFjYWRkcjhfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAllbHNlIGlm IChjb3VudCAhPSA4KQogCQlnb3RvIGZhaWw7CiAKLQlyZXN1bHQgPSAobWFjYWRkcjggKikg cGFsbG9jMChzaXplb2YobWFjYWRkcjgpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX29iamVjdCht YWNhZGRyOCk7CiAKIAlyZXN1bHQtPmEgPSBhOwogCXJlc3VsdC0+YiA9IGI7CkBAIC0yNTYs NyArMjU2LDcgQEAgbWFjYWRkcjhfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCVN0cmluZ0lu Zm8JYnVmID0gKFN0cmluZ0luZm8pIFBHX0dFVEFSR19QT0lOVEVSKDApOwogCW1hY2FkZHI4 ICAgKmFkZHI7CiAKLQlhZGRyID0gKG1hY2FkZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1hY2Fk ZHI4KSk7CisJYWRkciA9IHBhbGxvYzBfb2JqZWN0KG1hY2FkZHI4KTsKIAogCWFkZHItPmEg PSBwcV9nZXRtc2dieXRlKGJ1Zik7CiAJYWRkci0+YiA9IHBxX2dldG1zZ2J5dGUoYnVmKTsK QEAgLTQxNyw3ICs0MTcsNyBAQCBtYWNhZGRyOF9ub3QoUEdfRlVOQ1RJT05fQVJHUykKIAlt YWNhZGRyOCAgICphZGRyID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMCk7CiAJbWFjYWRkcjgg ICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1h Y2FkZHI4KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRkcjgpOwogCXJlc3Vs dC0+YSA9IH5hZGRyLT5hOwogCXJlc3VsdC0+YiA9IH5hZGRyLT5iOwogCXJlc3VsdC0+YyA9 IH5hZGRyLT5jOwpAQCAtNDM3LDcgKzQzNyw3IEBAIG1hY2FkZHI4X2FuZChQR19GVU5DVElP Tl9BUkdTKQogCW1hY2FkZHI4ICAgKmFkZHIyID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMSk7 CiAJbWFjYWRkcjggICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxv YzAoc2l6ZW9mKG1hY2FkZHI4KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRk cjgpOwogCXJlc3VsdC0+YSA9IGFkZHIxLT5hICYgYWRkcjItPmE7CiAJcmVzdWx0LT5iID0g YWRkcjEtPmIgJiBhZGRyMi0+YjsKIAlyZXN1bHQtPmMgPSBhZGRyMS0+YyAmIGFkZHIyLT5j OwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIG1hY2FkZHI4X29yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ bWFjYWRkcjggICAqYWRkcjIgPSBQR19HRVRBUkdfTUFDQUREUjhfUCgxKTsKIAltYWNhZGRy OCAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAobWFjYWRkcjggKikgcGFsbG9jMChzaXplb2Yo bWFjYWRkcjgpKTsKKwlyZXN1bHQgPSBwYWxsb2MwX29iamVjdChtYWNhZGRyOCk7CiAJcmVz dWx0LT5hID0gYWRkcjEtPmEgfCBhZGRyMi0+YTsKIAlyZXN1bHQtPmIgPSBhZGRyMS0+YiB8 IGFkZHIyLT5iOwogCXJlc3VsdC0+YyA9IGFkZHIxLT5jIHwgYWRkcjItPmM7CkBAIC00Nzks NyArNDc5LDcgQEAgbWFjYWRkcjhfdHJ1bmMoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRy OCAgICphZGRyID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMCk7CiAJbWFjYWRkcjggICAqcmVz dWx0OwogCi0JcmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1hY2FkZHI4 KSk7CisJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRkcjgpOwogCiAJcmVzdWx0LT5h ID0gYWRkci0+YTsKIAlyZXN1bHQtPmIgPSBhZGRyLT5iOwpAQCAtNTAyLDcgKzUwMiw3IEBA IG1hY2FkZHI4X3NldDdiaXQoUEdfRlVOQ1RJT05fQVJHUykKIAltYWNhZGRyOCAgICphZGRy ID0gUEdfR0VUQVJHX01BQ0FERFI4X1AoMCk7CiAJbWFjYWRkcjggICAqcmVzdWx0OwogCi0J cmVzdWx0ID0gKG1hY2FkZHI4ICopIHBhbGxvYzAoc2l6ZW9mKG1hY2FkZHI4KSk7CisJcmVz dWx0ID0gcGFsbG9jMF9vYmplY3QobWFjYWRkcjgpOwogCiAJcmVzdWx0LT5hID0gYWRkci0+ YSB8IDB4MDI7CiAJcmVzdWx0LT5iID0gYWRkci0+YjsKQEAgLTUyNiw3ICs1MjYsNyBAQCBt YWNhZGRydG9tYWNhZGRyOChQR19GVU5DVElPTl9BUkdTKQogCW1hY2FkZHIgICAgKmFkZHI2 ID0gUEdfR0VUQVJHX01BQ0FERFJfUCgwKTsKIAltYWNhZGRyOCAgICpyZXN1bHQ7CiAKLQly ZXN1bHQgPSAobWFjYWRkcjggKikgcGFsbG9jMChzaXplb2YobWFjYWRkcjgpKTsKKwlyZXN1 bHQgPSBwYWxsb2MwX29iamVjdChtYWNhZGRyOCk7CiAKIAlyZXN1bHQtPmEgPSBhZGRyNi0+ YTsKIAlyZXN1bHQtPmIgPSBhZGRyNi0+YjsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBtYWNhZGRy OHRvbWFjYWRkcihQR19GVU5DVElPTl9BUkdTKQogCW1hY2FkZHI4ICAgKmFkZHIgPSBQR19H RVRBUkdfTUFDQUREUjhfUCgwKTsKIAltYWNhZGRyICAgICpyZXN1bHQ7CiAKLQlyZXN1bHQg PSAobWFjYWRkciAqKSBwYWxsb2MwKHNpemVvZihtYWNhZGRyKSk7CisJcmVzdWx0ID0gcGFs bG9jMF9vYmplY3QobWFjYWRkcik7CiAKIAlpZiAoKGFkZHItPmQgIT0gMHhGRikgfHwgKGFk ZHItPmUgIT0gMHhGRSkpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4 dGZ1bmNzLmMKaW5kZXggZmU2ZGNlOWNiYTMuLjQ2ZGZiM2RkMTMzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L21jeHRmdW5jcy5jCkBAIC01Miw3ICs1Miw3IEBAIGludF9saXN0X3RvX2FycmF5 KGNvbnN0IExpc3QgKmxpc3QpCiAJQXJyYXlUeXBlICAqcmVzdWx0X2FycmF5OwogCiAJbGVu Z3RoID0gbGlzdF9sZW5ndGgobGlzdCk7Ci0JZGF0dW1fYXJyYXkgPSAoRGF0dW0gKikgcGFs bG9jKGxlbmd0aCAqIHNpemVvZihEYXR1bSkpOworCWRhdHVtX2FycmF5ID0gcGFsbG9jX2Fy cmF5KERhdHVtLCBsZW5ndGgpOwogCiAJZm9yZWFjaF9pbnQoaSwgbGlzdCkKIAkJZGF0dW1f YXJyYXlbZm9yZWFjaF9jdXJyZW50X2luZGV4KGkpXSA9IEludDMyR2V0RGF0dW0oaSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21pc2MuYwppbmRleCBhMzY1YzQzMmQzNC4uYzMyZjI0ZmJmOTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21pc2MuYwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHBnX2dldF9jYXRhbG9nX2Zv cmVpZ25fa2V5cyhQR19GVU5DVElPTl9BUkdTKQogCQkgKiBhcnJheV9pbiwgYW5kIGl0IHdv dWxkbid0IGJlIHZlcnkgZWZmaWNpZW50IGlmIHdlIGNvdWxkLiAgRmlsbCBhbgogCQkgKiBG bWdySW5mbyB0byB1c2UgZm9yIHRoZSBjYWxsLgogCQkgKi8KLQkJYXJyYXlpbnAgPSAoRm1n ckluZm8gKikgcGFsbG9jKHNpemVvZihGbWdySW5mbykpOworCQlhcnJheWlucCA9IHBhbGxv Y19vYmplY3QoRm1nckluZm8pOwogCQlmbWdyX2luZm8oRl9BUlJBWV9JTiwgYXJyYXlpbnAp OwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBhcnJheWlucDsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCmluZGV4IDUyNzNiOTdmN2ZlLi5hMzRlZmVhNWM2 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYwpAQCAtMTI1 LDcgKzEyNSw3IEBAIG11bHRpcmFuZ2VfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQzMgkJ cmFuZ2VfY291bnQgPSAwOwogCWludDMyCQlyYW5nZV9jYXBhY2l0eSA9IDg7CiAJUmFuZ2VU eXBlICAqcmFuZ2U7Ci0JUmFuZ2VUeXBlICoqcmFuZ2VzID0gcGFsbG9jKHJhbmdlX2NhcGFj aXR5ICogc2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisJUmFuZ2VUeXBlICoqcmFuZ2VzID0gcGFs bG9jX2FycmF5KFJhbmdlVHlwZSAqLCByYW5nZV9jYXBhY2l0eSk7CiAJTXVsdGlyYW5nZUlP RGF0YSAqY2FjaGU7CiAJTXVsdGlyYW5nZVR5cGUgKnJldDsKIAlNdWx0aXJhbmdlUGFyc2VT dGF0ZSBwYXJzZV9zdGF0ZTsKQEAgLTM0OCw3ICszNDgsNyBAQCBtdWx0aXJhbmdlX3JlY3Yo UEdfRlVOQ1RJT05fQVJHUykKIAljYWNoZSA9IGdldF9tdWx0aXJhbmdlX2lvX2RhdGEoZmNp bmZvLCBtbHRybmd0eXBvaWQsIElPRnVuY19yZWNlaXZlKTsKIAogCXJhbmdlX2NvdW50ID0g cHFfZ2V0bXNnaW50KGJ1ZiwgNCk7Ci0JcmFuZ2VzID0gcGFsbG9jKHJhbmdlX2NvdW50ICog c2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisJcmFuZ2VzID0gcGFsbG9jX2FycmF5KFJhbmdlVHlw ZSAqLCByYW5nZV9jb3VudCk7CiAKIAlpbml0U3RyaW5nSW5mbygmdG1wYnVmKTsKIAlmb3Ig KGludCBpID0gMDsgaSA8IHJhbmdlX2NvdW50OyBpKyspCkBAIC04MzYsNyArODM2LDcgQEAg bXVsdGlyYW5nZV9kZXNlcmlhbGl6ZShUeXBlQ2FjaGVFbnRyeSAqcmFuZ2V0eXAsCiAJewog CQlpbnQJCQlpOwogCi0JCSpyYW5nZXMgPSBwYWxsb2MoKnJhbmdlX2NvdW50ICogc2l6ZW9m KFJhbmdlVHlwZSAqKSk7CisJCSpyYW5nZXMgPSBwYWxsb2NfYXJyYXkoUmFuZ2VUeXBlICos ICpyYW5nZV9jb3VudCk7CiAJCWZvciAoaSA9IDA7IGkgPCAqcmFuZ2VfY291bnQ7IGkrKykK IAkJCSgqcmFuZ2VzKVtpXSA9IG11bHRpcmFuZ2VfZ2V0X3JhbmdlKHJhbmdldHlwLCBtdWx0 aXJhbmdlLCBpKTsKIAl9CkBAIC0yODE4LDcgKzI4MTgsNyBAQCBtdWx0aXJhbmdlX3VubmVz dChQR19GVU5DVElPTl9BUkdTKQogCQltciA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMCk7 CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KLQkJZmN0eCA9 IChtdWx0aXJhbmdlX3VubmVzdF9mY3R4ICopIHBhbGxvYyhzaXplb2YobXVsdGlyYW5nZV91 bm5lc3RfZmN0eCkpOworCQlmY3R4ID0gcGFsbG9jX29iamVjdChtdWx0aXJhbmdlX3VubmVz dF9mY3R4KTsKIAogCQkvKiBpbml0aWFsaXplIHN0YXRlICovCiAJCWZjdHgtPm1yID0gbXI7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzX3Nl bGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1 bmNzLmMKaW5kZXggMjFmMDIwNWQ4MDMuLmZjNWE0MzU0ZmNlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzX3NlbGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlc19zZWxmdW5jcy5jCkBAIC00OTYs OCArNDk2LDggQEAgY2FsY19oaXN0X3NlbGVjdGl2aXR5KFR5cGVDYWNoZUVudHJ5ICp0eXBj YWNoZSwgVmFyaWFibGVTdGF0RGF0YSAqdmFyZGF0YSwKIAkgKiBib3VuZHMuCiAJICovCiAJ bmhpc3QgPSBoc2xvdC5udmFsdWVzOwotCWhpc3RfbG93ZXIgPSAoUmFuZ2VCb3VuZCAqKSBw YWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogbmhpc3QpOwotCWhpc3RfdXBwZXIgPSAoUmFu Z2VCb3VuZCAqKSBwYWxsb2Moc2l6ZW9mKFJhbmdlQm91bmQpICogbmhpc3QpOworCWhpc3Rf bG93ZXIgPSBwYWxsb2NfYXJyYXkoUmFuZ2VCb3VuZCwgbmhpc3QpOworCWhpc3RfdXBwZXIg PSBwYWxsb2NfYXJyYXkoUmFuZ2VCb3VuZCwgbmhpc3QpOwogCWZvciAoaSA9IDA7IGkgPCBu aGlzdDsgaSsrKQogCXsKIAkJYm9vbAkJZW1wdHk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9t dWx0aXhhY3RmdW5jcy5jCmluZGV4IGU3NGVhOTM4MzQ4Li5hNDI4ZTE0MGJjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMKQEAgLTUwLDcgKzUwLDcgQEAg cGdfZ2V0X211bHRpeGFjdF9tZW1iZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWZ1bmNjeHQg PSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKIAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGZ1bmNjeHQtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CiAKLQkJbXVsdGkgPSBwYWxs b2Moc2l6ZW9mKG14YWN0KSk7CisJCW11bHRpID0gcGFsbG9jX29iamVjdChteGFjdCk7CiAJ CS8qIG5vIG5lZWQgdG8gYWxsb3cgZm9yIG9sZCB2YWx1ZXMgaGVyZSAqLwogCQltdWx0aS0+ bm1lbWJlcnMgPSBHZXRNdWx0aVhhY3RJZE1lbWJlcnMobXhpZCwgJm11bHRpLT5tZW1iZXJz LCBmYWxzZSwKIAkJCQkJCQkJCQkJCWZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9uZXR3b3JrLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29yay5j CmluZGV4IDNjYjBhYjY4MjlhLi4zYTIwMDIwOTdkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L25ldHdvcmsuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0 d29yay5jCkBAIC03NSw3ICs3NSw3IEBAIG5ldHdvcmtfaW4oY2hhciAqc3JjLCBib29sIGlz X2NpZHIsIE5vZGUgKmVzY29udGV4dCkKIAlpbnQJCQliaXRzOwogCWluZXQJICAgKmRzdDsK IAotCWRzdCA9IChpbmV0ICopIHBhbGxvYzAoc2l6ZW9mKGluZXQpKTsKKwlkc3QgPSAoaW5l dCAqKSBwYWxsb2MwX29iamVjdChpbmV0KTsKIAogCS8qCiAJICogRmlyc3QsIGNoZWNrIHRv IHNlZSBpZiB0aGlzIGlzIGFuIElQdjYgb3IgSVB2NCBhZGRyZXNzLiAgSVB2NiBhZGRyZXNz ZXMKQEAgLTE5Niw3ICsxOTYsNyBAQCBuZXR3b3JrX3JlY3YoU3RyaW5nSW5mbyBidWYsIGJv b2wgaXNfY2lkcikKIAkJCQlpOwogCiAJLyogbWFrZSBzdXJlIGFueSB1bnVzZWQgYml0cyBp biBhIENJRFIgdmFsdWUgYXJlIHplcm9lZCAqLwotCWFkZHIgPSAoaW5ldCAqKSBwYWxsb2Mw KHNpemVvZihpbmV0KSk7CisJYWRkciA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJaXBf ZmFtaWx5KGFkZHIpID0gcHFfZ2V0bXNnYnl0ZShidWYpOwogCWlmIChpcF9mYW1pbHkoYWRk cikgIT0gUEdTUUxfQUZfSU5FVCAmJgpAQCAtMzYzLDcgKzM2Myw3IEBAIGNpZHJfc2V0X21h c2tsZW4oUEdfRlVOQ1RJT05fQVJHUykKIGluZXQgKgogY2lkcl9zZXRfbWFza2xlbl9pbnRl cm5hbChjb25zdCBpbmV0ICpzcmMsIGludCBiaXRzKQogewotCWluZXQJICAgKmRzdCA9IChp bmV0ICopIHBhbGxvYzAoc2l6ZW9mKGluZXQpKTsKKwlpbmV0CSAgICpkc3QgPSBwYWxsb2Mw X29iamVjdChpbmV0KTsKIAogCWlwX2ZhbWlseShkc3QpID0gaXBfZmFtaWx5KHNyYyk7CiAJ aXBfYml0cyhkc3QpID0gYml0czsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBuZXR3b3JrX3NvcnRz dXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhzc3VwLT5zc3VwX2N4dCk7CiAKLQkJdXNzID0gcGFsbG9jKHNpemVvZihu ZXR3b3JrX3NvcnRzdXBwb3J0X3N0YXRlKSk7CisJCXVzcyA9IHBhbGxvY19vYmplY3QobmV0 d29ya19zb3J0c3VwcG9ydF9zdGF0ZSk7CiAJCXVzcy0+aW5wdXRfY291bnQgPSAwOwogCQl1 c3MtPmVzdGltYXRpbmcgPSB0cnVlOwogCQlpbml0SHlwZXJMb2dMb2coJnVzcy0+YWJicl9j YXJkLCAxMCk7CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBuZXR3b3JrX2Jyb2FkY2FzdChQR19G VU5DVElPTl9BUkdTKQogCQkJICAgKmI7CiAKIAkvKiBtYWtlIHN1cmUgYW55IHVudXNlZCBi aXRzIGFyZSB6ZXJvZWQgKi8KLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0 KSk7CisJZHN0ID0gcGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAltYXhieXRlcyA9IGlwX2Fk ZHJzaXplKGlwKTsKIAliaXRzID0gaXBfYml0cyhpcCk7CkBAIC0xMjcxLDcgKzEyNzEsNyBA QCBuZXR3b3JrX25ldHdvcmsoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAgICpiOwogCiAJLyog bWFrZSBzdXJlIGFueSB1bnVzZWQgYml0cyBhcmUgemVyb2VkICovCi0JZHN0ID0gKGluZXQg KikgcGFsbG9jMChzaXplb2YoaW5ldCkpOworCWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQp OwogCiAJYml0cyA9IGlwX2JpdHMoaXApOwogCWEgPSBpcF9hZGRyKGlwKTsKQEAgLTEzMTQs NyArMTMxNCw3IEBAIG5ldHdvcmtfbmV0bWFzayhQR19GVU5DVElPTl9BUkdTKQogCXVuc2ln bmVkIGNoYXIgKmI7CiAKIAkvKiBtYWtlIHN1cmUgYW55IHVudXNlZCBiaXRzIGFyZSB6ZXJv ZWQgKi8KLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJZHN0ID0g cGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAliaXRzID0gaXBfYml0cyhpcCk7CiAJYiA9IGlw X2FkZHIoZHN0KTsKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIG5ldHdvcmtfaG9zdG1hc2soUEdf RlVOQ1RJT05fQVJHUykKIAl1bnNpZ25lZCBjaGFyICpiOwogCiAJLyogbWFrZSBzdXJlIGFu eSB1bnVzZWQgYml0cyBhcmUgemVyb2VkICovCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChz aXplb2YoaW5ldCkpOworCWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJbWF4Ynl0 ZXMgPSBpcF9hZGRyc2l6ZShpcCk7CiAJYml0cyA9IGlwX21heGJpdHMoaXApIC0gaXBfYml0 cyhpcCk7CkBAIC0xNzkyLDcgKzE3OTIsNyBAQCBpbmV0bm90KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJaW5ldAkgICAqaXAgPSBQR19HRVRBUkdfSU5FVF9QUCgwKTsKIAlpbmV0CSAgICpkc3Q7 CiAKLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJZHN0ID0gcGFs bG9jMF9vYmplY3QoaW5ldCk7CiAKIAl7CiAJCWludAkJCW5iID0gaXBfYWRkcnNpemUoaXAp OwpAQCAtMTgxOCw3ICsxODE4LDcgQEAgaW5ldGFuZChQR19GVU5DVElPTl9BUkdTKQogCWlu ZXQJICAgKmlwMiA9IFBHX0dFVEFSR19JTkVUX1BQKDEpOwogCWluZXQJICAgKmRzdDsKIAot CWRzdCA9IChpbmV0ICopIHBhbGxvYzAoc2l6ZW9mKGluZXQpKTsKKwlkc3QgPSBwYWxsb2Mw X29iamVjdChpbmV0KTsKIAogCWlmIChpcF9mYW1pbHkoaXApICE9IGlwX2ZhbWlseShpcDIp KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTg1MCw3ICsxODUwLDcgQEAgaW5ldG9yKFBHX0ZV TkNUSU9OX0FSR1MpCiAJaW5ldAkgICAqaXAyID0gUEdfR0VUQVJHX0lORVRfUFAoMSk7CiAJ aW5ldAkgICAqZHN0OwogCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXplb2YoaW5ldCkp OworCWRzdCA9IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJaWYgKGlwX2ZhbWlseShpcCkg IT0gaXBfZmFtaWx5KGlwMikpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xODgwLDcgKzE4ODAs NyBAQCBpbnRlcm5hbF9pbmV0cGwoaW5ldCAqaXAsIGludDY0IGFkZGVuZCkKIHsKIAlpbmV0 CSAgICpkc3Q7CiAKLQlkc3QgPSAoaW5ldCAqKSBwYWxsb2MwKHNpemVvZihpbmV0KSk7CisJ ZHN0ID0gcGFsbG9jMF9vYmplY3QoaW5ldCk7CiAKIAl7CiAJCWludAkJCW5iID0gaXBfYWRk cnNpemUoaXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmtf Z2lzdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmtfZ2lzdC5jCmluZGV4IGEw OGM0OTUzNzg5Li4zMDE0NWY1OTg1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L25ldHdvcmtfZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3Jr X2dpc3QuYwpAQCAtNDc1LDcgKzQ3NSw3IEBAIGJ1aWxkX2luZXRfdW5pb25fa2V5KGludCBm YW1pbHksIGludCBtaW5iaXRzLCBpbnQgY29tbW9uYml0cywKIAlHaXN0SW5ldEtleSAqcmVz dWx0OwogCiAJLyogTWFrZSBzdXJlIGFueSB1bnVzZWQgYml0cyBhcmUgemVyb2VkLiAqLwot CXJlc3VsdCA9IChHaXN0SW5ldEtleSAqKSBwYWxsb2MwKHNpemVvZihHaXN0SW5ldEtleSkp OworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KEdpc3RJbmV0S2V5KTsKIAogCWdrX2lwX2Zh bWlseShyZXN1bHQpID0gZmFtaWx5OwogCWdrX2lwX21pbmJpdHMocmVzdWx0KSA9IG1pbmJp dHM7CkBAIC01NDYsMTMgKzU0NiwxMyBAQCBpbmV0X2dpc3RfY29tcHJlc3MoUEdfRlVOQ1RJ T05fQVJHUykKIAogCWlmIChlbnRyeS0+bGVhZmtleSkKIAl7Ci0JCXJldHZhbCA9IHBhbGxv YyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVO VFJZKTsKIAkJaWYgKERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KSAhPSBOVUxMKQogCQl7 CiAJCQlpbmV0CSAgICppbiA9IERhdHVtR2V0SW5ldFBQKGVudHJ5LT5rZXkpOwogCQkJR2lz dEluZXRLZXkgKnI7CiAKLQkJCXIgPSAoR2lzdEluZXRLZXkgKikgcGFsbG9jMChzaXplb2Yo R2lzdEluZXRLZXkpKTsKKwkJCXIgPSBwYWxsb2MwX29iamVjdChHaXN0SW5ldEtleSk7CiAK IAkJCWdrX2lwX2ZhbWlseShyKSA9IGlwX2ZhbWlseShpbik7CiAJCQlna19pcF9taW5iaXRz KHIpID0gaXBfYml0cyhpbik7CkBAIC01OTQsMTQgKzU5NCwxNCBAQCBpbmV0X2dpc3RfZmV0 Y2goUEdfRlVOQ1RJT05fQVJHUykKIAlHSVNURU5UUlkgICpyZXR2YWw7CiAJaW5ldAkgICAq ZHN0OwogCi0JZHN0ID0gKGluZXQgKikgcGFsbG9jMChzaXplb2YoaW5ldCkpOworCWRzdCA9 IHBhbGxvYzBfb2JqZWN0KGluZXQpOwogCiAJaXBfZmFtaWx5KGRzdCkgPSBna19pcF9mYW1p bHkoa2V5KTsKIAlpcF9iaXRzKGRzdCkgPSBna19pcF9taW5iaXRzKGtleSk7CiAJbWVtY3B5 KGlwX2FkZHIoZHN0KSwgZ2tfaXBfYWRkcihrZXkpLCBpcF9hZGRyc2l6ZShkc3QpKTsKIAlT RVRfSU5FVF9WQVJTSVpFKGRzdCk7CiAKLQlyZXR2YWwgPSBwYWxsb2Moc2l6ZW9mKEdJU1RF TlRSWSkpOworCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAlnaXN0ZW50 cnlpbml0KCpyZXR2YWwsIEluZXRQR2V0RGF0dW0oZHN0KSwgZW50cnktPnJlbCwgZW50cnkt PnBhZ2UsCiAJCQkJICBlbnRyeS0+b2Zmc2V0LCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrX3NwZ2lzdC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L25ldHdvcmtfc3BnaXN0LmMKaW5kZXggYTg0NzQ3ZDkyNzUuLjJmMWU1OGU5YjVj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29ya19zcGdpc3QuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29ya19zcGdpc3QuYwpAQCAtMTk2LDgg KzE5Niw4IEBAIGluZXRfc3BnX3BpY2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCiAJLyog RG9uJ3QgbmVlZCBsYWJlbHM7IGFsbG9jYXRlIG91dHB1dCBhcnJheXMgKi8KIAlvdXQtPm5v ZGVMYWJlbHMgPSBOVUxMOwotCW91dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IChpbnQgKikgcGFs bG9jKHNpemVvZihpbnQpICogaW4tPm5UdXBsZXMpOwotCW91dC0+bGVhZlR1cGxlRGF0dW1z ID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pICogaW4tPm5UdXBsZXMpOworCW91 dC0+bWFwVHVwbGVzVG9Ob2RlcyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uVHVwbGVzKTsg CisJb3V0LT5sZWFmVHVwbGVEYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5uVHVw bGVzKTsKIAogCWlmIChkaWZmZXJlbnRGYW1pbGllcykKIAl7CkBAIC0zMDEsNyArMzAxLDcg QEAgaW5ldF9zcGdfaW5uZXJfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCiAJaWYg KHdoaWNoKQogCXsKLQkJb3V0LT5ub2RlTnVtYmVycyA9IChpbnQgKikgcGFsbG9jKHNpemVv ZihpbnQpICogaW4tPm5Ob2Rlcyk7CisJCW91dC0+bm9kZU51bWJlcnMgPSBwYWxsb2NfYXJy YXkoaW50LCBpbi0+bk5vZGVzKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgaW4tPm5Ob2Rlczsg aSsrKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYwppbmRleCAyNTAxMDA3ZDk4MS4u NmU4MTAyYTA0NTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmlj LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYwpAQCAtMTc1OSw4ICsx NzU5LDcgQEAgZ2VuZXJhdGVfc2VyaWVzX3N0ZXBfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdT KQogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRp X2NhbGxfbWVtb3J5X2N0eCk7CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNv bnRleHQgKi8KLQkJZmN0eCA9IChnZW5lcmF0ZV9zZXJpZXNfbnVtZXJpY19mY3R4ICopCi0J CQlwYWxsb2Moc2l6ZW9mKGdlbmVyYXRlX3Nlcmllc19udW1lcmljX2ZjdHgpKTsKKwkJZmN0 eCA9IHBhbGxvY19vYmplY3QoZ2VuZXJhdGVfc2VyaWVzX251bWVyaWNfZmN0eCk7CiAKIAkJ LyoKIAkJICogVXNlIGZjdHggdG8ga2VlcCBzdGF0ZSBmcm9tIGNhbGwgdG8gY2FsbC4gU2Vl ZCBjdXJyZW50IHdpdGggdGhlCkBAIC0yMTE3LDcgKzIxMTYsNyBAQCBudW1lcmljX3NvcnRz dXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCU51bWVyaWNTb3J0U3VwcG9ydCAqbnNzOwog CQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3N1 cC0+c3N1cF9jeHQpOwogCi0JCW5zcyA9IHBhbGxvYyhzaXplb2YoTnVtZXJpY1NvcnRTdXBw b3J0KSk7CisJCW5zcyA9IHBhbGxvY19vYmplY3QoTnVtZXJpY1NvcnRTdXBwb3J0KTsKIAog CQkvKgogCQkgKiBwYWxsb2MgYSBidWZmZXIgZm9yIGhhbmRsaW5nIHVuYWxpZ25lZCBwYWNr ZWQgdmFsdWVzIGluIGFkZGl0aW9uIHRvCkBAIC00NzU0LDcgKzQ3NTMsNyBAQCBtYWtlTnVt ZXJpY0FnZ1N0YXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNhbGNTdW1YMikK IAogCW9sZF9jb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGFnZ19jb250ZXh0KTsK IAotCXN0YXRlID0gKE51bWVyaWNBZ2dTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihOdW1lcmlj QWdnU3RhdGUpKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KE51bWVyaWNBZ2dTdGF0ZSk7 CiAJc3RhdGUtPmNhbGNTdW1YMiA9IGNhbGNTdW1YMjsKIAlzdGF0ZS0+YWdnX2NvbnRleHQg PSBhZ2dfY29udGV4dDsKIApAQCAtNDc3Miw3ICs0NzcxLDcgQEAgbWFrZU51bWVyaWNBZ2dT dGF0ZUN1cnJlbnRDb250ZXh0KGJvb2wgY2FsY1N1bVgyKQogewogCU51bWVyaWNBZ2dTdGF0 ZSAqc3RhdGU7CiAKLQlzdGF0ZSA9IChOdW1lcmljQWdnU3RhdGUgKikgcGFsbG9jMChzaXpl b2YoTnVtZXJpY0FnZ1N0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChOdW1lcmlj QWdnU3RhdGUpOwogCXN0YXRlLT5jYWxjU3VtWDIgPSBjYWxjU3VtWDI7CiAJc3RhdGUtPmFn Z19jb250ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CiAKQEAgLTU0MTgsNyArNTQxNyw3 IEBAIG1ha2VJbnQxMjhBZ2dTdGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBj YWxjU3VtWDIpCiAKIAlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhhZ2df Y29udGV4dCk7CiAKLQlzdGF0ZSA9IChJbnQxMjhBZ2dTdGF0ZSAqKSBwYWxsb2MwKHNpemVv ZihJbnQxMjhBZ2dTdGF0ZSkpOworCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoSW50MTI4QWdn U3RhdGUpOwogCXN0YXRlLT5jYWxjU3VtWDIgPSBjYWxjU3VtWDI7CiAKIAlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkX2NvbnRleHQpOwpAQCAtNTQzNSw3ICs1NDM0LDcgQEAgbWFrZUlu dDEyOEFnZ1N0YXRlQ3VycmVudENvbnRleHQoYm9vbCBjYWxjU3VtWDIpCiB7CiAJSW50MTI4 QWdnU3RhdGUgKnN0YXRlOwogCi0Jc3RhdGUgPSAoSW50MTI4QWdnU3RhdGUgKikgcGFsbG9j MChzaXplb2YoSW50MTI4QWdnU3RhdGUpKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KElu dDEyOEFnZ1N0YXRlKTsKIAlzdGF0ZS0+Y2FsY1N1bVgyID0gY2FsY1N1bVgyOwogCiAJcmV0 dXJuIHN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRz ZXRhZ2dzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYwppbmRl eCAyMTIxY2MwNWYyOC4uYWMzOTYzZmMzZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9v cmRlcmVkc2V0YWdncy5jCkBAIC0xNTMsNyArMTUzLDcgQEAgb3JkZXJlZF9zZXRfc3RhcnR1 cChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB1c2VfdHVwbGVzKQogCQlxY29udGV4 dCA9IGZjaW5mby0+ZmxpbmZvLT5mbl9tY3h0OwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHFjb250ZXh0KTsKIAotCQlxc3RhdGUgPSAoT1NBUGVyUXVlcnlTdGF0 ZSAqKSBwYWxsb2MwKHNpemVvZihPU0FQZXJRdWVyeVN0YXRlKSk7CisJCXFzdGF0ZSA9IHBh bGxvYzBfb2JqZWN0KE9TQVBlclF1ZXJ5U3RhdGUpOwogCQlxc3RhdGUtPmFnZ3JlZiA9IGFn Z3JlZjsKIAkJcXN0YXRlLT5xY29udGV4dCA9IHFjb250ZXh0OwogCkBAIC0yNzgsNyArMjc4 LDcgQEAgb3JkZXJlZF9zZXRfc3RhcnR1cChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9v bCB1c2VfdHVwbGVzKQogCS8qIE5vdyBidWlsZCB0aGUgc3R1ZmYgd2UgbmVlZCBpbiBncm91 cC1saWZlc3BhbiBjb250ZXh0ICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhnY29udGV4dCk7CiAKLQlvc2FzdGF0ZSA9IChPU0FQZXJHcm91cFN0YXRlICopIHBh bGxvYyhzaXplb2YoT1NBUGVyR3JvdXBTdGF0ZSkpOworCW9zYXN0YXRlID0gcGFsbG9jX29i amVjdChPU0FQZXJHcm91cFN0YXRlKTsKIAlvc2FzdGF0ZS0+cXN0YXRlID0gcXN0YXRlOwog CW9zYXN0YXRlLT5nY29udGV4dCA9IGdjb250ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ19sb2NhbGVfbGliYy5jCmluZGV4IDZhZDNmOTNiNTQzLi5iMTI1YjVkYTNhNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKQEAgLTQ4Niw3ICs0ODYs NyBAQCBzdHJsb3dlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbWVt b3J5IikpKTsKIAogCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2Rl cyB0aGFuIGlucHV0IGJ5dGVzICovCi0Jd29ya3NwYWNlID0gKHdjaGFyX3QgKikgcGFsbG9j KChzcmNsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisJd29ya3NwYWNlID0gcGFsbG9j X2FycmF5KHdjaGFyX3QsIHNyY2xlbiArIDEpOwogCiAJY2hhcjJ3Y2hhcih3b3Jrc3BhY2Us IHNyY2xlbiArIDEsIHNyYywgc3JjbGVuLCBsb2MpOwogCkBAIC01OTEsNyArNTkxLDcgQEAg c3RydGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIp KSk7CiAKIAkvKiBPdXRwdXQgd29ya3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhh biBpbnB1dCBieXRlcyAqLwotCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygoc3Jj bGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworCXdvcmtzcGFjZSA9IHBhbGxvY19hcnJh eSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKIAogCWNoYXIyd2NoYXIod29ya3NwYWNlLCBzcmNs ZW4gKyAxLCBzcmMsIHNyY2xlbiwgbG9jKTsKIApAQCAtNjg0LDcgKzY4NCw3IEBAIHN0cnVw cGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpz cmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOwog CiAJLyogT3V0cHV0IHdvcmtzcGFjZSBjYW5ub3QgaGF2ZSBtb3JlIGNvZGVzIHRoYW4gaW5w dXQgYnl0ZXMgKi8KLQl3b3Jrc3BhY2UgPSAod2NoYXJfdCAqKSBwYWxsb2MoKHNyY2xlbiAr IDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKwl3b3Jrc3BhY2UgPSBwYWxsb2NfYXJyYXkod2No YXJfdCwgc3JjbGVuICsgMSk7CiAKIAljaGFyMndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsg MSwgc3JjLCBzcmNsZW4sIGxvYyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19uZGlzdGluY3QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19uZGlzdGlu Y3QuYwppbmRleCA1MjkyNTIxYjE2OS4uYjQ3YzkzY2ZmNGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ19uZGlzdGluY3QuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbmRpc3RpbmN0LmMKQEAgLTE4MCw3ICsxODAsNyBAQCBuZGlzdGluY3Rfb2Jq ZWN0X2VuZCh2b2lkICpzdGF0ZSkKIAl9CiAKIAkvKiBDcmVhdGUgdGhlIE1WTkRpc3RpbmN0 SXRlbSAqLwotCWl0ZW0gPSBwYWxsb2Moc2l6ZW9mKE1WTkRpc3RpbmN0SXRlbSkpOworCWl0 ZW0gPSBwYWxsb2Nfb2JqZWN0KE1WTkRpc3RpbmN0SXRlbSk7CiAJaXRlbS0+bmF0dHJpYnV0 ZXMgPSBuYXR0czsKIAlpdGVtLT5hdHRyaWJ1dGVzID0gcGFsbG9jMChuYXR0cyAqIHNpemVv ZihBdHRyTnVtYmVyKSk7CiAJaXRlbS0+bmRpc3RpbmN0ID0gKGRvdWJsZSkgcGFyc2UtPm5k aXN0aW5jdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCmluZGV4IDA2NWE4MDAw Y2YyLi5lMzFlYmQwYTJkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jh bmdldHlwZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBA IC0xMjU4LDcgKzEyNTgsNyBAQCByYW5nZV9taW51c19tdWx0aShQR19GVU5DVElPTl9BUkdT KQogCQkJZWxvZyhFUlJPUiwgInJhbmdlIHR5cGVzIGRvIG5vdCBtYXRjaCIpOwogCiAJCS8q IGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBjb250ZXh0ICovCi0JCWZjdHggPSAoc3RydWN0 IHJhbmdlX21pbnVzX211bHRpX2ZjdHggKikgcGFsbG9jKHNpemVvZihzdHJ1Y3QgcmFuZ2Vf bWludXNfbXVsdGlfZmN0eCkpOworCQlmY3R4ID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgcmFu Z2VfbWludXNfbXVsdGlfZmN0eCk7CiAKIAkJLyoKIAkJICogSW5pdGlhbGl6ZSBzdGF0ZS4g V2UgY2FuJ3Qgc3RvcmUgdGhlIHJhbmdlIHR5cGNhY2hlIGluIGZuX2V4dHJhCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKaW5kZXggYTYwZWU5ODVlNzQuLjMz YzcwNWU2YTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBl c19naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5j CkBAIC0yNTEsNyArMjUxLDcgQEAgbXVsdGlyYW5nZV9naXN0X2NvbXByZXNzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCU11bHRpcmFuZ2VUeXBlICptciA9IERhdHVtR2V0TXVsdGlyYW5nZVR5 cGVQKGVudHJ5LT5rZXkpOwogCQlSYW5nZVR5cGUgICpyOwogCQlUeXBlQ2FjaGVFbnRyeSAq dHlwY2FjaGU7Ci0JCUdJU1RFTlRSWSAgKnJldHZhbCA9IHBhbGxvYyhzaXplb2YoR0lTVEVO VFJZKSk7CisJCUdJU1RFTlRSWSAgKnJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZ KTsKIAogCQl0eXBjYWNoZSA9IG11bHRpcmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgTXVs dGlyYW5nZVR5cGVHZXRPaWQobXIpKTsKIAkJciA9IG11bHRpcmFuZ2VfZ2V0X3VuaW9uX3Jh bmdlKHR5cGNhY2hlLT5ybmd0eXBlLCBtcik7CkBAIC0xMjQwLDggKzEyNDAsNyBAQCByYW5n ZV9naXN0X3NpbmdsZV9zb3J0aW5nX3NwbGl0KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwK IAogCW1heG9mZiA9IGVudHJ5dmVjLT5uIC0gMTsKIAotCXNvcnRJdGVtcyA9IChTaW5nbGVC b3VuZFNvcnRJdGVtICopCi0JCXBhbGxvYyhtYXhvZmYgKiBzaXplb2YoU2luZ2xlQm91bmRT b3J0SXRlbSkpOworCXNvcnRJdGVtcyA9IHBhbGxvY19hcnJheShTaW5nbGVCb3VuZFNvcnRJ dGVtLCBtYXhvZmYpOwogCiAJLyoKIAkgKiBQcmVwYXJlIGF1eGlsaWFyeSBhcnJheSBhbmQg c29ydCB0aGUgdmFsdWVzLgpAQCAtMTM0Myw4ICsxMzQyLDggQEAgcmFuZ2VfZ2lzdF9kb3Vi bGVfc29ydGluZ19zcGxpdChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCiAJY29udGV4dC5m aXJzdCA9IHRydWU7CiAKIAkvKiBBbGxvY2F0ZSBhcnJheXMgZm9yIHNvcnRlZCByYW5nZSBi b3VuZHMgKi8KLQlieV9sb3dlciA9IChOb25FbXB0eVJhbmdlICopIHBhbGxvYyhuZW50cmll cyAqIHNpemVvZihOb25FbXB0eVJhbmdlKSk7Ci0JYnlfdXBwZXIgPSAoTm9uRW1wdHlSYW5n ZSAqKSBwYWxsb2MobmVudHJpZXMgKiBzaXplb2YoTm9uRW1wdHlSYW5nZSkpOworCWJ5X2xv d2VyID0gcGFsbG9jX2FycmF5KE5vbkVtcHR5UmFuZ2UsIG5lbnRyaWVzKTsKKwlieV91cHBl ciA9IHBhbGxvY19hcnJheShOb25FbXB0eVJhbmdlLCBuZW50cmllcyk7CiAKIAkvKiBGaWxs IGFycmF5cyBvZiBib3VuZHMgKi8KIAlmb3IgKGkgPSBGaXJzdE9mZnNldE51bWJlcjsgaSA8 PSBtYXhvZmY7IGkgPSBPZmZzZXROdW1iZXJOZXh0KGkpKQpAQCAtMTQ5OSw4ICsxNDk4LDgg QEAgcmFuZ2VfZ2lzdF9kb3VibGVfc29ydGluZ19zcGxpdChUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGUsCiAJICovCiAKIAkvKiBBbGxvY2F0ZSB2ZWN0b3JzIGZvciByZXN1bHRzICovCi0J di0+c3BsX2xlZnQgPSAoT2Zmc2V0TnVtYmVyICopIHBhbGxvYyhuZW50cmllcyAqIHNpemVv ZihPZmZzZXROdW1iZXIpKTsKLQl2LT5zcGxfcmlnaHQgPSAoT2Zmc2V0TnVtYmVyICopIHBh bGxvYyhuZW50cmllcyAqIHNpemVvZihPZmZzZXROdW1iZXIpKTsKKwl2LT5zcGxfbGVmdCA9 IHBhbGxvY19hcnJheShPZmZzZXROdW1iZXIsIG5lbnRyaWVzKTsKKwl2LT5zcGxfcmlnaHQg PSBwYWxsb2NfYXJyYXkoT2Zmc2V0TnVtYmVyLCBuZW50cmllcyk7CiAJdi0+c3BsX25sZWZ0 ID0gMDsKIAl2LT5zcGxfbnJpZ2h0ID0gMDsKIApAQCAtMTUwOSw3ICsxNTA4LDcgQEAgcmFu Z2VfZ2lzdF9kb3VibGVfc29ydGluZ19zcGxpdChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CiAJICogZWl0aGVyIGdyb3VwIHdpdGhvdXQgYWZmZWN0aW5nIG92ZXJsYXAgYWxvbmcgc2Vs ZWN0ZWQgYXhpcy4KIAkgKi8KIAljb21tb25fZW50cmllc19jb3VudCA9IDA7Ci0JY29tbW9u X2VudHJpZXMgPSAoQ29tbW9uRW50cnkgKikgcGFsbG9jKG5lbnRyaWVzICogc2l6ZW9mKENv bW1vbkVudHJ5KSk7CisJY29tbW9uX2VudHJpZXMgPSBwYWxsb2NfYXJyYXkoQ29tbW9uRW50 cnksIG5lbnRyaWVzKTsKIAogCS8qCiAJICogRGlzdHJpYnV0ZSBlbnRyaWVzIHdoaWNoIGNh biBiZSBkaXN0cmlidXRlZCB1bmFtYmlndW91c2x5LCBhbmQgY29sbGVjdApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc2VsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NlbGZ1bmNzLmMKaW5kZXggZDg1MjUyY2Fm YjIuLjI3ZDczNmE0MGU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFu Z2V0eXBlc19zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5 cGVzX3NlbGZ1bmNzLmMKQEAgLTQxMiw4ICs0MTIsOCBAQCBjYWxjX2hpc3Rfc2VsZWN0aXZp dHkoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBWYXJpYWJsZVN0YXREYXRhICp2YXJkYXRh LAogCSAqIGJvdW5kcy4KIAkgKi8KIAluaGlzdCA9IGhzbG90Lm52YWx1ZXM7Ci0JaGlzdF9s b3dlciA9IChSYW5nZUJvdW5kICopIHBhbGxvYyhzaXplb2YoUmFuZ2VCb3VuZCkgKiBuaGlz dCk7Ci0JaGlzdF91cHBlciA9IChSYW5nZUJvdW5kICopIHBhbGxvYyhzaXplb2YoUmFuZ2VC b3VuZCkgKiBuaGlzdCk7CisJaGlzdF9sb3dlciA9IHBhbGxvY19hcnJheShSYW5nZUJvdW5k LCBuaGlzdCk7CisJaGlzdF91cHBlciA9IHBhbGxvY19hcnJheShSYW5nZUJvdW5kLCBuaGlz dCk7CiAJZm9yIChpID0gMDsgaSA8IG5oaXN0OyBpKyspCiAJewogCQlyYW5nZV9kZXNlcmlh bGl6ZSh0eXBjYWNoZSwgRGF0dW1HZXRSYW5nZVR5cGVQKGhzbG90LnZhbHVlc1tpXSksCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zcGdpc3QuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3NwZ2lzdC5jCmluZGV4IGJlNTE5 NjU0ODgwLi4xNGU1ZDYwNjVmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JhbmdldHlwZXNfc3BnaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jhbmdl dHlwZXNfc3BnaXN0LmMKQEAgLTIxNiw4ICsyMTYsOCBAQCBzcGdfcmFuZ2VfcXVhZF9waWNr c3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJICBSYW5nZVR5cGVHZXRPaWQoRGF0 dW1HZXRSYW5nZVR5cGVQKGluLT5kYXR1bXNbMF0pKSk7CiAKIAkvKiBBbGxvY2F0ZSBtZW1v cnkgZm9yIGJvdW5kcyAqLwotCWxvd2VyQm91bmRzID0gcGFsbG9jKHNpemVvZihSYW5nZUJv dW5kKSAqIGluLT5uVHVwbGVzKTsKLQl1cHBlckJvdW5kcyA9IHBhbGxvYyhzaXplb2YoUmFu Z2VCb3VuZCkgKiBpbi0+blR1cGxlcyk7CisJbG93ZXJCb3VuZHMgPSBwYWxsb2NfYXJyYXko UmFuZ2VCb3VuZCwgaW4tPm5UdXBsZXMpOworCXVwcGVyQm91bmRzID0gcGFsbG9jX2FycmF5 KFJhbmdlQm91bmQsIGluLT5uVHVwbGVzKTsKIAlqID0gMDsKIAogCS8qIERlc2VyaWFsaXpl IGJvdW5kcyBvZiByYW5nZXMsIGNvdW50IG5vbi1lbXB0eSByYW5nZXMgKi8KQEAgLTI0Myw4 ICsyNDMsOCBAQCBzcGdfcmFuZ2VfcXVhZF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykK IAkJb3V0LT5wcmVmaXhEYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAkJb3V0LT5u b2RlTGFiZWxzID0gTlVMTDsKIAotCQlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2Mo c2l6ZW9mKGludCkgKiBpbi0+blR1cGxlcyk7Ci0JCW91dC0+bGVhZlR1cGxlRGF0dW1zID0g cGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbi0+blR1cGxlcyk7CisJCW91dC0+bWFwVHVwbGVz VG9Ob2RlcyA9IHBhbGxvY19hcnJheShpbnQsIGluLT5uVHVwbGVzKTsKKwkJb3V0LT5sZWFm VHVwbGVEYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5uVHVwbGVzKTsKIAogCQkv KiBQbGFjZSBhbGwgcmFuZ2VzIGludG8gbm9kZSAwICovCiAJCWZvciAoaSA9IDA7IGkgPCBp bi0+blR1cGxlczsgaSsrKQpAQCAtMjczLDggKzI3Myw4IEBAIHNwZ19yYW5nZV9xdWFkX3Bp Y2tzcGxpdChQR19GVU5DVElPTl9BUkdTKQogCW91dC0+bk5vZGVzID0gKGluLT5sZXZlbCA9 PSAwKSA/IDUgOiA0OwogCW91dC0+bm9kZUxhYmVscyA9IE5VTEw7CQkvKiB3ZSBkb24ndCBu ZWVkIG5vZGUgbGFiZWxzICovCiAKLQlvdXQtPm1hcFR1cGxlc1RvTm9kZXMgPSBwYWxsb2Mo c2l6ZW9mKGludCkgKiBpbi0+blR1cGxlcyk7Ci0Jb3V0LT5sZWFmVHVwbGVEYXR1bXMgPSBw YWxsb2Moc2l6ZW9mKERhdHVtKSAqIGluLT5uVHVwbGVzKTsKKwlvdXQtPm1hcFR1cGxlc1Rv Tm9kZXMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+blR1cGxlcyk7CisJb3V0LT5sZWFmVHVw bGVEYXR1bXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5uVHVwbGVzKTsKIAogCS8qCiAJ ICogQXNzaWduIHJhbmdlcyB0byBjb3JyZXNwb25kaW5nIG5vZGVzIGFjY29yZGluZyB0byBx dWFkcmFudHMgcmVsYXRpdmUgdG8KQEAgLTMxNiw3ICszMTYsNyBAQCBzcGdfcmFuZ2VfcXVh ZF9pbm5lcl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQkvKiBSZXBvcnQg dGhhdCBhbGwgbm9kZXMgc2hvdWxkIGJlIHZpc2l0ZWQgKi8KIAkJb3V0LT5uTm9kZXMgPSBp bi0+bk5vZGVzOwotCQlvdXQtPm5vZGVOdW1iZXJzID0gKGludCAqKSBwYWxsb2Moc2l6ZW9m KGludCkgKiBpbi0+bk5vZGVzKTsKKwkJb3V0LT5ub2RlTnVtYmVycyA9IHBhbGxvY19hcnJh eShpbnQsIGluLT5uTm9kZXMpOwogCQlmb3IgKGkgPSAwOyBpIDwgaW4tPm5Ob2RlczsgaSsr KQogCQkJb3V0LT5ub2RlTnVtYmVyc1tpXSA9IGk7CiAJCVBHX1JFVFVSTl9WT0lEKCk7CkBA IC03MzIsOSArNzMyLDkgQEAgc3BnX3JhbmdlX3F1YWRfaW5uZXJfY29uc2lzdGVudChQR19G VU5DVElPTl9BUkdTKQogCX0KIAogCS8qIFdlIG11c3QgZGVzY2VuZCBpbnRvIHRoZSBxdWFk cmFudChzKSBpZGVudGlmaWVkIGJ5ICd3aGljaCcgKi8KLQlvdXQtPm5vZGVOdW1iZXJzID0g KGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+bk5vZGVzKTsKKwlvdXQtPm5vZGVO dW1iZXJzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rlcyk7CiAJaWYgKG5lZWRQcmV2 aW91cykKLQkJb3V0LT50cmF2ZXJzYWxWYWx1ZXMgPSAodm9pZCAqKikgcGFsbG9jKHNpemVv Zih2b2lkICopICogaW4tPm5Ob2Rlcyk7CisJCW91dC0+dHJhdmVyc2FsVmFsdWVzID0gcGFs bG9jX2FycmF5KHZvaWQgKiwgaW4tPm5Ob2Rlcyk7CiAJb3V0LT5uTm9kZXMgPSAwOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5cGFu YWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5cGFuYWx5emUu YwppbmRleCAzNmU4ODVhZjJkZC4uNDVlYTZjYmM3ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMKQEAgLTE1MSw5ICsxNTEsOSBA QCBjb21wdXRlX3JhbmdlX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRy RmV0Y2hGdW5jIGZldGNoZnVuYywKIAloYXNfc3ViZGlmZiA9IE9pZElzVmFsaWQodHlwY2Fj aGUtPnJuZ19zdWJkaWZmX2ZpbmZvLmZuX29pZCk7CiAKIAkvKiBBbGxvY2F0ZSBtZW1vcnkg dG8gaG9sZCByYW5nZSBib3VuZHMgYW5kIGxlbmd0aHMgb2YgdGhlIHNhbXBsZSByYW5nZXMu ICovCi0JbG93ZXJzID0gKFJhbmdlQm91bmQgKikgcGFsbG9jKHNpemVvZihSYW5nZUJvdW5k KSAqIHNhbXBsZXJvd3MpOwotCXVwcGVycyA9IChSYW5nZUJvdW5kICopIHBhbGxvYyhzaXpl b2YoUmFuZ2VCb3VuZCkgKiBzYW1wbGVyb3dzKTsKLQlsZW5ndGhzID0gKGZsb2F0OCAqKSBw YWxsb2Moc2l6ZW9mKGZsb2F0OCkgKiBzYW1wbGVyb3dzKTsKKwlsb3dlcnMgPSBwYWxsb2Nf YXJyYXkoUmFuZ2VCb3VuZCwgc2FtcGxlcm93cyk7CisJdXBwZXJzID0gcGFsbG9jX2FycmF5 KFJhbmdlQm91bmQsIHNhbXBsZXJvd3MpOworCWxlbmd0aHMgPSBwYWxsb2NfYXJyYXkoZmxv YXQ4LCBzYW1wbGVyb3dzKTsKIAogCS8qIExvb3Agb3ZlciB0aGUgc2FtcGxlIHJhbmdlcy4g Ki8KIAlmb3IgKHJhbmdlX25vID0gMDsgcmFuZ2Vfbm8gPCBzYW1wbGVyb3dzOyByYW5nZV9u bysrKQpAQCAtNDAxLDcgKzQwMSw3IEBAIGNvbXB1dGVfcmFuZ2Vfc3RhdHMoVmFjQXR0clN0 YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCQlzdGF0cy0+ c3RhdHlwYWxpZ25bc2xvdF9pZHhdID0gJ2QnOwogCiAJCS8qIFN0b3JlIHRoZSBmcmFjdGlv biBvZiBlbXB0eSByYW5nZXMgKi8KLQkJZW1wdHlmcmFjID0gKGZsb2F0NCAqKSBwYWxsb2Mo c2l6ZW9mKGZsb2F0NCkpOworCQllbXB0eWZyYWMgPSBwYWxsb2Nfb2JqZWN0KGZsb2F0NCk7 CiAJCSplbXB0eWZyYWMgPSAoKGRvdWJsZSkgZW1wdHlfY250KSAvICgoZG91YmxlKSBub25f bnVsbF9jbnQpOwogCQlzdGF0cy0+c3RhbnVtYmVyc1tzbG90X2lkeF0gPSBlbXB0eWZyYWM7 CiAJCXN0YXRzLT5udW1udW1iZXJzW3Nsb3RfaWR4XSA9IDE7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmVnZXhwLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn ZXhwLmMKaW5kZXggYjBjZGVmOWIxOWYuLjY1NDJlOGMxZGYwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmVnZXhwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JlZ2V4cC5jCkBAIC0xODksNyArMTg5LDcgQEAgUkVfY29tcGlsZV9hbmRfY2FjaGUodGV4 dCAqdGV4dF9yZSwgaW50IGNmbGFncywgT2lkIGNvbGxhdGlvbikKIAkgKi8KIAogCS8qIENv bnZlcnQgcGF0dGVybiBzdHJpbmcgdG8gd2lkZSBjaGFyYWN0ZXJzICovCi0JcGF0dGVybiA9 IChwZ193Y2hhciAqKSBwYWxsb2MoKHRleHRfcmVfbGVuICsgMSkgKiBzaXplb2YocGdfd2No YXIpKTsKKwlwYXR0ZXJuID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCB0ZXh0X3JlX2xlbiAr IDEpOwogCXBhdHRlcm5fbGVuID0gcGdfbWIyd2NoYXJfd2l0aF9sZW4odGV4dF9yZV92YWws CiAJCQkJCQkJCQkgICBwYXR0ZXJuLAogCQkJCQkJCQkJICAgdGV4dF9yZV9sZW4pOwpAQCAt MzI5LDcgKzMyOSw3IEBAIFJFX2V4ZWN1dGUocmVnZXhfdCAqcmUsIGNoYXIgKmRhdCwgaW50 IGRhdF9sZW4sCiAJYm9vbAkJbWF0Y2g7CiAKIAkvKiBDb252ZXJ0IGRhdGEgc3RyaW5nIHRv IHdpZGUgY2hhcmFjdGVycyAqLwotCWRhdGEgPSAocGdfd2NoYXIgKikgcGFsbG9jKChkYXRf bGVuICsgMSkgKiBzaXplb2YocGdfd2NoYXIpKTsKKwlkYXRhID0gcGFsbG9jX2FycmF5KHBn X3djaGFyLCBkYXRfbGVuICsgMSk7CiAJZGF0YV9sZW4gPSBwZ19tYjJ3Y2hhcl93aXRoX2xl bihkYXQsIGRhdGEsIGRhdF9sZW4pOwogCiAJLyogUGVyZm9ybSBSRSBtYXRjaCBhbmQgcmV0 dXJuIHJlc3VsdCAqLwpAQCAtMTM4OSw4ICsxMzg5LDggQEAgcmVnZXhwX21hdGNoKFBHX0ZV TkNUSU9OX0FSR1MpCiAJQXNzZXJ0KG1hdGNoY3R4LT5ubWF0Y2hlcyA9PSAxKTsKIAogCS8q IENyZWF0ZSB3b3Jrc3BhY2UgdGhhdCBidWlsZF9yZWdleHBfbWF0Y2hfcmVzdWx0IG5lZWRz ICovCi0JbWF0Y2hjdHgtPmVsZW1zID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0p ICogbWF0Y2hjdHgtPm5wYXR0ZXJucyk7Ci0JbWF0Y2hjdHgtPm51bGxzID0gKGJvb2wgKikg cGFsbG9jKHNpemVvZihib29sKSAqIG1hdGNoY3R4LT5ucGF0dGVybnMpOworCW1hdGNoY3R4 LT5lbGVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbWF0Y2hjdHgtPm5wYXR0ZXJucyk7CisJ bWF0Y2hjdHgtPm51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG1hdGNoY3R4LT5ucGF0dGVy bnMpOwogCiAJUEdfUkVUVVJOX0RBVFVNKFBvaW50ZXJHZXREYXR1bShidWlsZF9yZWdleHBf bWF0Y2hfcmVzdWx0KG1hdGNoY3R4KSkpOwogfQpAQCAtMTQzMiw4ICsxNDMyLDggQEAgcmVn ZXhwX21hdGNoZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJCQl0cnVlLCBmYWxzZSwg ZmFsc2UpOwogCiAJCS8qIFByZS1jcmVhdGUgd29ya3NwYWNlIHRoYXQgYnVpbGRfcmVnZXhw X21hdGNoX3Jlc3VsdCBuZWVkcyAqLwotCQltYXRjaGN0eC0+ZWxlbXMgPSAoRGF0dW0gKikg cGFsbG9jKHNpemVvZihEYXR1bSkgKiBtYXRjaGN0eC0+bnBhdHRlcm5zKTsKLQkJbWF0Y2hj dHgtPm51bGxzID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIG1hdGNoY3R4LT5u cGF0dGVybnMpOworCQltYXRjaGN0eC0+ZWxlbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG1h dGNoY3R4LT5ucGF0dGVybnMpOworCQltYXRjaGN0eC0+bnVsbHMgPSBwYWxsb2NfYXJyYXko Ym9vbCwgbWF0Y2hjdHgtPm5wYXR0ZXJucyk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBtYXRjaGN0eDsKQEAgLTE0 ODksNyArMTQ4OSw3IEBAIHNldHVwX3JlZ2V4cF9tYXRjaGVzKHRleHQgKm9yaWdfc3RyLCB0 ZXh0ICpwYXR0ZXJuLCBwZ19yZV9mbGFncyAqcmVfZmxhZ3MsCiAJCQkJCSBib29sIGlnbm9y ZV9kZWdlbmVyYXRlLAogCQkJCQkgYm9vbCBmZXRjaGluZ191bm1hdGNoZWQpCiB7Ci0JcmVn ZXhwX21hdGNoZXNfY3R4ICptYXRjaGN0eCA9IHBhbGxvYzAoc2l6ZW9mKHJlZ2V4cF9tYXRj aGVzX2N0eCkpOworCXJlZ2V4cF9tYXRjaGVzX2N0eCAqbWF0Y2hjdHggPSBwYWxsb2MwX29i amVjdChyZWdleHBfbWF0Y2hlc19jdHgpOwogCWludAkJCWVtbCA9IHBnX2RhdGFiYXNlX2Vu Y29kaW5nX21heF9sZW5ndGgoKTsKIAlpbnQJCQlvcmlnX2xlbjsKIAlwZ193Y2hhciAgICp3 aWRlX3N0cjsKQEAgLTE1MDksNyArMTUwOSw3IEBAIHNldHVwX3JlZ2V4cF9tYXRjaGVzKHRl eHQgKm9yaWdfc3RyLCB0ZXh0ICpwYXR0ZXJuLCBwZ19yZV9mbGFncyAqcmVfZmxhZ3MsCiAK IAkvKiBjb252ZXJ0IHN0cmluZyB0byBwZ193Y2hhciBmb3JtIGZvciBtYXRjaGluZyAqLwog CW9yaWdfbGVuID0gVkFSU0laRV9BTllfRVhIRFIob3JpZ19zdHIpOwotCXdpZGVfc3RyID0g KHBnX3djaGFyICopIHBhbGxvYyhzaXplb2YocGdfd2NoYXIpICogKG9yaWdfbGVuICsgMSkp OworCXdpZGVfc3RyID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCBvcmlnX2xlbiArIDEpOwog CXdpZGVfbGVuID0gcGdfbWIyd2NoYXJfd2l0aF9sZW4oVkFSREFUQV9BTlkob3JpZ19zdHIp LCB3aWRlX3N0ciwgb3JpZ19sZW4pOwogCiAJLyogc2V0IHVwIHRoZSBjb21waWxlZCBwYXR0 ZXJuICovCkBAIC0xNTMyLDcgKzE1MzIsNyBAQCBzZXR1cF9yZWdleHBfbWF0Y2hlcyh0ZXh0 ICpvcmlnX3N0ciwgdGV4dCAqcGF0dGVybiwgcGdfcmVfZmxhZ3MgKnJlX2ZsYWdzLAogCX0K IAogCS8qIHRlbXBvcmFyeSBvdXRwdXQgc3BhY2UgZm9yIFJFIHBhY2thZ2UgKi8KLQlwbWF0 Y2ggPSBwYWxsb2Moc2l6ZW9mKHJlZ21hdGNoX3QpICogcG1hdGNoX2xlbik7CisJcG1hdGNo ID0gcGFsbG9jX2FycmF5KHJlZ21hdGNoX3QsIHBtYXRjaF9sZW4pOwogCiAJLyoKIAkgKiB0 aGUgcmVhbCBvdXRwdXQgc3BhY2UgKGdyb3duIGR5bmFtaWNhbGx5IGlmIG5lZWRlZCkKQEAg LTE1NDEsNyArMTU0MSw3IEBAIHNldHVwX3JlZ2V4cF9tYXRjaGVzKHRleHQgKm9yaWdfc3Ry LCB0ZXh0ICpwYXR0ZXJuLCBwZ19yZV9mbGFncyAqcmVfZmxhZ3MsCiAJICogdGhhbiBhdCAy XjI3CiAJICovCiAJYXJyYXlfbGVuID0gcmVfZmxhZ3MtPmdsb2IgPyAyNTUgOiAzMTsKLQlt YXRjaGN0eC0+bWF0Y2hfbG9jcyA9IChpbnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogYXJy YXlfbGVuKTsKKwltYXRjaGN0eC0+bWF0Y2hfbG9jcyA9IHBhbGxvY19hcnJheShpbnQsIGFy cmF5X2xlbik7CiAJYXJyYXlfaWR4ID0gMDsKIAogCS8qIHNlYXJjaCBmb3IgdGhlIHBhdHRl cm4sIHBlcmhhcHMgcmVwZWF0ZWRseSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Jvd3R5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcm93dHlwZXMuYwpp bmRleCA5ZTU0NDlmMTdkNy4uODBmNTlhODEwZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yb3d0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yb3d0 eXBlcy5jCkBAIC0xNDAsOCArMTQwLDggQEAgcmVjb3JkX2luKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCW15X2V4dHJhLT5uY29sdW1ucyA9IG5jb2x1bW5zOwogCX0KIAotCXZhbHVlcyA9IChE YXR1bSAqKSBwYWxsb2MobmNvbHVtbnMgKiBzaXplb2YoRGF0dW0pKTsKLQludWxscyA9IChi b29sICopIHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihib29sKSk7CisJdmFsdWVzID0gcGFs bG9jX2FycmF5KERhdHVtLCBuY29sdW1ucyk7CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9v bCwgbmNvbHVtbnMpOwogCiAJLyoKIAkgKiBTY2FuIHRoZSBzdHJpbmcuICBXZSB1c2UgImJ1 ZiIgdG8gYWNjdW11bGF0ZSB0aGUgZGUtcXVvdGVkIGRhdGEgZm9yCkBAIC0zODMsOCArMzgz LDggQEAgcmVjb3JkX291dChQR19GVU5DVElPTl9BUkdTKQogCQlteV9leHRyYS0+bmNvbHVt bnMgPSBuY29sdW1uczsKIAl9CiAKLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKG5jb2x1 bW5zICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MobmNvbHVt bnMgKiBzaXplb2YoYm9vbCkpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmNv bHVtbnMpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKIAogCS8q IEJyZWFrIGRvd24gdGhlIHR1cGxlIGludG8gZmllbGRzICovCiAJaGVhcF9kZWZvcm1fdHVw bGUoJnR1cGxlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKQEAgLTUzOSw4ICs1MzksOCBA QCByZWNvcmRfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCQlteV9leHRyYS0+bmNvbHVtbnMg PSBuY29sdW1uczsKIAl9CiAKLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKG5jb2x1bW5z ICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MobmNvbHVtbnMg KiBzaXplb2YoYm9vbCkpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmNvbHVt bnMpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKIAogCS8qIEZl dGNoIG51bWJlciBvZiBjb2x1bW5zIHVzZXIgdGhpbmtzIGl0IGhhcyAqLwogCXVzZXJjb2xz ID0gcHFfZ2V0bXNnaW50KGJ1ZiwgNCk7CkBAIC03NDEsOCArNzQxLDggQEAgcmVjb3JkX3Nl bmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJbXlfZXh0cmEtPm5jb2x1bW5zID0gbmNvbHVtbnM7 CiAJfQogCi0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuY29sdW1ucyAqIHNpemVvZihE YXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKG5jb2x1bW5zICogc2l6ZW9mKGJv b2wpKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsKKwludWxs cyA9IHBhbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7CiAKIAkvKiBCcmVhayBkb3duIHRo ZSB0dXBsZSBpbnRvIGZpZWxkcyAqLwogCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXBsZSwgdHVw ZGVzYywgdmFsdWVzLCBudWxscyk7CkBAIC0xODYzLDggKzE4NjMsOCBAQCBoYXNoX3JlY29y ZChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCS8qIEJyZWFrIGRvd24gdGhlIHR1cGxlIGlu dG8gZmllbGRzICovCi0JdmFsdWVzID0gKERhdHVtICopIHBhbGxvYyhuY29sdW1ucyAqIHNp emVvZihEYXR1bSkpOwotCW51bGxzID0gKGJvb2wgKikgcGFsbG9jKG5jb2x1bW5zICogc2l6 ZW9mKGJvb2wpKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG5jb2x1bW5zKTsK KwludWxscyA9IHBhbGxvY19hcnJheShib29sLCBuY29sdW1ucyk7CiAJaGVhcF9kZWZvcm1f dHVwbGUoJnR1cGxlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKIAogCWZvciAoaW50IGkg PSAwOyBpIDwgbmNvbHVtbnM7IGkrKykKQEAgLTE5ODQsOCArMTk4NCw4IEBAIGhhc2hfcmVj b3JkX2V4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJLyogQnJlYWsgZG93biB0 aGUgdHVwbGUgaW50byBmaWVsZHMgKi8KLQl2YWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKG5j b2x1bW5zICogc2l6ZW9mKERhdHVtKSk7Ci0JbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MobmNv bHVtbnMgKiBzaXplb2YoYm9vbCkpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwg bmNvbHVtbnMpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIG5jb2x1bW5zKTsKIAlo ZWFwX2RlZm9ybV90dXBsZSgmdHVwbGUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwogCiAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBuY29sdW1uczsgaSsrKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCmluZGV4IDZjZjkwYmU0MGJiLi42ZWFlMWQ1ZTc4ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzcxMyw3ICszNzEzLDcgQEAgZGVwYXJzZV9jb250 ZXh0X2Zvcihjb25zdCBjaGFyICphbGlhc25hbWUsIE9pZCByZWxpZCkKIAlkZXBhcnNlX25h bWVzcGFjZSAqZHBuczsKIAlSYW5nZVRibEVudHJ5ICpydGU7CiAKLQlkcG5zID0gKGRlcGFy c2VfbmFtZXNwYWNlICopIHBhbGxvYzAoc2l6ZW9mKGRlcGFyc2VfbmFtZXNwYWNlKSk7CisJ ZHBucyA9IHBhbGxvYzBfb2JqZWN0KGRlcGFyc2VfbmFtZXNwYWNlKTsKIAogCS8qIEJ1aWxk IGEgbWluaW1hbCBSVEUgZm9yIHRoZSByZWwgKi8KIAlydGUgPSBtYWtlTm9kZShSYW5nZVRi bEVudHJ5KTsKQEAgLTM3NTcsNyArMzc1Nyw3IEBAIGRlcGFyc2VfY29udGV4dF9mb3JfcGxh bl90cmVlKFBsYW5uZWRTdG10ICpwc3RtdCwgTGlzdCAqcnRhYmxlX25hbWVzKQogewogCWRl cGFyc2VfbmFtZXNwYWNlICpkcG5zOwogCi0JZHBucyA9IChkZXBhcnNlX25hbWVzcGFjZSAq KSBwYWxsb2MwKHNpemVvZihkZXBhcnNlX25hbWVzcGFjZSkpOworCWRwbnMgPSBwYWxsb2Mw X29iamVjdChkZXBhcnNlX25hbWVzcGFjZSk7CiAKIAkvKiBJbml0aWFsaXplIGZpZWxkcyB0 aGF0IHN0YXkgdGhlIHNhbWUgYWNyb3NzIHRoZSB3aG9sZSBwbGFuIHRyZWUgKi8KIAlkcG5z LT5ydGFibGUgPSBwc3RtdC0+cnRhYmxlOwpAQCAtNDA1MSw3ICs0MDUxLDcgQEAgc2V0X2Rl cGFyc2VfZm9yX3F1ZXJ5KGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBRdWVyeSAqcXVlcnks CiAJZHBucy0+cnRhYmxlX2NvbHVtbnMgPSBOSUw7CiAJd2hpbGUgKGxpc3RfbGVuZ3RoKGRw bnMtPnJ0YWJsZV9jb2x1bW5zKSA8IGxpc3RfbGVuZ3RoKGRwbnMtPnJ0YWJsZSkpCiAJCWRw bnMtPnJ0YWJsZV9jb2x1bW5zID0gbGFwcGVuZChkcG5zLT5ydGFibGVfY29sdW1ucywKLQkJ CQkJCQkJCSAgIHBhbGxvYzAoc2l6ZW9mKGRlcGFyc2VfY29sdW1ucykpKTsKKwkJCQkJCQkJ CSAgIHBhbGxvYzBfb2JqZWN0KGRlcGFyc2VfY29sdW1ucykpOwogCiAJLyogSWYgaXQncyBh IHV0aWxpdHkgcXVlcnksIGl0IHdvbid0IGhhdmUgYSBqb2ludHJlZSAqLwogCWlmIChxdWVy eS0+am9pbnRyZWUpCkBAIC00MTA3LDcgKzQxMDcsNyBAQCBzZXRfc2ltcGxlX2NvbHVtbl9u YW1lcyhkZXBhcnNlX25hbWVzcGFjZSAqZHBucykKIAlkcG5zLT5ydGFibGVfY29sdW1ucyA9 IE5JTDsKIAl3aGlsZSAobGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlX2NvbHVtbnMpIDwgbGlz dF9sZW5ndGgoZHBucy0+cnRhYmxlKSkKIAkJZHBucy0+cnRhYmxlX2NvbHVtbnMgPSBsYXBw ZW5kKGRwbnMtPnJ0YWJsZV9jb2x1bW5zLAotCQkJCQkJCQkJICAgcGFsbG9jMChzaXplb2Yo ZGVwYXJzZV9jb2x1bW5zKSkpOworCQkJCQkJCQkJICAgcGFsbG9jMF9vYmplY3QoZGVwYXJz ZV9jb2x1bW5zKSk7CiAKIAkvKiBBc3NpZ24gdW5pcXVlIGNvbHVtbiBhbGlhc2VzIHdpdGhp biBlYWNoIG5vbi1qb2luIFJURSAqLwogCWZvcmJvdGgobGMsIGRwbnMtPnJ0YWJsZSwgbGMy LCBkcG5zLT5ydGFibGVfY29sdW1ucykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5k ZXggNTQwYWE5NjI4ZDcuLmM3NjBiMTlkYjU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYwpAQCAtMzY4Myw3ICszNjgzLDcgQEAgYWRkX3VuaXF1ZV9ncm91cF92YXIoUGxhbm5l ckluZm8gKnJvb3QsIExpc3QgKnZhcmluZm9zLAogCQl9CiAJfQogCi0JdmFyaW5mbyA9IChH cm91cFZhckluZm8gKikgcGFsbG9jKHNpemVvZihHcm91cFZhckluZm8pKTsKKwl2YXJpbmZv ID0gcGFsbG9jX29iamVjdChHcm91cFZhckluZm8pOwogCiAJdmFyaW5mby0+dmFyID0gdmFy OwogCXZhcmluZm8tPnJlbCA9IHZhcmRhdGEtPnJlbDsKQEAgLTQyNjQsNyArNDI2NCw3IEBA IGVzdGltYXRlX211bHRpdmFyaWF0ZV9idWNrZXRzaXplKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICppbm5lciwKIAkJCQkgKiBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRpc3Rp bmN0KCksIHdoaWNoIGRvZXNuJ3QgY2FyZSBhYm91dAogCQkJCSAqIG5kaXN0aW5jdCBhbmQg aXNkZWZhdWx0IGZpZWxkcy4gIFRodXMsIHNraXAgdGhlc2UgZmllbGRzLgogCQkJCSAqLwot CQkJCXZhcmluZm8gPSAoR3JvdXBWYXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEdyb3VwVmFy SW5mbykpOworCQkJCXZhcmluZm8gPSBwYWxsb2MwX29iamVjdChHcm91cFZhckluZm8pOwog CQkJCXZhcmluZm8tPnZhciA9IGV4cHI7CiAJCQkJdmFyaW5mby0+cmVsID0gcm9vdC0+c2lt cGxlX3JlbF9hcnJheVtyZWxpZF07CiAJCQkJdmFyaW5mb3MgPSBsYXBwZW5kKHZhcmluZm9z LCB2YXJpbmZvKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9za2lwc3Vw cG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NraXBzdXBwb3J0LmMKaW5kZXggMmJk MzVkMmQyNzIuLjJmY2Y1NzgyZWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvc2tpcHN1cHBvcnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2tpcHN1cHBv cnQuYwpAQCAtMzgsNyArMzgsNyBAQCBQcmVwYXJlU2tpcFN1cHBvcnRGcm9tT3BjbGFzcyhP aWQgb3BmYW1pbHksIE9pZCBvcGNpbnR5cGUsIGJvb2wgcmV2ZXJzZSkKIAlpZiAoIU9pZElz VmFsaWQoc2tpcFN1cHBvcnRGdW5jdGlvbikpCiAJCXJldHVybiBOVUxMOwogCi0Jc2tzdXAg PSBwYWxsb2Moc2l6ZW9mKFNraXBTdXBwb3J0RGF0YSkpOworCXNrc3VwID0gcGFsbG9jX29i amVjdChTa2lwU3VwcG9ydERhdGEpOwogCU9pZEZ1bmN0aW9uQ2FsbDEoc2tpcFN1cHBvcnRG dW5jdGlvbiwgUG9pbnRlckdldERhdHVtKHNrc3VwKSk7CiAKIAlpZiAocmV2ZXJzZSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aWQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90aWQuYwppbmRleCAwY2ZiMGJkMzczNS4uNDM1ZDQwZmVlM2UgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aWQuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvdGlkLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCB0aWRpbihQR19GVU5DVElPTl9BUkdT KQogCQkJCQkJInRpZCIsIHN0cikpKTsKIAlvZmZzZXROdW1iZXIgPSAoT2Zmc2V0TnVtYmVy KSBjdnQ7CiAKLQlyZXN1bHQgPSAoSXRlbVBvaW50ZXIpIHBhbGxvYyhzaXplb2YoSXRlbVBv aW50ZXJEYXRhKSk7CisJcmVzdWx0ID0gKEl0ZW1Qb2ludGVyKSBwYWxsb2Nfb2JqZWN0KEl0 ZW1Qb2ludGVyRGF0YSk7CiAKIAlJdGVtUG9pbnRlclNldChyZXN1bHQsIGJsb2NrTnVtYmVy LCBvZmZzZXROdW1iZXIpOwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGlkcmVjdihQR19GVU5D VElPTl9BUkdTKQogCWJsb2NrTnVtYmVyID0gcHFfZ2V0bXNnaW50KGJ1Ziwgc2l6ZW9mKGJs b2NrTnVtYmVyKSk7CiAJb2Zmc2V0TnVtYmVyID0gcHFfZ2V0bXNnaW50KGJ1Ziwgc2l6ZW9m KG9mZnNldE51bWJlcikpOwogCi0JcmVzdWx0ID0gKEl0ZW1Qb2ludGVyKSBwYWxsb2Moc2l6 ZW9mKEl0ZW1Qb2ludGVyRGF0YSkpOworCXJlc3VsdCA9IChJdGVtUG9pbnRlcikgcGFsbG9j X29iamVjdChJdGVtUG9pbnRlckRhdGEpOwogCiAJSXRlbVBvaW50ZXJTZXQocmVzdWx0LCBi bG9ja051bWJlciwgb2Zmc2V0TnVtYmVyKTsKIApAQCAtMzAwLDcgKzMwMCw3IEBAIGN1cnJ0 aWRfaW50ZXJuYWwoUmVsYXRpb24gcmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCkK IAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAKLQlyZXN1bHQg PSAoSXRlbVBvaW50ZXIpIHBhbGxvYyhzaXplb2YoSXRlbVBvaW50ZXJEYXRhKSk7CisJcmVz dWx0ID0gKEl0ZW1Qb2ludGVyKSBwYWxsb2Nfb2JqZWN0KEl0ZW1Qb2ludGVyRGF0YSk7CiAK IAlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhSZWxhdGlvbkdldFJlbGlkKHJlbCks IEdldFVzZXJJZCgpLAogCQkJCQkJCQkgIEFDTF9TRUxFQ1QpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RpbWVzdGFtcC5jCmluZGV4IDJkYzkwYTJiOGE5Li4zNTY5ZDIwMWVlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90aW1lc3RhbXAuYwpAQCAtOTM3LDcgKzkzNyw3IEBAIGludGVydmFsX2lu KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9OVUxMKCk7CiAJfQogCi0JcmVzdWx0 ID0gKEludGVydmFsICopIHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBw YWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAogCXN3aXRjaCAoZHR5cGUpCiAJewpAQCAtMTAw NCw3ICsxMDA0LDcgQEAgaW50ZXJ2YWxfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCWludDMy CQl0eXBtb2QgPSBQR19HRVRBUkdfSU5UMzIoMik7CiAJSW50ZXJ2YWwgICAqaW50ZXJ2YWw7 CiAKLQlpbnRlcnZhbCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7 CisJaW50ZXJ2YWwgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAogCWludGVydmFsLT50 aW1lID0gcHFfZ2V0bXNnaW50NjQoYnVmKTsKIAlpbnRlcnZhbC0+ZGF5ID0gcHFfZ2V0bXNn aW50KGJ1Ziwgc2l6ZW9mKGludGVydmFsLT5kYXkpKTsKQEAgLTEzMzEsNyArMTMzMSw3IEBA IGludGVydmFsX3NjYWxlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50MzIJCXR5cG1vZCA9IFBH X0dFVEFSR19JTlQzMigxKTsKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSBw YWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRl cnZhbCk7CiAJKnJlc3VsdCA9ICppbnRlcnZhbDsKIAogCUFkanVzdEludGVydmFsRm9yVHlw bW9kKHJlc3VsdCwgdHlwbW9kLCBOVUxMKTsKQEAgLTE1NDUsNyArMTU0NSw3IEBAIG1ha2Vf aW50ZXJ2YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoaXNpbmYoc2VjcykgfHwgaXNuYW4o c2VjcykpCiAJCWdvdG8gb3V0X29mX3JhbmdlOwogCi0JcmVzdWx0ID0gKEludGVydmFsICop IHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KElu dGVydmFsKTsKIAogCS8qIHllYXJzIGFuZCBtb250aHMgLT4gbW9udGhzICovCiAJaWYgKHBn X211bF9zMzJfb3ZlcmZsb3coeWVhcnMsIE1PTlRIU19QRVJfWUVBUiwgJnJlc3VsdC0+bW9u dGgpIHx8CkBAIC0yODMwLDcgKzI4MzAsNyBAQCB0aW1lc3RhbXBfbWkoUEdfRlVOQ1RJT05f QVJHUykKIAlUaW1lc3RhbXAJZHQyID0gUEdfR0VUQVJHX1RJTUVTVEFNUCgxKTsKIAlJbnRl cnZhbCAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVv ZihJbnRlcnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJ LyoKIAkgKiBIYW5kbGUgaW5maW5pdGllcy4KQEAgLTI5MjUsNyArMjkyNSw3IEBAIGludGVy dmFsX2p1c3RpZnlfaW50ZXJ2YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlUaW1lT2Zmc2V0CXdo b2xlZGF5OwogCWludDMyCQl3aG9sZW1vbnRoOwogCi0JcmVzdWx0ID0gKEludGVydmFsICop IHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KElu dGVydmFsKTsKIAlyZXN1bHQtPm1vbnRoID0gc3Bhbi0+bW9udGg7CiAJcmVzdWx0LT5kYXkg PSBzcGFuLT5kYXk7CiAJcmVzdWx0LT50aW1lID0gc3Bhbi0+dGltZTsKQEAgLTMwMDQsNyAr MzAwNCw3IEBAIGludGVydmFsX2p1c3RpZnlfaG91cnMoUEdfRlVOQ1RJT05fQVJHUykKIAlJ bnRlcnZhbCAgICpyZXN1bHQ7CiAJVGltZU9mZnNldAl3aG9sZWRheTsKIAotCXJlc3VsdCA9 IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFs bG9jX29iamVjdChJbnRlcnZhbCk7CiAJcmVzdWx0LT5tb250aCA9IHNwYW4tPm1vbnRoOwog CXJlc3VsdC0+ZGF5ID0gc3Bhbi0+ZGF5OwogCXJlc3VsdC0+dGltZSA9IHNwYW4tPnRpbWU7 CkBAIC0zMDQ2LDcgKzMwNDYsNyBAQCBpbnRlcnZhbF9qdXN0aWZ5X2RheXMoUEdfRlVOQ1RJ T05fQVJHUykKIAlJbnRlcnZhbCAgICpyZXN1bHQ7CiAJaW50MzIJCXdob2xlbW9udGg7CiAK LQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCXJlc3VsdC0+bW9udGggPSBzcGFu LT5tb250aDsKIAlyZXN1bHQtPmRheSA9IHNwYW4tPmRheTsKIAlyZXN1bHQtPnRpbWUgPSBz cGFuLT50aW1lOwpAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgaW50ZXJ2YWxfdW0oUEdfRlVOQ1RJ T05fQVJHUykKIAlJbnRlcnZhbCAgICppbnRlcnZhbCA9IFBHX0dFVEFSR19JTlRFUlZBTF9Q KDApOwogCUludGVydmFsICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChJbnRlcnZhbCAqKSBw YWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRl cnZhbCk7CiAJaW50ZXJ2YWxfdW1faW50ZXJuYWwoaW50ZXJ2YWwsIHJlc3VsdCk7CiAKIAlQ R19SRVRVUk5fSU5URVJWQUxfUChyZXN1bHQpOwpAQCAtMzUwNiw3ICszNTA2LDcgQEAgaW50 ZXJ2YWxfcGwoUEdfRlVOQ1RJT05fQVJHUykKIAlJbnRlcnZhbCAgICpzcGFuMiA9IFBHX0dF VEFSR19JTlRFUlZBTF9QKDEpOwogCUludGVydmFsICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9 IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFs bG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAkvKgogCSAqIEhhbmRsZSBpbmZpbml0aWVzLgpA QCAtMzU2Miw3ICszNTYyLDcgQEAgaW50ZXJ2YWxfbWkoUEdfRlVOQ1RJT05fQVJHUykKIAlJ bnRlcnZhbCAgICpzcGFuMiA9IFBHX0dFVEFSR19JTlRFUlZBTF9QKDEpOwogCUludGVydmFs ICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChJbnRlcnZhbCAqKSBwYWxsb2Moc2l6ZW9mKElu dGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7CiAKIAkvKgog CSAqIEhhbmRsZSBpbmZpbml0aWVzLgpAQCAtMzYxNiw3ICszNjE2LDcgQEAgaW50ZXJ2YWxf bXVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJb3JpZ19kYXkgPSBzcGFuLT5kYXk7CiAJSW50 ZXJ2YWwgICAqcmVzdWx0OwogCi0JcmVzdWx0ID0gKEludGVydmFsICopIHBhbGxvYyhzaXpl b2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAog CS8qCiAJICogSGFuZGxlIE5hTiBhbmQgaW5maW5pdGllcy4KQEAgLTM3NDYsNyArMzc0Niw3 IEBAIGludGVydmFsX2RpdihQR19GVU5DVElPTl9BUkdTKQogCQkJCW9yaWdfZGF5ID0gc3Bh bi0+ZGF5OwogCUludGVydmFsICAgKnJlc3VsdDsKIAotCXJlc3VsdCA9IChJbnRlcnZhbCAq KSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJ bnRlcnZhbCk7CiAKIAlpZiAoZmFjdG9yID09IDAuMCkKIAkJZXJlcG9ydChFUlJPUiwKQEAg LTM5NzUsNyArMzk3NSw3IEBAIG1ha2VJbnRlcnZhbEFnZ1N0YXRlKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvKQogCiAJb2xkX2NvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYWdn X2NvbnRleHQpOwogCi0Jc3RhdGUgPSAoSW50ZXJ2YWxBZ2dTdGF0ZSAqKSBwYWxsb2MwKHNp emVvZihJbnRlcnZhbEFnZ1N0YXRlKSk7CisJc3RhdGUgPSBwYWxsb2MwX29iamVjdChJbnRl cnZhbEFnZ1N0YXRlKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY29udGV4dCk7 CiAKQEAgLTQxNjIsNyArNDE2Miw3IEBAIGludGVydmFsX2F2Z19kZXNlcmlhbGl6ZShQR19G VU5DVElPTl9BUkdTKQogCWluaXRSZWFkT25seVN0cmluZ0luZm8oJmJ1ZiwgVkFSREFUQV9B Tlkoc3N0YXRlKSwKIAkJCQkJCSAgIFZBUlNJWkVfQU5ZX0VYSERSKHNzdGF0ZSkpOwogCi0J cmVzdWx0ID0gKEludGVydmFsQWdnU3RhdGUgKikgcGFsbG9jMChzaXplb2YoSW50ZXJ2YWxB Z2dTdGF0ZSkpOworCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KEludGVydmFsQWdnU3RhdGUp OwogCiAJLyogTiAqLwogCXJlc3VsdC0+TiA9IHBxX2dldG1zZ2ludDY0KCZidWYpOwpAQCAt NDIyOSw3ICs0MjI5LDcgQEAgaW50ZXJ2YWxfYXZnKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkJ IGVycm1zZygiaW50ZXJ2YWwgb3V0IG9mIHJhbmdlIikpKTsKIAotCQlyZXN1bHQgPSAoSW50 ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOworCQlyZXN1bHQgPSBwYWxsb2Nf b2JqZWN0KEludGVydmFsKTsKIAkJaWYgKHN0YXRlLT5wSW5mY291bnQgPiAwKQogCQkJSU5U RVJWQUxfTk9FTkQocmVzdWx0KTsKIAkJZWxzZQpAQCAtNDI2Niw3ICs0MjY2LDcgQEAgaW50 ZXJ2YWxfc3VtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRF VElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2coImludGVydmFsIG91dCBv ZiByYW5nZSIpKSk7CiAKLQlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJ bnRlcnZhbCkpOworCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW50ZXJ2YWwpOwogCiAJaWYg KHN0YXRlLT5wSW5mY291bnQgPiAwKQogCQlJTlRFUlZBTF9OT0VORChyZXN1bHQpOwpAQCAt NDI5OSw3ICs0Mjk5LDcgQEAgdGltZXN0YW1wX2FnZShQR19GVU5DVElPTl9BUkdTKQogCXN0 cnVjdCBwZ190bSB0dDIsCiAJCQkgICAqdG0yID0gJnR0MjsKIAotCXJlc3VsdCA9IChJbnRl cnZhbCAqKSBwYWxsb2Moc2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29i amVjdChJbnRlcnZhbCk7CiAKIAkvKgogCSAqIEhhbmRsZSBpbmZpbml0aWVzLgpAQCAtNDQ0 Nyw3ICs0NDQ3LDcgQEAgdGltZXN0YW1wdHpfYWdlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50 CQkJdHoxOwogCWludAkJCXR6MjsKIAotCXJlc3VsdCA9IChJbnRlcnZhbCAqKSBwYWxsb2Mo c2l6ZW9mKEludGVydmFsKSk7CisJcmVzdWx0ID0gcGFsbG9jX29iamVjdChJbnRlcnZhbCk7 CiAKIAkvKgogCSAqIEhhbmRsZSBpbmZpbml0aWVzLgpAQCAtNTEyMCw3ICs1MTIwLDcgQEAg aW50ZXJ2YWxfdHJ1bmMoUEdfRlVOQ1RJT05fQVJHUykKIAlzdHJ1Y3QgcGdfaXRtIHR0LAog CQkJICAgKnRtID0gJnR0OwogCi0JcmVzdWx0ID0gKEludGVydmFsICopIHBhbGxvYyhzaXpl b2YoSW50ZXJ2YWwpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEludGVydmFsKTsKIAog CWxvd3VuaXRzID0gZG93bmNhc2VfdHJ1bmNhdGVfaWRlbnRpZmllcihWQVJEQVRBX0FOWSh1 bml0cyksCiAJCQkJCQkJCQkJCVZBUlNJWkVfQU5ZX0VYSERSKHVuaXRzKSwKQEAgLTY2ODcs OCArNjY4Nyw3IEBAIGdlbmVyYXRlX3Nlcmllc190aW1lc3RhbXAoUEdfRlVOQ1RJT05fQVJH UykKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0 aV9jYWxsX21lbW9yeV9jdHgpOwogCiAJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdXNlciBj b250ZXh0ICovCi0JCWZjdHggPSAoZ2VuZXJhdGVfc2VyaWVzX3RpbWVzdGFtcF9mY3R4ICop Ci0JCQlwYWxsb2Moc2l6ZW9mKGdlbmVyYXRlX3Nlcmllc190aW1lc3RhbXBfZmN0eCkpOwor CQlmY3R4ID0gcGFsbG9jX29iamVjdChnZW5lcmF0ZV9zZXJpZXNfdGltZXN0YW1wX2ZjdHgp OwogCiAJCS8qCiAJCSAqIFVzZSBmY3R4IHRvIGtlZXAgc3RhdGUgZnJvbSBjYWxsIHRvIGNh bGwuIFNlZWQgY3VycmVudCB3aXRoIHRoZQpAQCAtNjc3Miw4ICs2NzcxLDcgQEAgZ2VuZXJh dGVfc2VyaWVzX3RpbWVzdGFtcHR6X2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv KQogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRp X2NhbGxfbWVtb3J5X2N0eCk7CiAKIAkJLyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNv bnRleHQgKi8KLQkJZmN0eCA9IChnZW5lcmF0ZV9zZXJpZXNfdGltZXN0YW1wdHpfZmN0eCAq KQotCQkJcGFsbG9jKHNpemVvZihnZW5lcmF0ZV9zZXJpZXNfdGltZXN0YW1wdHpfZmN0eCkp OworCQlmY3R4ID0gcGFsbG9jX29iamVjdChnZW5lcmF0ZV9zZXJpZXNfdGltZXN0YW1wdHpf ZmN0eCk7CiAKIAkJLyoKIAkJICogVXNlIGZjdHggdG8ga2VlcCBzdGF0ZSBmcm9tIGNhbGwg dG8gY2FsbC4gU2VlZCBjdXJyZW50IHdpdGggdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNnaW5pZHguYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpbmlk eC5jCmluZGV4IDI3MTJmZDg5ZGYwLi4yNGExY2JlODllZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3RzZ2luaWR4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzZ2luaWR4LmMKQEAgLTczLDcgKzczLDcgQEAgZ2luX2V4dHJhY3RfdHN2ZWN0b3IoUEdf RlVOQ1RJT05fQVJHUykKIAkJaW50CQkJaTsKIAkJV29yZEVudHJ5ICAqd2UgPSBBUlJQVFIo dmVjdG9yKTsKIAotCQllbnRyaWVzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0p ICogdmVjdG9yLT5zaXplKTsKKwkJZW50cmllcyA9IHBhbGxvY19hcnJheShEYXR1bSwgdmVj dG9yLT5zaXplKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgdmVjdG9yLT5zaXplOyBpKyspCiAJ CXsKQEAgLTEzMywxNiArMTMzLDE2IEBAIGdpbl9leHRyYWN0X3RzcXVlcnkoUEdfRlVOQ1RJ T05fQVJHUykKIAkJfQogCQkqbmVudHJpZXMgPSBqOwogCi0JCWVudHJpZXMgPSAoRGF0dW0g KikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBqKTsKLQkJcGFydGlhbG1hdGNoID0gKnB0cl9w YXJ0aWFsbWF0Y2ggPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogaik7CisJCWVu dHJpZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGopOworCQlwYXJ0aWFsbWF0Y2ggPSAqcHRy X3BhcnRpYWxtYXRjaCA9IHBhbGxvY19hcnJheShib29sLCBqKTsKIAogCQkvKgogCQkgKiBN YWtlIG1hcCB0byBjb252ZXJ0IGl0ZW0ncyBudW1iZXIgdG8gY29ycmVzcG9uZGluZyBvcGVy YW5kJ3MgKHRoZQogCQkgKiBzYW1lLCBlbnRyeSdzKSBudW1iZXIuIEVudHJ5J3MgbnVtYmVy IGlzIHVzZWQgaW4gY2hlY2sgYXJyYXkgaW4KIAkJICogY29uc2lzdGVudCBtZXRob2QuIFdl IHVzZSB0aGUgc2FtZSBtYXAgZm9yIGVhY2ggZW50cnkuCiAJCSAqLwotCQkqZXh0cmFfZGF0 YSA9IChQb2ludGVyICopIHBhbGxvYyhzaXplb2YoUG9pbnRlcikgKiBqKTsKLQkJbWFwX2l0 ZW1fb3BlcmFuZCA9IChpbnQgKikgcGFsbG9jMChzaXplb2YoaW50KSAqIHF1ZXJ5LT5zaXpl KTsKKwkJKmV4dHJhX2RhdGEgPSBwYWxsb2NfYXJyYXkoUG9pbnRlciwgaik7CisJCW1hcF9p dGVtX29wZXJhbmQgPSBwYWxsb2MwX2FycmF5KGludCwgcXVlcnktPnNpemUpOwogCiAJCS8q IE5vdyByZXNjYW4gdGhlIFZBTCBpdGVtcyBhbmQgZmlsbCBpbiB0aGUgYXJyYXlzICovCiAJ CWogPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2lzdGlkeC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2lzdGlkeC5jCmluZGV4IDkzNTE4N2IzN2M3 Li4wMWU0M2Y4NjIxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2lz dGlkeC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpc3RpZHguYwpAQCAtMjEy LDcgKzIxMiw3IEBAIGd0c3ZlY3Rvcl9jb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQkJ cmVzID0gcmVzc2lnbjsKIAkJfQogCi0JCXJldHZhbCA9IChHSVNURU5UUlkgKikgcGFsbG9j KHNpemVvZihHSVNURU5UUlkpKTsKKwkJcmV0dmFsID0gcGFsbG9jX29iamVjdChHSVNURU5U UlkpOwogCQlnaXN0ZW50cnlpbml0KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShyZXMpLAog CQkJCQkgIGVudHJ5LT5yZWwsIGVudHJ5LT5wYWdlLAogCQkJCQkgIGVudHJ5LT5vZmZzZXQs IGZhbHNlKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBndHN2ZWN0b3JfY29tcHJlc3MoUEdfRlVO Q1RJT05fQVJHUykKIAkJfQogCiAJCXJlcyA9IGd0c3ZlY3Rvcl9hbGxvYyhTSUdOS0VZIHwg QUxMSVNUUlVFLCBzaWdsZW4sIHNpZ24pOwotCQlyZXR2YWwgPSAoR0lTVEVOVFJZICopIHBh bGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCXJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lT VEVOVFJZKTsKIAkJZ2lzdGVudHJ5aW5pdCgqcmV0dmFsLCBQb2ludGVyR2V0RGF0dW0ocmVz KSwKIAkJCQkJICBlbnRyeS0+cmVsLCBlbnRyeS0+cGFnZSwKIAkJCQkJICBlbnRyeS0+b2Zm c2V0LCBmYWxzZSk7CkBAIC0yNTEsNyArMjUxLDcgQEAgZ3RzdmVjdG9yX2RlY29tcHJlc3Mo UEdfRlVOQ1RJT05fQVJHUykKIAogCWlmIChrZXkgIT0gKFNpZ25UU1ZlY3RvciAqKSBEYXR1 bUdldFBvaW50ZXIoZW50cnktPmtleSkpCiAJewotCQlHSVNURU5UUlkgICpyZXR2YWwgPSAo R0lTVEVOVFJZICopIHBhbGxvYyhzaXplb2YoR0lTVEVOVFJZKSk7CisJCUdJU1RFTlRSWSAg KnJldHZhbCA9IHBhbGxvY19vYmplY3QoR0lTVEVOVFJZKTsKIAogCQlnaXN0ZW50cnlpbml0 KCpyZXR2YWwsIFBvaW50ZXJHZXREYXR1bShrZXkpLAogCQkJCQkgIGVudHJ5LT5yZWwsIGVu dHJ5LT5wYWdlLApAQCAtNjQxLDcgKzY0MSw3IEBAIGd0c3ZlY3Rvcl9waWNrc3BsaXQoUEdf RlVOQ1RJT05fQVJHUykKIAl2LT5zcGxfbGVmdCA9IChPZmZzZXROdW1iZXIgKikgcGFsbG9j KG5ieXRlcyk7CiAJdi0+c3BsX3JpZ2h0ID0gKE9mZnNldE51bWJlciAqKSBwYWxsb2MobmJ5 dGVzKTsKIAotCWNhY2hlID0gKENBQ0hFU0lHTiAqKSBwYWxsb2Moc2l6ZW9mKENBQ0hFU0lH TikgKiAobWF4b2ZmICsgMikpOworCWNhY2hlID0gcGFsbG9jX2FycmF5KENBQ0hFU0lHTiwg bWF4b2ZmICsgMik7CiAJY2FjaGVfc2lnbiA9IHBhbGxvYyhzaWdsZW4gKiAobWF4b2ZmICsg MikpOwogCiAJZm9yIChqID0gMDsgaiA8IG1heG9mZiArIDI7IGorKykKQEAgLTY4OCw3ICs2 ODgsNyBAQCBndHN2ZWN0b3JfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJbWF4b2Zm ID0gT2Zmc2V0TnVtYmVyTmV4dChtYXhvZmYpOwogCWZpbGxjYWNoZSgmY2FjaGVbbWF4b2Zm XSwgR0VURU5UUlkoZW50cnl2ZWMsIG1heG9mZiksIHNpZ2xlbik7CiAJLyogc29ydCBiZWZv cmUgLi4uICovCi0JY29zdHZlY3RvciA9IChTUExJVENPU1QgKikgcGFsbG9jKHNpemVvZihT UExJVENPU1QpICogbWF4b2ZmKTsKKwljb3N0dmVjdG9yID0gcGFsbG9jX2FycmF5KFNQTElU Q09TVCwgbWF4b2ZmKTsKIAlmb3IgKGogPSBGaXJzdE9mZnNldE51bWJlcjsgaiA8PSBtYXhv ZmY7IGogPSBPZmZzZXROdW1iZXJOZXh0KGopKQogCXsKIAkJY29zdHZlY3RvcltqIC0gMV0u cG9zID0gajsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5LmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeS5jCmluZGV4IDcxN2RlODA3M2Q1Li5h MGM5OTBmZGZhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnku YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeS5jCkBAIC01MzQsNyArNTM0 LDcgQEAgcHVzaE9wZXJhdG9yKFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwgaW50OCBvcGVy LCBpbnQxNiBkaXN0YW5jZSkKIAogCUFzc2VydChvcGVyID09IE9QX05PVCB8fCBvcGVyID09 IE9QX0FORCB8fCBvcGVyID09IE9QX09SIHx8IG9wZXIgPT0gT1BfUEhSQVNFKTsKIAotCXRt cCA9IChRdWVyeU9wZXJhdG9yICopIHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5T3BlcmF0b3IpKTsK Kwl0bXAgPSBwYWxsb2MwX29iamVjdChRdWVyeU9wZXJhdG9yKTsKIAl0bXAtPnR5cGUgPSBR SV9PUFI7CiAJdG1wLT5vcGVyID0gb3BlcjsKIAl0bXAtPmRpc3RhbmNlID0gKG9wZXIgPT0g T1BfUEhSQVNFKSA/IGRpc3RhbmNlIDogMDsKQEAgLTU1OSw3ICs1NTksNyBAQCBwdXNoVmFs dWVfaW50ZXJuYWwoVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlLCBwZ19jcmMzMiB2YWxjcmMs IGludCBkaXN0YW5jZSwgaW50CiAJCQkJIGVycm1zZygib3BlcmFuZCBpcyB0b28gbG9uZyBp biB0c3F1ZXJ5OiBcIiVzXCIiLAogCQkJCQkJc3RhdGUtPmJ1ZmZlcikpKTsKIAotCXRtcCA9 IChRdWVyeU9wZXJhbmQgKikgcGFsbG9jMChzaXplb2YoUXVlcnlPcGVyYW5kKSk7CisJdG1w ID0gcGFsbG9jMF9vYmplY3QoUXVlcnlPcGVyYW5kKTsKIAl0bXAtPnR5cGUgPSBRSV9WQUw7 CiAJdG1wLT53ZWlnaHQgPSB3ZWlnaHQ7CiAJdG1wLT5wcmVmaXggPSBwcmVmaXg7CkBAIC02 MTcsNyArNjE3LDcgQEAgcHVzaFN0b3AoVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlKQogewog CVF1ZXJ5T3BlcmFuZCAqdG1wOwogCi0JdG1wID0gKFF1ZXJ5T3BlcmFuZCAqKSBwYWxsb2Mw KHNpemVvZihRdWVyeU9wZXJhbmQpKTsKKwl0bXAgPSBwYWxsb2MwX29iamVjdChRdWVyeU9w ZXJhbmQpOwogCXRtcC0+dHlwZSA9IFFJX1ZBTFNUT1A7CiAKIAlzdGF0ZS0+cG9sc3RyID0g bGNvbnModG1wLCBzdGF0ZS0+cG9sc3RyKTsKQEAgLTExMDEsNyArMTEwMSw3IEBAIGluZml4 KElORklYICppbiwgaW50IHBhcmVudFByaW9yaXR5LCBib29sIHJpZ2h0UGhyYXNlT3ApCiAJ CW5ybS5jdXJwb2wgPSBpbi0+Y3VycG9sOwogCQlucm0ub3AgPSBpbi0+b3A7CiAJCW5ybS5i dWZsZW4gPSAxNjsKLQkJbnJtLmN1ciA9IG5ybS5idWYgPSAoY2hhciAqKSBwYWxsb2Moc2l6 ZW9mKGNoYXIpICogbnJtLmJ1Zmxlbik7CisJCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9j X2FycmF5KGNoYXIsIG5ybS5idWZsZW4pOwogCiAJCS8qIGdldCByaWdodCBvcGVyYW5kICov CiAJCWluZml4KCZucm0sIHByaW9yaXR5LCAob3AgPT0gT1BfUEhSQVNFKSk7CkBAIC0xMTU3 LDcgKzExNTcsNyBAQCB0c3F1ZXJ5b3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCW5ybS5j dXJwb2wgPSBHRVRRVUVSWShxdWVyeSk7CiAJbnJtLmJ1ZmxlbiA9IDMyOwotCW5ybS5jdXIg PSBucm0uYnVmID0gKGNoYXIgKikgcGFsbG9jKHNpemVvZihjaGFyKSAqIG5ybS5idWZsZW4p OworCW5ybS5jdXIgPSBucm0uYnVmID0gcGFsbG9jX2FycmF5KGNoYXIsIG5ybS5idWZsZW4p OwogCSoobnJtLmN1cikgPSAnXDAnOwogCW5ybS5vcCA9IEdFVE9QRVJBTkQocXVlcnkpOwog CWluZml4KCZucm0sIC0xIC8qIGxvd2VzdCBwcmlvcml0eSAqLyAsIGZhbHNlKTsKQEAgLTEz ODUsNyArMTM4NSw3IEBAIHRzcXVlcnl0cmVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlu cm0uY3VycG9sID0gcTsKIAkJbnJtLmJ1ZmxlbiA9IDMyOwotCQlucm0uY3VyID0gbnJtLmJ1 ZiA9IChjaGFyICopIHBhbGxvYyhzaXplb2YoY2hhcikgKiBucm0uYnVmbGVuKTsKKwkJbnJt LmN1ciA9IG5ybS5idWYgPSBwYWxsb2NfYXJyYXkoY2hhciwgbnJtLmJ1Zmxlbik7CiAJCSoo bnJtLmN1cikgPSAnXDAnOwogCQlucm0ub3AgPSBHRVRPUEVSQU5EKHF1ZXJ5KTsKIAkJaW5m aXgoJm5ybSwgLTEsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3F1ZXJ5X2NsZWFudXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5X2Ns ZWFudXAuYwppbmRleCA1OTBkN2M3OTg5Yy4uNDVkZTJkYTkwMGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5X2NsZWFudXAuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNxdWVyeV9jbGVhbnVwLmMKQEAgLTMyLDcgKzMyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgTk9ERQogc3RhdGljIE5PREUgKgogbWFrZXRyZWUoUXVlcnlJdGVtICppbikK IHsKLQlOT0RFCSAgICpub2RlID0gKE5PREUgKikgcGFsbG9jKHNpemVvZihOT0RFKSk7CisJ Tk9ERQkgICAqbm9kZSA9IHBhbGxvY19vYmplY3QoTk9ERSk7CiAKIAkvKiBzaW5jZSB0aGlz IGZ1bmN0aW9uIHJlY3Vyc2VzLCBpdCBjb3VsZCBiZSBkcml2ZW4gdG8gc3RhY2sgb3ZlcmZs b3cuICovCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90c3F1ZXJ5X2dpc3QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1 ZXJ5X2dpc3QuYwppbmRleCBmN2Y5NGMxYzc2MC4uNTVmYzkzZWJlZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5X2dpc3QuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNxdWVyeV9naXN0LmMKQEAgLTMzLDcgKzMzLDcgQEAgZ3RzcXVlcnlf Y29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCVRTUXVlcnlTaWduIHNpZ247CiAK LQkJcmV0dmFsID0gKEdJU1RFTlRSWSAqKSBwYWxsb2Moc2l6ZW9mKEdJU1RFTlRSWSkpOwor CQlyZXR2YWwgPSBwYWxsb2Nfb2JqZWN0KEdJU1RFTlRSWSk7CiAJCXNpZ24gPSBtYWtlVFNR dWVyeVNpZ24oRGF0dW1HZXRUU1F1ZXJ5KGVudHJ5LT5rZXkpKTsKIAogCQlnaXN0ZW50cnlp bml0KCpyZXR2YWwsIFRTUXVlcnlTaWduR2V0RGF0dW0oc2lnbiksCkBAIC0yMTMsNyArMjEz LDcgQEAgZ3RzcXVlcnlfcGlja3NwbGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJZGF0dW1fciA9 IEdFVEVOVFJZKGVudHJ5dmVjLCBzZWVkXzIpOwogCiAJbWF4b2ZmID0gT2Zmc2V0TnVtYmVy TmV4dChtYXhvZmYpOwotCWNvc3R2ZWN0b3IgPSAoU1BMSVRDT1NUICopIHBhbGxvYyhzaXpl b2YoU1BMSVRDT1NUKSAqIG1heG9mZik7CisJY29zdHZlY3RvciA9IHBhbGxvY19hcnJheShT UExJVENPU1QsIG1heG9mZik7CiAJZm9yIChqID0gRmlyc3RPZmZzZXROdW1iZXI7IGogPD0g bWF4b2ZmOyBqID0gT2Zmc2V0TnVtYmVyTmV4dChqKSkKIAl7CiAJCWNvc3R2ZWN0b3JbaiAt IDFdLnBvcyA9IGo7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVy eV9vcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfb3AuYwppbmRleCBiYjc3 ZTkyMzA2Mi4uODRiZjA3MGRmZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3F1ZXJ5X29wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfb3Au YwpAQCAtMzIsMTcgKzMyLDE3IEBAIHRzcXVlcnlfbnVtbm9kZShQR19GVU5DVElPTl9BUkdT KQogc3RhdGljIFFUTm9kZSAqCiBqb2luX3RzcXVlcmllcyhUU1F1ZXJ5IGEsIFRTUXVlcnkg YiwgaW50OCBvcGVyYXRvciwgdWludDE2IGRpc3RhbmNlKQogewotCVFUTm9kZQkgICAqcmVz ID0gKFFUTm9kZSAqKSBwYWxsb2MwKHNpemVvZihRVE5vZGUpKTsKKwlRVE5vZGUJICAgKnJl cyA9IHBhbGxvYzBfb2JqZWN0KFFUTm9kZSk7CiAKIAlyZXMtPmZsYWdzIHw9IFFUTl9ORUVE RlJFRTsKIAotCXJlcy0+dmFsbm9kZSA9IChRdWVyeUl0ZW0gKikgcGFsbG9jMChzaXplb2Yo UXVlcnlJdGVtKSk7CisJcmVzLT52YWxub2RlID0gcGFsbG9jMF9vYmplY3QoUXVlcnlJdGVt KTsKIAlyZXMtPnZhbG5vZGUtPnR5cGUgPSBRSV9PUFI7CiAJcmVzLT52YWxub2RlLT5xb3Bl cmF0b3Iub3BlciA9IG9wZXJhdG9yOwogCWlmIChvcGVyYXRvciA9PSBPUF9QSFJBU0UpCiAJ CXJlcy0+dmFsbm9kZS0+cW9wZXJhdG9yLmRpc3RhbmNlID0gZGlzdGFuY2U7CiAKLQlyZXMt PmNoaWxkID0gKFFUTm9kZSAqKikgcGFsbG9jMChzaXplb2YoUVROb2RlICopICogMik7CisJ cmVzLT5jaGlsZCA9IHBhbGxvYzBfYXJyYXkoUVROb2RlICosIDIpOwogCXJlcy0+Y2hpbGRb MF0gPSBRVDJRVE4oR0VUUVVFUlkoYiksIEdFVE9QRVJBTkQoYikpOwogCXJlcy0+Y2hpbGRb MV0gPSBRVDJRVE4oR0VUUVVFUlkoYSksIEdFVE9QRVJBTkQoYSkpOwogCXJlcy0+bmNoaWxk ID0gMjsKQEAgLTE2NSwxNSArMTY1LDE1IEBAIHRzcXVlcnlfbm90KFBHX0ZVTkNUSU9OX0FS R1MpCiAJaWYgKGEtPnNpemUgPT0gMCkKIAkJUEdfUkVUVVJOX1BPSU5URVIoYSk7CiAKLQly ZXMgPSAoUVROb2RlICopIHBhbGxvYzAoc2l6ZW9mKFFUTm9kZSkpOworCXJlcyA9IHBhbGxv YzBfb2JqZWN0KFFUTm9kZSk7CiAKIAlyZXMtPmZsYWdzIHw9IFFUTl9ORUVERlJFRTsKIAot CXJlcy0+dmFsbm9kZSA9IChRdWVyeUl0ZW0gKikgcGFsbG9jMChzaXplb2YoUXVlcnlJdGVt KSk7CisJcmVzLT52YWxub2RlID0gcGFsbG9jMF9vYmplY3QoUXVlcnlJdGVtKTsKIAlyZXMt PnZhbG5vZGUtPnR5cGUgPSBRSV9PUFI7CiAJcmVzLT52YWxub2RlLT5xb3BlcmF0b3Iub3Bl ciA9IE9QX05PVDsKIAotCXJlcy0+Y2hpbGQgPSAoUVROb2RlICoqKSBwYWxsb2MwKHNpemVv ZihRVE5vZGUgKikpOworCXJlcy0+Y2hpbGQgPSBwYWxsb2MwX29iamVjdChRVE5vZGUgKik7 CiAJcmVzLT5jaGlsZFswXSA9IFFUMlFUTihHRVRRVUVSWShhKSwgR0VUT1BFUkFORChhKSk7 CiAJcmVzLT5uY2hpbGQgPSAxOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgY29sbGVjdFRTUXVl cnlWYWx1ZXMoVFNRdWVyeSBhLCBpbnQgKm52YWx1ZXNfcCkKIAlpbnQJCQludmFsdWVzID0g MDsKIAlpbnQJCQlpOwogCi0JdmFsdWVzID0gKGNoYXIgKiopIHBhbGxvYyhzaXplb2YoY2hh ciAqKSAqIGEtPnNpemUpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShjaGFyICosIGEtPnNp emUpOwogCiAJZm9yIChpID0gMDsgaSA8IGEtPnNpemU7IGkrKykKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV91dGlsLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvdHNxdWVyeV91dGlsLmMKaW5kZXggMWMyNGIwNDFhYTIuLjJjY2ZjOWQzMzAz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV91dGlsLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfdXRpbC5jCkBAIC0yNCw3ICsyNCw3 IEBACiBRVE5vZGUgKgogUVQyUVROKFF1ZXJ5SXRlbSAqaW4sIGNoYXIgKm9wZXJhbmQpCiB7 Ci0JUVROb2RlCSAgICpub2RlID0gKFFUTm9kZSAqKSBwYWxsb2MwKHNpemVvZihRVE5vZGUp KTsKKwlRVE5vZGUJICAgKm5vZGUgPSBwYWxsb2MwX29iamVjdChRVE5vZGUpOwogCiAJLyog c2luY2UgdGhpcyBmdW5jdGlvbiByZWN1cnNlcywgaXQgY291bGQgYmUgZHJpdmVuIHRvIHN0 YWNrIG92ZXJmbG93LiAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CkBAIC0zMyw3ICszMyw3 IEBAIFFUMlFUTihRdWVyeUl0ZW0gKmluLCBjaGFyICpvcGVyYW5kKQogCiAJaWYgKGluLT50 eXBlID09IFFJX09QUikKIAl7Ci0JCW5vZGUtPmNoaWxkID0gKFFUTm9kZSAqKikgcGFsbG9j MChzaXplb2YoUVROb2RlICopICogMik7CisJCW5vZGUtPmNoaWxkID0gcGFsbG9jMF9hcnJh eShRVE5vZGUgKiwgMik7CiAJCW5vZGUtPmNoaWxkWzBdID0gUVQyUVROKGluICsgMSwgb3Bl cmFuZCk7CiAJCW5vZGUtPnNpZ24gPSBub2RlLT5jaGlsZFswXS0+c2lnbjsKIAkJaWYgKGlu LT5xb3BlcmF0b3Iub3BlciA9PSBPUF9OT1QpCkBAIC0yMjYsNyArMjI2LDcgQEAgUVROVGVy bmFyeShRVE5vZGUgKmluKQogCQkJaW50CQkJb2xkbmNoaWxkID0gaW4tPm5jaGlsZDsKIAog CQkJaW4tPm5jaGlsZCArPSBjYy0+bmNoaWxkIC0gMTsKLQkJCWluLT5jaGlsZCA9IChRVE5v ZGUgKiopIHJlcGFsbG9jKGluLT5jaGlsZCwgaW4tPm5jaGlsZCAqIHNpemVvZihRVE5vZGUg KikpOworCQkJaW4tPmNoaWxkID0gcmVwYWxsb2NfYXJyYXkoaW4tPmNoaWxkLCBRVE5vZGUg KiwgaW4tPm5jaGlsZCk7CiAKIAkJCWlmIChpICsgMSAhPSBvbGRuY2hpbGQpCiAJCQkJbWVt bW92ZShpbi0+Y2hpbGQgKyBpICsgY2MtPm5jaGlsZCwgaW4tPmNoaWxkICsgaSArIDEsCkBA IC0yNjIsMTAgKzI2MiwxMCBAQCBRVE5CaW5hcnkoUVROb2RlICppbikKIAogCXdoaWxlIChp bi0+bmNoaWxkID4gMikKIAl7Ci0JCVFUTm9kZQkgICAqbm4gPSAoUVROb2RlICopIHBhbGxv YzAoc2l6ZW9mKFFUTm9kZSkpOworCQlRVE5vZGUJICAgKm5uID0gcGFsbG9jMF9vYmplY3Qo UVROb2RlKTsKIAotCQlubi0+dmFsbm9kZSA9IChRdWVyeUl0ZW0gKikgcGFsbG9jMChzaXpl b2YoUXVlcnlJdGVtKSk7Ci0JCW5uLT5jaGlsZCA9IChRVE5vZGUgKiopIHBhbGxvYzAoc2l6 ZW9mKFFUTm9kZSAqKSAqIDIpOworCQlubi0+dmFsbm9kZSA9IHBhbGxvYzBfb2JqZWN0KFF1 ZXJ5SXRlbSk7CisJCW5uLT5jaGlsZCA9IHBhbGxvYzBfYXJyYXkoUVROb2RlICosIDIpOwog CiAJCW5uLT5uY2hpbGQgPSAyOwogCQlubi0+ZmxhZ3MgPSBRVE5fTkVFREZSRUU7CkBAIC00 MDAsMTAgKzQwMCwxMCBAQCBRVE5Db3B5KFFUTm9kZSAqaW4pCiAJLyogc2luY2UgdGhpcyBm dW5jdGlvbiByZWN1cnNlcywgaXQgY291bGQgYmUgZHJpdmVuIHRvIHN0YWNrIG92ZXJmbG93 LiAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKLQlvdXQgPSAoUVROb2RlICopIHBhbGxv YyhzaXplb2YoUVROb2RlKSk7CisJb3V0ID0gcGFsbG9jX29iamVjdChRVE5vZGUpOwogCiAJ Km91dCA9ICppbjsKLQlvdXQtPnZhbG5vZGUgPSAoUXVlcnlJdGVtICopIHBhbGxvYyhzaXpl b2YoUXVlcnlJdGVtKSk7CisJb3V0LT52YWxub2RlID0gcGFsbG9jX29iamVjdChRdWVyeUl0 ZW0pOwogCSoob3V0LT52YWxub2RlKSA9ICooaW4tPnZhbG5vZGUpOwogCW91dC0+ZmxhZ3Mg fD0gUVROX05FRURGUkVFOwogCkBAIC00MTgsNyArNDE4LDcgQEAgUVROQ29weShRVE5vZGUg KmluKQogCXsKIAkJaW50CQkJaTsKIAotCQlvdXQtPmNoaWxkID0gKFFUTm9kZSAqKikgcGFs bG9jKHNpemVvZihRVE5vZGUgKikgKiBpbi0+bmNoaWxkKTsKKwkJb3V0LT5jaGlsZCA9IHBh bGxvY19hcnJheShRVE5vZGUgKiwgaW4tPm5jaGlsZCk7CiAKIAkJZm9yIChpID0gMDsgaSA8 IGluLT5uY2hpbGQ7IGkrKykKIAkJCW91dC0+Y2hpbGRbaV0gPSBRVE5Db3B5KGluLT5jaGls ZFtpXSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5rLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5rLmMKaW5kZXggZTg2M2FhNTg2NTMuLjRhMzQx ODQ4NjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNyYW5rLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcmFuay5jCkBAIC0xNjAsNyArMTYwLDcgQEAg U29ydEFuZFVuaXFJdGVtcyhUU1F1ZXJ5IHEsIGludCAqc2l6ZSkKIAkJCSAgKipwdHIsCiAJ CQkgICoqcHJldnB0cjsKIAotCXB0ciA9IHJlcyA9IChRdWVyeU9wZXJhbmQgKiopIHBhbGxv YyhzaXplb2YoUXVlcnlPcGVyYW5kICopICogKnNpemUpOworCXB0ciA9IHJlcyA9IHBhbGxv Y19hcnJheShRdWVyeU9wZXJhbmQgKiwgKnNpemUpOwogCiAJLyogQ29sbGVjdCBhbGwgb3Bl cmFuZHMgZnJvbSB0aGUgdHJlZSB0byByZXMgKi8KIAl3aGlsZSAoKCpzaXplKS0tKQpAQCAt MjI1LDcgKzIyNSw3IEBAIGNhbGNfcmFua19hbmQoY29uc3QgZmxvYXQgKncsIFRTVmVjdG9y IHQsIFRTUXVlcnkgcSkKIAkJcGZyZWUoaXRlbSk7CiAJCXJldHVybiBjYWxjX3Jhbmtfb3Io dywgdCwgcSk7CiAJfQotCXBvcyA9IChXb3JkRW50cnlQb3NWZWN0b3IgKiopIHBhbGxvYzAo c2l6ZW9mKFdvcmRFbnRyeVBvc1ZlY3RvciAqKSAqIHEtPnNpemUpOworCXBvcyA9IHBhbGxv YzBfYXJyYXkoV29yZEVudHJ5UG9zVmVjdG9yICosIHEtPnNpemUpOwogCiAJLyogQSBkdW1t eSBXb3JkRW50cnlQb3MgYXJyYXkgdG8gdXNlIHdoZW4gaGFzcG9zIGlzIGZhbHNlICovCiAJ cG9zbnVsbC5ucG9zID0gMTsKQEAgLTc0Myw3ICs3NDMsNyBAQCBnZXRfZG9jcmVwKFRTVmVj dG9yIHR4dCwgUXVlcnlSZXByZXNlbnRhdGlvbiAqcXIsIGludCAqZG9jbGVuKQogCQkJCWN1 ciA9IDA7CiAJRG9jUmVwcmVzZW50YXRpb24gKmRvYzsKIAotCWRvYyA9IChEb2NSZXByZXNl bnRhdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKERvY1JlcHJlc2VudGF0aW9uKSAqIGxlbik7CisJ ZG9jID0gcGFsbG9jX2FycmF5KERvY1JlcHJlc2VudGF0aW9uLCBsZW4pOwogCiAJLyoKIAkg KiBJdGVyYXRlIHRocm91Z2ggcXVlcnkgdG8gbWFrZSBEb2NSZXByZXNlbnRhdGlvbiBmb3Ig d29yZHMgYW5kIGl0J3MKQEAgLTgxNSw3ICs4MTUsNyBAQCBnZXRfZG9jcmVwKFRTVmVjdG9y IHR4dCwgUXVlcnlSZXByZXNlbnRhdGlvbiAqcXIsIGludCAqZG9jbGVuKQogCQkgKiBKb2lu IFF1ZXJ5SXRlbSBwZXIgV29yZEVudHJ5IGFuZCBpdHMgcG9zaXRpb24KIAkJICovCiAJCXN0 b3JhZ2UucG9zID0gZG9jLT5wb3M7Ci0JCXN0b3JhZ2UuZGF0YS5xdWVyeS5pdGVtcyA9IHBh bGxvYyhzaXplb2YoUXVlcnlJdGVtICopICogcXItPnF1ZXJ5LT5zaXplKTsKKwkJc3RvcmFn ZS5kYXRhLnF1ZXJ5Lml0ZW1zID0gcGFsbG9jX2FycmF5KFF1ZXJ5SXRlbSAqLCBxci0+cXVl cnktPnNpemUpOwogCQlzdG9yYWdlLmRhdGEucXVlcnkuaXRlbXNbMF0gPSBkb2MtPmRhdGEu bWFwLml0ZW07CiAJCXN0b3JhZ2UuZGF0YS5xdWVyeS5uaXRlbSA9IDE7CiAKQEAgLTgzMiw3 ICs4MzIsNyBAQCBnZXRfZG9jcmVwKFRTVmVjdG9yIHR4dCwgUXVlcnlSZXByZXNlbnRhdGlv biAqcXIsIGludCAqZG9jbGVuKQogCQkJCSp3cHRyID0gc3RvcmFnZTsKIAkJCQl3cHRyKys7 CiAJCQkJc3RvcmFnZS5wb3MgPSBycHRyLT5wb3M7Ci0JCQkJc3RvcmFnZS5kYXRhLnF1ZXJ5 Lml0ZW1zID0gcGFsbG9jKHNpemVvZihRdWVyeUl0ZW0gKikgKiBxci0+cXVlcnktPnNpemUp OworCQkJCXN0b3JhZ2UuZGF0YS5xdWVyeS5pdGVtcyA9IHBhbGxvY19hcnJheShRdWVyeUl0 ZW0gKiwgcXItPnF1ZXJ5LT5zaXplKTsKIAkJCQlzdG9yYWdlLmRhdGEucXVlcnkuaXRlbXNb MF0gPSBycHRyLT5kYXRhLm1hcC5pdGVtOwogCQkJCXN0b3JhZ2UuZGF0YS5xdWVyeS5uaXRl bSA9IDE7CiAJCQl9CkBAIC04NzgsOCArODc4LDcgQEAgY2FsY19yYW5rX2NkKGNvbnN0IGZs b2F0NCAqYXJyZGF0YSwgVFNWZWN0b3IgdHh0LCBUU1F1ZXJ5IHF1ZXJ5LCBpbnQgbWV0aG9k KQogCX0KIAogCXFyLnF1ZXJ5ID0gcXVlcnk7Ci0JcXIub3BlcmFuZERhdGEgPSAoUXVlcnlS ZXByZXNlbnRhdGlvbk9wZXJhbmQgKikKLQkJcGFsbG9jMChzaXplb2YoUXVlcnlSZXByZXNl bnRhdGlvbk9wZXJhbmQpICogcXVlcnktPnNpemUpOworCXFyLm9wZXJhbmREYXRhID0gcGFs bG9jMF9hcnJheShRdWVyeVJlcHJlc2VudGF0aW9uT3BlcmFuZCwgcXVlcnktPnNpemUpOwog CiAJZG9jID0gZ2V0X2RvY3JlcCh0eHQsICZxciwgJmRvY2xlbik7CiAJaWYgKCFkb2MpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3IuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90c3ZlY3Rvci5jCmluZGV4IDFmYTJlMzcyOWJmLi4zOWJlMTBmNDVh NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yLmMKQEAgLTIwMiw4ICsyMDIsOCBAQCB0 c3ZlY3RvcmluKFBHX0ZVTkNUSU9OX0FSR1MpCiAJc3RhdGUgPSBpbml0X3RzdmVjdG9yX3Bh cnNlcihidWYsIDAsIGVzY29udGV4dCk7CiAKIAlhcnJsZW4gPSA2NDsKLQlhcnIgPSAoV29y ZEVudHJ5SU4gKikgcGFsbG9jKHNpemVvZihXb3JkRW50cnlJTikgKiBhcnJsZW4pOwotCWN1 ciA9IHRtcGJ1ZiA9IChjaGFyICopIHBhbGxvYyhidWZsZW4pOworCWFyciA9IHBhbGxvY19h cnJheShXb3JkRW50cnlJTiwgYXJybGVuKTsgCisJY3VyID0gdG1wYnVmID0gcGFsbG9jX2Fy cmF5KGNoYXIsIGJ1Zmxlbik7CiAKIAl3aGlsZSAoZ2V0dG9rZW5fdHN2ZWN0b3Ioc3RhdGUs ICZ0b2tlbiwgJnRva2xlbiwgJnBvcywgJnBvc2xlbiwgTlVMTCkpCiAJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYwppbmRleCBjNzUyY2JlNTQ2My4uYjgwOTA4OWFjNWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9vcC5jCkBAIC0xMjEyLDcgKzEyMTIs NyBAQCBjaGVja2NsYXNzX3N0cihDSEtWQUwgKmNoa3ZhbCwgV29yZEVudHJ5ICplbnRyeSwg UXVlcnlPcGVyYW5kICp2YWwsCiAJCQkvKgogCQkJICogRmlsdGVyIHBvc2l0aW9uIGluZm9y bWF0aW9uIGJ5IHdlaWdodHMKIAkJCSAqLwotCQkJZHB0ciA9IGRhdGEtPnBvcyA9IHBhbGxv YyhzaXplb2YoV29yZEVudHJ5UG9zKSAqIHBvc3ZlYy0+bnBvcyk7CisJCQlkcHRyID0gZGF0 YS0+cG9zID0gcGFsbG9jX2FycmF5KFdvcmRFbnRyeVBvcywgcG9zdmVjLT5ucG9zKTsKIAkJ CWRhdGEtPmFsbG9jYXRlZCA9IHRydWU7CiAKIAkJCS8qIElzIHRoZXJlIGEgcG9zaXRpb24g d2l0aCBhIG1hdGNoaW5nIHdlaWdodD8gKi8KQEAgLTEzOTEsMTIgKzEzOTEsMTIgQEAgY2hl Y2tjb25kaXRpb25fc3RyKHZvaWQgKmNoZWNrdmFsLCBRdWVyeU9wZXJhbmQgKnZhbCwgRXhl Y1BocmFzZURhdGEgKmRhdGEpCiAJCQkJCQlpZiAodG90YWxwb3MgPT0gMCkKIAkJCQkJCXsK IAkJCQkJCQl0b3RhbHBvcyA9IDI1NjsKLQkJCQkJCQlhbGxwb3MgPSBwYWxsb2Moc2l6ZW9m KFdvcmRFbnRyeVBvcykgKiB0b3RhbHBvcyk7CisJCQkJCQkJYWxscG9zID0gcGFsbG9jX2Fy cmF5KFdvcmRFbnRyeVBvcywgdG90YWxwb3MpOwogCQkJCQkJfQogCQkJCQkJZWxzZQogCQkJ CQkJewogCQkJCQkJCXRvdGFscG9zICo9IDI7Ci0JCQkJCQkJYWxscG9zID0gcmVwYWxsb2Mo YWxscG9zLCBzaXplb2YoV29yZEVudHJ5UG9zKSAqIHRvdGFscG9zKTsKKwkJCQkJCQlhbGxw b3MgPSByZXBhbGxvY19hcnJheShhbGxwb3MsIFdvcmRFbnRyeVBvcywgdG90YWxwb3MpOwog CQkJCQkJfQogCQkJCQl9CiAKQEAgLTI0NTYsNyArMjQ1Niw3IEBAIHRzX3NldHVwX2ZpcnN0 Y2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4 LAogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0 aV9jYWxsX21lbW9yeV9jdHgpOwogCi0Jc3RhdC0+c3RhY2sgPSBwYWxsb2MwKHNpemVvZihT dGF0RW50cnkgKikgKiAoc3RhdC0+bWF4ZGVwdGggKyAxKSk7CisJc3RhdC0+c3RhY2sgPSBw YWxsb2MwX2FycmF5KFN0YXRFbnRyeSAqLCBzdGF0LT5tYXhkZXB0aCArIDEpOwogCXN0YXQt PnN0YWNrcG9zID0gMDsKIAogCW5vZGUgPSBzdGF0LT5yb290OwpAQCAtMjgzOSw3ICsyODM5 LDcgQEAgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoUEdfRlVOQ1RJT05fQVJHUywgYm9vbCBj b25maWdfY29sdW1uKQogCXBycy5sZW53b3JkcyA9IDMyOwogCXBycy5jdXJ3b3JkcyA9IDA7 CiAJcHJzLnBvcyA9IDA7Ci0JcHJzLndvcmRzID0gKFBhcnNlZFdvcmQgKikgcGFsbG9jKHNp emVvZihQYXJzZWRXb3JkKSAqIHBycy5sZW53b3Jkcyk7CisJcHJzLndvcmRzID0gcGFsbG9j X2FycmF5KFBhcnNlZFdvcmQsIHBycy5sZW53b3Jkcyk7CiAKIAkvKiBmaW5kIGFsbCB3b3Jk cyBpbiBpbmRleGFibGUgY29sdW1uKHMpICovCiAJZm9yIChpID0gMjsgaSA8IHRyaWdnZXIt PnRnbmFyZ3M7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3Zl Y3Rvcl9wYXJzZXIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9wYXJzZXIu YwppbmRleCBlMTYyMGQzZWQxZi4uMzk1YzM0MDNiOWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9wYXJzZXIuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMKQEAgLTU4LDcgKzU4LDcgQEAgaW5pdF90c3ZlY3Rv cl9wYXJzZXIoY2hhciAqaW5wdXQsIGludCBmbGFncywgTm9kZSAqZXNjb250ZXh0KQogewog CVRTVmVjdG9yUGFyc2VTdGF0ZSBzdGF0ZTsKIAotCXN0YXRlID0gKFRTVmVjdG9yUGFyc2VT dGF0ZSkgcGFsbG9jKHNpemVvZihzdHJ1Y3QgVFNWZWN0b3JQYXJzZVN0YXRlRGF0YSkpOwor CXN0YXRlID0gcGFsbG9jX29iamVjdChzdHJ1Y3QgVFNWZWN0b3JQYXJzZVN0YXRlRGF0YSk7 CiAJc3RhdGUtPnByc2J1ZiA9IGlucHV0OwogCXN0YXRlLT5idWZzdGFydCA9IGlucHV0Owog CXN0YXRlLT5sZW4gPSAzMjsKQEAgLTMyMiwxMyArMzIyLDEzIEBAIGdldHRva2VuX3RzdmVj dG9yKFRTVmVjdG9yUGFyc2VTdGF0ZSBzdGF0ZSwKIAkJCQlpZiAocG9zYWxlbiA9PSAwKQog CQkJCXsKIAkJCQkJcG9zYWxlbiA9IDQ7Ci0JCQkJCXBvcyA9IChXb3JkRW50cnlQb3MgKikg cGFsbG9jKHNpemVvZihXb3JkRW50cnlQb3MpICogcG9zYWxlbik7CisJCQkJCXBvcyA9IHBh bGxvY19hcnJheShXb3JkRW50cnlQb3MsIHBvc2FsZW4pOyAKIAkJCQkJbnBvcyA9IDA7CiAJ CQkJfQogCQkJCWVsc2UgaWYgKG5wb3MgKyAxID49IHBvc2FsZW4pCiAJCQkJewogCQkJCQlw b3NhbGVuICo9IDI7Ci0JCQkJCXBvcyA9IChXb3JkRW50cnlQb3MgKikgcmVwYWxsb2MocG9z LCBzaXplb2YoV29yZEVudHJ5UG9zKSAqIHBvc2FsZW4pOworCQkJCQlwb3MgPSByZXBhbGxv Y19hcnJheShwb3MsIFdvcmRFbnRyeVBvcywgcG9zYWxlbik7CiAJCQkJfQogCQkJCW5wb3Mr KzsKIAkJCQlXRVBfU0VUUE9TKHBvc1tucG9zIC0gMV0sIExJTUlUUE9TKGF0b2koc3RhdGUt PnByc2J1ZikpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCmluZGV4IGU1ZjI3ZmY4OTJiLi40OTNh YWMzMjc5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCkBAIC04MCw3ICs4MCw3IEBAIHV1aWRf aW4oUEdfRlVOQ1RJT05fQVJHUykKIAljaGFyCSAgICp1dWlkX3N0ciA9IFBHX0dFVEFSR19D U1RSSU5HKDApOwogCXBnX3V1aWRfdCAgKnV1aWQ7CiAKLQl1dWlkID0gKHBnX3V1aWRfdCAq KSBwYWxsb2Moc2l6ZW9mKCp1dWlkKSk7CisJdXVpZCA9IHBhbGxvY19vYmplY3QocGdfdXVp ZF90KTsKIAlzdHJpbmdfdG9fdXVpZCh1dWlkX3N0ciwgdXVpZCwgZmNpbmZvLT5jb250ZXh0 KTsKIAlQR19SRVRVUk5fVVVJRF9QKHV1aWQpOwogfQpAQCAtMjg4LDcgKzI4OCw3IEBAIHV1 aWRfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHNzdXAtPnNzdXBfY3h0KTsKIAotCQl1c3MgPSBwYWxsb2Mo c2l6ZW9mKHV1aWRfc29ydHN1cHBvcnRfc3RhdGUpKTsKKwkJdXNzID0gcGFsbG9jX29iamVj dCh1dWlkX3NvcnRzdXBwb3J0X3N0YXRlKTsKIAkJdXNzLT5pbnB1dF9jb3VudCA9IDA7CiAJ CXVzcy0+ZXN0aW1hdGluZyA9IHRydWU7CiAJCWluaXRIeXBlckxvZ0xvZygmdXNzLT5hYmJy X2NhcmQsIDEwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5h LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCmluZGV4IDM4OTQ0NTdhYjQw Li5jMjZkNTdlYTJlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Zhcmxl bmEuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0xNjkyLDcg KzE2OTIsNyBAQCB2YXJzdHJfc29ydHN1cHBvcnQoU29ydFN1cHBvcnQgc3N1cCwgT2lkIHR5 cGlkLCBPaWQgY29sbGlkKQogCSAqLwogCWlmIChhYmJyZXZpYXRlIHx8ICFjb2xsYXRlX2Mp CiAJewotCQlzc3MgPSBwYWxsb2Moc2l6ZW9mKFZhclN0cmluZ1NvcnRTdXBwb3J0KSk7CisJ CXNzcyA9IHBhbGxvY19vYmplY3QoVmFyU3RyaW5nU29ydFN1cHBvcnQpOwogCQlzc3MtPmJ1 ZjEgPSBwYWxsb2MoVEVYVEJVRkxFTik7CiAJCXNzcy0+YnVmbGVuMSA9IFRFWFRCVUZMRU47 CiAJCXNzcy0+YnVmMiA9IHBhbGxvYyhURVhUQlVGTEVOKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC94bWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC94bWwuYwpp bmRleCA0MWU3NzU1NzBlYy4uYzhhYjlkNjFjNjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC94bWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMKQEAg LTEyNTUsNyArMTI1NSw3IEBAIHBnX3htbF9pbml0KFBnWG1sU3RyaWN0bmVzcyBzdHJpY3Ru ZXNzKQogCXBnX3htbF9pbml0X2xpYnJhcnkoKTsKIAogCS8qIENyZWF0ZSBlcnJvciBoYW5k bGluZyBjb250ZXh0IHN0cnVjdHVyZSAqLwotCWVycmN4dCA9IChQZ1htbEVycm9yQ29udGV4 dCAqKSBwYWxsb2Moc2l6ZW9mKFBnWG1sRXJyb3JDb250ZXh0KSk7CisJZXJyY3h0ID0gcGFs bG9jX29iamVjdChQZ1htbEVycm9yQ29udGV4dCk7CiAJZXJyY3h0LT5tYWdpYyA9IEVSUkNY VF9NQUdJQzsKIAllcnJjeHQtPnN0cmljdG5lc3MgPSBzdHJpY3RuZXNzOwogCWVycmN4dC0+ ZXJyX29jY3VycmVkID0gZmFsc2U7CkBAIC00NzMzLDEwICs0NzMzLDEwIEBAIFhtbFRhYmxl SW5pdE9wYXF1ZShUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCiAJWG1s VGFibGVCdWlsZGVyRGF0YSAqeHRDeHQ7CiAJUGdYbWxFcnJvckNvbnRleHQgKnhtbGVycmN4 dDsKIAotCXh0Q3h0ID0gcGFsbG9jMChzaXplb2YoWG1sVGFibGVCdWlsZGVyRGF0YSkpOwor CXh0Q3h0ID0gcGFsbG9jMF9vYmplY3QoWG1sVGFibGVCdWlsZGVyRGF0YSk7CiAJeHRDeHQt Pm1hZ2ljID0gWE1MVEFCTEVfQ09OVEVYVF9NQUdJQzsKIAl4dEN4dC0+bmF0dHMgPSBuYXR0 czsKLQl4dEN4dC0+eHBhdGhzY29tcCA9IHBhbGxvYzAoc2l6ZW9mKHhtbFhQYXRoQ29tcEV4 cHJQdHIpICogbmF0dHMpOworCXh0Q3h0LT54cGF0aHNjb21wID0gcGFsbG9jMF9hcnJheSh4 bWxYUGF0aENvbXBFeHByUHRyLCBuYXR0cyk7CiAKIAl4bWxlcnJjeHQgPSBwZ194bWxfaW5p dChQR19YTUxfU1RSSUNUTkVTU19BTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9jYXRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2Fj aGUuYwppbmRleCAwMmFlN2Q1YTgzMS4uODRmMWY4MDYwN2UgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2NhdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvY2F0Y2FjaGUuYwpAQCAtOTIwLDcgKzkyMCw3IEBAIEluaXRDYXRDYWNoZShpbnQg aWQsCiAJICovCiAJaWYgKENhY2hlSGRyID09IE5VTEwpCiAJewotCQlDYWNoZUhkciA9IChD YXRDYWNoZUhlYWRlciAqKSBwYWxsb2Moc2l6ZW9mKENhdENhY2hlSGVhZGVyKSk7CisJCUNh Y2hlSGRyID0gcGFsbG9jX29iamVjdChDYXRDYWNoZUhlYWRlcik7CiAJCXNsaXN0X2luaXQo JkNhY2hlSGRyLT5jaF9jYWNoZXMpOwogCQlDYWNoZUhkci0+Y2hfbnR1cCA9IDA7CiAjaWZk ZWYgQ0FUQ0FDSEVfU1RBVFMKQEAgLTIyNDMsNyArMjI0Myw3IEBAIENhdGFsb2dDYWNoZUNy ZWF0ZUVudHJ5KENhdENhY2hlICpjYWNoZSwgSGVhcFR1cGxlIG50cCwgRGF0dW0gKmFyZ3Vt ZW50cywKIAl7CiAJCS8qIFNldCB1cCBrZXlzIGZvciBhIG5lZ2F0aXZlIGNhY2hlIGVudHJ5 ICovCiAJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRl eHQpOwotCQljdCA9IChDYXRDVHVwICopIHBhbGxvYyhzaXplb2YoQ2F0Q1R1cCkpOworCQlj dCA9IHBhbGxvY19vYmplY3QoQ2F0Q1R1cCk7CiAKIAkJLyoKIAkJICogU3RvcmUga2V5cyAt IHRoZXknbGwgcG9pbnQgaW50byBzZXBhcmF0ZWx5IGFsbG9jYXRlZCBtZW1vcnkgaWYgbm90 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYwppbmRleCBiOWQ1YTU5OThiZS4uN2Yw M2M5NGE5NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYwpAQCAtMTcyLDcg KzE3Miw3IEBAIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9pZCkKIAkJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhFdmVudFRyaWdnZXJDYWNoZUNvbnRleHQpOwogCiAJ CS8qIEFsbG9jYXRlIG5ldyBjYWNoZSBpdGVtLiAqLwotCQlpdGVtID0gcGFsbG9jMChzaXpl b2YoRXZlbnRUcmlnZ2VyQ2FjaGVJdGVtKSk7CisJCWl0ZW0gPSBwYWxsb2MwX29iamVjdChF dmVudFRyaWdnZXJDYWNoZUl0ZW0pOwogCQlpdGVtLT5mbm9pZCA9IGZvcm0tPmV2dGZvaWQ7 CiAJCWl0ZW0tPmVuYWJsZWQgPSBmb3JtLT5ldnRlbmFibGVkOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvaW52YWwuYwppbmRleCAwNmY3MzZjYWI0NS4uODY4ZjhmNjE4OGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvaW52YWwuYwpAQCAtNzU4LDcgKzc1OCw3IEBAIFByZXBhcmVJbnBsYWNlSW52 YWxpZGF0aW9uU3RhdGUodm9pZCkKIAlBc3NlcnQoaW5wbGFjZUludmFsSW5mbyA9PSBOVUxM KTsKIAogCS8qIGdvbmUgYWZ0ZXIgV0FMIGluc2VydGlvbiBDcml0U2VjdGlvbiBlbmRzLCBz byB1c2UgY3VycmVudCBjb250ZXh0ICovCi0JbXlJbmZvID0gKEludmFsaWRhdGlvbkluZm8g KikgcGFsbG9jMChzaXplb2YoSW52YWxpZGF0aW9uSW5mbykpOworCW15SW5mbyA9IHBhbGxv YzBfb2JqZWN0KEludmFsaWRhdGlvbkluZm8pOwogCiAJLyogU3Rhc2ggb3VyIG1lc3NhZ2Vz IHBhc3QgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbmFsIG1lc3NhZ2VzLCBpZiBhbnkuICovCiAJ aWYgKHRyYW5zSW52YWxJbmZvICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jCmluZGV4IGZhN2NkN2UwNmE3Li41YWE3YTI2ZDk1YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTcwMiw4ICs3MDIsNyBAQCBnZXRfb3BfaW5kZXhf aW50ZXJwcmV0YXRpb24oT2lkIG9wbm8pCiAJCWlmIChjbXB0eXBlID09IENPTVBBUkVfSU5W QUxJRCkKIAkJCWNvbnRpbnVlOwogCi0JCXRoaXNyZXN1bHQgPSAoT3BJbmRleEludGVycHJl dGF0aW9uICopCi0JCQlwYWxsb2Moc2l6ZW9mKE9wSW5kZXhJbnRlcnByZXRhdGlvbikpOwor CQl0aGlzcmVzdWx0ID0gcGFsbG9jX29iamVjdChPcEluZGV4SW50ZXJwcmV0YXRpb24pOwog CQl0aGlzcmVzdWx0LT5vcGZhbWlseV9pZCA9IG9wX2Zvcm0tPmFtb3BmYW1pbHk7CiAJCXRo aXNyZXN1bHQtPmNtcHR5cGUgPSBjbXB0eXBlOwogCQl0aGlzcmVzdWx0LT5vcGxlZnR0eXBl ID0gb3BfZm9ybS0+YW1vcGxlZnR0eXBlOwpAQCAtNzQ4LDggKzc0Nyw3IEBAIGdldF9vcF9p bmRleF9pbnRlcnByZXRhdGlvbihPaWQgb3BubykKIAkJCQkJY29udGludWU7CiAKIAkJCQkv KiBPSywgcmVwb3J0IGl0IGFzIENPTVBBUkVfTkUgKi8KLQkJCQl0aGlzcmVzdWx0ID0gKE9w SW5kZXhJbnRlcnByZXRhdGlvbiAqKQotCQkJCQlwYWxsb2Moc2l6ZW9mKE9wSW5kZXhJbnRl cnByZXRhdGlvbikpOworCQkJCXRoaXNyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KE9wSW5kZXhJ bnRlcnByZXRhdGlvbik7CiAJCQkJdGhpc3Jlc3VsdC0+b3BmYW1pbHlfaWQgPSBvcF9mb3Jt LT5hbW9wZmFtaWx5OwogCQkJCXRoaXNyZXN1bHQtPmNtcHR5cGUgPSBDT01QQVJFX05FOwog CQkJCXRoaXNyZXN1bHQtPm9wbGVmdHR5cGUgPSBvcF9mb3JtLT5hbW9wbGVmdHR5cGU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BhcnRjYWNoZS5jCmluZGV4IGY1ZDdkNzBkZWYwLi45N2Yy Y2UzM2VmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hlLmMKQEAgLTE2Nywx OCArMTY3LDE4IEBAIFJlbGF0aW9uQnVpbGRQYXJ0aXRpb25LZXkoUmVsYXRpb24gcmVsYXRp b24pCiAKIAkvKiBBbGxvY2F0ZSBhc3NvcnRlZCBhcnJheXMgaW4gdGhlIHBhcnRrZXljeHQs IHdoaWNoIHdlJ2xsIGZpbGwgYmVsb3cgKi8KIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocGFydGtleWN4dCk7Ci0Ja2V5LT5wYXJ0YXR0cnMgPSAoQXR0ck51bWJlciAqKSBw YWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKLQlrZXktPnBh cnRvcGZhbWlseSA9IChPaWQgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVvZihP aWQpKTsKLQlrZXktPnBhcnRvcGNpbnR5cGUgPSAoT2lkICopIHBhbGxvYzAoa2V5LT5wYXJ0 bmF0dHMgKiBzaXplb2YoT2lkKSk7Ci0Ja2V5LT5wYXJ0c3VwZnVuYyA9IChGbWdySW5mbyAq KSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKEZtZ3JJbmZvKSk7Ci0KLQlrZXkt PnBhcnRjb2xsYXRpb24gPSAoT2lkICopIHBhbGxvYzAoa2V5LT5wYXJ0bmF0dHMgKiBzaXpl b2YoT2lkKSk7Ci0Ja2V5LT5wYXJ0dHlwaWQgPSAoT2lkICopIHBhbGxvYzAoa2V5LT5wYXJ0 bmF0dHMgKiBzaXplb2YoT2lkKSk7Ci0Ja2V5LT5wYXJ0dHlwbW9kID0gKGludDMyICopIHBh bGxvYzAoa2V5LT5wYXJ0bmF0dHMgKiBzaXplb2YoaW50MzIpKTsKLQlrZXktPnBhcnR0eXBs ZW4gPSAoaW50MTYgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0cyAqIHNpemVvZihpbnQxNikp OwotCWtleS0+cGFydHR5cGJ5dmFsID0gKGJvb2wgKikgcGFsbG9jMChrZXktPnBhcnRuYXR0 cyAqIHNpemVvZihib29sKSk7Ci0Ja2V5LT5wYXJ0dHlwYWxpZ24gPSAoY2hhciAqKSBwYWxs b2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKGNoYXIpKTsKLQlrZXktPnBhcnR0eXBjb2xs ID0gKE9pZCAqKSBwYWxsb2MwKGtleS0+cGFydG5hdHRzICogc2l6ZW9mKE9pZCkpOworCWtl eS0+cGFydGF0dHJzID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMF9hcnJheShBdHRyTnVtYmVy LCBrZXktPnBhcnRuYXR0cyk7CisJa2V5LT5wYXJ0b3BmYW1pbHkgPSAoT2lkICopIHBhbGxv YzBfYXJyYXkoT2lkLCBrZXktPnBhcnRuYXR0cyk7CisJa2V5LT5wYXJ0b3BjaW50eXBlID0g KE9pZCAqKSBwYWxsb2MwX2FycmF5KE9pZCwga2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFy dHN1cGZ1bmMgPSAoRm1nckluZm8gKikgcGFsbG9jMF9hcnJheShGbWdySW5mbywga2V5LT5w YXJ0bmF0dHMpOworCisJa2V5LT5wYXJ0Y29sbGF0aW9uID0gKE9pZCAqKSBwYWxsb2MwX2Fy cmF5KE9pZCwga2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFydHR5cGlkID0gKE9pZCAqKSBw YWxsb2MwX2FycmF5KE9pZCwga2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFydHR5cG1vZCA9 IChpbnQzMiAqKSBwYWxsb2MwX2FycmF5KGludDMyLCBrZXktPnBhcnRuYXR0cyk7CisJa2V5 LT5wYXJ0dHlwbGVuID0gKGludDE2ICopIHBhbGxvYzBfYXJyYXkoaW50MTYsIGtleS0+cGFy dG5hdHRzKTsKKwlrZXktPnBhcnR0eXBieXZhbCA9IChib29sICopIHBhbGxvYzBfYXJyYXko Ym9vbCwga2V5LT5wYXJ0bmF0dHMpOworCWtleS0+cGFydHR5cGFsaWduID0gKGNoYXIgKikg cGFsbG9jMF9hcnJheShjaGFyLCBrZXktPnBhcnRuYXR0cyk7CisJa2V5LT5wYXJ0dHlwY29s bCA9IChPaWQgKikgcGFsbG9jMF9hcnJheShPaWQsIGtleS0+cGFydG5hdHRzKTsKIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAogCS8qIGRldGVybWluZSBzdXBwb3J0IGZ1 bmN0aW9uIG51bWJlciB0byBzZWFyY2ggZm9yICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jCmluZGV4IDY2NjFkMmM2YjczLi40NTI2MWNhYWY0NyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTIwNyw3ICsyMDcsNyBAQCBDcmVhdGVDYWNo ZWRQbGFuKFJhd1N0bXQgKnJhd19wYXJzZV90cmVlLAogCSAqLwogCW9sZGN4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhzb3VyY2VfY29udGV4dCk7CiAKLQlwbGFuc291cmNlID0gKENh Y2hlZFBsYW5Tb3VyY2UgKikgcGFsbG9jMChzaXplb2YoQ2FjaGVkUGxhblNvdXJjZSkpOwor CXBsYW5zb3VyY2UgPSBwYWxsb2MwX29iamVjdChDYWNoZWRQbGFuU291cmNlKTsKIAlwbGFu c291cmNlLT5tYWdpYyA9IENBQ0hFRFBMQU5TT1VSQ0VfTUFHSUM7CiAJcGxhbnNvdXJjZS0+ cmF3X3BhcnNlX3RyZWUgPSBjb3B5T2JqZWN0KHJhd19wYXJzZV90cmVlKTsKIAlwbGFuc291 cmNlLT5hbmFseXplZF9wYXJzZV90cmVlID0gTlVMTDsKQEAgLTMwNyw3ICszMDcsNyBAQCBD cmVhdGVPbmVTaG90Q2FjaGVkUGxhbihSYXdTdG10ICpyYXdfcGFyc2VfdHJlZSwKIAkgKiBD cmVhdGUgYW5kIGZpbGwgdGhlIENhY2hlZFBsYW5Tb3VyY2Ugc3RydWN0IHdpdGhpbiB0aGUg Y2FsbGVyJ3MgbWVtb3J5CiAJICogY29udGV4dC4gIE1vc3QgZmllbGRzIGFyZSBqdXN0IGxl ZnQgZW1wdHkgZm9yIHRoZSBtb21lbnQuCiAJICovCi0JcGxhbnNvdXJjZSA9IChDYWNoZWRQ bGFuU291cmNlICopIHBhbGxvYzAoc2l6ZW9mKENhY2hlZFBsYW5Tb3VyY2UpKTsKKwlwbGFu c291cmNlID0gcGFsbG9jMF9vYmplY3QoQ2FjaGVkUGxhblNvdXJjZSk7CiAJcGxhbnNvdXJj ZS0+bWFnaWMgPSBDQUNIRURQTEFOU09VUkNFX01BR0lDOwogCXBsYW5zb3VyY2UtPnJhd19w YXJzZV90cmVlID0gcmF3X3BhcnNlX3RyZWU7CiAJcGxhbnNvdXJjZS0+YW5hbHl6ZWRfcGFy c2VfdHJlZSA9IE5VTEw7CkBAIC00NjksNyArNDY5LDcgQEAgQ29tcGxldGVDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAKIAlpZiAobnVtX3BhcmFtcyA+IDAp CiAJewotCQlwbGFuc291cmNlLT5wYXJhbV90eXBlcyA9IChPaWQgKikgcGFsbG9jKG51bV9w YXJhbXMgKiBzaXplb2YoT2lkKSk7CisJCXBsYW5zb3VyY2UtPnBhcmFtX3R5cGVzID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtX3BhcmFtcyk7CiAJCW1lbWNweShwbGFuc291cmNlLT5wYXJh bV90eXBlcywgcGFyYW1fdHlwZXMsIG51bV9wYXJhbXMgKiBzaXplb2YoT2lkKSk7CiAJfQog CWVsc2UKQEAgLTExMTksNyArMTExOSw3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkvKgogCSAqIENyZWF0ZSBhbmQg ZmlsbCB0aGUgQ2FjaGVkUGxhbiBzdHJ1Y3Qgd2l0aGluIHRoZSBuZXcgY29udGV4dC4KIAkg Ki8KLQlwbGFuID0gKENhY2hlZFBsYW4gKikgcGFsbG9jKHNpemVvZihDYWNoZWRQbGFuKSk7 CisJcGxhbiA9IHBhbGxvY19vYmplY3QoQ2FjaGVkUGxhbik7CiAJcGxhbi0+bWFnaWMgPSBD QUNIRURQTEFOX01BR0lDOwogCXBsYW4tPnN0bXRfbGlzdCA9IHBsaXN0OwogCkBAIC0xNjkx LDcgKzE2OTEsNyBAQCBDb3B5Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQogCiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNvdXJjZV9jb250ZXh0 KTsKIAotCW5ld3NvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIHBhbGxvYzAoc2l6ZW9m KENhY2hlZFBsYW5Tb3VyY2UpKTsKKwluZXdzb3VyY2UgPSBwYWxsb2MwX29iamVjdChDYWNo ZWRQbGFuU291cmNlKTsKIAluZXdzb3VyY2UtPm1hZ2ljID0gQ0FDSEVEUExBTlNPVVJDRV9N QUdJQzsKIAluZXdzb3VyY2UtPnJhd19wYXJzZV90cmVlID0gY29weU9iamVjdChwbGFuc291 cmNlLT5yYXdfcGFyc2VfdHJlZSk7CiAJbmV3c291cmNlLT5hbmFseXplZF9wYXJzZV90cmVl ID0gY29weU9iamVjdChwbGFuc291cmNlLT5hbmFseXplZF9wYXJzZV90cmVlKTsKQEAgLTE3 MDAsOCArMTcwMCw3IEBAIENvcHlDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiAJbmV3c291cmNlLT5jb21tYW5kVGFnID0gcGxhbnNvdXJjZS0+Y29tbWFuZFRh ZzsKIAlpZiAocGxhbnNvdXJjZS0+bnVtX3BhcmFtcyA+IDApCiAJewotCQluZXdzb3VyY2Ut PnBhcmFtX3R5cGVzID0gKE9pZCAqKQotCQkJcGFsbG9jKHBsYW5zb3VyY2UtPm51bV9wYXJh bXMgKiBzaXplb2YoT2lkKSk7CisJCW5ld3NvdXJjZS0+cGFyYW1fdHlwZXMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBwbGFuc291cmNlLT5udW1fcGFyYW1zKTsKIAkJbWVtY3B5KG5ld3NvdXJj ZS0+cGFyYW1fdHlwZXMsIHBsYW5zb3VyY2UtPnBhcmFtX3R5cGVzLAogCQkJICAgcGxhbnNv dXJjZS0+bnVtX3BhcmFtcyAqIHNpemVvZihPaWQpKTsKIAl9CkBAIC0xODQwLDcgKzE4Mzks NyBAQCBHZXRDYWNoZWRFeHByZXNzaW9uKE5vZGUgKmV4cHIpCiAKIAlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oY2V4cHJfY29udGV4dCk7CiAKLQljZXhwciA9IChDYWNoZWRF eHByZXNzaW9uICopIHBhbGxvYyhzaXplb2YoQ2FjaGVkRXhwcmVzc2lvbikpOworCWNleHBy ID0gcGFsbG9jX29iamVjdChDYWNoZWRFeHByZXNzaW9uKTsKIAljZXhwci0+bWFnaWMgPSBD QUNIRURFWFBSX01BR0lDOwogCWNleHByLT5leHByID0gY29weU9iamVjdChleHByKTsKIAlj ZXhwci0+aXNfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK aW5kZXggOTE1ZDBiYzkwODQuLmE0ZGMxY2JlNWFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKQEAgLTQyMiw3ICs0MjIsNyBAQCBBbGxvY2F0ZVJlbGF0aW9uRGVzYyhG b3JtX3BnX2NsYXNzIHJlbHApCiAJLyoKIAkgKiBhbGxvY2F0ZSBhbmQgemVybyBzcGFjZSBm b3IgbmV3IHJlbGF0aW9uIGRlc2NyaXB0b3IKIAkgKi8KLQlyZWxhdGlvbiA9IChSZWxhdGlv bikgcGFsbG9jMChzaXplb2YoUmVsYXRpb25EYXRhKSk7CisJcmVsYXRpb24gPSBwYWxsb2Mw X29iamVjdChSZWxhdGlvbkRhdGEpOwogCiAJLyogbWFrZSBzdXJlIHJlbGF0aW9uIGlzIG1h cmtlZCBhcyBoYXZpbmcgbm8gb3BlbiBmaWxlIHlldCAqLwogCXJlbGF0aW9uLT5yZF9zbWdy ID0gTlVMTDsKQEAgLTE5MDIsNyArMTkwMiw3IEBAIGZvcm1yZGVzYyhjb25zdCBjaGFyICpy ZWxhdGlvbk5hbWUsIE9pZCByZWxhdGlvblJlbHR5cGUsCiAJLyoKIAkgKiBhbGxvY2F0ZSBu ZXcgcmVsYXRpb24gZGVzYywgY2xlYXIgYWxsIGZpZWxkcyBvZiByZWxkZXNjCiAJICovCi0J cmVsYXRpb24gPSAoUmVsYXRpb24pIHBhbGxvYzAoc2l6ZW9mKFJlbGF0aW9uRGF0YSkpOwor CXJlbGF0aW9uID0gcGFsbG9jMF9vYmplY3QoUmVsYXRpb25EYXRhKTsKIAogCS8qIG1ha2Ug c3VyZSByZWxhdGlvbiBpcyBtYXJrZWQgYXMgaGF2aW5nIG5vIG9wZW4gZmlsZSB5ZXQgKi8K IAlyZWxhdGlvbi0+cmRfc21nciA9IE5VTEw7CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBmb3Jt cmRlc2MoY29uc3QgY2hhciAqcmVsYXRpb25OYW1lLCBPaWQgcmVsYXRpb25SZWx0eXBlLAog CS8qIG1hcmsgbm90LW51bGwgc3RhdHVzICovCiAJaWYgKGhhc19ub3RfbnVsbCkKIAl7Ci0J CVR1cGxlQ29uc3RyICpjb25zdHIgPSAoVHVwbGVDb25zdHIgKikgcGFsbG9jMChzaXplb2Yo VHVwbGVDb25zdHIpKTsKKwkJVHVwbGVDb25zdHIgKmNvbnN0ciA9IHBhbGxvYzBfb2JqZWN0 KFR1cGxlQ29uc3RyKTsKIAogCQljb25zdHItPmhhc19ub3RfbnVsbCA9IHRydWU7CiAJCXJl bGF0aW9uLT5yZF9hdHQtPmNvbnN0ciA9IGNvbnN0cjsKQEAgLTM1NzksNyArMzU3OSw3IEBA IFJlbGF0aW9uQnVpbGRMb2NhbFJlbGF0aW9uKGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJLyoK IAkgKiBhbGxvY2F0ZSBhIG5ldyByZWxhdGlvbiBkZXNjcmlwdG9yIGFuZCBmaWxsIGluIGJh c2ljIHN0YXRlIGZpZWxkcy4KIAkgKi8KLQlyZWwgPSAoUmVsYXRpb24pIHBhbGxvYzAoc2l6 ZW9mKFJlbGF0aW9uRGF0YSkpOworCXJlbCA9IHBhbGxvYzBfb2JqZWN0KFJlbGF0aW9uRGF0 YSk7CiAKIAkvKiBtYWtlIHN1cmUgcmVsYXRpb24gaXMgbWFya2VkIGFzIGhhdmluZyBubyBv cGVuIGZpbGUgeWV0ICovCiAJcmVsLT5yZF9zbWdyID0gTlVMTDsKQEAgLTM2MjcsNyArMzYy Nyw3IEBAIFJlbGF0aW9uQnVpbGRMb2NhbFJlbGF0aW9uKGNvbnN0IGNoYXIgKnJlbG5hbWUs CiAKIAlpZiAoaGFzX25vdF9udWxsKQogCXsKLQkJVHVwbGVDb25zdHIgKmNvbnN0ciA9IChU dXBsZUNvbnN0ciAqKSBwYWxsb2MwKHNpemVvZihUdXBsZUNvbnN0cikpOworCQlUdXBsZUNv bnN0ciAqY29uc3RyID0gcGFsbG9jMF9vYmplY3QoVHVwbGVDb25zdHIpOwogCiAJCWNvbnN0 ci0+aGFzX25vdF9udWxsID0gdHJ1ZTsKIAkJcmVsLT5yZF9hdHQtPmNvbnN0ciA9IGNvbnN0 cjsKQEAgLTU2NzAsOSArNTY3MCw5IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxh dGlvbiBpbmRleFJlbGF0aW9uLAogCWluZG5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51 bWJlck9mS2V5QXR0cmlidXRlcyhpbmRleFJlbGF0aW9uKTsKIAogCS8qIEFsbG9jYXRlIHJl c3VsdCBzcGFjZSBpbiBjYWxsZXIgY29udGV4dCAqLwotCSpvcGVyYXRvcnMgPSBvcHMgPSAo T2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIGluZG5rZXlhdHRzKTsKLQkqcHJvY3MgPSBm dW5jcyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogaW5kbmtleWF0dHMpOwotCSpz dHJhdGVnaWVzID0gc3RyYXRzID0gKHVpbnQxNiAqKSBwYWxsb2Moc2l6ZW9mKHVpbnQxNikg KiBpbmRua2V5YXR0cyk7CisJKm9wZXJhdG9ycyA9IG9wcyA9IHBhbGxvY19hcnJheShPaWQs IGluZG5rZXlhdHRzKTsKKwkqcHJvY3MgPSBmdW5jcyA9IHBhbGxvY19hcnJheShPaWQsIGlu ZG5rZXlhdHRzKTsKKwkqc3RyYXRlZ2llcyA9IHN0cmF0cyA9IHBhbGxvY19hcnJheSh1aW50 MTYsIGluZG5rZXlhdHRzKTsKIAogCS8qIFF1aWNrIGV4aXQgaWYgd2UgaGF2ZSB0aGUgZGF0 YSBjYWNoZWQgYWxyZWFkeSAqLwogCWlmIChpbmRleFJlbGF0aW9uLT5yZF9leGNsc3RyYXRz ICE9IE5VTEwpCkBAIC01NzYzLDkgKzU3NjMsOSBAQCBSZWxhdGlvbkdldEV4Y2x1c2lvbklu Zm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAogCS8qIFNhdmUgYSBjb3B5IG9mIHRoZSBy ZXN1bHRzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gKi8KIAlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXhjeHQpOwotCWluZGV4UmVsYXRp b24tPnJkX2V4Y2xvcHMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIGluZG5rZXlh dHRzKTsKLQlpbmRleFJlbGF0aW9uLT5yZF9leGNscHJvY3MgPSAoT2lkICopIHBhbGxvYyhz aXplb2YoT2lkKSAqIGluZG5rZXlhdHRzKTsKLQlpbmRleFJlbGF0aW9uLT5yZF9leGNsc3Ry YXRzID0gKHVpbnQxNiAqKSBwYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBpbmRua2V5YXR0cyk7 CisJaW5kZXhSZWxhdGlvbi0+cmRfZXhjbG9wcyA9IHBhbGxvY19hcnJheShPaWQsIGluZG5r ZXlhdHRzKTsKKwlpbmRleFJlbGF0aW9uLT5yZF9leGNscHJvY3MgPSBwYWxsb2NfYXJyYXko T2lkLCBpbmRua2V5YXR0cyk7CisJaW5kZXhSZWxhdGlvbi0+cmRfZXhjbHN0cmF0cyA9IHBh bGxvY19hcnJheSh1aW50MTYsIGluZG5rZXlhdHRzKTsKIAltZW1jcHkoaW5kZXhSZWxhdGlv bi0+cmRfZXhjbG9wcywgb3BzLCBzaXplb2YoT2lkKSAqIGluZG5rZXlhdHRzKTsKIAltZW1j cHkoaW5kZXhSZWxhdGlvbi0+cmRfZXhjbHByb2NzLCBmdW5jcywgc2l6ZW9mKE9pZCkgKiBp bmRua2V5YXR0cyk7CiAJbWVtY3B5KGluZGV4UmVsYXRpb24tPnJkX2V4Y2xzdHJhdHMsIHN0 cmF0cywgc2l6ZW9mKHVpbnQxNikgKiBpbmRua2V5YXR0cyk7CkBAIC01OTU5LDcgKzU5NTks NyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQ dWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAKIAkvKiBOb3cgc2F2ZSBjb3B5IG9mIHRoZSBk ZXNjcmlwdG9yIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gKi8KIAlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKLQlyZWxhdGlvbi0+cmRfcHVi ZGVzYyA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25EZXNjKSk7CisJcmVsYXRpb24tPnJk X3B1YmRlc2MgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uRGVzYyk7CiAJbWVtY3B5KHJl bGF0aW9uLT5yZF9wdWJkZXNjLCBwdWJkZXNjLCBzaXplb2YoUHVibGljYXRpb25EZXNjKSk7 CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CkBAIC01OTY3LDcgKzU5Njcs NyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQ dWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiBzdGF0aWMgYnl0ZWEgKioKIENvcHlJbmRleEF0 dE9wdGlvbnMoYnl0ZWEgKipzcmNvcHRzLCBpbnQgbmF0dHMpCiB7Ci0JYnl0ZWEJICAqKm9w dHMgPSBwYWxsb2Moc2l6ZW9mKCpvcHRzKSAqIG5hdHRzKTsKKwlieXRlYQkgICoqb3B0cyA9 IHBhbGxvY19hcnJheShieXRlYSAqLCBuYXR0cyk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8 IG5hdHRzOyBpKyspCiAJewpAQCAtNTk5OSw3ICs1OTk5LDcgQEAgUmVsYXRpb25HZXRJbmRl eEF0dE9wdGlvbnMoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgY29weSkKIAkJcmV0dXJuIGNv cHkgPyBDb3B5SW5kZXhBdHRPcHRpb25zKG9wdHMsIG5hdHRzKSA6IG9wdHM7CiAKIAkvKiBH ZXQgYW5kIHBhcnNlIG9wY2xhc3Mgb3B0aW9ucy4gKi8KLQlvcHRzID0gcGFsbG9jMChzaXpl b2YoKm9wdHMpICogbmF0dHMpOworCW9wdHMgPSBwYWxsb2MwX2FycmF5KGJ5dGVhICosIG5h dHRzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCXsKQEAgLTYyOTIsNyAr NjI5Miw3IEBAIGxvYWRfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVkKQogCQkvKiBt YXJrIG5vdC1udWxsIHN0YXR1cyAqLwogCQlpZiAoaGFzX25vdF9udWxsKQogCQl7Ci0JCQlU dXBsZUNvbnN0ciAqY29uc3RyID0gKFR1cGxlQ29uc3RyICopIHBhbGxvYzAoc2l6ZW9mKFR1 cGxlQ29uc3RyKSk7CisJCQlUdXBsZUNvbnN0ciAqY29uc3RyID0gcGFsbG9jMF9vYmplY3Qo VHVwbGVDb25zdHIpOwogCiAJCQljb25zdHItPmhhc19ub3RfbnVsbCA9IHRydWU7CiAJCQly ZWwtPnJkX2F0dC0+Y29uc3RyID0gY29uc3RyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNh Y2hlLmMKaW5kZXggNmEzNDc2OThlZGYuLjBjMTdkOTlkMDIxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3R5cGNhY2hlLmMKQEAgLTI3NjQsNyArMjc2NCw3IEBAIGxvYWRfZW51bV9jYWNo ZV9kYXRhKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUpCiAJICogdGhyb3VnaC4KIAkgKi8KIAlt YXhpdGVtcyA9IDY0OwotCWl0ZW1zID0gKEVudW1JdGVtICopIHBhbGxvYyhzaXplb2YoRW51 bUl0ZW0pICogbWF4aXRlbXMpOworCWl0ZW1zID0gcGFsbG9jX2FycmF5KEVudW1JdGVtLCBt YXhpdGVtcyk7CiAJbnVtaXRlbXMgPSAwOwogCiAJLyogU2NhbiBwZ19lbnVtIGZvciB0aGUg bWVtYmVycyBvZiB0aGUgdGFyZ2V0IGVudW0gdHlwZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vs b2cuYwppbmRleCAyOTY0M2M1MTQzOS4uNGM1YTkyODMyMDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJv ci9lbG9nLmMKQEAgLTE3NzQsNyArMTc3NCw3IEBAIENvcHlFcnJvckRhdGEodm9pZCkKIAlB c3NlcnQoQ3VycmVudE1lbW9yeUNvbnRleHQgIT0gRXJyb3JDb250ZXh0KTsKIAogCS8qIENv cHkgdGhlIHN0cnVjdCBpdHNlbGYgKi8KLQluZXdlZGF0YSA9IChFcnJvckRhdGEgKikgcGFs bG9jKHNpemVvZihFcnJvckRhdGEpKTsKKwluZXdlZGF0YSA9IHBhbGxvY19vYmplY3QoRXJy b3JEYXRhKTsKIAltZW1jcHkobmV3ZWRhdGEsIGVkYXRhLCBzaXplb2YoRXJyb3JEYXRhKSk7 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mdW5jYXBpLmMg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2Z1bmNhcGkuYwppbmRleCA1ZjIzMTcyMTFjOS4u ZjQwODc5ZjA2MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZnVuY2Fw aS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZnVuY2FwaS5jCkBAIC0xNDM2LDcg KzE0MzYsNyBAQCBnZXRfZnVuY19hcmdfaW5mbyhIZWFwVHVwbGUgcHJvY1R1cCwKIAkJCQkJ CQkJICAmZWxlbXMsIE5VTEwsICZuZWxlbXMpOwogCQlpZiAobmVsZW1zICE9IG51bWFyZ3Mp CS8qIHNob3VsZCBub3QgaGFwcGVuICovCiAJCQllbG9nKEVSUk9SLCAicHJvYXJnbmFtZXMg bXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyB0aGUgZnVuY3Rpb24g aGFzIGFyZ3VtZW50cyIpOwotCQkqcF9hcmduYW1lcyA9IChjaGFyICoqKSBwYWxsb2Moc2l6 ZW9mKGNoYXIgKikgKiBudW1hcmdzKTsKKwkJKnBfYXJnbmFtZXMgPSBwYWxsb2NfYXJyYXko Y2hhciAqLCBudW1hcmdzKTsKIAkJZm9yIChpID0gMDsgaSA8IG51bWFyZ3M7IGkrKykKIAkJ CSgqcF9hcmduYW1lcylbaV0gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGVsZW1zW2ldKTsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggOThmOTU5OGNkNzguLjRlZDY5 YWM3YmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC0xMjYwLDcgKzEy NjAsNyBAQCBwcm9jZXNzX3N0YXJ0dXBfb3B0aW9ucyhQb3J0ICpwb3J0LCBib29sIGFtX3N1 cGVydXNlcikKIAogCQltYXhhYyA9IDIgKyAoc3RybGVuKHBvcnQtPmNtZGxpbmVfb3B0aW9u cykgKyAxKSAvIDI7CiAKLQkJYXYgPSAoY2hhciAqKikgcGFsbG9jKG1heGFjICogc2l6ZW9m KGNoYXIgKikpOworCQlhdiA9IHBhbGxvY19hcnJheShjaGFyICosIG1heGFjKTsKIAkJYWMg PSAwOwogCiAJCWF2W2FjKytdID0gInBvc3RncmVzIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21iL21idXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMu YwppbmRleCBmYjYyOWVkNWM4Zi4uMDY3NGU1MWVkZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21iL21idXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0 aWxzLmMKQEAgLTE3OTIsNyArMTc5Miw3IEBAIHBnd2luMzJfbWVzc2FnZV90b19VVEYxNihj b25zdCBjaGFyICpzdHIsIGludCBsZW4sIGludCAqdXRmMTZsZW4pCiAJICovCiAJaWYgKGNv ZGVwYWdlICE9IDApCiAJewotCQl1dGYxNiA9IChXQ0hBUiAqKSBwYWxsb2Moc2l6ZW9mKFdD SEFSKSAqIChsZW4gKyAxKSk7CisJCXV0ZjE2ID0gcGFsbG9jX2FycmF5KFdDSEFSLCBsZW4g KyAxKTsgCiAJCWRzdGxlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZXBhZ2UsIDAsIHN0 ciwgbGVuLCB1dGYxNiwgbGVuKTsKIAkJdXRmMTZbZHN0bGVuXSA9IChXQ0hBUikgMDsKIAl9 CkBAIC0xODE2LDcgKzE4MTYsNyBAQCBwZ3dpbjMyX21lc3NhZ2VfdG9fVVRGMTYoY29uc3Qg Y2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgKnV0ZjE2bGVuKQogCQllbHNlCiAJCQl1dGY4ID0g KGNoYXIgKikgc3RyOwogCi0JCXV0ZjE2ID0gKFdDSEFSICopIHBhbGxvYyhzaXplb2YoV0NI QVIpICogKGxlbiArIDEpKTsKKwkJdXRmMTYgPSBwYWxsb2NfYXJyYXkoV0NIQVIsIGxlbiAr IDEpOwogCQlkc3RsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHV0Zjgs IGxlbiwgdXRmMTYsIGxlbik7CiAJCXV0ZjE2W2RzdGxlbl0gPSAoV0NIQVIpIDA7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvY29uZmZpbGVzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2NvbmZmaWxlcy5jCmluZGV4IDIzZWJhZDQ3NDliLi5lNzAyZDFk OGUzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9jb25mZmlsZXMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2NvbmZmaWxlcy5jCkBAIC0xMDgsNyArMTA4 LDcgQEAgR2V0Q29uZkZpbGVzSW5EaXIoY29uc3QgY2hhciAqaW5jbHVkZWRpciwgY29uc3Qg Y2hhciAqY2FsbGluZ19maWxlLAogCSAqIHRoZW0gcHJpb3IgdG8gY2FsbGVyIHByb2Nlc3Np bmcgdGhlIGNvbnRlbnRzLgogCSAqLwogCXNpemVfZmlsZW5hbWVzID0gMzI7Ci0JZmlsZW5h bWVzID0gKGNoYXIgKiopIHBhbGxvYyhzaXplX2ZpbGVuYW1lcyAqIHNpemVvZihjaGFyICop KTsKKwlmaWxlbmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCBzaXplX2ZpbGVuYW1lcyk7 CiAJKm51bV9maWxlbmFtZXMgPSAwOwogCiAJd2hpbGUgKChkZSA9IFJlYWREaXIoZCwgZGly ZWN0b3J5KSkgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLWZpbGUubCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLWZpbGUubAppbmRleCAx MWExZTJhM2Y5Zi4uYzNkMGY1OTliZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjLWZpbGUubAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy1maWxl LmwKQEAgLTI4Myw3ICsyODMsNyBAQCByZWNvcmRfY29uZmlnX2ZpbGVfZXJyb3IoY29uc3Qg Y2hhciAqZXJybXNnLAogewogCUNvbmZpZ1ZhcmlhYmxlICppdGVtOwogCi0JaXRlbSA9IHBh bGxvYyhzaXplb2YgKml0ZW0pOworCWl0ZW0gPSBwYWxsb2Nfb2JqZWN0KENvbmZpZ1Zhcmlh YmxlKTsKIAlpdGVtLT5uYW1lID0gTlVMTDsKIAlpdGVtLT52YWx1ZSA9IE5VTEw7CiAJaXRl bS0+ZXJybXNnID0gcHN0cmR1cChlcnJtc2cpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIFBhcnNl Q29uZmlnRnAoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmNvbmZpZ19maWxlLCBpbnQgZGVwdGgs IGludCBlbGV2ZWwsCiAJCWVsc2UKIAkJewogCQkJLyogb3JkaW5hcnkgdmFyaWFibGUsIGFw cGVuZCB0byBsaXN0ICovCi0JCQlpdGVtID0gcGFsbG9jKHNpemVvZiAqaXRlbSk7CisJCQlp dGVtID0gcGFsbG9jX29iamVjdChDb25maWdWYXJpYWJsZSk7CiAJCQlpdGVtLT5uYW1lID0g b3B0X25hbWU7CiAJCQlpdGVtLT52YWx1ZSA9IG9wdF92YWx1ZTsKIAkJCWl0ZW0tPmVycm1z ZyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBjNjQ4NGFlYTA4Ny4uZGM1YzMz NTFiOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtODQ0LDcgKzg0NCw3IEBAIGdldF9n dWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiAJaW50CQkJaTsKIAogCSpudW1fdmFycyA9 IGhhc2hfZ2V0X251bV9lbnRyaWVzKGd1Y19oYXNodGFiKTsKLQlyZXN1bHQgPSBwYWxsb2Mo c2l6ZW9mKHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqKSAqICpudW1fdmFycyk7CisJcmVzdWx0 ID0gcGFsbG9jX2FycmF5KHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqLCAqbnVtX3ZhcnMpOwog CiAJLyogRXh0cmFjdCBwb2ludGVycyBmcm9tIHRoZSBoYXNoIHRhYmxlICovCiAJaSA9IDA7 CkBAIC01MjA4LDcgKzUyMDgsNyBAQCBnZXRfZXhwbGFpbl9ndWNfb3B0aW9ucyhpbnQgKm51 bSkKIAkgKiBXaGlsZSBvbmx5IGEgZnJhY3Rpb24gb2YgYWxsIHRoZSBHVUMgdmFyaWFibGVz IGFyZSBtYXJrZWQgR1VDX0VYUExBSU4sCiAJICogaXQgZG9lc24ndCBzZWVtIHdvcnRoIGR5 bmFtaWNhbGx5IHJlc2l6aW5nIHRoaXMgYXJyYXkuCiAJICovCi0JcmVzdWx0ID0gcGFsbG9j KHNpemVvZihzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKikgKiBoYXNoX2dldF9udW1fZW50cmll cyhndWNfaGFzaHRhYikpOworCXJlc3VsdCA9IHBhbGxvY19hcnJheShzdHJ1Y3QgY29uZmln X2dlbmVyaWMgKiwgaGFzaF9nZXRfbnVtX2VudHJpZXMoZ3VjX2hhc2h0YWIpKTsKIAogCS8q IFdlIG5lZWQgb25seSBjb25zaWRlciBHVUNzIHdpdGggc291cmNlIG5vdCBQR0NfU19ERUZB VUxUICovCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmZ3VjX25vbmRlZl9saXN0KQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKaW5kZXggZDAyNjE4YzdmZmUu LjU0YTlmZThlMTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVj dGlvbl9wb2ludC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3Bv aW50LmMKQEAgLTYxNCw3ICs2MTQsNyBAQCBJbmplY3Rpb25Qb2ludExpc3Qodm9pZCkKIAkJ aWYgKGdlbmVyYXRpb24gJSAyID09IDApCiAJCQljb250aW51ZTsKIAotCQlpbmpfcG9pbnQg PSAoSW5qZWN0aW9uUG9pbnREYXRhICopIHBhbGxvYzAoc2l6ZW9mKEluamVjdGlvblBvaW50 RGF0YSkpOworCQlpbmpfcG9pbnQgPSBwYWxsb2MwX29iamVjdChJbmplY3Rpb25Qb2ludERh dGEpOwogCQlpbmpfcG9pbnQtPm5hbWUgPSBwc3RyZHVwKGVudHJ5LT5uYW1lKTsKIAkJaW5q X3BvaW50LT5saWJyYXJ5ID0gcHN0cmR1cChlbnRyeS0+bGlicmFyeSk7CiAJCWlual9wb2lu dC0+ZnVuY3Rpb24gPSBwc3RyZHVwKGVudHJ5LT5mdW5jdGlvbik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5ZW52aXJvbm1lbnQuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcXVlcnllbnZpcm9ubWVudC5jCmluZGV4IDdiYzcyZGFiZTY3Li4wNjk4 MzA5MDAzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWVudmly b25tZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWVudmlyb25tZW50 LmMKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFF1ZXJ5RW52aXJvbm1lbnQKIFF1ZXJ5RW52 aXJvbm1lbnQgKgogY3JlYXRlX3F1ZXJ5RW52KHZvaWQpCiB7Ci0JcmV0dXJuIChRdWVyeUVu dmlyb25tZW50ICopIHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5RW52aXJvbm1lbnQpKTsKKwlyZXR1 cm4gcGFsbG9jMF9vYmplY3QoUXVlcnlFbnZpcm9ubWVudCk7CiB9CiAKIEVwaGVtZXJhbE5h bWVkUmVsYXRpb25NZXRhZGF0YQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy90enBhcnNlci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90enBhcnNlci5jCmluZGV4 IDZhYWY3Mzk1YmE4Li5kN2U4NGJhYjk4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy90enBhcnNlci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdHpwYXJz ZXIuYwpAQCAtNDY2LDcgKzQ2Niw3IEBAIGxvYWRfdHpvZmZzZXRzKGNvbnN0IGNoYXIgKmZp bGVuYW1lKQogCiAJLyogSW5pdGlhbGl6ZSBhcnJheSBhdCBhIHJlYXNvbmFibGUgc2l6ZSAq LwogCWFycmF5c2l6ZSA9IDEyODsKLQlhcnJheSA9ICh0ekVudHJ5ICopIHBhbGxvYyhhcnJh eXNpemUgKiBzaXplb2YodHpFbnRyeSkpOworCWFycmF5ID0gcGFsbG9jX2FycmF5KHR6RW50 cnksIGFycmF5c2l6ZSk7CiAKIAkvKiBQYXJzZSB0aGUgZmlsZShzKSAqLwogCW4gPSBQYXJz ZVR6RmlsZShmaWxlbmFtZSwgMCwgJmFycmF5LCAmYXJyYXlzaXplLCAwKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZHNhLmMgYi9zcmMvYmFja2VuZC91dGlscy9t bWdyL2RzYS5jCmluZGV4IDRiNmJjZmZlYTI4Li42YjM3ODM5ZTkyNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9kc2EuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t bWdyL2RzYS5jCkBAIC0xMzMwLDcgKzEzMzAsNyBAQCBjcmVhdGVfaW50ZXJuYWwodm9pZCAq cGxhY2UsIHNpemVfdCBzaXplLAogCSAqIGFyZWEuICBPdGhlciBiYWNrZW5kcyB3aWxsIG5l ZWQgdG8gb2J0YWluIHRoZWlyIG93biBkc2FfYXJlYSBvYmplY3QgYnkKIAkgKiBhdHRhY2hp bmcuCiAJICovCi0JYXJlYSA9IHBhbGxvYyhzaXplb2YoZHNhX2FyZWEpKTsKKwlhcmVhID0g cGFsbG9jX29iamVjdChkc2FfYXJlYSk7CiAJYXJlYS0+Y29udHJvbCA9IGNvbnRyb2w7CiAJ YXJlYS0+cmVzb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKIAltZW1zZXQoYXJlYS0+ c2VnbWVudF9tYXBzLCAwLCBzaXplb2YoZHNhX3NlZ21lbnRfbWFwKSAqIERTQV9NQVhfU0VH TUVOVFMpOwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgYXR0YWNoX2ludGVybmFsKHZvaWQgKnBs YWNlLCBkc21fc2VnbWVudCAqc2VnbWVudCwgZHNhX2hhbmRsZSBoYW5kbGUpCiAJCSAgIChE U0FfU0VHTUVOVF9IRUFERVJfTUFHSUMgXiBoYW5kbGUgXiAwKSk7CiAKIAkvKiBCdWlsZCB0 aGUgYmFja2VuZC1sb2NhbCBhcmVhIG9iamVjdC4gKi8KLQlhcmVhID0gcGFsbG9jKHNpemVv Zihkc2FfYXJlYSkpOworCWFyZWEgPSBwYWxsb2Nfb2JqZWN0KGRzYV9hcmVhKTsKIAlhcmVh LT5jb250cm9sID0gY29udHJvbDsKIAlhcmVhLT5yZXNvd25lciA9IEN1cnJlbnRSZXNvdXJj ZU93bmVyOwogCW1lbXNldCgmYXJlYS0+c2VnbWVudF9tYXBzWzBdLCAwLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9sb2d0YXBlLmMgYi9zcmMvYmFja2VuZC91dGls cy9zb3J0L2xvZ3RhcGUuYwppbmRleCA0NTJkODlhOGMwZi4uNDJiZjUwMjIxYjggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jCkBAIC00MzcsNyArNDM3LDcgQEAgbHRzR2V0UHJl YWxsb2NCbG9jayhMb2dpY2FsVGFwZVNldCAqbHRzLCBMb2dpY2FsVGFwZSAqbHQpCiAJaWYg KGx0LT5wcmVhbGxvYyA9PSBOVUxMKQogCXsKIAkJbHQtPnByZWFsbG9jX3NpemUgPSBUQVBF X1dSSVRFX1BSRUFMTE9DX01JTjsKLQkJbHQtPnByZWFsbG9jID0gKGludDY0ICopIHBhbGxv YyhzaXplb2YoaW50NjQpICogbHQtPnByZWFsbG9jX3NpemUpOworCQlsdC0+cHJlYWxsb2Mg PSBwYWxsb2NfYXJyYXkoaW50NjQsIGx0LT5wcmVhbGxvY19zaXplKTsKIAl9CiAJZWxzZSBp ZiAobHQtPnByZWFsbG9jX3NpemUgPCBUQVBFX1dSSVRFX1BSRUFMTE9DX01BWCkKIAl7CkBA IC01NjAsNyArNTYwLDcgQEAgTG9naWNhbFRhcGVTZXRDcmVhdGUoYm9vbCBwcmVhbGxvY2F0 ZSwgU2hhcmVkRmlsZVNldCAqZmlsZXNldCwgaW50IHdvcmtlcikKIAkvKgogCSAqIENyZWF0 ZSB0b3AtbGV2ZWwgc3RydWN0IGluY2x1ZGluZyBwZXItdGFwZSBMb2dpY2FsVGFwZSBzdHJ1 Y3RzLgogCSAqLwotCWx0cyA9IChMb2dpY2FsVGFwZVNldCAqKSBwYWxsb2Moc2l6ZW9mKExv Z2ljYWxUYXBlU2V0KSk7CisJbHRzID0gcGFsbG9jX29iamVjdChMb2dpY2FsVGFwZVNldCk7 CiAJbHRzLT5uQmxvY2tzQWxsb2NhdGVkID0gMEw7CiAJbHRzLT5uQmxvY2tzV3JpdHRlbiA9 IDBMOwogCWx0cy0+bkhvbGVCbG9ja3MgPSAwTDsKQEAgLTcwMCw3ICs3MDAsNyBAQCBsdHND cmVhdGVUYXBlKExvZ2ljYWxUYXBlU2V0ICpsdHMpCiAJLyoKIAkgKiBDcmVhdGUgcGVyLXRh cGUgc3RydWN0LiAgTm90ZSB3ZSBhbGxvY2F0ZSB0aGUgSS9PIGJ1ZmZlciBsYXppbHkuCiAJ ICovCi0JbHQgPSBwYWxsb2Moc2l6ZW9mKExvZ2ljYWxUYXBlKSk7CisJbHQgPSBwYWxsb2Nf b2JqZWN0KExvZ2ljYWxUYXBlKTsKIAlsdC0+dGFwZVNldCA9IGx0czsKIAlsdC0+d3JpdGlu ZyA9IHRydWU7CiAJbHQtPmZyb3plbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC9zaGFyZWR0dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9z b3J0L3NoYXJlZHR1cGxlc3RvcmUuYwppbmRleCAxZGVkYmFhMjljZi4uZTc3ZDg1N2ZmM2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvc2hhcmVkdHVwbGVzdG9yZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvc2hhcmVkdHVwbGVzdG9yZS5jCkBAIC0x NjAsNyArMTYwLDcgQEAgc3RzX2luaXRpYWxpemUoU2hhcmVkVHVwbGVzdG9yZSAqc3RzLCBp bnQgcGFydGljaXBhbnRzLAogCQlzdHMtPnBhcnRpY2lwYW50c1tpXS53cml0aW5nID0gZmFs c2U7CiAJfQogCi0JYWNjZXNzb3IgPSBwYWxsb2MwKHNpemVvZihTaGFyZWRUdXBsZXN0b3Jl QWNjZXNzb3IpKTsKKwlhY2Nlc3NvciA9IHBhbGxvYzBfb2JqZWN0KFNoYXJlZFR1cGxlc3Rv cmVBY2Nlc3Nvcik7CiAJYWNjZXNzb3ItPnBhcnRpY2lwYW50ID0gbXlfcGFydGljaXBhbnRf bnVtYmVyOwogCWFjY2Vzc29yLT5zdHMgPSBzdHM7CiAJYWNjZXNzb3ItPmZpbGVzZXQgPSBm aWxlc2V0OwpAQCAtMTgyLDcgKzE4Miw3IEBAIHN0c19hdHRhY2goU2hhcmVkVHVwbGVzdG9y ZSAqc3RzLAogCiAJQXNzZXJ0KG15X3BhcnRpY2lwYW50X251bWJlciA8IHN0cy0+bnBhcnRp Y2lwYW50cyk7CiAKLQlhY2Nlc3NvciA9IHBhbGxvYzAoc2l6ZW9mKFNoYXJlZFR1cGxlc3Rv cmVBY2Nlc3NvcikpOworCWFjY2Vzc29yID0gcGFsbG9jMF9vYmplY3QoU2hhcmVkVHVwbGVz dG9yZUFjY2Vzc29yKTsKIAlhY2Nlc3Nvci0+cGFydGljaXBhbnQgPSBteV9wYXJ0aWNpcGFu dF9udW1iZXI7CiAJYWNjZXNzb3ItPnN0cyA9IHN0czsKIAlhY2Nlc3Nvci0+ZmlsZXNldCA9 IGZpbGVzZXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwppbmRleCA1ZDQ0MTFk YzMzZi4uYzFmYTdhOTc1MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQv dHVwbGVzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwpA QCAtNjczLDcgKzY3Myw3IEBAIHR1cGxlc29ydF9iZWdpbl9jb21tb24oaW50IHdvcmtNZW0s IFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGludCBzb3J0b3B0KQogCSAqLwogCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWFpbmNvbnRleHQpOwogCi0Jc3RhdGUg PSAoVHVwbGVzb3J0c3RhdGUgKikgcGFsbG9jMChzaXplb2YoVHVwbGVzb3J0c3RhdGUpKTsK KwlzdGF0ZSA9IHBhbGxvYzBfb2JqZWN0KFR1cGxlc29ydHN0YXRlKTsKIAogCWlmICh0cmFj ZV9zb3J0KQogCQlwZ19ydXNhZ2VfaW5pdCgmc3RhdGUtPnJ1X3N0YXJ0KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCA5NzUxYTdmYzQ5 NS4uMDc5YTUxYzQ3NGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMKQEAgLTI2NSw3ICsyNjUsNyBAQCB0dXBsZXNvcnRfYmVnaW5fY2x1c3Rl cihUdXBsZURlc2MgdHVwRGVzYywKIAlBc3NlcnQoaW5kZXhSZWwtPnJkX3JlbC0+cmVsYW0g PT0gQlRSRUVfQU1fT0lEKTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oYmFzZS0+bWFpbmNvbnRleHQpOwotCWFyZyA9IChUdXBsZXNvcnRDbHVzdGVyQXJnICop IHBhbGxvYzAoc2l6ZW9mKFR1cGxlc29ydENsdXN0ZXJBcmcpKTsKKwlhcmcgPSBwYWxsb2Mw X29iamVjdChUdXBsZXNvcnRDbHVzdGVyQXJnKTsKIAogCWlmICh0cmFjZV9zb3J0KQogCQll bG9nKExPRywKQEAgLTM3Miw3ICszNzIsNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRy ZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlpbnQJCQlpOwogCiAJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhiYXNlLT5tYWluY29udGV4dCk7Ci0JYXJnID0gKFR1cGxlc29y dEluZGV4QlRyZWVBcmcgKikgcGFsbG9jKHNpemVvZihUdXBsZXNvcnRJbmRleEJUcmVlQXJn KSk7CisJYXJnID0gcGFsbG9jX29iamVjdChUdXBsZXNvcnRJbmRleEJUcmVlQXJnKTsKIAog CWlmICh0cmFjZV9zb3J0KQogCQllbG9nKExPRywKQEAgLTQ1Myw3ICs0NTMsNyBAQCB0dXBs ZXNvcnRfYmVnaW5faW5kZXhfaGFzaChSZWxhdGlvbiBoZWFwUmVsLAogCVR1cGxlc29ydElu ZGV4SGFzaEFyZyAqYXJnOwogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhiYXNlLT5tYWluY29udGV4dCk7Ci0JYXJnID0gKFR1cGxlc29ydEluZGV4SGFzaEFyZyAq KSBwYWxsb2Moc2l6ZW9mKFR1cGxlc29ydEluZGV4SGFzaEFyZykpOworCWFyZyA9IHBhbGxv Y19vYmplY3QoVHVwbGVzb3J0SW5kZXhIYXNoQXJnKTsKIAogCWlmICh0cmFjZV9zb3J0KQog CQllbG9nKExPRywKQEAgLTUwMiw3ICs1MDIsNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhf Z2lzdChSZWxhdGlvbiBoZWFwUmVsLAogCWludAkJCWk7CiAKIAlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGJhc2UtPm1haW5jb250ZXh0KTsKLQlhcmcgPSAoVHVwbGVz b3J0SW5kZXhCVHJlZUFyZyAqKSBwYWxsb2Moc2l6ZW9mKFR1cGxlc29ydEluZGV4QlRyZWVB cmcpKTsKKwlhcmcgPSBwYWxsb2Nfb2JqZWN0KFR1cGxlc29ydEluZGV4QlRyZWVBcmcpOwog CiAJaWYgKHRyYWNlX3NvcnQpCiAJCWVsb2coTE9HLApAQCAtNjYyLDcgKzY2Miw3IEBAIHR1 cGxlc29ydF9iZWdpbl9kYXR1bShPaWQgZGF0dW1UeXBlLCBPaWQgc29ydE9wZXJhdG9yLCBP aWQgc29ydENvbGxhdGlvbiwKIAlib29sCQl0eXBieXZhbDsKIAogCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oYmFzZS0+bWFpbmNvbnRleHQpOwotCWFyZyA9IChUdXBs ZXNvcnREYXR1bUFyZyAqKSBwYWxsb2Moc2l6ZW9mKFR1cGxlc29ydERhdHVtQXJnKSk7CisJ YXJnID0gcGFsbG9jX29iamVjdChUdXBsZXNvcnREYXR1bUFyZyk7CiAKIAlpZiAodHJhY2Vf c29ydCkKIAkJZWxvZyhMT0csCkBAIC02OTQsNyArNjk0LDcgQEAgdHVwbGVzb3J0X2JlZ2lu X2RhdHVtKE9pZCBkYXR1bVR5cGUsIE9pZCBzb3J0T3BlcmF0b3IsIE9pZCBzb3J0Q29sbGF0 aW9uLAogCWJhc2UtPnR1cGxlcyA9ICF0eXBieXZhbDsKIAogCS8qIFByZXBhcmUgU29ydFN1 cHBvcnQgZGF0YSAqLwotCWJhc2UtPnNvcnRLZXlzID0gKFNvcnRTdXBwb3J0KSBwYWxsb2Mw KHNpemVvZihTb3J0U3VwcG9ydERhdGEpKTsKKwliYXNlLT5zb3J0S2V5cyA9IHBhbGxvYzBf b2JqZWN0KFNvcnRTdXBwb3J0RGF0YSk7CiAKIAliYXNlLT5zb3J0S2V5cy0+c3N1cF9jeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAliYXNlLT5zb3J0S2V5cy0+c3N1cF9jb2xsYXRp b24gPSBzb3J0Q29sbGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYwpp bmRleCBjOWFlY2FiOGQ2Ni4uZGVmOTQ1YjA0NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQv dHVwbGVzdG9yZS5jCkBAIC0yNTcsNyArMjU3LDcgQEAgdHVwbGVzdG9yZV9iZWdpbl9jb21t b24oaW50IGVmbGFncywgYm9vbCBpbnRlclhhY3QsIGludCBtYXhLQnl0ZXMpCiB7CiAJVHVw bGVzdG9yZXN0YXRlICpzdGF0ZTsKIAotCXN0YXRlID0gKFR1cGxlc3RvcmVzdGF0ZSAqKSBw YWxsb2MwKHNpemVvZihUdXBsZXN0b3Jlc3RhdGUpKTsKKwlzdGF0ZSA9IHBhbGxvYzBfb2Jq ZWN0KFR1cGxlc3RvcmVzdGF0ZSk7CiAKIAlzdGF0ZS0+c3RhdHVzID0gVFNTX0lOTUVNOwog CXN0YXRlLT5lZmxhZ3MgPSBlZmxhZ3M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmlu ZGV4IDI0ZjczYTQ5ZDI3Li40MGEyZTkwZTA3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMKQEAgLTExNzksNyArMTE3OSw3IEBAIEV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNu YXBzaG90KQogCXNuYXBzaG90ID0gQ29weVNuYXBzaG90KHNuYXBzaG90KTsKIAogCW9sZGN4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwotCWVz bmFwID0gKEV4cG9ydGVkU25hcHNob3QgKikgcGFsbG9jKHNpemVvZihFeHBvcnRlZFNuYXBz aG90KSk7CisJZXNuYXAgPSBwYWxsb2Nfb2JqZWN0KEV4cG9ydGVkU25hcHNob3QpOwogCWVz bmFwLT5zbmFwZmlsZSA9IHBzdHJkdXAocGF0aCk7CiAJZXNuYXAtPnNuYXBzaG90ID0gc25h cHNob3Q7CiAJZXhwb3J0ZWRTbmFwc2hvdHMgPSBsYXBwZW5kKGV4cG9ydGVkU25hcHNob3Rz LCBlc25hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvYXN0cmVhbWVy X2luamVjdC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL2FzdHJlYW1lcl9pbmplY3QuYwpp bmRleCAxNTMzNGU0NThhZC4uZTc3ZGU3MmY3YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9hc3RyZWFtZXJfaW5qZWN0LmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL2FzdHJlYW1lcl9pbmplY3QuYwpAQCAtNjgsNyArNjgsNyBAQCBhc3RyZWFtZXJfcmVj b3ZlcnlfaW5qZWN0b3JfbmV3KGFzdHJlYW1lciAqbmV4dCwKIHsKIAlhc3RyZWFtZXJfcmVj b3ZlcnlfaW5qZWN0b3IgKnN0cmVhbWVyOwogCi0Jc3RyZWFtZXIgPSBwYWxsb2MwKHNpemVv Zihhc3RyZWFtZXJfcmVjb3ZlcnlfaW5qZWN0b3IpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBf b2JqZWN0KGFzdHJlYW1lcl9yZWNvdmVyeV9pbmplY3Rvcik7CiAJKigoY29uc3QgYXN0cmVh bWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0KIAkJJmFzdHJlYW1lcl9y ZWNvdmVyeV9pbmplY3Rvcl9vcHM7CiAJc3RyZWFtZXItPmJhc2UuYmJzX25leHQgPSBuZXh0 OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jb21iaW5lYmFja3VwL2xvYWRfbWFuaWZlc3Qu YyBiL3NyYy9iaW4vcGdfY29tYmluZWJhY2t1cC9sb2FkX21hbmlmZXN0LmMKaW5kZXggOGUw ZDA0YTI2YTYuLjQ0ZGIwZDJiMTY0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2NvbWJpbmVi YWNrdXAvbG9hZF9tYW5pZmVzdC5jCisrKyBiL3NyYy9iaW4vcGdfY29tYmluZWJhY2t1cC9s b2FkX21hbmlmZXN0LmMKQEAgLTI5OCw3ICsyOTgsNyBAQCBjb21iaW5lYmFja3VwX3Blcl93 YWxfcmFuZ2VfY2IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpjb250ZXh0LAogCW1hbmlm ZXN0X3dhbF9yYW5nZSAqcmFuZ2U7CiAKIAkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBh IHN0cnVjdCBkZXNjcmliaW5nIHRoaXMgV0FMIHJhbmdlLiAqLwotCXJhbmdlID0gcGFsbG9j KHNpemVvZihtYW5pZmVzdF93YWxfcmFuZ2UpKTsKKwlyYW5nZSA9IHBhbGxvY19vYmplY3Qo bWFuaWZlc3Rfd2FsX3JhbmdlKTsKIAlyYW5nZS0+dGxpID0gdGxpOwogCXJhbmdlLT5zdGFy dF9sc24gPSBzdGFydF9sc247CiAJcmFuZ2UtPmVuZF9sc24gPSBlbmRfbHNuOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1v bi5jCmluZGV4IDRlNzMwM2VhNjMxLi4wMDA3ZTc4NjY3ZiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAt MzUzLDcgKzM1Myw3IEBAIGZsYWdJbmhUYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv ICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzLAogCQkJCQkJIHRibGluZm9baV0ubnVtUGFyZW50 cywKIAkJCQkJCSB0YmxpbmZvW2ldLmRvYmoubmFtZSk7CiAKLQkJCWF0dGFjaGluZm8gPSAo VGFibGVBdHRhY2hJbmZvICopIHBhbGxvYyhzaXplb2YoVGFibGVBdHRhY2hJbmZvKSk7CisJ CQlhdHRhY2hpbmZvID0gcGFsbG9jX29iamVjdChUYWJsZUF0dGFjaEluZm8pOwogCQkJYXR0 YWNoaW5mby0+ZG9iai5vYmpUeXBlID0gRE9fVEFCTEVfQVRUQUNIOwogCQkJYXR0YWNoaW5m by0+ZG9iai5jYXRJZC50YWJsZW9pZCA9IDA7CiAJCQlhdHRhY2hpbmZvLT5kb2JqLmNhdElk Lm9pZCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMgYi9z cmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMKaW5kZXggMmQyMjcyM2FhOTEuLjdmZjlkYmQx YTMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jCkBAIC05NzIsNyArOTcyLDcgQEAgY2hhciAqCiBn ZW5lcmF0ZV9yZXN0cmljdF9rZXkodm9pZCkKIHsKIAl1aW50OAkJYnVmWzY0XTsKLQljaGFy CSAgICpyZXQgPSBwYWxsb2Moc2l6ZW9mKGJ1ZikpOworCWNoYXIJICAgKnJldCA9IHBhbGxv Y19hcnJheShjaGFyLCBzaXplb2YoYnVmKSk7CiAKIAlpZiAoIXBnX3N0cm9uZ19yYW5kb20o YnVmLCBzaXplb2YoYnVmKSkpCiAJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvYXN0cmVhbWVyX3ZlcmlmeS5jIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvYXN0cmVhbWVyX3ZlcmlmeS5jCmluZGV4IDMzY2Y2NzY3MGE3Li5lNTAzYTNl YzQ4NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvYXN0cmVhbWVyX3Zl cmlmeS5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL2FzdHJlYW1lcl92ZXJpZnku YwpAQCAtNjksNyArNjksNyBAQCBhc3RyZWFtZXJfdmVyaWZ5X2NvbnRlbnRfbmV3KGFzdHJl YW1lciAqbmV4dCwgdmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwKIHsKIAlhc3RyZWFtZXJf dmVyaWZ5ICpzdHJlYW1lcjsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVh bWVyX3ZlcmlmeSkpOworCXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX3Zl cmlmeSk7CiAJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJi c19vcHMpID0KIAkJJmFzdHJlYW1lcl92ZXJpZnlfb3BzOwogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCmluZGV4IDhkNWJlZmE5NDdmLi5jOWIyNGRm N2MwNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFj a3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMK QEAgLTU4NCw3ICs1ODQsNyBAQCB2ZXJpZnliYWNrdXBfcGVyX3dhbF9yYW5nZV9jYihKc29u TWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQsCiAJbWFuaWZlc3Rfd2FsX3JhbmdlICpy YW5nZTsKIAogCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgc3RydWN0IGRlc2NyaWJp bmcgdGhpcyBXQUwgcmFuZ2UuICovCi0JcmFuZ2UgPSBwYWxsb2Moc2l6ZW9mKG1hbmlmZXN0 X3dhbF9yYW5nZSkpOworCXJhbmdlID0gcGFsbG9jX29iamVjdChtYW5pZmVzdF93YWxfcmFu Z2UpOwogCXJhbmdlLT50bGkgPSB0bGk7CiAJcmFuZ2UtPnN0YXJ0X2xzbiA9IHN0YXJ0X2xz bjsKIAlyYW5nZS0+ZW5kX2xzbiA9IGVuZF9sc247CmRpZmYgLS1naXQgYS9zcmMvYmluL3Nj cmlwdHMvdmFjdXVtaW5nLmMgYi9zcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMKaW5kZXgg ZjgzNmYyMWZiMDMuLjlmNDRjYWUwMmFlIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMv dmFjdXVtaW5nLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jCkBAIC01MzAs NyArNTMwLDcgQEAgcmV0cmlldmVfb2JqZWN0cyhQR2Nvbm4gKmNvbm4sIHZhY3V1bWluZ09w dGlvbnMgKnZhY29wdHMsCiAJUFFFeHBCdWZmZXJEYXRhIGNhdGFsb2dfcXVlcnk7CiAJUEdy ZXN1bHQgICAqcmVzOwogCVNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsOwotCVNpbXBsZVN0 cmluZ0xpc3QgKmZvdW5kX29ianMgPSBwYWxsb2MwKHNpemVvZihTaW1wbGVTdHJpbmdMaXN0 KSk7CisJU2ltcGxlU3RyaW5nTGlzdCAqZm91bmRfb2JqcyA9IHBhbGxvYzBfb2JqZWN0KFNp bXBsZVN0cmluZ0xpc3QpOwogCWJvb2wJCW9iamVjdHNfbGlzdGVkID0gZmFsc2U7CiAKIAlp bml0UFFFeHBCdWZmZXIoJmNhdGFsb2dfcXVlcnkpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1v bi9ibGtyZWZ0YWJsZS5jIGIvc3JjL2NvbW1vbi9ibGtyZWZ0YWJsZS5jCmluZGV4IGI5MzVi YWY5YWQ0Li4yOWQ2NGE1OGJhZCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9ibGtyZWZ0YWJs ZS5jCisrKyBiL3NyYy9jb21tb24vYmxrcmVmdGFibGUuYwpAQCAtMjM0LDcgKzIzNCw3IEBA IHN0YXRpYyB2b2lkIEJsb2NrUmVmVGFibGVGaWxlVGVybWluYXRlKEJsb2NrUmVmVGFibGVC dWZmZXIgKmJ1ZmZlcik7CiBCbG9ja1JlZlRhYmxlICoKIENyZWF0ZUVtcHR5QmxvY2tSZWZU YWJsZSh2b2lkKQogewotCUJsb2NrUmVmVGFibGUgKmJydGFiID0gcGFsbG9jKHNpemVvZihC bG9ja1JlZlRhYmxlKSk7CisJQmxvY2tSZWZUYWJsZSAqYnJ0YWIgPSBwYWxsb2Nfb2JqZWN0 KEJsb2NrUmVmVGFibGUpOwogCiAJLyoKIAkgKiBFdmVuIGNvbXBsZXRlbHkgZW1wdHkgZGF0 YWJhc2UgaGFzIGEgZmV3IGh1bmRyZWQgcmVsYXRpb24gZm9ya3MsIHNvIGl0CkBAIC00OTcs NyArNDk3LDcgQEAgV3JpdGVCbG9ja1JlZlRhYmxlKEJsb2NrUmVmVGFibGUgKmJydGFiLAog CiAJCS8qIEV4dHJhY3QgZW50cmllcyBpbnRvIHNlcmlhbGl6YWJsZSBmb3JtYXQgYW5kIHNv cnQgdGhlbS4gKi8KIAkJc2RhdGEgPQotCQkJcGFsbG9jKGJydGFiLT5oYXNoLT5tZW1iZXJz ICogc2l6ZW9mKEJsb2NrUmVmVGFibGVTZXJpYWxpemVkRW50cnkpKTsKKwkJCXBhbGxvY19h cnJheShCbG9ja1JlZlRhYmxlU2VyaWFsaXplZEVudHJ5LCBicnRhYi0+aGFzaC0+bWVtYmVy cyk7CiAJCWJsb2NrcmVmdGFibGVfc3RhcnRfaXRlcmF0ZShicnRhYi0+aGFzaCwgJml0KTsK IAkJd2hpbGUgKChicnRlbnRyeSA9IGJsb2NrcmVmdGFibGVfaXRlcmF0ZShicnRhYi0+aGFz aCwgJml0KSkgIT0gTlVMTCkKIAkJewpAQCAtNTg0LDcgKzU4NCw3IEBAIENyZWF0ZUJsb2Nr UmVmVGFibGVSZWFkZXIoaW9fY2FsbGJhY2tfZm4gcmVhZF9jYWxsYmFjaywKIAl1aW50MzIJ CW1hZ2ljOwogCiAJLyogSW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZS4gKi8KLQlyZWFkZXIg PSBwYWxsb2MwKHNpemVvZihCbG9ja1JlZlRhYmxlUmVhZGVyKSk7CisJcmVhZGVyID0gcGFs bG9jMF9vYmplY3QoQmxvY2tSZWZUYWJsZVJlYWRlcik7CiAJcmVhZGVyLT5idWZmZXIuaW9f Y2FsbGJhY2sgPSByZWFkX2NhbGxiYWNrOwogCXJlYWRlci0+YnVmZmVyLmlvX2NhbGxiYWNr X2FyZyA9IHJlYWRfY2FsbGJhY2tfYXJnOwogCXJlYWRlci0+ZXJyb3JfZmlsZW5hbWUgPSBl cnJvcl9maWxlbmFtZTsKQEAgLTY2MCw3ICs2NjAsNyBAQCBCbG9ja1JlZlRhYmxlUmVhZGVy TmV4dFJlbGF0aW9uKEJsb2NrUmVmVGFibGVSZWFkZXIgKnJlYWRlciwKIAkvKiBSZWFkIGNo dW5rIHNpemUgYXJyYXkuICovCiAJaWYgKHJlYWRlci0+Y2h1bmtfc2l6ZSAhPSBOVUxMKQog CQlwZnJlZShyZWFkZXItPmNodW5rX3NpemUpOwotCXJlYWRlci0+Y2h1bmtfc2l6ZSA9IHBh bGxvYyhzZW50cnkubmNodW5rcyAqIHNpemVvZih1aW50MTYpKTsKKwlyZWFkZXItPmNodW5r X3NpemUgPSBwYWxsb2NfYXJyYXkodWludDE2LCBzZW50cnkubmNodW5rcyk7CiAJQmxvY2tS ZWZUYWJsZVJlYWQocmVhZGVyLCByZWFkZXItPmNodW5rX3NpemUsCiAJCQkJCSAgc2VudHJ5 Lm5jaHVua3MgKiBzaXplb2YodWludDE2KSk7CiAKQEAgLTc5NCw3ICs3OTQsNyBAQCBDcmVh dGVCbG9ja1JlZlRhYmxlV3JpdGVyKGlvX2NhbGxiYWNrX2ZuIHdyaXRlX2NhbGxiYWNrLAog CXVpbnQzMgkJbWFnaWMgPSBCTE9DS1JFRlRBQkxFX01BR0lDOwogCiAJLyogUHJlcGFyZSBi dWZmZXIgYW5kIENSQyBjaGVjayBhbmQgc2F2ZSBjYWxsYmFja3MuICovCi0Jd3JpdGVyID0g cGFsbG9jMChzaXplb2YoQmxvY2tSZWZUYWJsZVdyaXRlcikpOworCXdyaXRlciA9IHBhbGxv YzBfb2JqZWN0KEJsb2NrUmVmVGFibGVXcml0ZXIpOwogCXdyaXRlci0+YnVmZmVyLmlvX2Nh bGxiYWNrID0gd3JpdGVfY2FsbGJhY2s7CiAJd3JpdGVyLT5idWZmZXIuaW9fY2FsbGJhY2tf YXJnID0gd3JpdGVfY2FsbGJhY2tfYXJnOwogCUlOSVRfQ1JDMzJDKHdyaXRlci0+YnVmZmVy LmNyYyk7CkBAIC04NzQsNyArODc0LDcgQEAgRGVzdHJveUJsb2NrUmVmVGFibGVXcml0ZXIo QmxvY2tSZWZUYWJsZVdyaXRlciAqd3JpdGVyKQogQmxvY2tSZWZUYWJsZUVudHJ5ICoKIENy ZWF0ZUJsb2NrUmVmVGFibGVFbnRyeShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051 bWJlciBmb3JrbnVtKQogewotCUJsb2NrUmVmVGFibGVFbnRyeSAqZW50cnkgPSBwYWxsb2Mw KHNpemVvZihCbG9ja1JlZlRhYmxlRW50cnkpKTsKKwlCbG9ja1JlZlRhYmxlRW50cnkgKmVu dHJ5ID0gcGFsbG9jMF9vYmplY3QoQmxvY2tSZWZUYWJsZUVudHJ5KTsKIAogCW1lbWNweSgm ZW50cnktPmtleS5ybG9jYXRvciwgJnJsb2NhdG9yLCBzaXplb2YoUmVsRmlsZUxvY2F0b3Ip KTsKIAllbnRyeS0+a2V5LmZvcmtudW0gPSBmb3JrbnVtOwpAQCAtOTk3LDEwICs5OTcsOSBA QCBCbG9ja1JlZlRhYmxlRW50cnlNYXJrQmxvY2tNb2RpZmllZChCbG9ja1JlZlRhYmxlRW50 cnkgKmVudHJ5LAogCiAJCWlmIChlbnRyeS0+bmNodW5rcyA9PSAwKQogCQl7Ci0JCQllbnRy eS0+Y2h1bmtfc2l6ZSA9IHBhbGxvYzAoc2l6ZW9mKHVpbnQxNikgKiBtYXhfY2h1bmtzKTsK LQkJCWVudHJ5LT5jaHVua191c2FnZSA9IHBhbGxvYzAoc2l6ZW9mKHVpbnQxNikgKiBtYXhf Y2h1bmtzKTsKLQkJCWVudHJ5LT5jaHVua19kYXRhID0KLQkJCQlwYWxsb2MwKHNpemVvZihC bG9ja1JlZlRhYmxlQ2h1bmspICogbWF4X2NodW5rcyk7CisJCQllbnRyeS0+Y2h1bmtfc2l6 ZSA9IHBhbGxvYzBfYXJyYXkodWludDE2LCBtYXhfY2h1bmtzKTsgCisJCQllbnRyeS0+Y2h1 bmtfdXNhZ2UgPSBwYWxsb2MwX2FycmF5KHVpbnQxNiwgbWF4X2NodW5rcyk7CisJCQllbnRy eS0+Y2h1bmtfZGF0YSA9IHBhbGxvYzBfYXJyYXkoQmxvY2tSZWZUYWJsZUNodW5rLCBtYXhf Y2h1bmtzKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTEwMjksNyArMTAyOCw3IEBAIEJsb2Nr UmVmVGFibGVFbnRyeU1hcmtCbG9ja01vZGlmaWVkKEJsb2NrUmVmVGFibGVFbnRyeSAqZW50 cnksCiAJaWYgKGVudHJ5LT5jaHVua19zaXplW2NodW5rbm9dID09IDApCiAJewogCQllbnRy eS0+Y2h1bmtfZGF0YVtjaHVua25vXSA9Ci0JCQlwYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBJ TklUSUFMX0VOVFJJRVNfUEVSX0NIVU5LKTsKKwkJCXBhbGxvY19hcnJheSh1aW50MTYsIElO SVRJQUxfRU5UUklFU19QRVJfQ0hVTkspOwogCQllbnRyeS0+Y2h1bmtfc2l6ZVtjaHVua25v XSA9IElOSVRJQUxfRU5UUklFU19QRVJfQ0hVTks7CiAJCWVudHJ5LT5jaHVua19kYXRhW2No dW5rbm9dWzBdID0gY2h1bmtvZmZzZXQ7CiAJCWVudHJ5LT5jaHVua191c2FnZVtjaHVua25v XSA9IDE7CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3BhcnNlX21hbmlmZXN0LmMgYi9zcmMv Y29tbW9uL3BhcnNlX21hbmlmZXN0LmMKaW5kZXggNThlMDk0ODEwMGYuLmNjNWZhMGU1ZTA3 IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3BhcnNlX21hbmlmZXN0LmMKKysrIGIvc3JjL2Nv bW1vbi9wYXJzZV9tYW5pZmVzdC5jCkBAIC0xMzIsOCArMTMyLDggQEAganNvbl9wYXJzZV9t YW5pZmVzdF9pbmNyZW1lbnRhbF9pbml0KEpzb25NYW5pZmVzdFBhcnNlQ29udGV4dCAqY29u dGV4dCkKIAlKc29uTWFuaWZlc3RQYXJzZVN0YXRlICpwYXJzZTsKIAlwZ19jcnlwdG9oYXNo X2N0eCAqbWFuaWZlc3RfY3R4OwogCi0JaW5jc3RhdGUgPSBwYWxsb2Moc2l6ZW9mKEpzb25N YW5pZmVzdFBhcnNlSW5jcmVtZW50YWxTdGF0ZSkpOwotCXBhcnNlID0gcGFsbG9jKHNpemVv ZihKc29uTWFuaWZlc3RQYXJzZVN0YXRlKSk7CisJaW5jc3RhdGUgPSBwYWxsb2Nfb2JqZWN0 KEpzb25NYW5pZmVzdFBhcnNlSW5jcmVtZW50YWxTdGF0ZSk7CisJcGFyc2UgPSBwYWxsb2Nf b2JqZWN0KEpzb25NYW5pZmVzdFBhcnNlU3RhdGUpOwogCiAJcGFyc2UtPmNvbnRleHQgPSBj b250ZXh0OwogCXBhcnNlLT5zdGF0ZSA9IEpNX0VYUEVDVF9UT1BMRVZFTF9TVEFSVDsKZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vcGdmbmFtZXMuYyBiL3NyYy9jb21tb24vcGdmbmFtZXMu YwppbmRleCA4ZmI3OTEwNTcxNC4uNTkxNTM1YTI0YjggMTAwNjQ0Ci0tLSBhL3NyYy9jb21t b24vcGdmbmFtZXMuYworKysgYi9zcmMvY29tbW9uL3BnZm5hbWVzLmMKQEAgLTQ5LDcgKzQ5 LDcgQEAgcGdmbmFtZXMoY29uc3QgY2hhciAqcGF0aCkKIAkJcmV0dXJuIE5VTEw7CiAJfQog Ci0JZmlsZW5hbWVzID0gKGNoYXIgKiopIHBhbGxvYyhmbnNpemUgKiBzaXplb2YoY2hhciAq KSk7CisJZmlsZW5hbWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgZm5zaXplKTsKIAogCXdo aWxlIChlcnJubyA9IDAsIChmaWxlID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKQogCXsKQEAg LTU4LDggKzU4LDcgQEAgcGdmbmFtZXMoY29uc3QgY2hhciAqcGF0aCkKIAkJCWlmIChudW1u YW1lcyArIDEgPj0gZm5zaXplKQogCQkJewogCQkJCWZuc2l6ZSAqPSAyOwotCQkJCWZpbGVu YW1lcyA9IChjaGFyICoqKSByZXBhbGxvYyhmaWxlbmFtZXMsCi0JCQkJCQkJCQkJCSAgIGZu c2l6ZSAqIHNpemVvZihjaGFyICopKTsKKwkJCQlmaWxlbmFtZXMgPSByZXBhbGxvY19hcnJh eShmaWxlbmFtZXMsIGNoYXIgKiwgZm5zaXplKTsKIAkJCX0KIAkJCWZpbGVuYW1lc1tudW1u YW1lcysrXSA9IHBzdHJkdXAoZmlsZS0+ZF9uYW1lKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2NvbW1vbi9ybXRyZWUuYyBiL3NyYy9jb21tb24vcm10cmVlLmMKaW5kZXggMmYzNjRmODRh ZTUuLjQ3Y2QwYTRkOGExIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3JtdHJlZS5jCisrKyBi L3NyYy9jb21tb24vcm10cmVlLmMKQEAgLTY0LDcgKzY0LDcgQEAgcm10cmVlKGNvbnN0IGNo YXIgKnBhdGgsIGJvb2wgcm10b3BkaXIpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlkaXJu YW1lcyA9IChjaGFyICoqKSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiBkaXJuYW1lc19jYXBh Y2l0eSk7CisJZGlybmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hhciAqLCBkaXJuYW1lc19jYXBh Y2l0eSk7CiAKIAl3aGlsZSAoZXJybm8gPSAwLCAoZGUgPSByZWFkZGlyKGRpcikpKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc3RyaW5naW5mby5jIGIvc3JjL2NvbW1vbi9zdHJp bmdpbmZvLmMKaW5kZXggMjJkMDM4MDc2OTcuLmEzZTc3MDg4ZjhlIDEwMDY0NAotLS0gYS9z cmMvY29tbW9uL3N0cmluZ2luZm8uYworKysgYi9zcmMvY29tbW9uL3N0cmluZ2luZm8uYwpA QCAtNTcsNyArNTcsNyBAQCBpbml0U3RyaW5nSW5mb0ludGVybmFsKFN0cmluZ0luZm8gc3Ry LCBpbnQgaW5pdHNpemUpCiBzdGF0aWMgaW5saW5lIFN0cmluZ0luZm8KIG1ha2VTdHJpbmdJ bmZvSW50ZXJuYWwoaW50IGluaXRzaXplKQogewotCVN0cmluZ0luZm8JcmVzID0gKFN0cmlu Z0luZm8pIHBhbGxvYyhzaXplb2YoU3RyaW5nSW5mb0RhdGEpKTsKKwlTdHJpbmdJbmZvCXJl cyA9IHBhbGxvY19vYmplY3QoU3RyaW5nSW5mb0RhdGEpOwogCiAJaW5pdFN0cmluZ0luZm9J bnRlcm5hbChyZXMsIGluaXRzaXplKTsKIAlyZXR1cm4gcmVzOwpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL2FzdHJlYW1lcl9maWxlLmMgYi9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX2Zp bGUuYwppbmRleCBjNjg1NjI4NTA4Ni4uOTQwZjBmNWExYTYgMTAwNjQ0Ci0tLSBhL3NyYy9m ZV91dGlscy9hc3RyZWFtZXJfZmlsZS5jCisrKyBiL3NyYy9mZV91dGlscy9hc3RyZWFtZXJf ZmlsZS5jCkBAIC04Miw3ICs4Miw3IEBAIGFzdHJlYW1lcl9wbGFpbl93cml0ZXJfbmV3KGNo YXIgKnBhdGhuYW1lLCBGSUxFICpmaWxlKQogewogCWFzdHJlYW1lcl9wbGFpbl93cml0ZXIg KnN0cmVhbWVyOwogCi0Jc3RyZWFtZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfcGxh aW5fd3JpdGVyKSk7CisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChhc3RyZWFtZXJfcGxh aW5fd3JpdGVyKTsKIAkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJh c2UuYmJzX29wcykgPQogCQkmYXN0cmVhbWVyX3BsYWluX3dyaXRlcl9vcHM7CiAKQEAgLTE4 OSw3ICsxODksNyBAQCBhc3RyZWFtZXJfZXh0cmFjdG9yX25ldyhjb25zdCBjaGFyICpiYXNl cGF0aCwKIHsKIAlhc3RyZWFtZXJfZXh0cmFjdG9yICpzdHJlYW1lcjsKIAotCXN0cmVhbWVy ID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX2V4dHJhY3RvcikpOworCXN0cmVhbWVyID0g cGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX2V4dHJhY3Rvcik7CiAJKigoY29uc3QgYXN0cmVh bWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0KIAkJJmFzdHJlYW1lcl9l eHRyYWN0b3Jfb3BzOwogCXN0cmVhbWVyLT5iYXNlcGF0aCA9IHBzdHJkdXAoYmFzZXBhdGgp OwpkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9nemlwLmMgYi9zcmMvZmVf dXRpbHMvYXN0cmVhbWVyX2d6aXAuYwppbmRleCBhMzk1ZjU3ZWRjZC4uMDZlMjY3MGQzNjMg MTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfZ3ppcC5jCisrKyBiL3NyYy9m ZV91dGlscy9hc3RyZWFtZXJfZ3ppcC5jCkBAIC0xMDIsNyArMTAyLDcgQEAgYXN0cmVhbWVy X2d6aXBfd3JpdGVyX25ldyhjaGFyICpwYXRobmFtZSwgRklMRSAqZmlsZSwKICNpZmRlZiBI QVZFX0xJQloKIAlhc3RyZWFtZXJfZ3ppcF93cml0ZXIgKnN0cmVhbWVyOwogCi0Jc3RyZWFt ZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfZ3ppcF93cml0ZXIpKTsKKwlzdHJlYW1l ciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1lcl9nemlwX3dyaXRlcik7CiAJKigoY29uc3Qg YXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0KIAkJJmFzdHJl YW1lcl9nemlwX3dyaXRlcl9vcHM7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBhc3RyZWFtZXJf Z3ppcF9kZWNvbXByZXNzb3JfbmV3KGFzdHJlYW1lciAqbmV4dCkKIAogCUFzc2VydChuZXh0 ICE9IE5VTEwpOwogCi0Jc3RyZWFtZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfZ3pp cF9kZWNvbXByZXNzb3IpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1l cl9nemlwX2RlY29tcHJlc3Nvcik7CiAJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0 cmVhbWVyLT5iYXNlLmJic19vcHMpID0KIAkJJmFzdHJlYW1lcl9nemlwX2RlY29tcHJlc3Nv cl9vcHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfbHo0LmMgYi9z cmMvZmVfdXRpbHMvYXN0cmVhbWVyX2x6NC5jCmluZGV4IDVmNTgxZDFkZTM3Li42YWVhZDIw OWZkMiAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl9sejQuYworKysgYi9z cmMvZmVfdXRpbHMvYXN0cmVhbWVyX2x6NC5jCkBAIC03OCw3ICs3OCw3IEBAIGFzdHJlYW1l cl9sejRfY29tcHJlc3Nvcl9uZXcoYXN0cmVhbWVyICpuZXh0LCBwZ19jb21wcmVzc19zcGVj aWZpY2F0aW9uICpjb21wcmVzCiAKIAlBc3NlcnQobmV4dCAhPSBOVUxMKTsKIAotCXN0cmVh bWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX2x6NF9mcmFtZSkpOworCXN0cmVhbWVy ID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX2x6NF9mcmFtZSk7CiAJKigoY29uc3QgYXN0 cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19vcHMpID0KIAkJJmFzdHJlYW1l cl9sejRfY29tcHJlc3Nvcl9vcHM7CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBhc3RyZWFtZXJf bHo0X2RlY29tcHJlc3Nvcl9uZXcoYXN0cmVhbWVyICpuZXh0KQogCiAJQXNzZXJ0KG5leHQg IT0gTlVMTCk7CiAKLQlzdHJlYW1lciA9IHBhbGxvYzAoc2l6ZW9mKGFzdHJlYW1lcl9sejRf ZnJhbWUpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJlYW1lcl9sejRfZnJh bWUpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNf b3BzKSA9CiAJCSZhc3RyZWFtZXJfbHo0X2RlY29tcHJlc3Nvcl9vcHM7CiAKZGlmZiAtLWdp dCBhL3NyYy9mZV91dGlscy9hc3RyZWFtZXJfdGFyLmMgYi9zcmMvZmVfdXRpbHMvYXN0cmVh bWVyX3Rhci5jCmluZGV4IDA4OGUyMzU3OTIwLi44OTZmOGFiNDk3MCAxMDA2NDQKLS0tIGEv c3JjL2ZlX3V0aWxzL2FzdHJlYW1lcl90YXIuYworKysgYi9zcmMvZmVfdXRpbHMvYXN0cmVh bWVyX3Rhci5jCkBAIC05NCw3ICs5NCw3IEBAIGFzdHJlYW1lcl90YXJfcGFyc2VyX25ldyhh c3RyZWFtZXIgKm5leHQpCiB7CiAJYXN0cmVhbWVyX3Rhcl9wYXJzZXIgKnN0cmVhbWVyOwog Ci0Jc3RyZWFtZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfdGFyX3BhcnNlcikpOwor CXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX3Rhcl9wYXJzZXIpOwogCSoo KGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJ CSZhc3RyZWFtZXJfdGFyX3BhcnNlcl9vcHM7CiAJc3RyZWFtZXItPmJhc2UuYmJzX25leHQg PSBuZXh0OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIGFzdHJlYW1lcl90YXJfYXJjaGl2ZXJfbmV3 KGFzdHJlYW1lciAqbmV4dCkKIHsKIAlhc3RyZWFtZXJfdGFyX2FyY2hpdmVyICpzdHJlYW1l cjsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyX3Rhcl9hcmNoaXZl cikpOworCXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX3Rhcl9hcmNoaXZl cik7CiAJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5iYXNlLmJic19v cHMpID0KIAkJJmFzdHJlYW1lcl90YXJfYXJjaGl2ZXJfb3BzOwogCXN0cmVhbWVyLT5iYXNl LmJic19uZXh0ID0gbmV4dDsKQEAgLTQ2Myw3ICs0NjMsNyBAQCBhc3RyZWFtZXJfdGFyX3Rl cm1pbmF0b3JfbmV3KGFzdHJlYW1lciAqbmV4dCkKIHsKIAlhc3RyZWFtZXIgICpzdHJlYW1l cjsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVhbWVyKSk7CisJc3RyZWFt ZXIgPSBwYWxsb2MwX29iamVjdChhc3RyZWFtZXIpOwogCSooKGNvbnN0IGFzdHJlYW1lcl9v cHMgKiopICZzdHJlYW1lci0+YmJzX29wcykgPQogCQkmYXN0cmVhbWVyX3Rhcl90ZXJtaW5h dG9yX29wczsKIAlzdHJlYW1lci0+YmJzX25leHQgPSBuZXh0OwpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL2FzdHJlYW1lcl96c3RkLmMgYi9zcmMvZmVfdXRpbHMvYXN0cmVhbWVyX3pz dGQuYwppbmRleCBiYWNkY2MxNTBjNC4uNjY2NmYxYWJlYjMgMTAwNjQ0Ci0tLSBhL3NyYy9m ZV91dGlscy9hc3RyZWFtZXJfenN0ZC5jCisrKyBiL3NyYy9mZV91dGlscy9hc3RyZWFtZXJf enN0ZC5jCkBAIC03NSw3ICs3NSw3IEBAIGFzdHJlYW1lcl96c3RkX2NvbXByZXNzb3JfbmV3 KGFzdHJlYW1lciAqbmV4dCwgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiAqY29tcHJlCiAK IAlBc3NlcnQobmV4dCAhPSBOVUxMKTsKIAotCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2Yo YXN0cmVhbWVyX3pzdGRfZnJhbWUpKTsKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFz dHJlYW1lcl96c3RkX2ZyYW1lKTsKIAogCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZz dHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3RyZWFtZXJfenN0ZF9jb21wcmVzc29y X29wczsKQEAgLTI2Niw3ICsyNjYsNyBAQCBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3Jf bmV3KGFzdHJlYW1lciAqbmV4dCkKIAogCUFzc2VydChuZXh0ICE9IE5VTEwpOwogCi0Jc3Ry ZWFtZXIgPSBwYWxsb2MwKHNpemVvZihhc3RyZWFtZXJfenN0ZF9mcmFtZSkpOworCXN0cmVh bWVyID0gcGFsbG9jMF9vYmplY3QoYXN0cmVhbWVyX3pzdGRfZnJhbWUpOwogCSooKGNvbnN0 IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CiAJCSZhc3Ry ZWFtZXJfenN0ZF9kZWNvbXByZXNzb3Jfb3BzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9saWIvcmFkaXh0cmVlLmggYi9zcmMvaW5jbHVkZS9saWIvcmFkaXh0cmVlLmgKaW5kZXgg ZWFkNzUwMGZlMTMuLmFkZjgxYzZmMGViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWIv cmFkaXh0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvbGliL3JhZGl4dHJlZS5oCkBAIC0xODI1 LDcgKzE4MjUsNyBAQCBSVF9DUkVBVEUoTWVtb3J5Q29udGV4dCBjdHgpCiAJZHNhX3BvaW50 ZXIgZHA7CiAjZW5kaWYKIAotCXRyZWUgPSAoUlRfUkFESVhfVFJFRSAqKSBwYWxsb2MwKHNp emVvZihSVF9SQURJWF9UUkVFKSk7CisJdHJlZSA9IHBhbGxvYzBfb2JqZWN0KFJUX1JBRElY X1RSRUUpOwogCiAjaWZkZWYgUlRfU0hNRU0KIAl0cmVlLT5kc2EgPSBkc2E7CkBAIC0xODM1 LDcgKzE4MzUsNyBAQCBSVF9DUkVBVEUoTWVtb3J5Q29udGV4dCBjdHgpCiAJdHJlZS0+Y3Rs LT5tYWdpYyA9IFJUX1JBRElYX1RSRUVfTUFHSUM7CiAJTFdMb2NrSW5pdGlhbGl6ZSgmdHJl ZS0+Y3RsLT5sb2NrLCB0cmFuY2hlX2lkKTsKICNlbHNlCi0JdHJlZS0+Y3RsID0gKFJUX1JB RElYX1RSRUVfQ09OVFJPTCAqKSBwYWxsb2MwKHNpemVvZihSVF9SQURJWF9UUkVFX0NPTlRS T0wpKTsKKwl0cmVlLT5jdGwgPSBwYWxsb2MwX29iamVjdChSVF9SQURJWF9UUkVFX0NPTlRS T0wpOwogCiAJLyogQ3JlYXRlIGEgc2xhYiBjb250ZXh0IGZvciBlYWNoIHNpemUgY2xhc3Mg Ki8KIAlmb3IgKGludCBpID0gMDsgaSA8IFJUX05VTV9TSVpFX0NMQVNTRVM7IGkrKykKQEAg LTE4NjgsNyArMTg2OCw3IEBAIFJUX0FUVEFDSChkc2FfYXJlYSAqZHNhLCBSVF9IQU5ETEUg aGFuZGxlKQogCVJUX1JBRElYX1RSRUUgKnRyZWU7CiAJZHNhX3BvaW50ZXIgY29udHJvbDsK IAotCXRyZWUgPSAoUlRfUkFESVhfVFJFRSAqKSBwYWxsb2MwKHNpemVvZihSVF9SQURJWF9U UkVFKSk7CisJdHJlZSA9IHBhbGxvYzBfb2JqZWN0KFJUX1JBRElYX1RSRUUpOwogCiAJLyog RmluZCB0aGUgY29udHJvbCBvYmplY3QgaW4gc2hhcmVkIG1lbW9yeSAqLwogCWNvbnRyb2wg PSBoYW5kbGU7CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCBSVF9CRUdJTl9JVEVSQVRFKFJUX1JB RElYX1RSRUUgKiB0cmVlKQogCVJUX0lURVIgICAgKml0ZXI7CiAJUlRfQ0hJTERfUFRSIHJv b3Q7CiAKLQlpdGVyID0gKFJUX0lURVIgKikgcGFsbG9jMChzaXplb2YoUlRfSVRFUikpOwor CWl0ZXIgPSBwYWxsb2MwX29iamVjdChSVF9JVEVSKTsKIAlpdGVyLT50cmVlID0gdHJlZTsK IAogCUFzc2VydChSVF9QVFJfQUxMT0NfSVNfVkFMSUQodHJlZS0+Y3RsLT5yb290KSk7CmRp ZmYgLS1naXQgYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBl cmwuYwppbmRleCA3M2JhMTc0OGZlMC4uMDJlY2VkM2IyYzUgMTAwNjQ0Ci0tLSBhL3NyYy9w bC9wbHBlcmwvcGxwZXJsLmMKKysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpAQCAtMTA4 Miw4ICsxMDgyLDggQEAgcGxwZXJsX2J1aWxkX3R1cGxlX3Jlc3VsdChIViAqcGVybGhhc2gs IFR1cGxlRGVzYyB0ZCkKIAlIRQkJICAgKmhlOwogCUhlYXBUdXBsZQl0dXA7CiAKLQl2YWx1 ZXMgPSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiB0ZC0+bmF0dHMpOwotCW51bGxzID0gcGFs bG9jKHNpemVvZihib29sKSAqIHRkLT5uYXR0cyk7CisJdmFsdWVzID0gcGFsbG9jMF9hcnJh eShEYXR1bSwgdGQtPm5hdHRzKTsKKwludWxscyA9IHBhbGxvY19hcnJheShib29sLCB0ZC0+ bmF0dHMpOwogCW1lbXNldChudWxscywgdHJ1ZSwgc2l6ZW9mKGJvb2wpICogdGQtPm5hdHRz KTsKIAogCWh2X2l0ZXJpbml0KHBlcmxoYXNoKTsKQEAgLTE1MDIsNyArMTUwMiw3IEBAIHBs cGVybF9yZWZfZnJvbV9wZ19hcnJheShEYXR1bSBhcmcsIE9pZCB0eXBpZCkKIAkgKiBDdXJy ZW50bHkgd2UgbWFrZSBubyBlZmZvcnQgdG8gY2FjaGUgYW55IG9mIHRoZSBzdHVmZiB3ZSBs b29rIHVwIGhlcmUsCiAJICogd2hpY2ggaXMgYmFkLgogCSAqLwotCWluZm8gPSBwYWxsb2Mw KHNpemVvZihwbHBlcmxfYXJyYXlfaW5mbykpOworCWluZm8gPSBwYWxsb2MwX29iamVjdChw bHBlcmxfYXJyYXlfaW5mbyk7CiAKIAkvKiBnZXQgZWxlbWVudCB0eXBlIGluZm9ybWF0aW9u LCBpbmNsdWRpbmcgb3V0cHV0IGNvbnZlcnNpb24gZnVuY3Rpb24gKi8KIAlnZXRfdHlwZV9p b19kYXRhKGVsZW1lbnR0eXBlLCBJT0Z1bmNfb3V0cHV0LApAQCAtMTUzOCw3ICsxNTM4LDcg QEAgcGxwZXJsX3JlZl9mcm9tX3BnX2FycmF5KERhdHVtIGFyZywgT2lkIHR5cGlkKQogCQkJ CQkJICAmbml0ZW1zKTsKIAogCQkvKiBHZXQgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGlu IGVhY2ggZGltZW5zaW9uICovCi0JCWluZm8tPm5lbGVtcyA9IHBhbGxvYyhzaXplb2YoaW50 KSAqIGluZm8tPm5kaW1zKTsKKwkJaW5mby0+bmVsZW1zID0gcGFsbG9jX2FycmF5KGludCwg aW5mby0+bmRpbXMpOwogCQlpbmZvLT5uZWxlbXNbMF0gPSBuaXRlbXM7CiAJCWZvciAoaSA9 IDE7IGkgPCBpbmZvLT5uZGltczsgaSsrKQogCQkJaW5mby0+bmVsZW1zW2ldID0gaW5mby0+ bmVsZW1zW2kgLSAxXSAvIGRpbXNbaSAtIDFdOwpAQCAtMjc5Nyw3ICsyNzk3LDcgQEAgY29t cGlsZV9wbHBlcmxfZnVuY3Rpb24oT2lkIGZuX29pZCwgYm9vbCBpc190cmlnZ2VyLCBib29s IGlzX2V2ZW50X3RyaWdnZXIpCiAJCSAqIHN0cnVjdCBwcm9kZXNjIGFuZCBzdWJzaWRpYXJ5 IGRhdGEgbXVzdCBhbGwgbGl2ZSBpbiBwcm9jX2N4dC4KIAkJICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAkJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcm9jX2N4dCk7Ci0JCXByb2Rlc2MgPSAo cGxwZXJsX3Byb2NfZGVzYyAqKSBwYWxsb2MwKHNpemVvZihwbHBlcmxfcHJvY19kZXNjKSk7 CisJCXByb2Rlc2MgPSBwYWxsb2MwX29iamVjdChwbHBlcmxfcHJvY19kZXNjKTsKIAkJcHJv ZGVzYy0+cHJvbmFtZSA9IHBzdHJkdXAoTmFtZVN0cihwcm9jU3RydWN0LT5wcm9uYW1lKSk7 CiAJCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHByb2NfY3h0LCBwcm9kZXNjLT5wcm9u YW1lKTsKIAkJcHJvZGVzYy0+Zm5fY3h0ID0gcHJvY19jeHQ7CkBAIC0zNTk2LDcgKzM1OTYs NyBAQCBwbHBlcmxfc3BpX3ByZXBhcmUoY2hhciAqcXVlcnksIGludCBhcmdjLCBTViAqKmFy Z3YpCiAJCQkJCQkJCQkJICJQTC9QZXJsIHNwaV9wcmVwYXJlIHF1ZXJ5IiwKIAkJCQkJCQkJ CQkgQUxMT0NTRVRfU01BTExfU0laRVMpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxh bl9jeHQpOwotCQlxZGVzYyA9IChwbHBlcmxfcXVlcnlfZGVzYyAqKSBwYWxsb2MwKHNpemVv ZihwbHBlcmxfcXVlcnlfZGVzYykpOworCQlxZGVzYyA9IHBhbGxvYzBfb2JqZWN0KHBscGVy bF9xdWVyeV9kZXNjKTsKIAkJc25wcmludGYocWRlc2MtPnFuYW1lLCBzaXplb2YocWRlc2Mt PnFuYW1lKSwgIiVwIiwgcWRlc2MpOwogCQlxZGVzYy0+cGxhbl9jeHQgPSBwbGFuX2N4dDsK IAkJcWRlc2MtPm5hcmdzID0gYXJnYzsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9jb21wLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfY29tcC5jCmluZGV4IGY2OTc2 Njg5YTY5Li40ZDkwYTBjMmYwNiAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2NvbXAuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfY29tcC5jCkBAIC0yOTgsOCAr Mjk4LDggQEAgcGxwZ3NxbF9jb21waWxlX2NhbGxiYWNrKEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLAogCQkJCQkJCQkJCQkgICBmb3JWYWxpZGF0b3IsCiAJCQkJCQkJCQkJCSAgIHBscGdz cWxfZXJyb3JfZnVuY25hbWUpOwogCi0JCQlpbl9hcmdfdmFybm9zID0gKGludCAqKSBwYWxs b2MobnVtYXJncyAqIHNpemVvZihpbnQpKTsKLQkJCW91dF9hcmdfdmFyaWFibGVzID0gKFBM cGdTUUxfdmFyaWFibGUgKiopIHBhbGxvYyhudW1hcmdzICogc2l6ZW9mKFBMcGdTUUxfdmFy aWFibGUgKikpOworCQkJaW5fYXJnX3Zhcm5vcyA9IHBhbGxvY19hcnJheShpbnQsIG51bWFy Z3MpOworCQkJb3V0X2FyZ192YXJpYWJsZXMgPSBwYWxsb2NfYXJyYXkoUExwZ1NRTF92YXJp YWJsZSAqLCBudW1hcmdzKTsKIAogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNfY3h0 KTsKIApAQCAtNzcyLDcgKzc3Miw3IEBAIHBscGdzcWxfY29tcGlsZV9pbmxpbmUoY2hhciAq cHJvY19zb3VyY2UpCiAJcGxwZ3NxbF9jaGVja19zeW50YXggPSBjaGVja19mdW5jdGlvbl9i b2RpZXM7CiAKIAkvKiBGdW5jdGlvbiBzdHJ1Y3QgZG9lcyBub3QgbGl2ZSBwYXN0IGN1cnJl bnQgc3RhdGVtZW50ICovCi0JZnVuY3Rpb24gPSAoUExwZ1NRTF9mdW5jdGlvbiAqKSBwYWxs b2MwKHNpemVvZihQTHBnU1FMX2Z1bmN0aW9uKSk7CisJZnVuY3Rpb24gPSBwYWxsb2MwX29i amVjdChQTHBnU1FMX2Z1bmN0aW9uKTsKIAogCXBscGdzcWxfY3Vycl9jb21waWxlID0gZnVu Y3Rpb247CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCBhZGRfZHVtbXlfcmV0dXJuKFBMcGdTUUxf ZnVuY3Rpb24gKmZ1bmN0aW9uKQogCXsKIAkJUExwZ1NRTF9zdG10X2Jsb2NrICpuZXc7CiAK LQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X2Jsb2NrKSk7CisJCW5ldyA9 IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfc3RtdF9ibG9jayk7CiAJCW5ldy0+Y21kX3R5cGUg PSBQTFBHU1FMX1NUTVRfQkxPQ0s7CiAJCW5ldy0+c3RtdGlkID0gKytmdW5jdGlvbi0+bnN0 YXRlbWVudHM7CiAJCW5ldy0+Ym9keSA9IGxpc3RfbWFrZTEoZnVuY3Rpb24tPmFjdGlvbik7 CkBAIC05NjYsNyArOTY2LDcgQEAgYWRkX2R1bW15X3JldHVybihQTHBnU1FMX2Z1bmN0aW9u ICpmdW5jdGlvbikKIAl7CiAJCVBMcGdTUUxfc3RtdF9yZXR1cm4gKm5ldzsKIAotCQluZXcg PSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRfcmV0dXJuKSk7CisJCW5ldyA9IHBhbGxv YzBfb2JqZWN0KFBMcGdTUUxfc3RtdF9yZXR1cm4pOwogCQluZXctPmNtZF90eXBlID0gUExQ R1NRTF9TVE1UX1JFVFVSTjsKIAkJbmV3LT5zdG10aWQgPSArK2Z1bmN0aW9uLT5uc3RhdGVt ZW50czsKIAkJbmV3LT5leHByID0gTlVMTDsKQEAgLTE3NzYsNyArMTc3Niw3IEBAIHBscGdz cWxfYnVpbGRfdmFyaWFibGUoY29uc3QgY2hhciAqcmVmbmFtZSwgaW50IGxpbmVubywgUExw Z1NRTF90eXBlICpkdHlwZSwKIAkJCQkvKiBPcmRpbmFyeSBzY2FsYXIgZGF0YXR5cGUgKi8K IAkJCQlQTHBnU1FMX3ZhciAqdmFyOwogCi0JCQkJdmFyID0gcGFsbG9jMChzaXplb2YoUExw Z1NRTF92YXIpKTsKKwkJCQl2YXIgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3Zhcik7CiAJ CQkJdmFyLT5kdHlwZSA9IFBMUEdTUUxfRFRZUEVfVkFSOwogCQkJCXZhci0+cmVmbmFtZSA9 IHBzdHJkdXAocmVmbmFtZSk7CiAJCQkJdmFyLT5saW5lbm8gPSBsaW5lbm87CkBAIC0xODMz LDcgKzE4MzMsNyBAQCBwbHBnc3FsX2J1aWxkX3JlY29yZChjb25zdCBjaGFyICpyZWZuYW1l LCBpbnQgbGluZW5vLAogewogCVBMcGdTUUxfcmVjICpyZWM7CiAKLQlyZWMgPSBwYWxsb2Mw KHNpemVvZihQTHBnU1FMX3JlYykpOworCXJlYyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxf cmVjKTsKIAlyZWMtPmR0eXBlID0gUExQR1NRTF9EVFlQRV9SRUM7CiAJcmVjLT5yZWZuYW1l ID0gcHN0cmR1cChyZWZuYW1lKTsKIAlyZWMtPmxpbmVubyA9IGxpbmVubzsKQEAgLTE4NTks MTQgKzE4NTksMTQgQEAgYnVpbGRfcm93X2Zyb21fdmFycyhQTHBnU1FMX3ZhcmlhYmxlICoq dmFycywgaW50IG51bXZhcnMpCiAJUExwZ1NRTF9yb3cgKnJvdzsKIAlpbnQJCQlpOwogCi0J cm93ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9yb3cpKTsKKwlyb3cgPSBwYWxsb2MwX29i amVjdChQTHBnU1FMX3Jvdyk7CiAJcm93LT5kdHlwZSA9IFBMUEdTUUxfRFRZUEVfUk9XOwog CXJvdy0+cmVmbmFtZSA9ICIodW5uYW1lZCByb3cpIjsKIAlyb3ctPmxpbmVubyA9IC0xOwog CXJvdy0+cm93dHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKG51bXZhcnMpOwog CXJvdy0+bmZpZWxkcyA9IG51bXZhcnM7Ci0Jcm93LT5maWVsZG5hbWVzID0gcGFsbG9jKG51 bXZhcnMgKiBzaXplb2YoY2hhciAqKSk7Ci0Jcm93LT52YXJub3MgPSBwYWxsb2MobnVtdmFy cyAqIHNpemVvZihpbnQpKTsKKwlyb3ctPmZpZWxkbmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hh ciAqLCBudW12YXJzKTsKKwlyb3ctPnZhcm5vcyA9IHBhbGxvY19hcnJheShpbnQsIG51bXZh cnMpOwogCiAJZm9yIChpID0gMDsgaSA8IG51bXZhcnM7IGkrKykKIAl7CkBAIC0xOTQwLDcg KzE5NDAsNyBAQCBwbHBnc3FsX2J1aWxkX3JlY2ZpZWxkKFBMcGdTUUxfcmVjICpyZWMsIGNv bnN0IGNoYXIgKmZsZG5hbWUpCiAJfQogCiAJLyogbm9wZSwgc28gbWFrZSBhIG5ldyBvbmUg Ki8KLQlyZWNmaWVsZCA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfcmVjZmllbGQpKTsKKwly ZWNmaWVsZCA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfcmVjZmllbGQpOwogCXJlY2ZpZWxk LT5kdHlwZSA9IFBMUEdTUUxfRFRZUEVfUkVDRklFTEQ7CiAJcmVjZmllbGQtPmZpZWxkbmFt ZSA9IHBzdHJkdXAoZmxkbmFtZSk7CiAJcmVjZmllbGQtPnJlY3BhcmVudG5vID0gcmVjLT5k bm87CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBidWlsZF9kYXRhdHlwZShIZWFwVHVwbGUgdHlw ZVR1cCwgaW50MzIgdHlwbW9kLAogCQkJCSBlcnJtc2coInR5cGUgXCIlc1wiIGlzIG9ubHkg YSBzaGVsbCIsCiAJCQkJCQlOYW1lU3RyKHR5cGVTdHJ1Y3QtPnR5cG5hbWUpKSkpOwogCi0J dHlwID0gKFBMcGdTUUxfdHlwZSAqKSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfdHlwZSkpOwor CXR5cCA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF90eXBlKTsKIAogCXR5cC0+dHlwbmFtZSA9 IHBzdHJkdXAoTmFtZVN0cih0eXBlU3RydWN0LT50eXBuYW1lKSk7CiAJdHlwLT50eXBvaWQg PSB0eXBlU3RydWN0LT5vaWQ7CkBAIC0yMTg0LDcgKzIxODQsNyBAQCBwbHBnc3FsX3BhcnNl X2Vycl9jb25kaXRpb24oY2hhciAqY29uZG5hbWUpCiAKIAlpZiAoc3RyY21wKGNvbmRuYW1l LCAib3RoZXJzIikgPT0gMCkKIAl7Ci0JCW5ldyA9IHBhbGxvYyhzaXplb2YoUExwZ1NRTF9j b25kaXRpb24pKTsKKwkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX2NvbmRpdGlvbik7 CiAJCW5ldy0+c3FsZXJyc3RhdGUgPSBQTFBHU1FMX09USEVSUzsKIAkJbmV3LT5jb25kbmFt ZSA9IGNvbmRuYW1lOwogCQluZXctPm5leHQgPSBOVUxMOwpAQCAtMjE5Niw3ICsyMTk2LDcg QEAgcGxwZ3NxbF9wYXJzZV9lcnJfY29uZGl0aW9uKGNoYXIgKmNvbmRuYW1lKQogCXsKIAkJ aWYgKHN0cmNtcChjb25kbmFtZSwgZXhjZXB0aW9uX2xhYmVsX21hcFtpXS5sYWJlbCkgPT0g MCkKIAkJewotCQkJbmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX2NvbmRpdGlvbikpOwor CQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX2NvbmRpdGlvbik7CiAJCQluZXctPnNx bGVycnN0YXRlID0gZXhjZXB0aW9uX2xhYmVsX21hcFtpXS5zcWxlcnJzdGF0ZTsKIAkJCW5l dy0+Y29uZG5hbWUgPSBjb25kbmFtZTsKIAkJCW5ldy0+bmV4dCA9IHByZXY7CkBAIC0yMjU4 LDcgKzIyNTgsNyBAQCBwbHBnc3FsX2ZpbmlzaF9kYXR1bXMoUExwZ1NRTF9mdW5jdGlvbiAq ZnVuY3Rpb24pCiAJaW50CQkJaTsKIAogCWZ1bmN0aW9uLT5uZGF0dW1zID0gcGxwZ3NxbF9u RGF0dW1zOwotCWZ1bmN0aW9uLT5kYXR1bXMgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfZGF0 dW0gKikgKiBwbHBnc3FsX25EYXR1bXMpOworCWZ1bmN0aW9uLT5kYXR1bXMgPSBwYWxsb2Nf YXJyYXkoUExwZ1NRTF9kYXR1bSAqLCBwbHBnc3FsX25EYXR1bXMpOwogCWZvciAoaSA9IDA7 IGkgPCBwbHBnc3FsX25EYXR1bXM7IGkrKykKIAl7CiAJCWZ1bmN0aW9uLT5kYXR1bXNbaV0g PSBwbHBnc3FsX0RhdHVtc1tpXTsKQEAgLTIzMjMsNyArMjMyMyw3IEBAIHBscGdzcWxfYWRk X2luaXRkYXR1bXMoaW50ICoqdmFybm9zKQogCXsKIAkJaWYgKG4gPiAwKQogCQl7Ci0JCQkq dmFybm9zID0gKGludCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBuKTsKKwkJCSp2YXJub3Mg PSBwYWxsb2NfYXJyYXkoaW50LCBuKTsKIAogCQkJbiA9IDA7CiAJCQlmb3IgKGkgPSBkYXR1 bXNfbGFzdDsgaSA8IHBscGdzcWxfbkRhdHVtczsgaSsrKQpkaWZmIC0tZ2l0IGEvc3JjL3Bs L3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMK aW5kZXggZDE5NDI1YjdhNzEuLjYzNTk4YWJhOGE4IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxw Z3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMK QEAgLTEzMTgsOCArMTMxOCw3IEBAIGNvcHlfcGxwZ3NxbF9kYXR1bXMoUExwZ1NRTF9leGVj c3RhdGUgKmVzdGF0ZSwKIAlpbnQJCQlpOwogCiAJLyogQWxsb2NhdGUgbG9jYWwgZGF0dW0t cG9pbnRlciBhcnJheSAqLwotCWVzdGF0ZS0+ZGF0dW1zID0gKFBMcGdTUUxfZGF0dW0gKiop Ci0JCXBhbGxvYyhzaXplb2YoUExwZ1NRTF9kYXR1bSAqKSAqIG5kYXR1bXMpOworCWVzdGF0 ZS0+ZGF0dW1zID0gcGFsbG9jX2FycmF5KFBMcGdTUUxfZGF0dW0gKiwgbmRhdHVtcyk7CiAK IAkvKgogCSAqIFRvIHJlZHVjZSBwYWxsb2Mgb3ZlcmhlYWQsIHdlIG1ha2UgYSBzaW5nbGUg cGFsbG9jIHJlcXVlc3QgZm9yIGFsbCB0aGUKQEAgLTE0OTcsNyArMTQ5Niw3IEBAIHBscGdz cWxfZnVsZmlsbF9wcm9taXNlKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJaW50 CQkJbGJzWzFdOwogCQkJCWludAkJCWk7CiAKLQkJCQllbGVtcyA9IHBhbGxvYyhzaXplb2Yo RGF0dW0pICogbmVsZW1zKTsKKwkJCQllbGVtcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmVs ZW1zKTsKIAkJCQlmb3IgKGkgPSAwOyBpIDwgbmVsZW1zOyBpKyspCiAJCQkJCWVsZW1zW2ld ID0gQ1N0cmluZ0dldFRleHREYXR1bShlc3RhdGUtPnRyaWdkYXRhLT50Z190cmlnZ2VyLT50 Z2FyZ3NbaV0pOwogCQkJCWRpbXNbMF0gPSBuZWxlbXM7CkBAIC0yMzQwLDExICsyMzM5LDEx IEBAIG1ha2VfY2FsbHN0bXRfdGFyZ2V0KFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIFBM cGdTUUxfZXhwciAqZXhwcikKIAkgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5mdW5jLT5mbl9jeHQpOwogCi0Jcm93ID0gKFBMcGdTUUxfcm93ICopIHBhbGxvYzAoc2l6 ZW9mKFBMcGdTUUxfcm93KSk7CisJcm93ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9yb3cp OwogCXJvdy0+ZHR5cGUgPSBQTFBHU1FMX0RUWVBFX1JPVzsKIAlyb3ctPnJlZm5hbWUgPSAi KHVubmFtZWQgcm93KSI7CiAJcm93LT5saW5lbm8gPSAtMTsKLQlyb3ctPnZhcm5vcyA9IChp bnQgKikgcGFsbG9jKG51bWFyZ3MgKiBzaXplb2YoaW50KSk7CisJcm93LT52YXJub3MgPSBw YWxsb2NfYXJyYXkoaW50LCBudW1hcmdzKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhn ZXRfZXZhbF9tY29udGV4dChlc3RhdGUpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2dyYW0ueSBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKaW5kZXgg MTc1NjhkODI1NTQuLmNkMWZlNWE1MDlmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9z cmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAgLTQy Niw3ICs0MjYsNyBAQCBwbF9ibG9jawkJOiBkZWNsX3NlY3QgS19CRUdJTiBwcm9jX3NlY3Qg ZXhjZXB0aW9uX3NlY3QgS19FTkQgb3B0X2xhYmVsCiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxf c3RtdF9ibG9jayAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FM X3N0bXRfYmxvY2spKTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfc3Rt dF9ibG9jayk7CiAKIAkJCQkJCW5ldy0+Y21kX3R5cGUJPSBQTFBHU1FMX1NUTVRfQkxPQ0s7 CiAJCQkJCQluZXctPmxpbmVubwkJPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMiwg eXlzY2FubmVyKTsKQEAgLTYwNiwxNCArNjA2LDE0IEBAIGRlY2xfY3Vyc29yX2FyZ3MgOgog CQkJCQkJaW50CQkJaTsKIAkJCQkJCUxpc3RDZWxsICAgKmw7CiAKLQkJCQkJCW5ldyA9IHBh bGxvYzAoc2l6ZW9mKFBMcGdTUUxfcm93KSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVj dChQTHBnU1FMX3Jvdyk7CiAJCQkJCQluZXctPmR0eXBlID0gUExQR1NRTF9EVFlQRV9ST1c7 CiAJCQkJCQluZXctPnJlZm5hbWUgPSAiKHVubmFtZWQgcm93KSI7CiAJCQkJCQluZXctPmxp bmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJ CQkJbmV3LT5yb3d0dXBkZXNjID0gTlVMTDsKIAkJCQkJCW5ldy0+bmZpZWxkcyA9IGxpc3Rf bGVuZ3RoKCQyKTsKLQkJCQkJCW5ldy0+ZmllbGRuYW1lcyA9IHBhbGxvYyhuZXctPm5maWVs ZHMgKiBzaXplb2YoY2hhciAqKSk7Ci0JCQkJCQluZXctPnZhcm5vcyA9IHBhbGxvYyhuZXct Pm5maWVsZHMgKiBzaXplb2YoaW50KSk7CisJCQkJCQluZXctPmZpZWxkbmFtZXMgPSBwYWxs b2NfYXJyYXkoY2hhciAqLCBuZXctPm5maWVsZHMpOworCQkJCQkJbmV3LT52YXJub3MgPSBw YWxsb2NfYXJyYXkoaW50LCBuZXctPm5maWVsZHMpOwogCiAJCQkJCQlpID0gMDsKIAkJCQkJ CWZvcmVhY2ggKGwsICQyKQpAQCAtODk4LDcgKzg5OCw3IEBAIHN0bXRfcGVyZm9ybQk6IEtf UEVSRk9STQogCQkJCQkJUExwZ1NRTF9zdG10X3BlcmZvcm0gKm5ldzsKIAkJCQkJCWludAkJ CXN0YXJ0bG9jOwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRf cGVyZm9ybSkpOworCQkJCQkJbmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X3Bl cmZvcm0pOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9QRVJGT1JNOwog CQkJCQkJbmV3LT5saW5lbm8gICA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5 eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxl LT5uc3RhdGVtZW50czsKQEAgLTkzNCw3ICs5MzQsNyBAQCBzdG10X2NhbGwJCTogS19DQUxM CiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxfc3RtdF9jYWxsICpuZXc7CiAKLQkJCQkJCW5ldyA9 IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9jYWxsKSk7CisJCQkJCQluZXcgPSBwYWxs b2MwX29iamVjdChQTHBnU1FMX3N0bXRfY2FsbCk7CiAJCQkJCQluZXctPmNtZF90eXBlID0g UExQR1NRTF9TVE1UX0NBTEw7CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRp b25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3Bs cGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTk1Myw3ICs5NTMsNyBAQCBz dG10X2NhbGwJCTogS19DQUxMCiAJCQkJCQkvKiB1c2UgdGhlIHNhbWUgc3RydWN0dXJlcyBh cyBmb3IgQ0FMTCwgZm9yIHNpbXBsaWNpdHkgKi8KIAkJCQkJCVBMcGdTUUxfc3RtdF9jYWxs ICpuZXc7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9jYWxs KSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfY2FsbCk7CiAJ CQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0NBTEw7CiAJCQkJCQluZXctPmxp bmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJ CQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsK QEAgLTk5Miw3ICs5OTIsNyBAQCBzdG10X2Fzc2lnbgkJOiBUX0RBVFVNCiAJCQkJCQl9CiAK IAkJCQkJCWNoZWNrX2Fzc2lnbmFibGUoJDEuZGF0dW0sIEAxLCB5eXNjYW5uZXIpOwotCQkJ CQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X2Fzc2lnbikpOworCQkJCQkJ bmV3ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X2Fzc2lnbik7CiAJCQkJCQluZXct PmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0FTU0lHTjsKIAkJCQkJCW5ldy0+bGluZW5vID0g cGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXct PnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMTAx NSw3ICsxMDE1LDcgQEAgc3RtdF9nZXRkaWFnCTogS19HRVQgZ2V0ZGlhZ19hcmVhX29wdCBL X0RJQUdOT1NUSUNTIGdldGRpYWdfbGlzdCAnOycKIAkJCQkJCVBMcGdTUUxfc3RtdF9nZXRk aWFnICpuZXc7CiAJCQkJCQlMaXN0Q2VsbAkgICAqbGM7CiAKLQkJCQkJCW5ldyA9IHBhbGxv YzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9nZXRkaWFnKSk7CisJCQkJCQluZXcgPSBwYWxsb2Mw X29iamVjdChQTHBnU1FMX3N0bXRfZ2V0ZGlhZyk7CiAJCQkJCQluZXctPmNtZF90eXBlID0g UExQR1NRTF9TVE1UX0dFVERJQUc7CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9j YXRpb25fdG9fbGluZW5vKEAxLCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSAr K3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTExMDEsNyArMTEwMSw3 IEBAIGdldGRpYWdfbGlzdF9pdGVtIDogZ2V0ZGlhZ190YXJnZXQgYXNzaWduX29wZXJhdG9y IGdldGRpYWdfaXRlbQogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX2RpYWdfaXRlbSAqbmV3Owog Ci0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfZGlhZ19pdGVtKSk7CisJCQkJ CQluZXcgPSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxfZGlhZ19pdGVtKTsKIAkJCQkJCW5ldy0+ dGFyZ2V0ID0gJDEtPmRubzsKIAkJCQkJCW5ldy0+a2luZCA9ICQzOwogCkBAIC0xMTkxLDcg KzExOTEsNyBAQCBzdG10X2lmCQkJOiBLX0lGIGV4cHJfdW50aWxfdGhlbiBwcm9jX3NlY3Qg c3RtdF9lbHNpZnMgc3RtdF9lbHNlIEtfRU5EIEtfSUYgJzsnCiAJCQkJCXsKIAkJCQkJCVBM cGdTUUxfc3RtdF9pZiAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBn U1FMX3N0bXRfaWYpKTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfc3Rt dF9pZik7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0lGOwogCQkJCQkJ bmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2FubmVy KTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRl bWVudHM7CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBzdG10X2Vsc2lmcwkJOgogCQkJCQl7CiAJ CQkJCQlQTHBnU1FMX2lmX2Vsc2lmICpuZXc7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6 ZW9mKFBMcGdTUUxfaWZfZWxzaWYpKTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBM cGdTUUxfaWZfZWxzaWYpOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9u X3RvX2xpbmVubyhAMiwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+Y29uZCA9ICQzOwogCQkJ CQkJbmV3LT5zdG10cyA9ICQ0OwpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgY2FzZV93aGVuX2xp c3QJOiBjYXNlX3doZW5fbGlzdCBjYXNlX3doZW4KIAogY2FzZV93aGVuCQk6IEtfV0hFTiBl eHByX3VudGlsX3RoZW4gcHJvY19zZWN0CiAJCQkJCXsKLQkJCQkJCVBMcGdTUUxfY2FzZV93 aGVuICpuZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfY2FzZV93aGVuKSk7CisJCQkJCQlQ THBnU1FMX2Nhc2Vfd2hlbiAqbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX2Nhc2Vfd2hl bik7CiAKIAkJCQkJCW5ldy0+bGluZW5vCT0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8o QDEsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPmV4cHIgPSAkMjsKQEAgLTEyOTYsNyArMTI5 Niw3IEBAIHN0bXRfbG9vcAkJOiBvcHRfbG9vcF9sYWJlbCBLX0xPT1AgbG9vcF9ib2R5CiAJ CQkJCXsKIAkJCQkJCVBMcGdTUUxfc3RtdF9sb29wICpuZXc7CiAKLQkJCQkJCW5ldyA9IHBh bGxvYzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9sb29wKSk7CisJCQkJCQluZXcgPSBwYWxsb2Mw X29iamVjdChQTHBnU1FMX3N0bXRfbG9vcCk7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQ R1NRTF9TVE1UX0xPT1A7CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRpb25f dG9fbGluZW5vKEAyLCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdz cWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTEzMTQsNyArMTMxNCw3IEBAIHN0 bXRfd2hpbGUJCTogb3B0X2xvb3BfbGFiZWwgS19XSElMRSBleHByX3VudGlsX2xvb3AgbG9v cF9ib2R5CiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxfc3RtdF93aGlsZSAqbmV3OwogCi0JCQkJ CQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRfd2hpbGUpKTsKKwkJCQkJCW5l dyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxfc3RtdF93aGlsZSk7CiAJCQkJCQluZXctPmNt ZF90eXBlID0gUExQR1NRTF9TVE1UX1dISUxFOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBn c3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMiwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+c3Rt dGlkCT0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC0xMzgwLDcg KzEzODAsNyBAQCBmb3JfY29udHJvbAkJOiBmb3JfdmFyaWFibGUgS19JTgogCQkJCQkJCQkJ CQkJCQkiTE9PUCBvciBVU0lORyIsCiAJCQkJCQkJCQkJCQkJCSZ0ZXJtLCAmeXlsdmFsLCAm eXlsbG9jLCB5eXNjYW5uZXIpOwogCi0JCQkJCQkJbmV3ID0gcGFsbG9jMChzaXplb2YoUExw Z1NRTF9zdG10X2R5bmZvcnMpKTsKKwkJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBn U1FMX3N0bXRfZHluZm9ycyk7CiAJCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RN VF9EWU5GT1JTOwogCQkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGls ZS0+bnN0YXRlbWVudHM7CiAJCQkJCQkJaWYgKCQxLnJvdykKQEAgLTE0MjYsNyArMTQyNiw3 IEBAIGZvcl9jb250cm9sCQk6IGZvcl92YXJpYWJsZSBLX0lOCiAJCQkJCQkJUExwZ1NRTF9z dG10X2ZvcmMgKm5ldzsKIAkJCQkJCQlQTHBnU1FMX3ZhcgkqY3Vyc29yID0gKFBMcGdTUUxf dmFyICopIHl5bHZhbC53ZGF0dW0uZGF0dW07CiAKLQkJCQkJCQluZXcgPSAoUExwZ1NRTF9z dG10X2ZvcmMgKikgcGFsbG9jMChzaXplb2YoUExwZ1NRTF9zdG10X2ZvcmMpKTsKKwkJCQkJ CQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfZm9yYyk7CiAJCQkJCQkJbmV3 LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9GT1JDOwogCQkJCQkJCW5ldy0+c3RtdGlkID0g KytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CiAJCQkJCQkJbmV3LT5jdXJ2 YXIgPSBjdXJzb3ItPmRubzsKQEAgLTE1NDUsNyArMTU0NSw3IEBAIGZvcl9jb250cm9sCQk6 IGZvcl92YXJpYWJsZSBLX0lOCiAJCQkJCQkJCQkJCQkJCQkJCQkJCSAgTlVMTCksCiAJCQkJ CQkJCQkJCQkJCSAgIHRydWUpOwogCi0JCQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9mKFBM cGdTUUxfc3RtdF9mb3JpKSk7CisJCQkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdT UUxfc3RtdF9mb3JpKTsKIAkJCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9G T1JJOwogCQkJCQkJCQluZXctPnN0bXRpZAk9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5z dGF0ZW1lbnRzOwogCQkJCQkJCQluZXctPnZhciA9IGZ2YXI7CkBAIC0xNTczLDcgKzE1NzMs NyBAQCBmb3JfY29udHJvbAkJOiBmb3JfdmFyaWFibGUgS19JTgogCQkJCQkJCQljaGVja19z cWxfZXhwcihleHByMS0+cXVlcnksIGV4cHIxLT5wYXJzZU1vZGUsCiAJCQkJCQkJCQkJCSAg IGV4cHIxbG9jLCB5eXNjYW5uZXIpOwogCi0JCQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9m KFBMcGdTUUxfc3RtdF9mb3JzKSk7CisJCQkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBM cGdTUUxfc3RtdF9mb3JzKTsKIAkJCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RN VF9GT1JTOwogCQkJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUt Pm5zdGF0ZW1lbnRzOwogCQkJCQkJCQlpZiAoJDEucm93KQpAQCAtMTY3NSw3ICsxNjc1LDcg QEAgc3RtdF9mb3JlYWNoX2EJOiBvcHRfbG9vcF9sYWJlbCBLX0ZPUkVBQ0ggZm9yX3Zhcmlh YmxlIGZvcmVhY2hfc2xpY2UgS19JTiBLX0FSUkEKIAkJCQkJewogCQkJCQkJUExwZ1NRTF9z dG10X2ZvcmVhY2hfYSAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBn U1FMX3N0bXRfZm9yZWFjaF9hKSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBn U1FMX3N0bXRfZm9yZWFjaF9hKTsKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NU TVRfRk9SRUFDSF9BOwogCQkJCQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3Rv X2xpbmVubyhAMiwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3Fs X2N1cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CkBAIC0xNzIzLDcgKzE3MjMsNyBAQCBzdG10 X2V4aXQJCTogZXhpdF90eXBlIG9wdF9sYWJlbCBvcHRfZXhpdGNvbmQKIAkJCQkJewogCQkJ CQkJUExwZ1NRTF9zdG10X2V4aXQgKm5ldzsKIAotCQkJCQkJbmV3ID0gcGFsbG9jMChzaXpl b2YoUExwZ1NRTF9zdG10X2V4aXQpKTsKKwkJCQkJCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBM cGdTUUxfc3RtdF9leGl0KTsKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRf RVhJVDsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0 YXRlbWVudHM7CiAJCQkJCQluZXctPmlzX2V4aXQgPSAkMTsKQEAgLTE4MTMsNyArMTgxMyw3 IEBAIHN0bXRfcmFpc2UJCTogS19SQUlTRQogCQkJCQkJUExwZ1NRTF9zdG10X3JhaXNlICpu ZXc7CiAJCQkJCQlpbnQJCQl0b2s7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYyhzaXplb2YoUExw Z1NRTF9zdG10X3JhaXNlKSk7CisJCQkJCQluZXcgPSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxf c3RtdF9yYWlzZSk7CiAKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfUkFJ U0U7CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAx LCB5eXNjYW5uZXIpOwpAQCAtMTk1OSw3ICsxOTU5LDcgQEAgc3RtdF9hc3NlcnQJCTogS19B U1NFUlQKIAkJCQkJCVBMcGdTUUxfc3RtdF9hc3NlcnQJKm5ldzsKIAkJCQkJCWludAkJCXRv azsKIAotCQkJCQkJbmV3ID0gcGFsbG9jKHNpemVvZihQTHBnU1FMX3N0bXRfYXNzZXJ0KSk7 CisJCQkJCQluZXcgPSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxfc3RtdF9hc3NlcnQpOwogCiAJ CQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0FTU0VSVDsKIAkJCQkJCW5ldy0+ bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7CkBA IC0yMDQ1LDcgKzIwNDUsNyBAQCBzdG10X2R5bmV4ZWN1dGUgOiBLX0VYRUNVVEUKIAkJCQkJ CQkJCQkJCSAgTlVMTCwgJmVuZHRva2VuLAogCQkJCQkJCQkJCQkJICAmeXlsdmFsLCAmeXls bG9jLCB5eXNjYW5uZXIpOwogCi0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxf c3RtdF9keW5leGVjdXRlKSk7CisJCQkJCQluZXcgPSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxf c3RtdF9keW5leGVjdXRlKTsKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRf RFlORVhFQ1VURTsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19s aW5lbm8oQDEsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9j dXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMjEwMyw3ICsyMTAzLDcgQEAgc3RtdF9v cGVuCQk6IEtfT1BFTiBjdXJzb3JfdmFyaWFibGUKIAkJCQkJCVBMcGdTUUxfc3RtdF9vcGVu ICpuZXc7CiAJCQkJCQlpbnQJCQl0b2s7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYzAoc2l6ZW9m KFBMcGdTUUxfc3RtdF9vcGVuKSk7CisJCQkJCQluZXcgPSBwYWxsb2MwX29iamVjdChQTHBn U1FMX3N0bXRfb3Blbik7CiAJCQkJCQluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX09Q RU47CiAJCQkJCQluZXctPmxpbmVubyA9IHBscGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAx LCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21w aWxlLT5uc3RhdGVtZW50czsKQEAgLTIyMjksNyArMjIyOSw3IEBAIHN0bXRfY2xvc2UJCTog S19DTE9TRSBjdXJzb3JfdmFyaWFibGUgJzsnCiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxfc3Rt dF9jbG9zZSAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdTUUxfc3Rt dF9jbG9zZSkpOworCQkJCQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfY2xv c2UpOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9DTE9TRTsKIAkJCQkJ CW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5l cik7CiAJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0 ZW1lbnRzOwpAQCAtMjI1MCw3ICsyMjUwLDcgQEAgc3RtdF9jb21taXQJCTogS19DT01NSVQg b3B0X3RyYW5zYWN0aW9uX2NoYWluICc7JwogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX3N0bXRf Y29tbWl0ICpuZXc7CiAKLQkJCQkJCW5ldyA9IHBhbGxvYyhzaXplb2YoUExwZ1NRTF9zdG10 X2NvbW1pdCkpOworCQkJCQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FMX3N0bXRfY29t bWl0KTsKIAkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfQ09NTUlUOwogCQkJ CQkJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2Fu bmVyKTsKIAkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+bnN0 YXRlbWVudHM7CkBAIC0yMjY0LDcgKzIyNjQsNyBAQCBzdG10X3JvbGxiYWNrCTogS19ST0xM QkFDSyBvcHRfdHJhbnNhY3Rpb25fY2hhaW4gJzsnCiAJCQkJCXsKIAkJCQkJCVBMcGdTUUxf c3RtdF9yb2xsYmFjayAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2Moc2l6ZW9mKFBMcGdT UUxfc3RtdF9yb2xsYmFjaykpOworCQkJCQkJbmV3ID0gcGFsbG9jX29iamVjdChQTHBnU1FM X3N0bXRfcm9sbGJhY2spOwogCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBMUEdTUUxfU1RNVF9S T0xMQkFDSzsKIAkJCQkJCW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5l bm8oQDEsIHl5c2Nhbm5lcik7CiAJCQkJCQluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJy X2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMjMyNyw3ICsyMzI3LDcgQEAgZXhjZXB0aW9u X3NlY3QJOgogCQkJCQkJICogY3VycmVudCBibG9jay4KIAkJCQkJCSAqLwogCQkJCQkJaW50 CQkJbGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8oQDEsIHl5c2Nhbm5lcik7 Ci0JCQkJCQlQTHBnU1FMX2V4Y2VwdGlvbl9ibG9jayAqbmV3ID0gcGFsbG9jKHNpemVvZihQ THBnU1FMX2V4Y2VwdGlvbl9ibG9jaykpOworCQkJCQkJUExwZ1NRTF9leGNlcHRpb25fYmxv Y2sgKm5ldyA9IHBhbGxvY19vYmplY3QoUExwZ1NRTF9leGNlcHRpb25fYmxvY2spOwogCQkJ CQkJUExwZ1NRTF92YXJpYWJsZSAqdmFyOwogCiAJCQkJCQlwbHBnc3FsX2N1cnJfY29tcGls ZS0+aGFzX2V4Y2VwdGlvbl9ibG9jayA9IHRydWU7CkBAIC0yMzc1LDcgKzIzNzUsNyBAQCBw cm9jX2V4Y2VwdGlvbgk6IEtfV0hFTiBwcm9jX2NvbmRpdGlvbnMgS19USEVOIHByb2Nfc2Vj dAogCQkJCQl7CiAJCQkJCQlQTHBnU1FMX2V4Y2VwdGlvbiAqbmV3OwogCi0JCQkJCQluZXcg PSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX2V4Y2VwdGlvbikpOworCQkJCQkJbmV3ID0gcGFs bG9jMF9vYmplY3QoUExwZ1NRTF9leGNlcHRpb24pOwogCQkJCQkJbmV3LT5saW5lbm8gPSBw bHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhAMSwgeXlzY2FubmVyKTsKIAkJCQkJCW5ldy0+ Y29uZGl0aW9ucyA9ICQyOwogCQkJCQkJbmV3LT5hY3Rpb24gPSAkNDsKQEAgLTI0MjAsNyAr MjQyMCw3IEBAIHByb2NfY29uZGl0aW9uCTogYW55X2lkZW50aWZpZXIKIAkJCQkJCQkJaWYg KHN0cnNwbihzcWxzdGF0ZXN0ciwgIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVW V1hZWiIpICE9IDUpCiAJCQkJCQkJCQl5eWVycm9yKCZ5eWxsb2MsIE5VTEwsIHl5c2Nhbm5l ciwgImludmFsaWQgU1FMU1RBVEUgY29kZSIpOwogCi0JCQkJCQkJCW5ldyA9IHBhbGxvYyhz aXplb2YoUExwZ1NRTF9jb25kaXRpb24pKTsKKwkJCQkJCQkJbmV3ID0gcGFsbG9jX29iamVj dChQTHBnU1FMX2NvbmRpdGlvbik7CiAJCQkJCQkJCW5ldy0+c3FsZXJyc3RhdGUgPQogCQkJ CQkJCQkJTUFLRV9TUUxTVEFURShzcWxzdGF0ZXN0clswXSwKIAkJCQkJCQkJCQkJCSAgc3Fs c3RhdGVzdHJbMV0sCkBAIC0yNjcxLDcgKzI2NzEsNyBAQCBzdGF0aWMgUExwZ1NRTF9leHBy ICoKIG1ha2VfcGxwZ3NxbF9leHByKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCSAgUmF3UGFy c2VNb2RlIHBhcnNlbW9kZSkKIHsKLQlQTHBnU1FMX2V4cHIgKmV4cHIgPSBwYWxsb2MwKHNp emVvZihQTHBnU1FMX2V4cHIpKTsKKwlQTHBnU1FMX2V4cHIgKmV4cHIgPSBwYWxsb2MwX29i amVjdChQTHBnU1FMX2V4cHIpOwogCiAJZXhwci0+cXVlcnkgPSBwc3RyZHVwKHF1ZXJ5KTsK IAlleHByLT5wYXJzZU1vZGUgPSBwYXJzZW1vZGU7CkBAIC0zMTgxLDcgKzMxODEsNyBAQCBt YWtlX2V4ZWNzcWxfc3RtdChpbnQgZmlyc3R0b2tlbiwgaW50IGxvY2F0aW9uLCBQTHdvcmQg KndvcmQsIFlZU1RZUEUgKnl5bHZhbHAsCiAKIAljaGVja19zcWxfZXhwcihleHByLT5xdWVy eSwgZXhwci0+cGFyc2VNb2RlLCBsb2NhdGlvbiwgeXlzY2FubmVyKTsKIAotCWV4ZWNzcWwg PSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRfZXhlY3NxbCkpOworCWV4ZWNzcWwgPSBw YWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfZXhlY3NxbCk7CiAJZXhlY3NxbC0+Y21kX3R5 cGUgPSBQTFBHU1FMX1NUTVRfRVhFQ1NRTDsKIAlleGVjc3FsLT5saW5lbm8gPSBwbHBnc3Fs X2xvY2F0aW9uX3RvX2xpbmVubyhsb2NhdGlvbiwgeXlzY2FubmVyKTsKIAlleGVjc3FsLT5z dG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKQEAgLTMyMDgs NyArMzIwOCw3IEBAIHJlYWRfZmV0Y2hfZGlyZWN0aW9uKFlZU1RZUEUgKnl5bHZhbHAsIFlZ TFRZUEUgKnl5bGxvY3AsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIAkgKiBXZSBjcmVhdGUgdGhl IFBMcGdTUUxfc3RtdF9mZXRjaCBzdHJ1Y3QgaGVyZSwgYnV0IG9ubHkgZmlsbCBpbiB0aGUK IAkgKiBmaWVsZHMgYXJpc2luZyBmcm9tIHRoZSBvcHRpb25hbCBkaXJlY3Rpb24gY2xhdXNl CiAJICovCi0JZmV0Y2ggPSAoUExwZ1NRTF9zdG10X2ZldGNoICopIHBhbGxvYzAoc2l6ZW9m KFBMcGdTUUxfc3RtdF9mZXRjaCkpOworCWZldGNoID0gKFBMcGdTUUxfc3RtdF9mZXRjaCAq KSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfZmV0Y2gpOwogCWZldGNoLT5jbWRfdHlw ZSA9IFBMUEdTUUxfU1RNVF9GRVRDSDsKIAlmZXRjaC0+c3RtdGlkID0gKytwbHBnc3FsX2N1 cnJfY29tcGlsZS0+bnN0YXRlbWVudHM7CiAJLyogc2V0IGRpcmVjdGlvbiBkZWZhdWx0czog Ki8KQEAgLTMzNjAsNyArMzM2MCw3IEBAIG1ha2VfcmV0dXJuX3N0bXQoaW50IGxvY2F0aW9u LCBZWVNUWVBFICp5eWx2YWxwLCBZWUxUWVBFICp5eWxsb2NwLCB5eXNjYW5fdCB5eXNjCiB7 CiAJUExwZ1NRTF9zdG10X3JldHVybiAqbmV3OwogCi0JbmV3ID0gcGFsbG9jMChzaXplb2Yo UExwZ1NRTF9zdG10X3JldHVybikpOworCW5ldyA9IHBhbGxvYzBfb2JqZWN0KFBMcGdTUUxf c3RtdF9yZXR1cm4pOwogCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfUkVUVVJOOwog CW5ldy0+bGluZW5vID0gcGxwZ3NxbF9sb2NhdGlvbl90b19saW5lbm8obG9jYXRpb24sIHl5 c2Nhbm5lcik7CiAJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3Rh dGVtZW50czsKQEAgLTM0NDgsNyArMzQ0OCw3IEBAIG1ha2VfcmV0dXJuX25leHRfc3RtdChp bnQgbG9jYXRpb24sIFlZU1RZUEUgKnl5bHZhbHAsIFlZTFRZUEUgKnl5bGxvY3AsIHl5c2Nh bl90CiAJCQkJIGVycm1zZygiY2Fubm90IHVzZSBSRVRVUk4gTkVYVCBpbiBhIG5vbi1TRVRP RiBmdW5jdGlvbiIpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24obG9jYXRpb24pKSk7CiAK LQluZXcgPSBwYWxsb2MwKHNpemVvZihQTHBnU1FMX3N0bXRfcmV0dXJuX25leHQpKTsKKwlu ZXcgPSBwYWxsb2MwX29iamVjdChQTHBnU1FMX3N0bXRfcmV0dXJuX25leHQpOwogCW5ldy0+ Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfUkVUVVJOX05FWFQ7CiAJbmV3LT5saW5lbm8gPSBw bHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhsb2NhdGlvbiwgeXlzY2FubmVyKTsKIAluZXct PnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMzUx Miw3ICszNTEyLDcgQEAgbWFrZV9yZXR1cm5fcXVlcnlfc3RtdChpbnQgbG9jYXRpb24sIFlZ U1RZUEUgKnl5bHZhbHAsIFlZTFRZUEUgKnl5bGxvY3AsIHl5c2Nhbl8KIAkJCQkgZXJybXNn KCJjYW5ub3QgdXNlIFJFVFVSTiBRVUVSWSBpbiBhIG5vbi1TRVRPRiBmdW5jdGlvbiIpLAog CQkJCSBwYXJzZXJfZXJycG9zaXRpb24obG9jYXRpb24pKSk7CiAKLQluZXcgPSBwYWxsb2Mw KHNpemVvZihQTHBnU1FMX3N0bXRfcmV0dXJuX3F1ZXJ5KSk7CisJbmV3ID0gcGFsbG9jMF9v YmplY3QoUExwZ1NRTF9zdG10X3JldHVybl9xdWVyeSk7CiAJbmV3LT5jbWRfdHlwZSA9IFBM UEdTUUxfU1RNVF9SRVRVUk5fUVVFUlk7CiAJbmV3LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0 aW9uX3RvX2xpbmVubyhsb2NhdGlvbiwgeXlzY2FubmVyKTsKIAluZXctPnN0bXRpZCA9ICsr cGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1lbnRzOwpAQCAtMzcwNiwxNCArMzcwNiwx NCBAQCByZWFkX2ludG9fc2NhbGFyX2xpc3QoY2hhciAqaW5pdGlhbF9uYW1lLAogCSAqLwog CXBscGdzcWxfcHVzaF9iYWNrX3Rva2VuKHRvaywgeXlsdmFscCwgeXlsbG9jcCwgeXlzY2Fu bmVyKTsKIAotCXJvdyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdTUUxfcm93KSk7CisJcm93ID0g cGFsbG9jMF9vYmplY3QoUExwZ1NRTF9yb3cpOwogCXJvdy0+ZHR5cGUgPSBQTFBHU1FMX0RU WVBFX1JPVzsKIAlyb3ctPnJlZm5hbWUgPSAiKHVubmFtZWQgcm93KSI7CiAJcm93LT5saW5l bm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhpbml0aWFsX2xvY2F0aW9uLCB5eXNj YW5uZXIpOwogCXJvdy0+cm93dHVwZGVzYyA9IE5VTEw7CiAJcm93LT5uZmllbGRzID0gbmZp ZWxkczsKLQlyb3ctPmZpZWxkbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiBuZmll bGRzKTsKLQlyb3ctPnZhcm5vcyA9IHBhbGxvYyhzaXplb2YoaW50KSAqIG5maWVsZHMpOwor CXJvdy0+ZmllbGRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFyICosIG5maWVsZHMpOworCXJv dy0+dmFybm9zID0gcGFsbG9jX2FycmF5KGludCwgbmZpZWxkcyk7CiAJd2hpbGUgKC0tbmZp ZWxkcyA+PSAwKQogCXsKIAkJcm93LT5maWVsZG5hbWVzW25maWVsZHNdID0gZmllbGRuYW1l c1tuZmllbGRzXTsKQEAgLTM3NDEsMTQgKzM3NDEsMTQgQEAgbWFrZV9zY2FsYXJfbGlzdDEo Y2hhciAqaW5pdGlhbF9uYW1lLAogCiAJY2hlY2tfYXNzaWduYWJsZShpbml0aWFsX2RhdHVt LCBsb2NhdGlvbiwgeXlzY2FubmVyKTsKIAotCXJvdyA9IHBhbGxvYzAoc2l6ZW9mKFBMcGdT UUxfcm93KSk7CisJcm93ID0gcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9yb3cpOwogCXJvdy0+ ZHR5cGUgPSBQTFBHU1FMX0RUWVBFX1JPVzsKIAlyb3ctPnJlZm5hbWUgPSAiKHVubmFtZWQg cm93KSI7CiAJcm93LT5saW5lbm8gPSBsaW5lbm87CiAJcm93LT5yb3d0dXBkZXNjID0gTlVM TDsKIAlyb3ctPm5maWVsZHMgPSAxOwotCXJvdy0+ZmllbGRuYW1lcyA9IHBhbGxvYyhzaXpl b2YoY2hhciAqKSk7Ci0Jcm93LT52YXJub3MgPSBwYWxsb2Moc2l6ZW9mKGludCkpOworCXJv dy0+ZmllbGRuYW1lcyA9IHBhbGxvY19vYmplY3QoY2hhciAqKTsKKwlyb3ctPnZhcm5vcyA9 IHBhbGxvY19vYmplY3QoaW50KTsKIAlyb3ctPmZpZWxkbmFtZXNbMF0gPSBpbml0aWFsX25h bWU7CiAJcm93LT52YXJub3NbMF0gPSBpbml0aWFsX2RhdHVtLT5kbm87CiAKQEAgLTM5NTUs NyArMzk1NSw3IEBAIHJlYWRfY3Vyc29yX2FyZ3MoUExwZ1NRTF92YXIgKmN1cnNvciwgaW50 IHVudGlsLCBZWVNUWVBFICp5eWx2YWxwLCBZWUxUWVBFICp5eWxsCiAJICogUmVhZCB0aGUg YXJndW1lbnRzLCBvbmUgYnkgb25lLgogCSAqLwogCXJvdyA9IChQTHBnU1FMX3JvdyAqKSBw bHBnc3FsX0RhdHVtc1tjdXJzb3ItPmN1cnNvcl9leHBsaWNpdF9hcmdyb3ddOwotCWFyZ3Yg PSAoY2hhciAqKikgcGFsbG9jMChyb3ctPm5maWVsZHMgKiBzaXplb2YoY2hhciAqKSk7CisJ YXJndiA9IChjaGFyICoqKSBwYWxsb2MwX2FycmF5KGNoYXIgKiwgcm93LT5uZmllbGRzKTsK IAogCWZvciAoYXJnYyA9IDA7IGFyZ2MgPCByb3ctPm5maWVsZHM7IGFyZ2MrKykKIAl7CkBA IC00MDkxLDcgKzQwOTEsNyBAQCByZWFkX3JhaXNlX29wdGlvbnMoWVlTVFlQRSAqeXlsdmFs cCwgWVlMVFlQRSAqeXlsbG9jcCwgeXlzY2FuX3QgeXlzY2FubmVyKQogCQlpZiAoKHRvayA9 IHl5bGV4KHl5bHZhbHAsIHl5bGxvY3AsIHl5c2Nhbm5lcikpID09IDApCiAJCQl5eWVycm9y KHl5bGxvY3AsIE5VTEwsIHl5c2Nhbm5lciwgInVuZXhwZWN0ZWQgZW5kIG9mIGZ1bmN0aW9u IGRlZmluaXRpb24iKTsKIAotCQlvcHQgPSAoUExwZ1NRTF9yYWlzZV9vcHRpb24gKikgcGFs bG9jKHNpemVvZihQTHBnU1FMX3JhaXNlX29wdGlvbikpOworCQlvcHQgPSBwYWxsb2Nfb2Jq ZWN0KFBMcGdTUUxfcmFpc2Vfb3B0aW9uKTsKIAogCQlpZiAodG9rX2lzX2tleXdvcmQodG9r LCB5eWx2YWxwLAogCQkJCQkJICAgS19FUlJDT0RFLCAiZXJyY29kZSIpKQpAQCAtNDE4Miw3 ICs0MTgyLDcgQEAgbWFrZV9jYXNlKGludCBsb2NhdGlvbiwgUExwZ1NRTF9leHByICp0X2V4 cHIsCiB7CiAJUExwZ1NRTF9zdG10X2Nhc2UgKm5ldzsKIAotCW5ldyA9IHBhbGxvYyhzaXpl b2YoUExwZ1NRTF9zdG10X2Nhc2UpKTsKKwluZXcgPSBwYWxsb2Nfb2JqZWN0KFBMcGdTUUxf c3RtdF9jYXNlKTsKIAluZXctPmNtZF90eXBlID0gUExQR1NRTF9TVE1UX0NBU0U7CiAJbmV3 LT5saW5lbm8gPSBwbHBnc3FsX2xvY2F0aW9uX3RvX2xpbmVubyhsb2NhdGlvbiwgeXlzY2Fu bmVyKTsKIAluZXctPnN0bXRpZCA9ICsrcGxwZ3NxbF9jdXJyX2NvbXBpbGUtPm5zdGF0ZW1l bnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMgYi9z cmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYwppbmRleCA2NTVhYjFkMDllZS4uNzUw YmE1ODZlMGMgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5j CisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCkBAIC0xNzcsNyArMTc3 LDcgQEAgUEx5X3Byb2NlZHVyZV9jcmVhdGUoSGVhcFR1cGxlIHByb2NUdXAsIE9pZCBmbl9v aWQsIFBMeVRyaWdUeXBlIGlzX3RyaWdnZXIpCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oY3h0KTsKIAotCXByb2MgPSAoUEx5UHJvY2VkdXJlICopIHBhbGxvYzAoc2l6 ZW9mKFBMeVByb2NlZHVyZSkpOworCXByb2MgPSBwYWxsb2MwX29iamVjdChQTHlQcm9jZWR1 cmUpOwogCXByb2MtPm1jeHQgPSBjeHQ7CiAKIAlQR19UUlkoKTsKQEAgLTI5Myw4ICsyOTMs OCBAQCBQTHlfcHJvY2VkdXJlX2NyZWF0ZShIZWFwVHVwbGUgcHJvY1R1cCwgT2lkIGZuX29p ZCwgUEx5VHJpZ1R5cGUgaXNfdHJpZ2dlcikKIAkJCX0KIAogCQkJLyogQWxsb2NhdGUgYXJy YXlzIGZvciBwZXItaW5wdXQtYXJndW1lbnQgZGF0YSAqLwotCQkJcHJvYy0+YXJnbmFtZXMg PSAoY2hhciAqKikgcGFsbG9jMChzaXplb2YoY2hhciAqKSAqIHByb2MtPm5hcmdzKTsKLQkJ CXByb2MtPmFyZ3MgPSAoUEx5RGF0dW1Ub09iICopIHBhbGxvYzAoc2l6ZW9mKFBMeURhdHVt VG9PYikgKiBwcm9jLT5uYXJncyk7CisJCQlwcm9jLT5hcmduYW1lcyA9IChjaGFyICoqKSBw YWxsb2MwX2FycmF5KGNoYXIgKiwgcHJvYy0+bmFyZ3MpOworCQkJcHJvYy0+YXJncyA9IChQ THlEYXR1bVRvT2IgKikgcGFsbG9jMF9hcnJheShQTHlEYXR1bVRvT2IsIHByb2MtPm5hcmdz KTsKIAogCQkJZm9yIChpID0gcG9zID0gMDsgaSA8IHRvdGFsOyBpKyspCiAJCQl7CmRpZmYg LS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV9zcGkuYyBiL3NyYy9wbC9wbHB5dGhvbi9w bHB5X3NwaS5jCmluZGV4IDFlMzg2YWFkY2NhLi40NmYyY2EwZjc5MiAxMDA2NDQKLS0tIGEv c3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlf c3BpLmMKQEAgLTY1LDggKzY1LDggQEAgUEx5X3NwaV9wcmVwYXJlKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncykKIAluYXJncyA9IGxpc3QgPyBQeVNlcXVlbmNlX0xlbmd0aChs aXN0KSA6IDA7CiAKIAlwbGFuLT5uYXJncyA9IG5hcmdzOwotCXBsYW4tPnR5cGVzID0gbmFy Z3MgPyBwYWxsb2MwKHNpemVvZihPaWQpICogbmFyZ3MpIDogTlVMTDsKLQlwbGFuLT5hcmdz ID0gbmFyZ3MgPyBwYWxsb2MwKHNpemVvZihQTHlPYlRvRGF0dW0pICogbmFyZ3MpIDogTlVM TDsKKwlwbGFuLT50eXBlcyA9IG5hcmdzID8gcGFsbG9jMF9hcnJheShPaWQsIG5hcmdzKSA6 IE5VTEw7CisJcGxhbi0+YXJncyA9IG5hcmdzID8gcGFsbG9jMF9hcnJheShQTHlPYlRvRGF0 dW0sIG5hcmdzKSA6IE5VTEw7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jIGIvc3Jj L3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMKaW5kZXggZDg4ZDEwMDY4ZjMuLjFmNjkxMDli MDgxIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uYworKysgYi9z cmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uYwpAQCAtMTM1Myw4ICsxMzUzLDggQEAgUEx5 TWFwcGluZ19Ub0NvbXBvc2l0ZShQTHlPYlRvRGF0dW0gKmFyZywgVHVwbGVEZXNjIGRlc2Ms IFB5T2JqZWN0ICptYXBwaW5nKQogCUFzc2VydChQeU1hcHBpbmdfQ2hlY2sobWFwcGluZykp OwogCiAJLyogQnVpbGQgdHVwbGUgKi8KLQl2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVt KSAqIGRlc2MtPm5hdHRzKTsKLQludWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBkZXNj LT5uYXR0cyk7CisJdmFsdWVzID0gcGFsbG9jX2FycmF5KERhdHVtLCBkZXNjLT5uYXR0cyk7 CisJbnVsbHMgPSBwYWxsb2NfYXJyYXkoYm9vbCwgZGVzYy0+bmF0dHMpOwogCWZvciAoaSA9 IDA7IGkgPCBkZXNjLT5uYXR0czsgKytpKQogCXsKIAkJY2hhcgkgICAqa2V5OwpAQCAtMTQz NSw4ICsxNDM1LDggQEAgUEx5U2VxdWVuY2VfVG9Db21wb3NpdGUoUEx5T2JUb0RhdHVtICph cmcsIFR1cGxlRGVzYyBkZXNjLCBQeU9iamVjdCAqc2VxdWVuY2UpCiAJCQkJIGVycm1zZygi bGVuZ3RoIG9mIHJldHVybmVkIHNlcXVlbmNlIGRpZCBub3QgbWF0Y2ggbnVtYmVyIG9mIGNv bHVtbnMgaW4gcm93IikpKTsKIAogCS8qIEJ1aWxkIHR1cGxlICovCi0JdmFsdWVzID0gcGFs bG9jKHNpemVvZihEYXR1bSkgKiBkZXNjLT5uYXR0cyk7Ci0JbnVsbHMgPSBwYWxsb2Moc2l6 ZW9mKGJvb2wpICogZGVzYy0+bmF0dHMpOworCXZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1 bSwgZGVzYy0+bmF0dHMpOworCW51bGxzID0gcGFsbG9jX2FycmF5KGJvb2wsIGRlc2MtPm5h dHRzKTsKIAlpZHggPSAwOwogCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5uYXR0czsgKytpKQog CXsKQEAgLTE0OTMsOCArMTQ5Myw4IEBAIFBMeUdlbmVyaWNPYmplY3RfVG9Db21wb3NpdGUo UEx5T2JUb0RhdHVtICphcmcsIFR1cGxlRGVzYyBkZXNjLCBQeU9iamVjdCAqb2JqZWN0CiAJ dm9sYXRpbGUgaW50IGk7CiAKIAkvKiBCdWlsZCB0dXBsZSAqLwotCXZhbHVlcyA9IHBhbGxv YyhzaXplb2YoRGF0dW0pICogZGVzYy0+bmF0dHMpOwotCW51bGxzID0gcGFsbG9jKHNpemVv Zihib29sKSAqIGRlc2MtPm5hdHRzKTsKKwl2YWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0s IGRlc2MtPm5hdHRzKTsKKwludWxscyA9IHBhbGxvY19hcnJheShib29sLCBkZXNjLT5uYXR0 cyk7CiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyArK2kpCiAJewogCQljaGFyCSAg ICprZXk7CmRpZmYgLS1naXQgYS9zcmMvcGwvdGNsL3BsdGNsLmMgYi9zcmMvcGwvdGNsL3Bs dGNsLmMKaW5kZXggNzNkNjYwZTg4YTYuLjE4NzY5OGNjZGQyIDEwMDY0NAotLS0gYS9zcmMv cGwvdGNsL3BsdGNsLmMKKysrIGIvc3JjL3BsL3RjbC9wbHRjbC5jCkBAIC0xNTg2LDcgKzE1 ODYsNyBAQCBjb21waWxlX3BsdGNsX2Z1bmN0aW9uKE9pZCBmbl9vaWQsIE9pZCB0Z3JlbG9p ZCwKIAkJICogc3RydWN0IHByb2Rlc2MgYW5kIHN1YnNpZGlhcnkgZGF0YSBtdXN0IGFsbCBs aXZlIGluIHByb2NfY3h0LgogCQkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHByb2NfY3h0KTsKLQkJcHJvZGVzYyA9IChwbHRjbF9wcm9jX2Rlc2Mg KikgcGFsbG9jMChzaXplb2YocGx0Y2xfcHJvY19kZXNjKSk7CisJCXByb2Rlc2MgPSBwYWxs b2MwX29iamVjdChwbHRjbF9wcm9jX2Rlc2MpOwogCQlwcm9kZXNjLT51c2VyX3Byb25hbWUg PSBwc3RyZHVwKHVzZXJfcHJvbmFtZSk7CiAJCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVy KHByb2NfY3h0LCBwcm9kZXNjLT51c2VyX3Byb25hbWUpOwogCQlwcm9kZXNjLT5pbnRlcm5h bF9wcm9uYW1lID0gcHN0cmR1cChpbnRlcm5hbF9wcm9uYW1lKTsKQEAgLTI2NjgsNyArMjY2 OCw3IEBAIHBsdGNsX1NQSV9wcmVwYXJlKENsaWVudERhdGEgY2RhdGEsIFRjbF9JbnRlcnAg KmludGVycCwKIAkJCQkJCQkJCSAiUEwvVGNsIHNwaV9wcmVwYXJlIHF1ZXJ5IiwKIAkJCQkJ CQkJCSBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBs YW5fY3h0KTsKLQlxZGVzYyA9IChwbHRjbF9xdWVyeV9kZXNjICopIHBhbGxvYzAoc2l6ZW9m KHBsdGNsX3F1ZXJ5X2Rlc2MpKTsKKwlxZGVzYyA9IHBhbGxvYzBfb2JqZWN0KHBsdGNsX3F1 ZXJ5X2Rlc2MpOwogCXNucHJpbnRmKHFkZXNjLT5xbmFtZSwgc2l6ZW9mKHFkZXNjLT5xbmFt ZSksICIlcCIsIHFkZXNjKTsKIAlxZGVzYy0+bmFyZ3MgPSBuYXJnczsKIAlxZGVzYy0+YXJn dHlwZXMgPSAoT2lkICopIHBhbGxvYyhuYXJncyAqIHNpemVvZihPaWQpKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vZHVtbXlfaW5kZXhfYW0uYyBi L3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vZHVtbXlfaW5kZXhfYW0uYwppbmRl eCA5NGVmNjM5YjZmYy4uYTM0MzgyYTVmNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvZHVtbXlfaW5kZXhfYW0vZHVtbXlfaW5kZXhfYW0uYworKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMKQEAgLTEzOCw3ICsxMzgsNyBA QCBkaWJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlu ZGV4SW5mbykKIHsKIAlJbmRleEJ1aWxkUmVzdWx0ICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAo SW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsK KwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCiAJLyogbGV0 J3MgcHJldGVuZCB0aGF0IG5vIHR1cGxlcyB3ZXJlIHNjYW5uZWQgKi8KIAlyZXN1bHQtPmhl YXBfdHVwbGVzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25h bWVfb3BzL3NwZ2lzdF9uYW1lX29wcy5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFt ZV9vcHMvc3BnaXN0X25hbWVfb3BzLmMKaW5kZXggMzhlNTRlMGUwYTQuLmYzMmRmYjMxN2Zh IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9zcGdpc3Rf bmFtZV9vcHMuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9zcGdp c3RfbmFtZV9vcHMuYwpAQCAtMTcxLDcgKzE3MSw3IEBAIHNwZ2lzdF9uYW1lX2Nob29zZShQ R19GVU5DVElPTl9BUkdTKQogCQkJfQogCQkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVm aXhOTm9kZXMgPSAxOwogCQkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOb2RlTGFi ZWxzID0KLQkJCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOworCQkJCXBhbGxv Y19vYmplY3QoRGF0dW0pOwogCQkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wcmVmaXhOb2Rl TGFiZWxzWzBdID0KIAkJCQlJbnQxNkdldERhdHVtKCoodW5zaWduZWQgY2hhciAqKSAocHJl Zml4U3RyICsgY29tbW9uTGVuKSk7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBzcGdpc3RfbmFt ZV9jaG9vc2UoUEdfRlVOQ1RJT05fQVJHUykKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5w cmVmaXhIYXNQcmVmaXggPSBpbi0+aGFzUHJlZml4OwogCQlvdXQtPnJlc3VsdC5zcGxpdFR1 cGxlLnByZWZpeFByZWZpeERhdHVtID0gaW4tPnByZWZpeERhdHVtOwogCQlvdXQtPnJlc3Vs dC5zcGxpdFR1cGxlLnByZWZpeE5Ob2RlcyA9IDE7Ci0JCW91dC0+cmVzdWx0LnNwbGl0VHVw bGUucHJlZml4Tm9kZUxhYmVscyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7 CisJCW91dC0+cmVzdWx0LnNwbGl0VHVwbGUucHJlZml4Tm9kZUxhYmVscyA9IHBhbGxvY19v YmplY3QoRGF0dW0pOwogCQlvdXQtPnJlc3VsdC5zcGxpdFR1cGxlLnByZWZpeE5vZGVMYWJl bHNbMF0gPSBJbnQxNkdldERhdHVtKC0yKTsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5j aGlsZE5vZGVOID0gMDsKIAkJb3V0LT5yZXN1bHQuc3BsaXRUdXBsZS5wb3N0Zml4SGFzUHJl Zml4ID0gZmFsc2U7CkBAIC0zMTgsOSArMzE4LDkgQEAgc3BnaXN0X25hbWVfaW5uZXJfY29u c2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCSAqIGFuZCBzZWUgaWYgaXQncyBjb25zaXN0 ZW50IHdpdGggdGhlIHF1ZXJ5LiAgSWYgc28sIGVtaXQgYW4gZW50cnkgaW50bwogCSAqIHRo ZSBvdXRwdXQgYXJyYXlzLgogCSAqLwotCW91dC0+bm9kZU51bWJlcnMgPSAoaW50ICopIHBh bGxvYyhzaXplb2YoaW50KSAqIGluLT5uTm9kZXMpOwotCW91dC0+bGV2ZWxBZGRzID0gKGlu dCAqKSBwYWxsb2Moc2l6ZW9mKGludCkgKiBpbi0+bk5vZGVzKTsKLQlvdXQtPnJlY29uc3Ry dWN0ZWRWYWx1ZXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBpbi0+bk5v ZGVzKTsKKwlvdXQtPm5vZGVOdW1iZXJzID0gcGFsbG9jX2FycmF5KGludCwgaW4tPm5Ob2Rl cyk7CisJb3V0LT5sZXZlbEFkZHMgPSBwYWxsb2NfYXJyYXkoaW50LCBpbi0+bk5vZGVzKTsK KwlvdXQtPnJlY29uc3RydWN0ZWRWYWx1ZXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGluLT5u Tm9kZXMpOwogCW91dC0+bk5vZGVzID0gMDsKIAogCWZvciAoaSA9IDA7IGkgPCBpbi0+bk5v ZGVzOyBpKyspCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L3Rlc3RfYml0bWFwc2V0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rl c3RfYml0bWFwc2V0LmMKaW5kZXggODE2MjI4NWZjYjMuLjY5MzgzYTk4ZTM3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5j CkBAIC02MjIsNyArNjIyLDcgQEAgdGVzdF9yYW5kb21fb3BlcmF0aW9ucyhQR19GVU5DVElP Tl9BUkdTKQogCSAqIHN0aWxsIHBvc3NpYmxlIGlmIGFsbCB0aGUgb3BlcmF0aW9ucyBoaXQg dGhlICIwIiBjYXNlIGR1cmluZyBwaGFzZSA0CiAJICogd2hlcmUgbXVsdGlwbGUgb3BlcmF0 aW9uIHR5cGVzIGFyZSBtaXhlZCB0b2dldGhlci4KIAkgKi8KLQltZW1iZXJzID0gcGFsbG9j KHNpemVvZihpbnQpICogbnVtX29wcyk7CisJbWVtYmVycyA9IHBhbGxvY19hcnJheShpbnQs IG51bV9vcHMpOwogCiAJLyogUGhhc2UgMTogUmFuZG9tIGluc2VydGlvbnMgaW4gZmlyc3Qg c2V0ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb3BzIC8gMjsgaSsrKQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2ludGVnZXJzZXQvdGVzdF9pbnRlZ2Vyc2V0 LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaW50ZWdlcnNldC90ZXN0X2ludGVnZXJzZXQu YwppbmRleCBjZmRjNjc2Mjc4NS4uN2FjMWZlNmNiMjMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9pbnRlZ2Vyc2V0L3Rlc3RfaW50ZWdlcnNldC5jCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9pbnRlZ2Vyc2V0L3Rlc3RfaW50ZWdlcnNldC5jCkBAIC0zODUs NyArMzg1LDcgQEAgdGVzdF9zaW5nbGVfdmFsdWVfYW5kX2ZpbGxlcih1aW50NjQgdmFsdWUs IHVpbnQ2NCBmaWxsZXJfbWluLCB1aW50NjQgZmlsbGVyX21heCkKIAogCWludHNldCA9IGlu dHNldF9jcmVhdGUoKTsKIAotCWl0ZXJfZXhwZWN0ZWQgPSBwYWxsb2Moc2l6ZW9mKHVpbnQ2 NCkgKiAoZmlsbGVyX21heCAtIGZpbGxlcl9taW4gKyAxKSk7CisJaXRlcl9leHBlY3RlZCA9 IHBhbGxvY19hcnJheSh1aW50NjQsIGZpbGxlcl9tYXggLSBmaWxsZXJfbWluICsgMSk7CiAJ aWYgKHZhbHVlIDwgZmlsbGVyX21pbikKIAl7CiAJCWludHNldF9hZGRfbWVtYmVyKGludHNl dCwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2pzb25fcGFy c2VyL3Rlc3RfanNvbl9wYXJzZXJfaW5jcmVtZW50YWwuYyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9qc29uX3BhcnNlci90ZXN0X2pzb25fcGFyc2VyX2luY3JlbWVudGFsLmMKaW5kZXgg OGM3ODA2MWVlNDYuLmE5NWFjNzk4NDgxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfanNvbl9wYXJzZXIvdGVzdF9qc29uX3BhcnNlcl9pbmNyZW1lbnRhbC5jCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9qc29uX3BhcnNlci90ZXN0X2pzb25fcGFyc2VyX2lu Y3JlbWVudGFsLmMKQEAgLTEyNCw3ICsxMjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3MnOgkJCS8qIGRvIHNlbWFudGljIHByb2Nl c3NpbmcgKi8KIAkJCQl0ZXN0c2VtID0gJnNlbTsKLQkJCQlzZW0uc2Vtc3RhdGUgPSBwYWxs b2Moc2l6ZW9mKHN0cnVjdCBEb1N0YXRlKSk7CisJCQkJc2VtLnNlbXN0YXRlID0gcGFsbG9j X29iamVjdChzdHJ1Y3QgRG9TdGF0ZSk7CiAJCQkJKChzdHJ1Y3QgRG9TdGF0ZSAqKSBzZW0u c2Vtc3RhdGUpLT5sZXggPSBsZXg7CiAJCQkJKChzdHJ1Y3QgRG9TdGF0ZSAqKSBzZW0uc2Vt c3RhdGUpLT5idWYgPSBtYWtlU3RyaW5nSW5mbygpOwogCQkJCW5lZWRfc3RyaW5ncyA9IHRy dWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGFyc2VyL3Rlc3RfcGFy c2VyLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGFyc2VyL3Rlc3RfcGFyc2VyLmMKaW5k ZXggMTVlZDM2MTdjYjUuLjM1M2Y5MDcyODE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfcGFyc2VyL3Rlc3RfcGFyc2VyLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3BhcnNlci90ZXN0X3BhcnNlci5jCkBAIC00Niw3ICs0Niw3IEBAIFBHX0ZVTkNUSU9O X0lORk9fVjEodGVzdHByc19sZXh0eXBlKTsKIERhdHVtCiB0ZXN0cHJzX3N0YXJ0KFBHX0ZV TkNUSU9OX0FSR1MpCiB7Ci0JUGFyc2VyU3RhdGUgKnBzdCA9IChQYXJzZXJTdGF0ZSAqKSBw YWxsb2MwKHNpemVvZihQYXJzZXJTdGF0ZSkpOworCVBhcnNlclN0YXRlICpwc3QgPSBwYWxs b2MwX29iamVjdChQYXJzZXJTdGF0ZSk7CiAKIAlwc3QtPmJ1ZmZlciA9IChjaGFyICopIFBH X0dFVEFSR19QT0lOVEVSKDApOwogCXBzdC0+bGVuID0gUEdfR0VUQVJHX0lOVDMyKDEpOwpA QCAtMTEyLDcgKzExMiw3IEBAIHRlc3RwcnNfbGV4dHlwZShQR19GVU5DVElPTl9BUkdTKQog CSAqIHRoZSBzYW1lIGxleGlkcyBsaWtlIFRlb2RvciBpbiB0aGUgZGVmYXVsdCB3b3JkIHBh cnNlcjsgaW4gdGhpcyB3YXkgd2UKIAkgKiBjYW4gcmV1c2UgdGhlIGhlYWRsaW5lIGZ1bmN0 aW9uIG9mIHRoZSBkZWZhdWx0IHdvcmQgcGFyc2VyLgogCSAqLwotCUxleERlc2NyICAgKmRl c2NyID0gKExleERlc2NyICopIHBhbGxvYyhzaXplb2YoTGV4RGVzY3IpICogKDIgKyAxKSk7 CisJTGV4RGVzY3IgICAqZGVzY3IgPSBwYWxsb2NfYXJyYXkoTGV4RGVzY3IsIDIgKyAxKTsK IAogCS8qIHRoZXJlIGFyZSBvbmx5IHR3byB0eXBlcyBpbiB0aGlzIHBhcnNlciAqLwogCWRl c2NyWzBdLmxleGlkID0gMzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9y YWRpeHRyZWUvdGVzdF9yYWRpeHRyZWUuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yYWRp eHRyZWUvdGVzdF9yYWRpeHRyZWUuYwppbmRleCA2MDZkOGQzY2QyZC4uMDMxZTg3MzdkNDUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yYWRpeHRyZWUvdGVzdF9yYWRp eHRyZWUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmFkaXh0cmVlL3Rlc3RfcmFk aXh0cmVlLmMKQEAgLTE4Myw3ICsxODMsNyBAQCB0ZXN0X2Jhc2ljKHJ0X25vZGVfY2xhc3Nf dGVzdF9lbGVtICp0ZXN0X2luZm8sIGludCBzaGlmdCwgYm9vbCBhc2MpCiAJZWxvZyhOT1RJ Q0UsICJ0ZXN0aW5nIG5vZGUgJXMgd2l0aCBzaGlmdCAlZCBhbmQgJXMga2V5cyIsCiAJCSB0 ZXN0X2luZm8tPmNsYXNzX25hbWUsIHNoaWZ0LCBhc2MgPyAiYXNjZW5kaW5nIiA6ICJkZXNj ZW5kaW5nIik7CiAKLQlrZXlzID0gcGFsbG9jKHNpemVvZih1aW50NjQpICogY2hpbGRyZW4p OworCWtleXMgPSBwYWxsb2NfYXJyYXkodWludDY0LCBjaGlsZHJlbik7CiAJZm9yIChpbnQg aSA9IDA7IGkgPCBjaGlsZHJlbjsgaSsrKQogCXsKIAkJaWYgKGFzYykKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yZWdleC90ZXN0X3JlZ2V4LmMgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfcmVnZXgvdGVzdF9yZWdleC5jCmluZGV4IDI1NDhhMGVmN2IxLi42NzVh NjY3NDczNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JlZ2V4L3Rlc3Rf cmVnZXguYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVnZXgvdGVzdF9yZWdleC5j CkBAIC0xMDcsMTAgKzEwNyw4IEBAIHRlc3RfcmVnZXgoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogUHJlLWNyZWF0ZSB3b3Jrc3BhY2UgdGhhdCBidWls ZF90ZXN0X21hdGNoX3Jlc3VsdCBuZWVkcyAqLwotCQltYXRjaGN0eC0+ZWxlbXMgPSAoRGF0 dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKgotCQkJCQkJCQkJCSAgIChtYXRjaGN0eC0+ bnBhdHRlcm5zICsgMSkpOwotCQltYXRjaGN0eC0+bnVsbHMgPSAoYm9vbCAqKSBwYWxsb2Mo c2l6ZW9mKGJvb2wpICoKLQkJCQkJCQkJCQkgIChtYXRjaGN0eC0+bnBhdHRlcm5zICsgMSkp OworCQltYXRjaGN0eC0+ZWxlbXMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIG1hdGNoY3R4LT5u cGF0dGVybnMgKyAxKTsKKwkJbWF0Y2hjdHgtPm51bGxzID0gcGFsbG9jX2FycmF5KGJvb2ws IG1hdGNoY3R4LT5ucGF0dGVybnMgKyAxKTsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IG1hdGNoY3R4OwpAQCAtNDM2 LDcgKzQzNCw3IEBAIHNldHVwX3Rlc3RfbWF0Y2hlcyh0ZXh0ICpvcmlnX3N0ciwKIAkJCQkg ICBPaWQgY29sbGF0aW9uLAogCQkJCSAgIGJvb2wgdXNlX3N1YnBhdHRlcm5zKQogewotCXRl c3RfcmVnZXhfY3R4ICptYXRjaGN0eCA9IHBhbGxvYzAoc2l6ZW9mKHRlc3RfcmVnZXhfY3R4 KSk7CisJdGVzdF9yZWdleF9jdHggKm1hdGNoY3R4ID0gcGFsbG9jMF9vYmplY3QodGVzdF9y ZWdleF9jdHgpOwogCWludAkJCWVtbCA9IHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5n dGgoKTsKIAlpbnQJCQlvcmlnX2xlbjsKIAlwZ193Y2hhciAgICp3aWRlX3N0cjsKQEAgLTQ1 Nyw3ICs0NTUsNyBAQCBzZXR1cF90ZXN0X21hdGNoZXModGV4dCAqb3JpZ19zdHIsCiAKIAkv KiBjb252ZXJ0IHN0cmluZyB0byBwZ193Y2hhciBmb3JtIGZvciBtYXRjaGluZyAqLwogCW9y aWdfbGVuID0gVkFSU0laRV9BTllfRVhIRFIob3JpZ19zdHIpOwotCXdpZGVfc3RyID0gKHBn X3djaGFyICopIHBhbGxvYyhzaXplb2YocGdfd2NoYXIpICogKG9yaWdfbGVuICsgMSkpOwor CXdpZGVfc3RyID0gcGFsbG9jX2FycmF5KHBnX3djaGFyLCBvcmlnX2xlbiArIDEpOwogCXdp ZGVfbGVuID0gcGdfbWIyd2NoYXJfd2l0aF9sZW4oVkFSREFUQV9BTlkob3JpZ19zdHIpLCB3 aWRlX3N0ciwgb3JpZ19sZW4pOwogCiAJLyogZG8gd2Ugd2FudCB0byByZW1lbWJlciBzdWJw YXR0ZXJucz8gKi8KQEAgLTQ3NCw3ICs0NzIsNyBAQCBzZXR1cF90ZXN0X21hdGNoZXModGV4 dCAqb3JpZ19zdHIsCiAJfQogCiAJLyogdGVtcG9yYXJ5IG91dHB1dCBzcGFjZSBmb3IgUkUg cGFja2FnZSAqLwotCXBtYXRjaCA9IHBhbGxvYyhzaXplb2YocmVnbWF0Y2hfdCkgKiBwbWF0 Y2hfbGVuKTsKKwlwbWF0Y2ggPSBwYWxsb2NfYXJyYXkocmVnbWF0Y2hfdCwgcG1hdGNoX2xl bik7IAogCiAJLyoKIAkgKiB0aGUgcmVhbCBvdXRwdXQgc3BhY2UgKGdyb3duIGR5bmFtaWNh bGx5IGlmIG5lZWRlZCkKQEAgLTQ4Myw3ICs0ODEsNyBAQCBzZXR1cF90ZXN0X21hdGNoZXMo dGV4dCAqb3JpZ19zdHIsCiAJICogdGhhbiBhdCAyXjI3CiAJICovCiAJYXJyYXlfbGVuID0g cmVfZmxhZ3MtPmdsb2IgPyAyNTUgOiAzMTsKLQltYXRjaGN0eC0+bWF0Y2hfbG9jcyA9IChp bnQgKikgcGFsbG9jKHNpemVvZihpbnQpICogYXJyYXlfbGVuKTsKKwltYXRjaGN0eC0+bWF0 Y2hfbG9jcyA9IHBhbGxvY19hcnJheShpbnQsIGFycmF5X2xlbik7CiAJYXJyYXlfaWR4ID0g MDsKIAogCS8qIHNlYXJjaCBmb3IgdGhlIHBhdHRlcm4sIHBlcmhhcHMgcmVwZWF0ZWRseSAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jlc293bmVyL3Rlc3RfcmVz b3duZXJfbWFueS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jlc293bmVyL3Rlc3RfcmVz b3duZXJfbWFueS5jCmluZGV4IDFmNjQ5Mzk0MDRmLi5lNDNmOTExMjQ0YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Jlc293bmVyL3Rlc3RfcmVzb3duZXJfbWFueS5j CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yZXNvd25lci90ZXN0X3Jlc293bmVyX21h bnkuYwpAQCAtMTIxLDcgKzEyMSw3IEBAIFJlbWVtYmVyTWFueVRlc3RSZXNvdXJjZXMoUmVz b3VyY2VPd25lciBvd25lciwKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbnJlc291cmNlczsg aSsrKQogCXsKLQkJTWFueVRlc3RSZXNvdXJjZSAqbXJlcyA9IHBhbGxvYyhzaXplb2YoTWFu eVRlc3RSZXNvdXJjZSkpOworCQlNYW55VGVzdFJlc291cmNlICptcmVzID0gcGFsbG9jX29i amVjdChNYW55VGVzdFJlc291cmNlKTsKIAogCQltcmVzLT5raW5kID0gJmtpbmRzW2tpbmRf aWR4XTsKIAkJZGxpc3Rfbm9kZV9pbml0KCZtcmVzLT5ub2RlKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYwppbmRleCBiMWYx NjFjZjdiYi4uODY0NTNmOTYxNDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9ybHNfaG9va3MvdGVzdF9ybHNfaG9va3MuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmxzX2hvb2tzL3Rlc3RfcmxzX2hvb2tzLmMKQEAgLTQ0LDcgKzQ0LDcgQEAgTGlzdCAq CiB0ZXN0X3Jsc19ob29rc19wZXJtaXNzaXZlKENtZFR5cGUgY21kdHlwZSwgUmVsYXRpb24g cmVsYXRpb24pCiB7CiAJTGlzdAkgICAqcG9saWNpZXMgPSBOSUw7Ci0JUm93U2VjdXJpdHlQ b2xpY3kgKnBvbGljeSA9IHBhbGxvYzAoc2l6ZW9mKFJvd1NlY3VyaXR5UG9saWN5KSk7CisJ Um93U2VjdXJpdHlQb2xpY3kgKnBvbGljeSA9IHBhbGxvYzBfb2JqZWN0KFJvd1NlY3VyaXR5 UG9saWN5KTsKIAlEYXR1bQkJcm9sZTsKIAlGdW5jQ2FsbCAgICpuOwogCU5vZGUJICAgKmU7 CkBAIC0xMTIsNyArMTEyLDcgQEAgTGlzdCAqCiB0ZXN0X3Jsc19ob29rc19yZXN0cmljdGl2 ZShDbWRUeXBlIGNtZHR5cGUsIFJlbGF0aW9uIHJlbGF0aW9uKQogewogCUxpc3QJICAgKnBv bGljaWVzID0gTklMOwotCVJvd1NlY3VyaXR5UG9saWN5ICpwb2xpY3kgPSBwYWxsb2MwKHNp emVvZihSb3dTZWN1cml0eVBvbGljeSkpOworCVJvd1NlY3VyaXR5UG9saWN5ICpwb2xpY3kg PSBwYWxsb2MwX29iamVjdChSb3dTZWN1cml0eVBvbGljeSk7CiAJRGF0dW0JCXJvbGU7CiAJ RnVuY0NhbGwgICAqbjsKIAlOb2RlCSAgICplOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2Vy X3NwaS93b3JrZXJfc3BpLmMKaW5kZXggYmVhODMzOWY0NjQuLjFhMjFiOGM4ODc2IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKQEAgLTE0Miw3ICsx NDIsNyBAQCB3b3JrZXJfc3BpX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJY2hhcgkgICAqcDsK IAliaXRzMzIJCWZsYWdzID0gMDsKIAotCXRhYmxlID0gcGFsbG9jKHNpemVvZih3b3JrdGFi bGUpKTsKKwl0YWJsZSA9IHBhbGxvY19vYmplY3Qod29ya3RhYmxlKTsKIAlzcHJpbnRmKG5h bWUsICJzY2hlbWElZCIsIGluZGV4KTsKIAl0YWJsZS0+c2NoZW1hID0gcHN0cmR1cChuYW1l KTsKIAl0YWJsZS0+bmFtZSA9IHBzdHJkdXAoImNvdW50ZWQiKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jIGIvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMK aW5kZXggNTZjYzA1NjdiMWMuLmMyNzMwNWNmMTBiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3JlZ3Jlc3MuYworKysgYi9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYwpAQCAt MTk4LDcgKzE5OCw3IEBAIHdpZGdldF9pbihQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJt c2coImludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLAogCQkJCQkJ IndpZGdldCIsIHN0cikpKTsKIAotCXJlc3VsdCA9IChXSURHRVQgKikgcGFsbG9jKHNpemVv ZihXSURHRVQpKTsKKwlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KFdJREdFVCk7CiAJcmVzdWx0 LT5jZW50ZXIueCA9IGF0b2YoY29vcmRbMF0pOwogCXJlc3VsdC0+Y2VudGVyLnkgPSBhdG9m KGNvb3JkWzFdKTsKIAlyZXN1bHQtPnJhZGl1cyA9IGF0b2YoY29vcmRbMl0pOwpkaWZmIC0t Z2l0IGEvc3JjL3RpbWV6b25lL3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXgg NTA0YzAyMzVmZmIuLjUwNWEyZDMzODM5IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0 ei5jCisrKyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKQEAgLTM5Niw3ICszOTYsNyBAQCBzdHJ1 Y3QgcGdfdHplbnVtCiBwZ190emVudW0gKgogcGdfdHplbnVtZXJhdGVfc3RhcnQodm9pZCkK IHsKLQlwZ190emVudW0gICpyZXQgPSAocGdfdHplbnVtICopIHBhbGxvYzAoc2l6ZW9mKHBn X3R6ZW51bSkpOworCXBnX3R6ZW51bSAgKnJldCA9IHBhbGxvYzBfb2JqZWN0KHBnX3R6ZW51 bSk7CiAJY2hhcgkgICAqc3RhcnRkaXIgPSBwc3RyZHVwKHBnX1RaRElSKCkpOwogCiAJcmV0 LT5iYXNlbGVuID0gc3RybGVuKHN0YXJ0ZGlyKSArIDE7CmRpZmYgLS1naXQgYS9zcmMvdHV0 b3JpYWwvY29tcGxleC5jIGIvc3JjL3R1dG9yaWFsL2NvbXBsZXguYwppbmRleCA2Nzk4YTll NmJhNi4uNDZkYzU0ZTYyZDAgMTAwNjQ0Ci0tLSBhL3NyYy90dXRvcmlhbC9jb21wbGV4LmMK KysrIGIvc3JjL3R1dG9yaWFsL2NvbXBsZXguYwpAQCAtNDEsNyArNDEsNyBAQCBjb21wbGV4 X2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCiAJCQkJCQkiY29tcGxleCIsIHN0cikpKTsKIAot CXJlc3VsdCA9IChDb21wbGV4ICopIHBhbGxvYyhzaXplb2YoQ29tcGxleCkpOworCXJlc3Vs dCA9IHBhbGxvY19vYmplY3QoQ29tcGxleCk7CiAJcmVzdWx0LT54ID0geDsKIAlyZXN1bHQt PnkgPSB5OwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CkBAIC03Myw3ICs3Myw3IEBA IGNvbXBsZXhfcmVjdihQR19GVU5DVElPTl9BUkdTKQogCVN0cmluZ0luZm8JYnVmID0gKFN0 cmluZ0luZm8pIFBHX0dFVEFSR19QT0lOVEVSKDApOwogCUNvbXBsZXggICAgKnJlc3VsdDsK IAotCXJlc3VsdCA9IChDb21wbGV4ICopIHBhbGxvYyhzaXplb2YoQ29tcGxleCkpOworCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoQ29tcGxleCk7CiAJcmVzdWx0LT54ID0gcHFfZ2V0bXNn ZmxvYXQ4KGJ1Zik7CiAJcmVzdWx0LT55ID0gcHFfZ2V0bXNnZmxvYXQ4KGJ1Zik7CiAJUEdf UkVUVVJOX1BPSU5URVIocmVzdWx0KTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBjb21wbGV4X2Fk ZChQR19GVU5DVElPTl9BUkdTKQogCUNvbXBsZXggICAgKmIgPSAoQ29tcGxleCAqKSBQR19H RVRBUkdfUE9JTlRFUigxKTsKIAlDb21wbGV4ICAgICpyZXN1bHQ7CiAKLQlyZXN1bHQgPSAo Q29tcGxleCAqKSBwYWxsb2Moc2l6ZW9mKENvbXBsZXgpKTsKKwlyZXN1bHQgPSBwYWxsb2Nf b2JqZWN0KENvbXBsZXgpOwogCXJlc3VsdC0+eCA9IGEtPnggKyBiLT54OwogCXJlc3VsdC0+ eSA9IGEtPnkgKyBiLT55OwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CmRpZmYgLS1n aXQgYS9zcmMvdHV0b3JpYWwvZnVuY3MuYyBiL3NyYy90dXRvcmlhbC9mdW5jcy5jCmluZGV4 IDNjYzk0NTM0MTg3Li44MDg4MmNmMTQxNCAxMDA2NDQKLS0tIGEvc3JjL3R1dG9yaWFsL2Z1 bmNzLmMKKysrIGIvc3JjL3R1dG9yaWFsL2Z1bmNzLmMKQEAgLTUwLDcgKzUwLDcgQEAgbWFr ZXBvaW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJUG9pbnQJICAgKnBvaW50eCA9IFBHX0dF VEFSR19QT0lOVF9QKDApOwogCVBvaW50CSAgICpwb2ludHkgPSBQR19HRVRBUkdfUE9JTlRf UCgxKTsKLQlQb2ludAkgICAqbmV3X3BvaW50ID0gKFBvaW50ICopIHBhbGxvYyhzaXplb2Yo UG9pbnQpKTsKKwlQb2ludAkgICAqbmV3X3BvaW50ID0gcGFsbG9jX29iamVjdChQb2ludCk7 CiAKIAluZXdfcG9pbnQtPnggPSBwb2ludHgtPng7CiAJbmV3X3BvaW50LT55ID0gcG9pbnR5 LT55OwotLSAKMi41MS4wCgo= --------------giIkXAo2250vdCFmrrdP2tgv--