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 1w8xYP-0013Ev-2C for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 09:44:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8xYO-00FumM-0j for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 09:44:32 +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 1w8xYN-00FumC-0f for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 09:44:32 +0000 Received: from mail-qt1-x830.google.com ([2607:f8b0:4864:20::830]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8xYK-00000000V9c-1PcB for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 09:44:30 +0000 Received: by mail-qt1-x830.google.com with SMTP id d75a77b69052e-5062fc5d86aso23955331cf.1 for ; Sat, 04 Apr 2026 02:44:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775295867; cv=none; d=google.com; s=arc-20240605; b=KwHqZHI446fOaJPydu3ePgney/3/yp6kZimqvB/fZpgy+5pS+mG2kYX/lYQwcMJ6qs N+3mTgBgSDS6rf8F1wImFI5296dS74OATH62EBksJbUDRA9KB2OXOIqFBJJpO3YgB0wJ izhIh8pxK/E5ZS9V5/KFacEz/4eh1CLtoft6GKZ1bEgtGoUUB99uYGSSZ2uvn+h/n/93 6ImSPpUDfttQCcOzQQk+jAkbHmnIXVR0KrLIv5mSW7tSEYbHrrQLioCDsURsSab8si97 UF4W+KmhQpw7TkSxfEFVydOFXna0z586+rGV3ob7QM/uIN0Yg1CFpFDQZ/Hc6wTqUzZ2 dE1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=gAApfpnBt+o9QS0jasu+xk5e2jmQ87W6Tuk8MqIgqSI=; fh=un8bPsR3r3WIxTi5mJlb6IBxSB9whojfeXkRwJA7b6c=; b=ZJSb5RE+8PCB40CHgBlB+Yhz8vSs63tbwLnSksiJW+5KRSGHR6+baAbhfZ+4p8Vsz2 wkdpaTBWdQI8gMinzix9fOgkVakN/XjJQmIFMgL59jBmLyKoxKy0dtfTLdW1ubxyI0Xb 9ndaqU2P+0HXU/3EHADIrBJtmC4v5O+hXM+fTz6MC1W+KsFZ/RoMXvU6oZ8+efQeX3l4 PWBNsC6pzIEkivcyTJk6GiQ6podw0zz+Ogk5jXqfhOe6dk8EfWZhKMLypNDRubHZUObu 2Ni35hI7mfg4aX6DjxQH04gDNeiPuV41ks7H2CiPwnqiUaPmXHbC4OarfAiW94cvWclP EOvQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1775295867; x=1775900667; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=gAApfpnBt+o9QS0jasu+xk5e2jmQ87W6Tuk8MqIgqSI=; b=itn47yLqz75eCL6iX5bzkKYFVZqcWpYjaIlaS3fw6Yj52PKH61mOJjowCvmfJ2Zvf9 EzMCUMaFGLW0rv/aKD0TK4Vj8gN5Om70tQG6eBxfi6NxlEg1qxElDw1BSWmZCmv/jo35 1f7s9vA6au5r594tZ0hBBURmDoObK2NXJwuns= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775295867; x=1775900667; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=gAApfpnBt+o9QS0jasu+xk5e2jmQ87W6Tuk8MqIgqSI=; b=AqfNBew9DQQNc3LXKRFx2CFrJowtBmYb4CoAWPSKKL3w1VQxUd4yAIWj9OEXfuGcWf gvejBQj56APTodi6aZE0ben5+KdHSU3aUK7+blM9y6fysEd8uI+oBDwVWSj0Z91cdok3 6JjV+Qm+n+VhTkj9J2s2zl2mKIHKfgvNQipEhJ+TkdfjHCgJnUlcWd8f1KZKdpmNiSrs VzVa+7ekMezp6LR+VSvZ8cORg2cIeQw/S9w2mAuqM4dP6Fm0RyOWinzNKXIjzaE4IS9Q rPMqRc/QSGcMfRRWGwlIf1u+kywXbEdZPDqIhYypN9zFi/7wCLmnccKNr+UWnqC5Ad3K zsrg== X-Forwarded-Encrypted: i=1; AJvYcCWmX8gMzHs04gdRkwnoovtdk5+W7zXb5nxTzIGtkuaDgHfbZpDafv2xuzTcfhtkG0RS0rmb8M+dR5q/omJw@lists.postgresql.org X-Gm-Message-State: AOJu0YwU1nuBcrHypk4x0Eww0oh7Oe/wdbG4mdqdlro/9KZhf4M6ww3I 4AoHYdoBZJU9Yo4ZOb/AbAYa3IxjjrciGqTmy7prqcmZIKsVwi0hDJPRU3Ya84jZ3RMhcqMivcx CLoiHpndLlTZpxu1vO7LZZCti6yXBjjtz6I0PANmV X-Gm-Gg: AeBDievJYea7cXCkqiFXmtwKc82R8eLlfPWfB/57USPXaZPsAqeU7JMYQ//7qQVNJlx t6borBrz3Fjy8o5+w6ICZxZHUXH/oQfN/ooX5suX4KRe7GfzS8jM2BN5zuO9VZnIl3sbRQMdRX8 Ytqn1yA2ABv0ycUUjWaBroFmp1p+ZUZaelFBnYrvrtvwFh76krOiIF+XvhqRgakE4dTujUXmGc/ HdLeI+i1db6CGTurTQG9uuEhGJa1i9Y+L3lrbTn4GXxVX2Df6LtR1RaS/us3jtfYrx0QjO+jrwo 8alxovH/l5kBXL+BvvfkHv2qUMQuV+inXBYEWX26 X-Received: by 2002:a05:622a:5e8f:b0:50b:567a:e915 with SMTP id d75a77b69052e-50d62b7069emr73908781cf.64.1775295867416; Sat, 04 Apr 2026 02:44:27 -0700 (PDT) MIME-Version: 1.0 References: <06086cb4-881b-4f5a-96af-f275220ff52d@vondra.me> In-Reply-To: From: Lukas Fittl Date: Sat, 4 Apr 2026 02:43:50 -0700 X-Gm-Features: AQROBzDF6VhKa70_z62Z6k-CbTHCDVbOKCnCnGt-QQbVqIoGoXXcq5EWlKafmV0 Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Andres Freund , PostgreSQL Hackers Cc: Zsolt Parragi , Tomas Vondra , Peter Smith , Heikki Linnakangas Content-Type: multipart/mixed; boundary="0000000000008dc0d4064e9f4706" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008dc0d4064e9f4706 Content-Type: text/plain; charset="UTF-8" Hi, Attached v12, rebased, otherwise no changes. I realize time to freeze is getting close, and whilst I'd love to see this go in, I'm also realistic - so I'll just do my best to support review in the off chance we can make it for this release. On that note, I think 0001 and 0002 are independently useful refactorings to split the different kinds of instrumentation that should be ready to go, and I don't think should conflict much with other patches in this commitfest. Thanks, Lukas -- Lukas Fittl --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Disposition: attachment; filename="v12-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1e1 RnJvbSBjZDEyMTc1YzhjMTFiNGU4NzA5YzczYjY0YTkwMWQ1YTVkNGVhNDE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMDE6MTk6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMiAyLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgcGVyLW5vZGUgbG9naWMgZnJvbSBvdGhlcgogdXNlcwoK UHJldmlvdXNseSBkaWZmZXJlbnQgcGxhY2VzIChlLmcuIHF1ZXJ5ICJ0b3RhbCB0aW1lIikgd2Vy ZSByZXB1cnBvc2luZwp0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpbml0aWFsbHkgaW50cm9k dWNlZCBmb3IgY2FwdHVyaW5nIHBlci1ub2RlCnN0YXRpc3RpY3MgZHVyaW5nIGV4ZWN1dGlvbi4g VGhpcyBvdmVydXNlIG9mIHRoZSBzYW1lIHN0cnVjdCBpcyBjb25mdXNpbmcsCmUuZy4gYnkgY2x1 dHRlcmluZyBjYWxscyBvZiBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGluIHVucmVsYXRl ZApjb2RlIHBhdGhzLCBhbmQgcHJldmVudHMgZnV0dXJlIHJlZmFjdG9yaW5ncy4KCkluc3RlYWQs IHNpbXBsaWZ5IHRoZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IHRvIG9ubHkgdHJhY2sgdGltZSBh bmQKV0FML2J1ZmZlciB1c2FnZS4gU2ltaWxhcmx5LCBkcm9wIHRoZSB1c2Ugb2YgSW5zdHJFbmRM b29wIG91dHNpZGUgb2YKcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIC0gdGhlc2UgY2FsbHMgd2Vy ZSBhZGRlZCB3aXRob3V0IGFueSBhcHBhcmVudApiZW5lZml0IHNpbmNlIHRoZSByZWxldmFudCBm aWVsZHMgd2VyZSBuZXZlciByZWFkLgoKSW50cm9kdWNlIHRoZSBOb2RlSW5zdHJ1bWVudGF0aW9u IHN0cnVjdCB0byBjYXJyeSBmb3J3YXJkIHRoZSBwZXItbm9kZQppbnN0cnVtZW50YXRpb24gaW5m b3JtYXRpb24uIFdvcmtlckluc3RydW1lbnRhdGlvbiBpcyByZW5hbWVkIHRvCldvcmtlck5vZGVJ bnN0cnVtZW50YXRpb24gZm9yIGNsYXJpdHkuCgpJbiBwYXNzaW5nLCBkcm9wIHRoZSAibiIgYXJn dW1lbnQgdG8gSW5zdHJBbGxvYywgYXMgYWxsIHJlbWFpbmluZyBjYWxsZXJzCm5lZWQgZXhhY3Rs eSBvbmUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwgICA4ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgIDggKy0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDIwICstLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMjQgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2luc3RydW1lbnQuYyAgICAgICAgICAgICB8IDE0MiArKysrKysrKysrKystLS0tLS0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgICAgICAgICB8ICA2MCArKysrKy0tLQog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA5ICstCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDEx IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1 dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBlODU2Y2QzNWE2Zi4uMzliZjI1NDNiNzAg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2Nv bnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0zMTUsNyArMzE1LDcgQEAgZXhw bGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0 aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFsc2UpOworCQkJcXVlcnlEZXNj LT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKIAkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMzgxLDEyICszODEsNiBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCi0J CS8qCi0JCSAqIE1ha2Ugc3VyZSBzdGF0cyBhY2N1bXVsYXRpb24gaXMgZG9uZS4gIChOb3RlOiBp dCdzIG9rYXkgaWYgc2V2ZXJhbAotCQkgKiBsZXZlbHMgb2YgaG9vayBhbGwgZG8gdGhpcy4pCi0J CSAqLwotCQlJbnN0ckVuZExvb3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwotCiAJCS8qIExvZyBw bGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwogCQltc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKIAkJaWYgKG1zZWMgPj0gYXV0 b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDU0OTRkNDFkY2ExLi5mYmYzMmYwZTcyYyAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMK QEAgLTEwMjUsNyArMTAyNSw3IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJCQlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9BTEws IGZhbHNlKTsKKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5U X0FMTCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KQEAgLTEw ODQsMTIgKzEwODQsNiBAQCBwZ3NzX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CWlmIChxdWVyeUlkICE9IElOVDY0Q09OU1QoMCkgJiYgcXVlcnlEZXNjLT50b3RhbHRpbWUgJiYK IAkJcGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpKQogCXsKLQkJLyoKLQkJICogTWFrZSBzdXJl IHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0J3Mgb2theSBpZiBzZXZlcmFs Ci0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJICovCi0JCUluc3RyRW5kTG9v cChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeURlc2MtPnNvdXJj ZVRleHQsCiAJCQkJICAgcXVlcnlJZCwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5z dG10X2xvY2F0aW9uLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNf ZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0MWU0N2Nj Nzk1Yi4uY2M4ZWMyNGMzMGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0y Nzc5LDcgKzI3NzksNyBAQCBwb3N0Z3Jlc0l0ZXJhdGVEaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5T dGF0ZSAqbm9kZSkKIAlpZiAoIXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcpCiAJ ewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7Ci0J CUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBub2RlLT5zcy5wcy5pbnN0cnVtZW50OworCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CiAKIAkJQXNz ZXJ0KCFkbXN0YXRlLT5oYXNfcmV0dXJuaW5nKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IGViNmVmMjNjMmQ2Li5lNzNkYzEyOTEzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTgz Nyw3ICsxODM3LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFu Y2VzdG9ycywKIAl7CiAJCWRvdWJsZQkJbmxvb3BzID0gcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5u bG9vcHM7CiAJCWRvdWJsZQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBs YW5zdGF0ZS0+aW5zdHJ1bWVudC0+c3RhcnR1cCkgLyBubG9vcHM7Ci0JCWRvdWJsZQkJdG90YWxf bXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwbGFuc3RhdGUtPmluc3RydW1lbnQtPnRvdGFs KSAvIG5sb29wczsKKwkJZG91YmxlCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIudG90YWwpIC8gbmxvb3BzOwogCQlkb3VibGUJ CXJvd3MgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKQEAgLTE4OTAsMTEgKzE4OTAsMTEg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkv KiBwcmVwYXJlIHBlci13b3JrZXIgZ2VuZXJhbCBleGVjdXRpb24gZGV0YWlscyAqLwogCWlmIChl cy0+d29ya2Vyc19zdGF0ZSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtlckluc3RydW1lbnRh dGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdvcmtlck5vZGVJbnN0 cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50OwogCiAJCWZvciAo aW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3VibGUJCW5sb29wcyA9 IGluc3RydW1lbnQtPm5sb29wczsKIAkJCWRvdWJsZQkJc3RhcnR1cF9tczsKIAkJCWRvdWJsZQkJ dG90YWxfbXM7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJaWYgKG5sb29wcyA8PSAwKQogCQkJCWNvbnRp bnVlOwogCQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RydW1lbnQt PnN0YXJ0dXApIC8gbmxvb3BzOwotCQkJdG90YWxfbXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF QyhpbnN0cnVtZW50LT50b3RhbCkgLyBubG9vcHM7CisJCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVf R0VUX01JTExJU0VDKGluc3RydW1lbnQtPmluc3RyLnRvdGFsKSAvIG5sb29wczsKIAkJCXJvd3Mg PSBpbnN0cnVtZW50LT5udHVwbGVzIC8gbmxvb3BzOwogCiAJCQlFeHBsYWluT3Blbldvcmtlcihu LCBlcyk7CkBAIC0yMjkwLDE4ICsyMjkwLDE4IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2UgKi8K IAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+YnVmdXNhZ2UpOworCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOwog CWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKLQkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPndhbHVzYWdlKTsKKwkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAogCS8qIFByZXBh cmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCiAJaWYgKGVzLT53b3JrZXJzX3N0YXRl ICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtl ckluc3RydW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdv cmtlck5vZGVJbnN0cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50 OwogCiAJCWZvciAoaW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3Vi bGUJCW5sb29wcyA9IGluc3RydW1lbnQtPm5sb29wczsKIAogCQkJaWYgKG5sb29wcyA8PSAwKQpA QCAtMjMwOSw5ICsyMzA5LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMpOwogCQkJaWYgKGVz LT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+YnVmdXNh Z2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNh Z2UpOwogCQkJaWYgKGVzLT53YWwpCi0JCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50 LT53YWx1c2FnZSk7CisJCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53 YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xvc2VXb3JrZXIobiwgZXMpOwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggMDIzN2Q4YzNiMWQuLmIwZjYzNmJmOGI2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVj dXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RhcnROb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwkJSW5zdHJTdGFydChxdWVyeURl c2MtPnRvdGFsdGltZSk7CiAKIAkvKgogCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUg cXVlcnkgZGVzY3JpcHRvciBhbmQgdGhlIHF1ZXJ5IGZlYXR1cmUuCkBAIC0zODUsNyArMzg1LDcg QEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCWRlc3QtPnJT aHV0ZG93bihkZXN0KTsKIAogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdG9w Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSwgZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQlJbnN0 clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNo KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCiAJLyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4 ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJ SW5zdHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clN0YXJ0KHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCS8qIFJ1biBNb2RpZnlUYWJsZSBub2RlcyB0byBjb21wbGV0 aW9uICovCiAJRXhlY1Bvc3Rwcm9jZXNzUGxhbihlc3RhdGUpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQlBZnRlclRy aWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJ bnN0clN0b3BOb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCAwKTsKKwkJSW5zdHJTdG9wKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCA3NTUxOTFiNTFlZi4uNzhmNjBj MTUzMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04Nyw3ICs4Nyw3IEBA IHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlCiAgKiBpbnN0cnVtZW50 X29wdGlvbnM6IFNhbWUgbWVhbmluZyBoZXJlIGFzIGluIGluc3RydW1lbnQuYy4KICAqCiAgKiBp bnN0cnVtZW50X29mZnNldDogT2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBz dHJ1Y3R1cmUsCi0gKiBvZiB0aGUgZmlyc3QgSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMg d2lsbCBkZXBlbmQgb24gdGhlIGxlbmd0aCBvZgorICogb2YgdGhlIGZpcnN0IE5vZGVJbnN0cnVt ZW50YXRpb24gb2JqZWN0LiAgVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCiAgKiB0 aGUgcGxhbl9ub2RlX2lkIGFycmF5LgogICoKICAqIG51bV93b3JrZXJzOiBOdW1iZXIgb2Ygd29y a2Vycy4KQEAgLTEwNCwxMSArMTA0LDE1IEBAIHN0cnVjdCBTaGFyZWRFeGVjdXRvckluc3RydW1l bnRhdGlvbgogCWludAkJCW51bV93b3JrZXJzOwogCWludAkJCW51bV9wbGFuX25vZGVzOwogCWlu dAkJCXBsYW5fbm9kZV9pZFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwotCS8qIGFycmF5IG9mIG51 bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgSW5zdHJ1bWVudGF0aW9uIG9iamVjdHMgZm9sbG93 cyAqLworCisJLyoKKwkgKiBhcnJheSBvZiBudW1fcGxhbl9ub2RlcyAqIG51bV93b3JrZXJzIE5v ZGVJbnN0cnVtZW50YXRpb24gb2JqZWN0cworCSAqIGZvbGxvd3MKKwkgKi8KIH07CiAjZGVmaW5l IEdldEluc3RydW1lbnRhdGlvbkFycmF5KHNlaSkgXAogCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlz T2ZUeXBlTWFjcm8oc2VpLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAotCSAo SW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9vZmZz ZXQpKQorCSAoTm9kZUluc3RydW1lbnRhdGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmlu c3RydW1lbnRfb2Zmc2V0KSkKIAogLyogQ29udGV4dCBvYmplY3QgZm9yIEV4ZWNQYXJhbGxlbEVz dGltYXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRXhlY1BhcmFsbGVsRXN0aW1hdGVDb250ZXh0CkBA IC03MzEsNyArNzM1LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlpbnN0cnVtZW50YXRpb25fbGVuID0gTUFYQUxJR04oaW5z dHJ1bWVudGF0aW9uX2xlbik7CiAJCWluc3RydW1lbnRfb2Zmc2V0ID0gaW5zdHJ1bWVudGF0aW9u X2xlbjsKIAkJaW5zdHJ1bWVudGF0aW9uX2xlbiArPQotCQkJbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksCisJCQltdWxfc2l6ZShzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbiksCiAJ CQkJCSBtdWxfc2l6ZShlLm5ub2RlcywgbndvcmtlcnMpKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwpAQCAtODE3LDcgKzgyMSw3IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkgKi8KIAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQogCXsKLQkJSW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50OworCQlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCQlpbnQJ CQlpOwogCiAJCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKQEAgLTgyNyw3ICs4MzEsNyBAQCBFeGVjSW5pdFBhcmFsbGVs UGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRh dGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBlLm5ub2RlczsKIAkJaW5zdHJ1bWVudCA9IEdldEluc3Ry dW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9IDA7IGkgPCBud29y a2VycyAqIGUubm5vZGVzOyArK2kpCi0JCQlJbnN0ckluaXQoJmluc3RydW1lbnRbaV0sIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQlJbnN0ckluaXROb2RlKCZpbnN0cnVtZW50W2ldLCBlc3Rh dGUtPmVzX2luc3RydW1lbnQpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7CiAJCXBlaS0+ aW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1bWVudGF0aW9uOwpAQCAtMTA1OSw3ICsxMDYzLDcgQEAg c3RhdGljIGJvb2wKIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbikKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CisJTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKIAlpbnQJCQlpOwogCWludAkJCW47CiAJaW50CQkJ aWJ5dGVzOwpAQCAtMTA4Nyw5ICsxMDkxLDkgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVt ZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogU3dpdGNoIGludG8gcGVyLXF1ZXJ5 IG1lbW9yeSBjb250ZXh0LgogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQlpYnl0ZXMgPSBtdWxfc2l6ZShp bnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJ aWJ5dGVzID0gbXVsX3NpemUoaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2Vycywgc2l6ZW9mKE5v ZGVJbnN0cnVtZW50YXRpb24pKTsKIAlwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50ID0KLQkJ cGFsbG9jKGlieXRlcyArIG9mZnNldG9mKFdvcmtlckluc3RydW1lbnRhdGlvbiwgaW5zdHJ1bWVu dCkpOworCQlwYWxsb2MoaWJ5dGVzICsgb2Zmc2V0b2YoV29ya2VyTm9kZUluc3RydW1lbnRhdGlv biwgaW5zdHJ1bWVudCkpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAog CXBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQtPm51bV93b3JrZXJzID0gaW5zdHJ1bWVudGF0 aW9uLT5udW1fd29ya2VyczsKQEAgLTEzMTksNyArMTMyMyw3IEBAIEV4ZWNQYXJhbGxlbFJlcG9y dEluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIHsKIAlpbnQJCQlpOwogCWlu dAkJCXBsYW5fbm9kZV9pZCA9IHBsYW5zdGF0ZS0+cGxhbi0+cGxhbl9ub2RlX2lkOwotCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 OwogCiAJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZDM1OTc2OTI1YWUuLjEzMmZlMzdlZjYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDE0LDggKzQxNCw4IEBAIEV4ZWNJbml0Tm9k ZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBp bnN0cnVtZW50YXRpb24gZm9yIHRoaXMgbm9kZSBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0YXRl LT5lc19pbnN0cnVtZW50KQotCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jKDEsIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKLQkJCQkJCQkJCQlyZXN1bHQtPmFzeW5jX2NhcGFibGUpOwor CQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2luc3RydW1l bnQsCisJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKIAlyZXR1cm4gcmVzdWx0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDkzNTRhZDdiZTEyLi5iYzU1MWY5 NWEwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjYsNTEgKzI2LDMwIEBAIHN0 YXRpYyB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3QsIGNvbnN0IEJ1ZmZlclVz YWdlICphZGQpOwogc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNh Z2UgKmFkZCk7CiAKIAotLyogQWxsb2NhdGUgbmV3IGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUo cykgKi8KKy8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIElu c3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z LCBib29sIGFzeW5jX21vZGUpCitJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7 Ci0JSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQotCS8qIGluaXRpYWxpemUgYWxsIGZpZWxkcyB0 byB6ZXJvZXMsIHRoZW4gbW9kaWZ5IGFzIG5lZWRlZCAqLwotCWluc3RyID0gcGFsbG9jMChuICog c2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwotCWlmIChpbnN0cnVtZW50X29wdGlvbnMgJiAoSU5T VFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9USU1FUiB8IElOU1RSVU1FTlRfV0FMKSkKLQl7 Ci0JCWJvb2wJCW5lZWRfYnVmZmVycyA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5U X0JVRkZFUlMpICE9IDA7Ci0JCWJvb2wJCW5lZWRfd2FsID0gKGluc3RydW1lbnRfb3B0aW9ucyAm IElOU1RSVU1FTlRfV0FMKSAhPSAwOwotCQlib29sCQluZWVkX3RpbWVyID0gKGluc3RydW1lbnRf b3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7Ci0JCWludAkJCWk7Ci0KLQkJZm9yIChp ID0gMDsgaSA8IG47IGkrKykKLQkJewotCQkJaW5zdHJbaV0ubmVlZF9idWZ1c2FnZSA9IG5lZWRf YnVmZmVyczsKLQkJCWluc3RyW2ldLm5lZWRfd2FsdXNhZ2UgPSBuZWVkX3dhbDsKLQkJCWluc3Ry W2ldLm5lZWRfdGltZXIgPSBuZWVkX3RpbWVyOwotCQkJaW5zdHJbaV0uYXN5bmNfbW9kZSA9IGFz eW5jX21vZGU7Ci0JCX0KLQl9Ci0KKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jMChz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwgaW5zdHJ1 bWVudF9vcHRpb25zKTsKIAlyZXR1cm4gaW5zdHI7CiB9CiAKLS8qIEluaXRpYWxpemUgYSBwcmUt YWxsb2NhdGVkIGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUuICovCiB2b2lkCi1JbnN0ckluaXQo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK0luc3RySW5p dE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykK IHsKLQltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKIAlpbnN0ci0+ bmVlZF9idWZ1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZFUlMp ICE9IDA7CiAJaW5zdHItPm5lZWRfd2FsdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5T VFJVTUVOVF9XQUwpICE9IDA7CiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRp b25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotLyogRW50cnkgdG8gYSBwbGFuIG5v ZGUgKi8KIHZvaWQKLUluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCitJbnN0 clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaWYgKGluc3RyLT5uZWVkX3RpbWVy KQogCXsKIAkJaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCi0JCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydE5vZGUgY2FsbGVkIHR3aWNlIGluIGEgcm93Iik7CisJCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydCBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKIAkJZWxzZQog CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC04Mywy NCArNjIsMTkgQEAgSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJaW5z dHItPndhbHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKIH0KIAotLyogRXhpdCBmcm9tIGEgcGxh biBub2RlICovCiB2b2lkCi1JbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRv dWJsZSBuVHVwbGVzKQorSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JZG91 YmxlCQlzYXZlX3R1cGxlY291bnQgPSBpbnN0ci0+dHVwbGVjb3VudDsKIAlpbnN0cl90aW1lCWVu ZHRpbWU7CiAKLQkvKiBjb3VudCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCi0JaW5zdHItPnR1cGxl Y291bnQgKz0gblR1cGxlczsKLQogCS8qIGxldCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCiAJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQogCXsKIAkJ aWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJCQllbG9nKEVSUk9SLCAi SW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CiAKIAkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChlbmR0aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3Ry LT50b3RhbCwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CiAKIAkJSU5TVFJfVElNRV9TRVRf WkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC0xMTMsNiArODcsNzQgQEAgSW5zdHJTdG9w Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAlpZiAoaW5zdHIt Pm5lZWRfd2FsdXNhZ2UpCiAJCVdhbFVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+d2FsdXNhZ2UsCiAJ CQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdlX3N0YXJ0KTsKK30KKworLyogTm9k ZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KKworLyogQWxsb2NhdGUgbmV3IG5vZGUgaW5z dHJ1bWVudGF0aW9uIHN0cnVjdHVyZSAqLworTm9kZUluc3RydW1lbnRhdGlvbiAqCitJbnN0ckFs bG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCit7CisJTm9k ZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRp b24pKTsKKworCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJaW5z dHItPmFzeW5jX21vZGUgPSBhc3luY19tb2RlOworCisJcmV0dXJuIGluc3RyOworfQorCisvKiBJ bml0aWFsaXplIGEgcHJlLWFsbG9jYXRlZCBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJlLiAqLwor dm9pZAorSW5zdHJJbml0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3Ry dW1lbnRfb3B0aW9ucykKK3sKKwltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihOb2RlSW5zdHJ1bWVu dGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0cnVtZW50X29w dGlvbnMpOworfQorCisvKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLwordm9pZAorSW5zdHJTdGFy dE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJSW5zdHJTdGFydCgmaW5zdHIt Pmluc3RyKTsKK30KKworLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCit2b2lkCitJbnN0clN0 b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK3sKKwlk b3VibGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNvdW50OworCWluc3RyX3RpbWUJ ZW5kdGltZTsKKworCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVw bGVjb3VudCArPSBuVHVwbGVzOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIHRpbWUgb25seSBpZiB0 aGUgdGltZXIgd2FzIHJlcXVlc3RlZC4KKwkgKgorCSAqIE5vdGUgdGhpcyBpcyBkaWZmZXJlbnQg ZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKwkgKiBJbnN0 ckVuZExvb3AuIFdlIG5lZWQgdGhlIHNlcGFyYXRlIGNvdW50ZXIgdmFyaWFibGUgYmVjYXVzZSB3 ZSBuZWVkIHRvCisJICogY2FsY3VsYXRlIHN0YXJ0LXVwIHRpbWUgZm9yIHRoZSBmaXJzdCB0dXBs ZSBpbiBlYWNoIGN5Y2xlLCBhbmQgdGhlbgorCSAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisJ ICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyKQorCXsKKwkJaWYgKElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSkKKwkJCWVsb2coRVJST1IsICJJbnN0clN0 b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChlbmR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0 aW1lLCBpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKKworCQlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5pbnN0ci5zdGFydHRpbWUpOworCX0KKworCS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNh Z2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFscyAqLworCWlmIChpbnN0ci0+aW5zdHIubmVl ZF9idWZ1c2FnZSkKKwkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5pbnN0ci5idWZ1c2Fn ZSwKKwkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2Vfc3RhcnQp OworCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFjY3VtRGlm ZigmaW5zdHItPmluc3RyLndhbHVzYWdlLAorCQkJCQkJICAmcGdXYWxVc2FnZSwgJmluc3RyLT5p bnN0ci53YWx1c2FnZV9zdGFydCk7CiAKIAkvKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlPyAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcpCkBAIC0xMzMsNyArMTc1LDcgQEAg SW5zdHJTdG9wTm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAog LyogVXBkYXRlIHR1cGxlIGNvdW50ICovCiB2b2lkCi1JbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCitJbnN0clVwZGF0ZVR1cGxlQ291 bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogewogCS8qIGNv dW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KIAlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVwbGVz OwpAQCAtMTQxLDI0ICsxODMsMjQgQEAgSW5zdHJVcGRhdGVUdXBsZUNvdW50KEluc3RydW1lbnRh dGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCiAvKiBGaW5pc2ggYSBydW4gY3ljbGUgZm9y IGEgcGxhbiBub2RlICovCiB2b2lkCi1JbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cikKK0luc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAkvKiBTa2lw IGlmIG5vdGhpbmcgaGFzIGhhcHBlbmVkLCBvciBhbHJlYWR5IHNodXQgZG93biAqLwogCWlmICgh aW5zdHItPnJ1bm5pbmcpCiAJCXJldHVybjsKIAotCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGlu c3RyLT5zdGFydHRpbWUpKQorCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5z dGFydHRpbWUpKQogCQllbG9nKEVSUk9SLCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5n IG5vZGUiKTsKIAogCS8qIEFjY3VtdWxhdGUgcGVyLWN5Y2xlIHN0YXRpc3RpY3MgaW50byB0b3Rh bHMgKi8KIAlJTlNUUl9USU1FX0FERChpbnN0ci0+c3RhcnR1cCwgaW5zdHItPmZpcnN0dHVwbGUp OwotCUlOU1RSX1RJTUVfQUREKGluc3RyLT50b3RhbCwgaW5zdHItPmNvdW50ZXIpOworCUlOU1RS X1RJTUVfQUREKGluc3RyLT5pbnN0ci50b3RhbCwgaW5zdHItPmNvdW50ZXIpOwogCWluc3RyLT5u dHVwbGVzICs9IGluc3RyLT50dXBsZWNvdW50OwogCWluc3RyLT5ubG9vcHMgKz0gMTsKIAogCS8q IFJlc2V0IGZvciBuZXh0IGN5Y2xlIChpZiBhbnkpICovCiAJaW5zdHItPnJ1bm5pbmcgPSBmYWxz ZTsKLQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVf U0VUX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhp bnN0ci0+Y291bnRlcik7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+Zmlyc3R0dXBsZSk7 CiAJaW5zdHItPnR1cGxlY291bnQgPSAwOwpAQCAtMTY2LDcgKzIwOCw3IEBAIEluc3RyRW5kTG9v cChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCiAvKiBhZ2dyZWdhdGUgaW5zdHJ1bWVudGF0aW9u IGluZm9ybWF0aW9uICovCiB2b2lkCi1JbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3Qs IEluc3RydW1lbnRhdGlvbiAqYWRkKQorSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24g KmRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKQogewogCWlmICghZHN0LT5ydW5uaW5nICYm IGFkZC0+cnVubmluZykKIAl7CkBAIC0xODEsNyArMjIzLDcgQEAgSW5zdHJBZ2dOb2RlKEluc3Ry dW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAogCWRzdC0+dHVwbGVjb3Vu dCArPSBhZGQtPnR1cGxlY291bnQ7CiAJSU5TVFJfVElNRV9BREQoZHN0LT5zdGFydHVwLCBhZGQt PnN0YXJ0dXApOwotCUlOU1RSX1RJTUVfQUREKGRzdC0+dG90YWwsIGFkZC0+dG90YWwpOworCUlO U1RSX1RJTUVfQUREKGRzdC0+aW5zdHIudG90YWwsIGFkZC0+aW5zdHIudG90YWwpOwogCWRzdC0+ bnR1cGxlcyArPSBhZGQtPm50dXBsZXM7CiAJZHN0LT5udHVwbGVzMiArPSBhZGQtPm50dXBsZXMy OwogCWRzdC0+bmxvb3BzICs9IGFkZC0+bmxvb3BzOwpAQCAtMTg5LDExICsyMzEsMTEgQEAgSW5z dHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAlk c3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCiAJLyogQWRkIGRlbHRhIG9mIGJ1 ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGRzdC0+bmVl ZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX2J1ZnVzYWdlKQorCQlCdWZmZXJVc2FnZUFkZCgm ZHN0LT5pbnN0ci5idWZ1c2FnZSwgJmFkZC0+aW5zdHIuYnVmdXNhZ2UpOwogCi0JaWYgKGRzdC0+ bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBZGQoJmRzdC0+d2FsdXNhZ2UsICZhZGQtPndhbHVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFkZCgmZHN0 LT5pbnN0ci53YWx1c2FnZSwgJmFkZC0+aW5zdHIud2FsdXNhZ2UpOwogfQogCiAvKiBUcmlnZ2Vy IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpAQCAtMjA0LDcgKzI0Niw3IEBAIEluc3RyQWxs b2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogCWludAkJCWk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGlu c3RydW1lbnRfb3B0aW9ucyk7CisJCUluc3RySW5pdE9wdGlvbnMoJnRnaW5zdHJbaV0uaW5zdHIs IGluc3RydW1lbnRfb3B0aW9ucyk7CiAKIAlyZXR1cm4gdGdpbnN0cjsKIH0KQEAgLTIxMiwxMyAr MjU0LDEzIEBAIEluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogdm9pZAogSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0 cikKIHsKLQlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0ci0+aW5zdHIpOworCUluc3RyU3RhcnQoJnRn aW5zdHItPmluc3RyKTsKIH0KIAogdm9pZAogSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKIHsKLQlJbnN0clN0b3BOb2RlKCZ0Z2lu c3RyLT5pbnN0ciwgMCk7CisJSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0cik7CiAJdGdpbnN0ci0+ ZmlyaW5ncyArPSBmaXJpbmdzOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXgg YTljMjIzMzIyN2YuLmIxMWQ2NDYzM2I1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBA IC02NywzOCArNjcsNTUgQEAgdHlwZWRlZiBlbnVtIEluc3RydW1lbnRPcHRpb24KIAlJTlNUUlVN RU5UX0FMTCA9IFBHX0lOVDMyX01BWAogfSBJbnN0cnVtZW50T3B0aW9uOwogCisvKgorICogR2Vu ZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiB0aGF0IGNhbiBjYXB0dXJlIHRpbWUgYW5kIFdB TC9idWZmZXIgdXNhZ2UKKyAqCisgKiBJbml0aWFsaXplZCB0aHJvdWdoIEluc3RyQWxsb2MsIGZv bGxvd2VkIGJ5IG9uZSBvciBtb3JlIGNhbGxzIHRvIGEgcGFpciBvZgorICogSW5zdHJTdGFydC9J bnN0clN0b3AgKGFjdGl2aXR5IGlzIG1lYXN1cmVkIGluYmV0d2VlbikuCisgKi8KIHR5cGVkZWYg c3RydWN0IEluc3RydW1lbnRhdGlvbgogewotCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3Jl YXRpb246ICovCisJLyogUGFyYW1ldGVycyBzZXQgYXQgY3JlYXRpb246ICovCiAJYm9vbAkJbmVl ZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCiAJYm9vbAkJbmVlZF9i dWZ1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1c2FnZSBkYXRhICovCiAJYm9vbAkJ bmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCisJLyog SW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KKwlpbnN0cl90aW1lCXN0YXJ0dGltZTsJCS8qIHN0 YXJ0IHRpbWUgb2YgbGFzdCBJbnN0clN0YXJ0ICovCisJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3Rh cnQ7IC8qIGJ1ZmZlciB1c2FnZSBhdCBzdGFydCAqLworCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0 OyAvKiBXQUwgdXNhZ2UgYXQgc3RhcnQgKi8KKwkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzOiAq LworCWluc3RyX3RpbWUJdG90YWw7CQkJLyogdG90YWwgcnVudGltZSAqLworCUJ1ZmZlclVzYWdl IGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCisJV2FsVXNhZ2UJd2FsdXNhZ2U7 CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KK30gSW5zdHJ1bWVudGF0aW9uOworCisvKgorICogU3Bl Y2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXItbm9kZSBleGVjdXRpb24gc3RhdGlzdGlj cworICovCit0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCit7CisJSW5zdHJ1bWVu dGF0aW9uIGluc3RyOworCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3JlYXRpb246ICovCiAJ Ym9vbAkJYXN5bmNfbW9kZTsJCS8qIHRydWUgaWYgbm9kZSBpcyBpbiBhc3luYyBtb2RlICovCiAJ LyogSW5mbyBhYm91dCBjdXJyZW50IHBsYW4gY3ljbGU6ICovCiAJYm9vbAkJcnVubmluZzsJCS8q IHRydWUgaWYgd2UndmUgY29tcGxldGVkIGZpcnN0IHR1cGxlICovCi0JaW5zdHJfdGltZQlzdGFy dHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGN1cnJlbnQgaXRlcmF0aW9uIG9mIG5vZGUgKi8KIAlp bnN0cl90aW1lCWNvdW50ZXI7CQkvKiBhY2N1bXVsYXRlZCBydW50aW1lIGZvciB0aGlzIG5vZGUg Ki8KIAlpbnN0cl90aW1lCWZpcnN0dHVwbGU7CQkvKiB0aW1lIGZvciBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlICovCiAJZG91YmxlCQl0dXBsZWNvdW50OwkJLyogIyBvZiB0dXBsZXMgZW1pdHRl ZCBzbyBmYXIgdGhpcyBjeWNsZSAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0OyAvKiBi dWZmZXIgdXNhZ2UgYXQgc3RhcnQgKi8KLQlXYWxVc2FnZQl3YWx1c2FnZV9zdGFydDsgLyogV0FM IHVzYWdlIGF0IHN0YXJ0ICovCiAJLyogQWNjdW11bGF0ZWQgc3RhdGlzdGljcyBhY3Jvc3MgYWxs IGNvbXBsZXRlZCBjeWNsZXM6ICovCiAJaW5zdHJfdGltZQlzdGFydHVwOwkJLyogdG90YWwgc3Rh cnR1cCB0aW1lICovCi0JaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCB0aW1lICovCiAJZG91 YmxlCQludHVwbGVzOwkJLyogdG90YWwgdHVwbGVzIHByb2R1Y2VkICovCiAJZG91YmxlCQludHVw bGVzMjsJCS8qIHNlY29uZGFyeSBub2RlLXNwZWNpZmljIHR1cGxlIGNvdW50ZXIgKi8KIAlkb3Vi bGUJCW5sb29wczsJCQkvKiAjIG9mIHJ1biBjeWNsZXMgZm9yIHRoaXMgbm9kZSAqLwogCWRvdWJs ZQkJbmZpbHRlcmVkMTsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgc2NhbnF1YWwgb3Igam9p bnF1YWwgKi8KIAlkb3VibGUJCW5maWx0ZXJlZDI7CQkvKiAjIG9mIHR1cGxlcyByZW1vdmVkIGJ5 ICJvdGhlciIgcXVhbHMgKi8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZl ciB1c2FnZSAqLwotCVdhbFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCi19 IEluc3RydW1lbnRhdGlvbjsKK30gTm9kZUluc3RydW1lbnRhdGlvbjsKIAotdHlwZWRlZiBzdHJ1 Y3QgV29ya2VySW5zdHJ1bWVudGF0aW9uCit0eXBlZGVmIHN0cnVjdCBXb3JrZXJOb2RlSW5zdHJ1 bWVudGF0aW9uCiB7CiAJaW50CQkJbnVtX3dvcmtlcnM7CS8qICMgb2Ygc3RydWN0dXJlcyB0aGF0 IGZvbGxvdyAqLwotCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Ci19IFdvcmtlckluc3RydW1lbnRhdGlvbjsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uIGlu c3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gV29ya2VyTm9kZUluc3RydW1lbnRh dGlvbjsKIAogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogewpAQCAtMTEw LDE0ICsxMjcsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogZXh0 ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJ TVBPUlQgV2FsVXNhZ2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5z dHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucywKLQkJCQkJCQkJICAgYm9vbCBh c3luY19tb2RlKTsKLWV4dGVybiB2b2lkIEluc3RySW5pdChJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKLWV4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKElu c3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9kZShJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7Ci1leHRlcm4gdm9pZCBJbnN0clVwZGF0 ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwotZXh0 ZXJuIHZvaWQgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZv aWQgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFk ZCk7CitleHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29w dGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmlu c3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5z dHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CisKK2V4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9k ZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7 CitleHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBp bnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKK2V4dGVybiB2b2lkIEluc3Ry VXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBs ZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3Ry KTsKK2V4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5v ZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRl cm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggOTA4ODk4YWE3YzkuLjNlY2FlNzU1MmZjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNjAsNiArNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5 RGF0YSBTY2FuS2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7 CiB0eXBlZGVmIHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBz dHJ1Y3QgVElEQml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50 YXRpb24gTm9kZUluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29u dmVyc2lvbk1hcCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NE YXRhICpUdXBsZURlc2M7CkBAIC02OCw3ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlc3Rv cmVzdGF0ZSBUdXBsZXN0b3Jlc3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCBU dXBsZVRhYmxlU2xvdDsKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90T3BzIFR1cGxlVGFi bGVTbG90T3BzOwogdHlwZWRlZiBzdHJ1Y3QgV2FsVXNhZ2UgV2FsVXNhZ2U7Ci10eXBlZGVmIHN0 cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRpb24gV29ya2VySW5zdHJ1bWVudGF0aW9uOwordHlwZWRl ZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyMDcsOCArMTIwOCwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBQbGFuU3RhdGUKIAlFeGVjUHJvY05vZGVNdGQgRXhlY1Byb2NOb2RlUmVhbDsJ LyogYWN0dWFsIGZ1bmN0aW9uLCBpZiBhYm92ZSBpcyBhCiAJCQkJCQkJCQkJICogd3JhcHBlciAq LwogCi0JSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0 YXRzIGZvciB0aGlzIG5vZGUgKi8KLQlXb3JrZXJJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0 cnVtZW50OwkvKiBwZXItd29ya2VyIGluc3RydW1lbnRhdGlvbiAqLworCU5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUgc3RhdHMgZm9yIHRoaXMKKwkJ CQkJCQkJCQkgKiBub2RlICovCisJV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiAqd29ya2VyX2lu c3RydW1lbnQ7CS8qIHBlci13b3JrZXIKKwkJCQkJCQkJCQkJCQkgKiBpbnN0cnVtZW50YXRpb24g Ki8KIAogCS8qIFBlci13b3JrZXIgSklUIGluc3RydW1lbnRhdGlvbiAqLwogCXN0cnVjdCBTaGFy ZWRKaXRJbnN0cnVtZW50YXRpb24gKndvcmtlcl9qaXRfaW5zdHJ1bWVudDsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggN2RkZjk3MGZiOTcuLjQ0OWFjY2E4ZGMxIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTgyMiw2ICsxODIyLDcgQEAgTmV4dFNhbXBsZUJsb2NrX2Z1bmN0 aW9uCiBOZXh0U2FtcGxlVHVwbGVfZnVuY3Rpb24KIE5leHRWYWx1ZUV4cHIKIE5vZGUKK05vZGVJ bnN0cnVtZW50YXRpb24KIE5vZGVUYWcKIE5vbkVtcHR5UmFuZ2UKIE5vbmVDb21wcmVzc29yU3Rh dGUKQEAgLTM0MzYsOSArMzQzNyw5IEBAIFdvcmtUYWJsZVNjYW4KIFdvcmtUYWJsZVNjYW5TdGF0 ZQogV29ya2VySW5mbwogV29ya2VySW5mb0RhdGEKLVdvcmtlckluc3RydW1lbnRhdGlvbgogV29y a2VySm9iRHVtcFB0clR5cGUKIFdvcmtlckpvYlJlc3RvcmVQdHJUeXBlCitXb3JrZXJOb2RlSW5z dHJ1bWVudGF0aW9uCiBXb3JraW5nX1N0YXRlCiBXcml0ZUJ1ZlB0clR5cGUKIFdyaXRlQnl0ZVB0 clR5cGUKLS0gCjIuNDcuMQoK --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Disposition: attachment; filename="v12-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1h4 RnJvbSA5MGE3ZWQxOGYxNGMwOWM4YTEyOTlkYjNhMDE1NzQ3ZmM2YjY3NjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxMiA1LzldIE9w dGltaXplIG1lYXN1cmluZyBXQUwvYnVmZmVyIHVzYWdlIHRocm91Z2gKIHN0YWNrLWJhc2VkIGlu c3RydW1lbnRhdGlvbgoKUHJldmlvdXNseSwgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBidWZm ZXIvV0FMIHVzYWdlIG9mIGEgZ2l2ZW4gY29kZQpzZWN0aW9uLCB3ZSB1dGlsaXplZCBjb250aW51 b3VzbHkgaW5jcmVtZW50aW5nIGdsb2JhbCBjb3VudGVycyB0aGF0IGdldAp1cGRhdGVkIHdoZW4g dGhlIGFjdHVhbCBhY3Rpdml0eSAoZS5nLiBzaGFyZWQgYmxvY2sgcmVhZCkgb2NjdXJyZWQsIGFu ZAp0aGVuIGNhbGN1bGF0ZWQgYSBkaWZmIHdoZW4gdGhlIGNvZGUgc2VjdGlvbiBlbmRlZC4gVGhp cyByZXN1bHRlZCBpbiBhCmJvdHRsZW5lY2sgZm9yIGV4ZWN1dG9yIG5vZGUgaW5zdHJ1bWVudGF0 aW9uIHNwZWNpZmljYWxseSwgd2l0aCB0aGUKZnVuY3Rpb24gQnVmZmVyVXNhZ2VBY2N1bURpZmYg c2hvd2luZyB1cCBpbiBwcm9maWxlcyBhbmQgaW4gc29tZSBjYXNlcwphZGRpbmcgdXAgdG8gMTAl IG92ZXJoZWFkIHRvIGFuIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHJ1bi4KCkluc3RlYWQs IGludHJvZHVjZSBhIHN0YWNrLWJhc2VkIG1lY2hhbmlzbSwgd2hlcmUgdGhlIGFjdHVhbCBhY3Rp dml0eQp3cml0ZXMgaW50byB0aGUgY3VycmVudCBzdGFjayBlbnRyeS4gSW4gdGhlIGNhc2Ugb2Yg ZXhlY3V0b3Igbm9kZXMsIHRoaXMKbWVhbnMgdGhhdCBlYWNoIG5vZGUgZ2V0cyBpdHMgb3duIHN0 YWNrIGVudHJ5IHRoYXQgaXMgcHVzaGVkIGF0Ckluc3RyU3RhcnROb2RlLCBhbmQgcG9wcGVkIGF0 IEluc3RyRW5kTm9kZS4gU3RhY2sgZW50cmllcyBhcmUgemVybwppbml0aWFsaXplZCAoYXZvaWRp bmcgdGhlIGRpZmYgbWVjaGFuaXNtKSBhbmQgZ2V0IGFkZGVkIHRvIHRoZWlyIHBhcmVudAplbnRy eSB3aGVuIHRoZXkgYXJlIGZpbmFsaXplZCwgaS5lLiBubyBtb3JlIG1vZGlmaWNhdGlvbnMgY2Fu IG9jY3VyLgoKVG8gY29ycmVjdGx5IGhhbmRsZSBhYm9ydCBzaXR1YXRpb25zLCBhbnkgdXNlIG9m IGluc3RydW1lbnRhdGlvbiBzdGFja3MKbXVzdCBpbnZvbHZlIGVpdGhlciBhIHRvcC1sZXZlbCBR dWVyeUluc3RydW1lbnRhdGlvbiBzdHJ1Y3QsIGFuZCBpdHMKYXNzb2NpYXRlZCBJbnN0clF1ZXJ5 U3RhcnQvSW5zdHJRdWVyeVN0b3AgaGVscGVycyAod2hpY2ggdXNlIHJlc291cmNlCm93bmVycyB0 byBoYW5kbGUgYWJvcnRzKSwgb3IgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgaXRzZWxmIHdp dGgKZGVkaWNhdGVkIFBHX1RSWS9QR19GSU5BTExZIGNhbGxzIHRoYXQgZW5zdXJlIHRoZSBzdGFj ayBpcyBpbiBhCmNvbnNpc3RlbnQgc3RhdGUgYWZ0ZXIgYW4gYWJvcnQuCgpUaGlzIGFsc28gZHJv cHMgdGhlIGdsb2JhbCBwZ0J1ZmZlclVzYWdlLCBhbnkgY2FsbGVycyBpbnRlcmVzdGVkIGluCm1l YXN1cmluZyBidWZmZXIgYWN0aXZpdHkgc2hvdWxkIGluc3RlYWQgdXRpbGl6ZSBJbnN0clN0YXJ0 L0luc3RyU3RvcC4KClRoZSByZWxhdGVkIGdsb2JhbCBwZ1dhbFVzYWdlIGlzIGtlcHQgZm9yIG5v dyBkdWUgdG8gaXRzIHVzZSBpbiBwZ3N0YXQKdG8gdHJhY2sgYWdncmVnYXRlIFdBTCBhY3Rpdml0 eSBhbmQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgZm9yCm1lYXN1cmluZyBGUElzLgoKQXV0 aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFy cmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IEhlaWtraSBMaW5u YWthbmdhcyA8aGxpbm5ha2FAaWtpLmZpPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3hybXBFQ3pWRnBlZUVFSERHZTZ1NjI1cyUy QllrbVZ2NS1ndzNMX05EU2ZiaUElNDBtYWlsLmdtYWlsLmNvbSNjYjU4M2EwOGU4ZTA5NmFhMWYw OTNiYjE3ODkwNjE3MwotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAg ICAgICAgICB8ICAxNiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYyAgIHwgIDg3ICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAg ICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAg ICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAg ICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyAgICAgICAgICAg ICB8ICA1NyArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAg ICB8ICAyNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICAgICB8 ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQgICAgICAgIHwg MjI3ICsrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAg ICAgIHwgIDgzICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAg ICAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAg ICAgfCAgODQgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAg ICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICAgICAgICAg ICAgfCA0NDggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2Ry LmggICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAg ICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50Lmgg ICAgICAgICAgICAgfCAxOTggKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaCAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgICAgICB8ICAgMiArCiAzMCBmaWxlcyBjaGFuZ2VkLCAxMDk3IGluc2VydGlvbnMo KyksIDM1NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUuaW5zdHJ1bWVudAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWlu L2F1dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5k ZXggMzliZjI1NDNiNzAuLjRiZTgxNDg5ZmY0IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYwpAQCAtMzA1LDE5ICszMDUsOSBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQoKSkK IAl7Ci0JCS8qCi0JCSAqIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhl Y3V0b3JSdW4uICBNYWtlIHN1cmUgdGhlCi0JCSAqIHNwYWNlIGlzIGFsbG9jYXRlZCBpbiB0aGUg cGVyLXF1ZXJ5IGNvbnRleHQgc28gaXQgd2lsbCBnbyBhd2F5IGF0Ci0JCSAqIEV4ZWN1dG9yRW5k LgotCQkgKi8KKwkJLyogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVj dXRvclJ1bi4gKi8KIAkJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lID09IE5VTEwpCi0JCXsKLQkJ CU1lbW9yeUNvbnRleHQgb2xkY3h0OwotCi0JCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JCQlxdWVyeURlc2MtPnRvdGFs dGltZSA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9BTEwpOwotCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7Ci0JCX0KKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJRdWVyeUFs bG9jKElOU1RSVU1FTlRfQUxMKTsKIAl9CiB9CiAKQEAgLTM4Miw3ICszNzIsNyBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKIAkJLyogTG9n IHBsYW4gaWYgZHVyYXRpb24gaXMgZXhjZWVkZWQuICovCi0JCW1zZWMgPSBJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyhxdWVyeURlc2MtPnRvdGFsdGltZS0+dG90YWwpOworCQltc2VjID0gSU5TVFJf VElNRV9HRVRfTUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLnRvdGFsKTsKIAkJ aWYgKG1zZWMgPj0gYXV0b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCiAJCXsKIAkJCUV4cGxh aW5TdGF0ZSAqZXMgPSBOZXdFeHBsYWluU3RhdGUoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggZmJmMzJmMGU3MmMuLjc4ZjE1MThj OTQwIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYwpAQCAtOTExLDIyICs5MTEsMTEgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJ JiYgcGdzc190cmFja19wbGFubmluZyAmJiBxdWVyeV9zdHJpbmcKIAkJJiYgcGFyc2UtPnF1ZXJ5 SWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7Ci0JCWluc3RyX3RpbWUJc3RhcnQ7Ci0JCWluc3RyX3Rp bWUJZHVyYXRpb247Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCQlidWZ1c2Fn ZTsKLQkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOworCQlJbnN0cnVt ZW50YXRpb24gaW5zdHIgPSB7MH07CiAKLQkJLyogV2UgbmVlZCB0byB0cmFjayBidWZmZXIgdXNh Z2UgYXMgdGhlIHBsYW5uZXIgY2FuIGFjY2VzcyB0aGVtLiAqLwotCQlidWZ1c2FnZV9zdGFydCA9 IHBnQnVmZmVyVXNhZ2U7Ci0KLQkJLyoKLQkJICogU2ltaWxhcmx5IHRoZSBwbGFubmVyIGNvdWxk IHdyaXRlIHNvbWUgV0FMIHJlY29yZHMgaW4gc29tZSBjYXNlcwotCQkgKiAoZS5nLiBzZXR0aW5n IGEgaGludCBiaXQgd2l0aCB0aG9zZSBiZWluZyBXQUwtbG9nZ2VkKQotCQkgKi8KLQkJd2FsdXNh Z2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsK KwkJLyogVHJhY2sgdGltZSBhbmQgYnVmZmVyL1dBTCB1c2FnZSBhcyB0aGUgcGxhbm5lciBjYW4g YWNjZXNzIHRoZW0uICovCisJCUluc3RySW5pdE9wdGlvbnMoJmluc3RyLCBJTlNUUlVNRU5UX0FM TCk7CisJCUluc3RyU3RhcnQoJmluc3RyKTsKIAogCQluZXN0aW5nX2xldmVsKys7CiAJCVBHX1RS WSgpOwpAQCAtOTQwLDMwICs5MjksMjAgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJ fQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJCUluc3RyU3RvcEZpbmFsaXplKCZpbnN0cik7CiAJ CQluZXN0aW5nX2xldmVsLS07CiAJCX0KIAkJUEdfRU5EX1RSWSgpOwogCi0JCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoZHVyYXRpb24pOwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKGR1cmF0aW9uLCBz dGFydCk7Ci0KLQkJLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0J CW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2Fn ZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwot Ci0JCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndh bHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVz YWdlLCAmcGdXYWxVc2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5 X3N0cmluZywKIAkJCQkgICBwYXJzZS0+cXVlcnlJZCwKIAkJCQkgICBwYXJzZS0+c3RtdF9sb2Nh dGlvbiwKIAkJCQkgICBwYXJzZS0+c3RtdF9sZW4sCiAJCQkJICAgUEdTU19QTEFOLAotCQkJCSAg IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGR1cmF0aW9uKSwKKwkJCQkgICBJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyhpbnN0ci50b3RhbCksCiAJCQkJICAgMCwKLQkJCQkgICAmYnVmdXNhZ2UsCi0J CQkJICAgJndhbHVzYWdlLAorCQkJCSAgICZpbnN0ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIu d2FsdXNhZ2UsCiAJCQkJICAgTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIDAsCkBAIC0xMDE1 LDE5ICs5OTQsOSBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJICovCiAJaWYgKHBnc3NfZW5hYmxlZChuZXN0aW5nX2xldmVsKSAmJiBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQkvKgot CQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAg TWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIHBlci1xdWVyeSBj b250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVuZC4KLQkJICovCisJ CS8qIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhlY3V0b3JSdW4uICov CiAJCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0JCQlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0 ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwotCQl9CisJCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVN RU5UX0FMTCk7CiAJfQogfQogCkBAIC0xMDg5LDEwICsxMDU4LDEwIEBAIHBnc3NfRXhlY3V0b3JF bmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+ c3RtdF9sb2NhdGlvbiwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zdG10X2xlbiwK IAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVlcnlE ZXNjLT50b3RhbHRpbWUtPnRvdGFsKSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhx dWVyeURlc2MtPnRvdGFsdGltZS0+aW5zdHIudG90YWwpLAogCQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0 YXRlLT5lc190b3RhbF9wcm9jZXNzZWQsCi0JCQkJICAgJnF1ZXJ5RGVzYy0+dG90YWx0aW1lLT5i dWZ1c2FnZSwKLQkJCQkgICAmcXVlcnlEZXNjLT50b3RhbHRpbWUtPndhbHVzYWdlLAorCQkJCSAg ICZxdWVyeURlc2MtPnRvdGFsdGltZS0+aW5zdHIuYnVmdXNhZ2UsCisJCQkJICAgJnF1ZXJ5RGVz Yy0+dG90YWx0aW1lLT5pbnN0ci53YWx1c2FnZSwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfaml0ID8gJnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQtPmluc3RyIDogTlVMTCwKIAkJCQkg ICBOVUxMLAogCQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX3Rv X2xhdW5jaCwKQEAgLTExNTYsMTcgKzExMjUsMTEgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFu bmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkhSXNBKHBhcnNldHJl ZSwgRXhlY3V0ZVN0bXQpICYmCiAJCSFJc0EocGFyc2V0cmVlLCBQcmVwYXJlU3RtdCkpCiAJewot CQlpbnN0cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90aW1lCWR1cmF0aW9uOwogCQl1aW50NjQJCXJv d3M7Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCQlidWZ1c2FnZTsKLQkJV2Fs VXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOworCQlJbnN0cnVtZW50YXRpb24g aW5zdHIgPSB7MH07CiAKLQkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwotCQl3YWx1 c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnQp OworCQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9BTEwpOworCQlJbnN0clN0 YXJ0KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19UUlkoKTsKQEAgLTExODIs NiArMTE0NSw3IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJfQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJCUluc3Ry U3RvcEZpbmFsaXplKCZpbnN0cik7CiAJCQluZXN0aW5nX2xldmVsLS07CiAJCX0KIAkJUEdfRU5E X1RSWSgpOwpAQCAtMTE5Niw5ICsxMTYwLDYgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFubmVk U3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkgKiBmb3JtZXIgdmFsdWUs IHdoaWNoJ2Qgb3RoZXJ3aXNlIGJlIGEgZ29vZCBpZGVhLgogCQkgKi8KIAotCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGR1cmF0aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwg c3RhcnQpOwotCiAJCS8qCiAJCSAqIFRyYWNrIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyByZXRy aWV2ZWQgb3IgYWZmZWN0ZWQgYnkgdGhlIHV0aWxpdHkKIAkJICogc3RhdGVtZW50cyBvZiBDT1BZ LCBGRVRDSCwgQ1JFQVRFIFRBQkxFIEFTLCBDUkVBVEUgTUFURVJJQUxJWkVECkBAIC0xMjEwLDIz ICsxMTcxLDE1IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJICAgcWMtPmNvbW1hbmRUYWcgPT0gQ01EVEFHX1JF RlJFU0hfTUFURVJJQUxJWkVEX1ZJRVcpKSA/CiAJCQlxYy0+bnByb2Nlc3NlZCA6IDA7CiAKLQkJ LyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JCW1lbXNldCgmYnVm dXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigm YnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCi0JCS8qIGNhbGMg ZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndhbHVzYWdlLCAwLCBz aXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxV c2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5U3RyaW5nLAogCQkJ CSAgIHNhdmVkX3F1ZXJ5SWQsCiAJCQkJICAgc2F2ZWRfc3RtdF9sb2NhdGlvbiwKIAkJCQkgICBz YXZlZF9zdG10X2xlbiwKIAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoZHVyYXRpb24pLAorCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3Ry LnRvdGFsKSwKIAkJCQkgICByb3dzLAotCQkJCSAgICZidWZ1c2FnZSwKLQkJCQkgICAmd2FsdXNh Z2UsCisJCQkJICAgJmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZpbnN0ci53YWx1c2FnZSwKIAkJ CQkgICBOVUxMLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgMCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpp bmRleCBiZGIzMDc1MmUwOS4uM2E1MTc2Yzc2YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAg LTI0MzQsOCArMjQzNCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBhbmQgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25z IGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3 YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgcGdXYWxVc2FnZSBvcgot CSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5v IHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRp b24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0yODg3LDYgKzI4ODcsNyBAQCBfYnJpbl9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlSZWxhdGlv bglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJaW5kZXhMb2Nr bW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJV2FsVXNhZ2UgICAqd2FsdXNh Z2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJCXNvcnRtZW07CkBAIC0yOTM2 LDcgKzI5MzcsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcp OwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0 YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxpYWJs ZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yOTUxLDcg KzI5NTIsOCBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVy eSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxR dWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwK IAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAlpbmRleF9jbG9z ZShpbmRleFJlbCwgaW5kZXhMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpp bmRleCA5ZDgzYTQ5NTc3NS4uMGQ4MGY3MmEwYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYwpAQCAtOTkxLDggKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogYW5kIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5z aW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUg bm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ug b3IKLQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2 ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVu dGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo V2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMjExOCw2ICsyMTE4LDcgQEAgX2dpbl9w YXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlSZWxh dGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJaW5kZXhM b2NrbW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJCXNvcnRtZW07CkBAIC0y MTg2LDcgKzIxODcsNyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVkKHNoYXJlZHNvcnQsIHNl Zyk7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAqIE1pZ2h0IGFzIHdlbGwgdXNlIHJlbGlh YmxlIGZpZ3VyZSB3aGVuIGRvbGluZyBvdXQgbWFpbnRlbmFuY2Vfd29ya19tZW0KQEAgLTIyMDEs NyArMjIwMiw4IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExF TF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVs UXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0s CiAJCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhfY2xv c2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IDg4YzcxY2Q4NWI2Li4yOTFkOWQ2N2JjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNjM3LDggKzYzNyw3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlv biByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCVRpbWVzdGFtcFR6IHN0YXJ0dGlt ZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDAsCiAJCQkJc3RhcnR3cml0 ZXRpbWUgPSAwOwotCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwotCUJ1ZmZl clVzYWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7 CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCVNpemUJCWRlYWRfaXRlbXNfbWF4X2J5dGVz ID0gMDsKQEAgLTY1NCw2ICs2NTMsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCXN0YXJ0cmVhZHRpbWUgPSBwZ1N0YXRCbG9j a1JlYWRUaW1lOwogCQkJc3RhcnR3cml0ZXRpbWUgPSBwZ1N0YXRCbG9ja1dyaXRlVGltZTsKIAkJ fQorCQlpbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVN RU5UX1dBTCk7CisJCUluc3RyUXVlcnlTdGFydChpbnN0cik7CiAJfQogCiAJLyogVXNlZCBmb3Ig aW5zdHJ1bWVudGF0aW9uIGFuZCBzdGF0cyByZXBvcnQgKi8KQEAgLTk4NCwxNCArOTg1LDE0IEBA IGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1z LAogCXsKIAkJVGltZXN0YW1wVHogZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAor CQlJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKKwogCQlpZiAodmVyYm9zZSB8fCBwYXJh bXMtPmxvZ192YWN1dW1fbWluX2R1cmF0aW9uID09IDAgfHwKIAkJCVRpbWVzdGFtcERpZmZlcmVu Y2VFeGNlZWRzKHN0YXJ0dGltZSwgZW5kdGltZSwKIAkJCQkJCQkJCSAgIHBhcmFtcy0+bG9nX3Zh Y3V1bV9taW5fZHVyYXRpb24pKQogCQl7CiAJCQlsb25nCQlzZWNzX2R1cjsKIAkJCWludAkJCXVz ZWNzX2R1cjsKLQkJCVdhbFVzYWdlCXdhbHVzYWdlOwotCQkJQnVmZmVyVXNhZ2UgYnVmZmVydXNh Z2U7CiAJCQlTdHJpbmdJbmZvRGF0YSBidWY7CiAJCQljaGFyCSAgICptc2dmbXQ7CiAJCQlpbnQz MgkJZGlmZjsKQEAgLTEwMDAsMTIgKzEwMDEsMTAgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9u IHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19o aXQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19yZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGly dGllZDsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdl OworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+aW5zdHIud2FsdXNhZ2U7CiAKIAkJCVRp bWVzdGFtcERpZmZlcmVuY2Uoc3RhcnR0aW1lLCBlbmR0aW1lLCAmc2Vjc19kdXIsICZ1c2Vjc19k dXIpOwotCQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxV c2FnZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0J CQltZW1zZXQoJmJ1ZmZlcnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJCUJ1ZmZl clVzYWdlQWNjdW1EaWZmKCZidWZmZXJ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzdGFydGJ1ZmZl cnVzYWdlKTsKIAogCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19o aXQgKwogCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA3NTZkZmEzZGNmNC4uMmQ3YjdjZWY5MTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNDY2LDggKzE0NjYsOCBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJICogYW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVy ZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMu ICBXZQotCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5n IGF0IHBnV2FsVXNhZ2Ugb3IKLQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlv bmFsbHkuCisJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tp bmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkg Ki8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBt dWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMTc1Myw2ICsx NzUzLDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlM T0NLTU9ERQlpbmRleExvY2ttb2RlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlX YWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJaW50CQkJ c29ydG1lbTsKQEAgLTE4MjgsNyArMTgyOSw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAl9CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNr IGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBh cmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkv KiBQZXJmb3JtIHNvcnRpbmcgb2Ygc3Bvb2wsIGFuZCBwb3NzaWJseSBhIHNwb29sMiAqLwogCXNv cnRtZW0gPSBtYWludGVuYW5jZV93b3JrX21lbSAvIGJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3Rh dGVzOwpAQCAtMTgzOCw3ICsxODM5LDggQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3Nl Z21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1 cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5z dHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxX b3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsK IAogI2lmZGVmIEJUUkVFX0JVSUxEX1NUQVRTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggNDlh NWNkZjU3OWMuLjEwZjhhMmRjODFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0zMDksOSAr MzA5LDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJh bXMgKnBhcmFtcywKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0 OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwotCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dh bFVzYWdlOwotCUJ1ZmZlclVzYWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOwot CUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9 IE5VTEw7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDA7CiAJUGdTdGF0X0NvdW50 ZXIgc3RhcnR3cml0ZXRpbWUgPSAwOwogCkBAIC0zNjIsNiArMzYwLDkgQEAgZG9fYW5hbHl6ZV9y ZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJfQogCiAJ CXBnX3J1c2FnZV9pbml0KCZydTApOworCisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RS VU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKwkJSW5zdHJRdWVyeVN0YXJ0KGluc3Ry KTsKIAl9CiAKIAkvKiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAq LwpAQCAtNzQyLDEyICs3NDMsMTMgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBH ZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7 CisKIAkJaWYgKHZlcmJvc2UgfHwgcGFyYW1zLT5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPT0g MCB8fAogCQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAog CQkJCQkJCQkJICAgcGFyYW1zLT5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24pKQogCQl7CiAJCQls b25nCQlkZWxheV9pbl9tczsKLQkJCVdhbFVzYWdlCXdhbHVzYWdlOwogCQkJZG91YmxlCQlyZWFk X3JhdGUgPSAwOwogCQkJZG91YmxlCQl3cml0ZV9yYXRlID0gMDsKIAkJCWNoYXIJICAgKm1zZ2Zt dDsKQEAgLTc1NSwxOCArNzU3LDE1IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwg Y29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJ CQlpbnQ2NAkJdG90YWxfYmxrc19yZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsK LQotCQkJbWVtc2V0KCZidWZmZXJ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCQlC dWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmZmVydXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmc3RhcnRi dWZmZXJ1c2FnZSk7Ci0JCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsK LQkJCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZzdGFydHdhbHVz YWdlKTsKLQotCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19oaXQg KwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwotCQkJdG90YWxfYmxrc19yZWFkID0g YnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxr c19yZWFkOwotCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3Nf ZGlydGllZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOworCQkJQnVmZmVy VXNhZ2UgYnVmdXNhZ2UgPSBpbnN0ci0+aW5zdHIuYnVmdXNhZ2U7CisJCQlXYWxVc2FnZQl3YWx1 c2FnZSA9IGluc3RyLT5pbnN0ci53YWx1c2FnZTsKKworCQkJdG90YWxfYmxrc19oaXQgPSBidWZ1 c2FnZS5zaGFyZWRfYmxrc19oaXQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0OworCQkJ dG90YWxfYmxrc19yZWFkID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCisJCQkJYnVmdXNh Z2UubG9jYWxfYmxrc19yZWFkOworCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmdXNhZ2Uuc2hh cmVkX2Jsa3NfZGlydGllZCArCisJCQkJYnVmdXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOwogCiAJ CQkvKgogCQkJICogV2UgZG8gbm90IGV4cGVjdCBhbiBhbmFseXplIHRvIHRha2UgPiAyNSBkYXlz IGFuZCBpdCBzaW1wbGlmaWVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTczZGMxMjkxMzIu LmRjNWU2Mzk1NWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zMjQsMTQgKzMyNCwxNiBA QCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9u cywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQbGFubmVkU3RtdCAq cGxhbjsKLQlpbnN0cl90aW1lCXBsYW5zdGFydCwKLQkJCQlwbGFuZHVyYXRpb247Ci0JQnVmZmVy VXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCi0JCQkJYnVmdXNhZ2U7CisJUXVlcnlJbnN0cnVtZW50YXRp b24gKmluc3RyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwog CU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRf Y3R4ID0gTlVMTDsKIAorCWlmIChlcy0+YnVmZmVycykKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5QWxs b2MoSU5TVFJVTUVOVF9USU1FUiB8IElOU1RSVU1FTlRfQlVGRkVSUyk7CisJZWxzZQorCQlpbnN0 ciA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX1RJTUVSKTsKKwogCWlmIChlcy0+bWVtb3J5 KQogCXsKIAkJLyoKQEAgLTM0OCwxNSArMzUwLDEyIEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVy eShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQlzYXZlZF9jdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocGxhbm5lcl9jdHgpOwogCX0KIAotCWlmIChlcy0+YnVmZmVycykKLQkJ YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo cGxhbnN0YXJ0KTsKKwlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCiAJLyogcGxhbiB0aGUgcXVl cnkgKi8KIAlwbGFuID0gcGdfcGxhbl9xdWVyeShxdWVyeSwgcXVlcnlTdHJpbmcsIGN1cnNvck9w dGlvbnMsIHBhcmFtcywgZXMpOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFuZHVyYXRp b24pOwotCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3RhcnQpOworCUlu c3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAt MzY0LDE2ICszNjMsOSBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBp bnQgY3Vyc29yT3B0aW9ucywKIAkJTWVtb3J5Q29udGV4dE1lbUNvbnN1bWVkKHBsYW5uZXJfY3R4 LCAmbWVtX2NvdW50ZXJzKTsKIAl9CiAKLQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBj b3VudGVycy4gKi8KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JewotCQltZW1zZXQoJmJ1ZnVzYWdlLCAw LCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdl LCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQl9Ci0KIAkvKiBydW4gaXQgKGlm IG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCiAJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50 bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAotCQkJCSAgICZwbGFuZHVyYXRp b24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCSAgICZpbnN0ci0+aW5z dHIudG90YWwsIChlcy0+YnVmZmVycyA/ICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwK IAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQogCkBAIC01OTAs NyArNTgyLDEyIEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCS8qIGdyYWIgc2VyaWFsaXphdGlv biBtZXRyaWNzIGJlZm9yZSB3ZSBkZXN0cm95IHRoZSBEZXN0UmVjZWl2ZXIgKi8KIAlpZiAoZXMt PnNlcmlhbGl6ZSAhPSBFWFBMQUlOX1NFUklBTElaRV9OT05FKQotCQlzZXJpYWxpemVNZXRyaWNz ID0gR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoZGVzdCk7CisJeworCQlTZXJpYWxpemVNZXRyaWNz ICptZXRyaWNzID0gR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoZGVzdCk7CisKKwkJaWYgKG1ldHJp Y3MpCisJCQltZW1jcHkoJnNlcmlhbGl6ZU1ldHJpY3MsIG1ldHJpY3MsIHNpemVvZihTZXJpYWxp emVNZXRyaWNzKSk7CisJfQogCiAJLyogY2FsbCB0aGUgRGVzdFJlY2VpdmVyJ3MgZGVzdHJveSBt ZXRob2QgZXZlbiBkdXJpbmcgZXhwbGFpbiAqLwogCWRlc3QtPnJEZXN0cm95KGRlc3QpOwpAQCAt MTAxOSw3ICsxMDE2LDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMs IFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKIAkJ aWYgKGVzLT50aW1pbmcpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJTZXJpYWxpemF0 aW9uOiB0aW1lPSUuM2YgbXMgIG91dHB1dD0iIFVJTlQ2NF9GT1JNQVQgImtCICBmb3JtYXQ9JXNc biIsCi0JCQkJCQkJIDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRShtZXRyaWNzLT50aW1l U3BlbnQpLAorCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+ aW5zdHIudG90YWwpLAogCQkJCQkJCSBCWVRFU19UT19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNT ZW50KSwKIAkJCQkJCQkgZm9ybWF0KTsKIAkJZWxzZQpAQCAtMTAyNywxMCArMTAyNCwxMCBAQCBF eHBsYWluUHJpbnRTZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAq bWV0cmljcykKIAkJCQkJCQkgQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCks CiAJCQkJCQkJIGZvcm1hdCk7CiAKLQkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3Vz YWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpKQorCQlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGVl a19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSkpCiAJCXsKIAkJCWVz LT5pbmRlbnQrKzsKLQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNh Z2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7 CiAJCQllcy0+aW5kZW50LS07CiAJCX0KIAl9CkBAIC0xMDM4LDEzICsxMDM1LDEzIEBAIEV4cGxh aW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNzICptZXRy aWNzKQogCXsKIAkJaWYgKGVzLT50aW1pbmcpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGlt ZSIsICJtcyIsCi0JCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmlj cy0+dGltZVNwZW50KSwKKwkJCQkJCQkJIDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRSht ZXRyaWNzLT5pbnN0ci50b3RhbCksCiAJCQkJCQkJCSAzLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0 eVVJbnRlZ2VyKCJPdXRwdXQgVm9sdW1lIiwgImtCIiwKIAkJCQkJCQkJQllURVNfVE9fS0lMT0JZ VEVTKG1ldHJpY3MtPmJ5dGVzU2VudCksIGVzKTsKIAkJRXhwbGFpblByb3BlcnR5VGV4dCgiRm9y bWF0IiwgZm9ybWF0LCBlcyk7CiAJCWlmIChlcy0+YnVmZmVycykKLQkJCXNob3dfYnVmZmVyX3Vz YWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMs ICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CiAJfQogCiAJRXhwbGFpbkNsb3NlR3JvdXAoIlNl cmlhbGl6YXRpb24iLCAiU2VyaWFsaXphdGlvbiIsIHRydWUsIGVzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW5fZHIuYwppbmRleCAzYzk2MDYxY2YzMi4uZTFmYzcyM2M3NTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluX2RyLmMKQEAgLTExMCwxNSArMTEwLDExIEBAIHNlcmlhbGl6ZUFuYWx5emVSZWNl aXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OwogCVN0cmluZ0luZm8JYnVmID0gJm15U3RhdGUtPmJ1ZjsKIAlpbnQJ CQluYXR0cyA9IHR5cGVpbmZvLT5uYXR0czsKLQlpbnN0cl90aW1lCXN0YXJ0LAotCQkJCWVuZDsK LQlCdWZmZXJVc2FnZSBpbnN0cl9zdGFydDsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gJm15 U3RhdGUtPm1ldHJpY3MuaW5zdHI7CiAKIAkvKiBvbmx5IG1lYXN1cmUgdGltZSwgYnVmZmVycyBp ZiByZXF1ZXN0ZWQgKi8KLQlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKLQkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChzdGFydCk7Ci0JaWYgKG15U3RhdGUtPmVzLT5idWZmZXJzKQotCQlpbnN0cl9z dGFydCA9IHBnQnVmZmVyVXNhZ2U7CisJaWYgKGluc3RyLT5uZWVkX3RpbWVyIHx8IGluc3RyLT5u ZWVkX3N0YWNrKQorCQlJbnN0clN0YXJ0KGluc3RyKTsKIAogCS8qIFNldCBvciB1cGRhdGUgbXkg ZGVyaXZlZCBhdHRyaWJ1dGUgaW5mbywgaWYgbmVlZGVkICovCiAJaWYgKG15U3RhdGUtPmF0dHJp bmZvICE9IHR5cGVpbmZvIHx8IG15U3RhdGUtPm5hdHRycyAhPSBuYXR0cykKQEAgLTE4NiwxOCAr MTgyLDkgQEAgc2VyaWFsaXplQW5hbHl6ZVJlY2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERl c3RSZWNlaXZlciAqc2VsZikKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJ TWVtb3J5Q29udGV4dFJlc2V0KG15U3RhdGUtPnRtcGNvbnRleHQpOwogCi0JLyogVXBkYXRlIHRp bWluZyBkYXRhICovCi0JaWYgKG15U3RhdGUtPmVzLT50aW1pbmcpCi0JewotCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGVuZCk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihteVN0YXRlLT5tZXRy aWNzLnRpbWVTcGVudCwgZW5kLCBzdGFydCk7Ci0JfQotCi0JLyogVXBkYXRlIGJ1ZmZlciBtZXRy aWNzICovCi0JaWYgKG15U3RhdGUtPmVzLT5idWZmZXJzKQotCQlCdWZmZXJVc2FnZUFjY3VtRGlm ZigmbXlTdGF0ZS0+bWV0cmljcy5idWZmZXJVc2FnZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2Us Ci0JCQkJCQkJICZpbnN0cl9zdGFydCk7CisJLyogU3RvcCBwZXItdHVwbGUgbWVhc3VyZW1lbnQg Ki8KKwlpZiAoaW5zdHItPm5lZWRfdGltZXIgfHwgaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3Ry U3RvcChpbnN0cik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTIzMyw5ICsyMjAsMTcgQEAgc2Vy aWFsaXplQW5hbHl6ZVN0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBU dXBsZURlc2MgdHlwZWluZm8pCiAJLyogVGhlIG91dHB1dCBidWZmZXIgaXMgcmUtdXNlZCBhY3Jv c3Mgcm93cywgYXMgaW4gcHJpbnR0dXAuYyAqLwogCWluaXRTdHJpbmdJbmZvKCZyZWNlaXZlci0+ YnVmKTsKIAotCS8qIEluaXRpYWxpemUgcmVzdWx0cyBjb3VudGVycyAqLworCS8qIEluaXRpYWxp emUgbWV0cmljcyBhbmQgcGVyLXR1cGxlIGluc3RydW1lbnRhdGlvbiAqLwogCW1lbXNldCgmcmVj ZWl2ZXItPm1ldHJpY3MsIDAsIHNpemVvZihTZXJpYWxpemVNZXRyaWNzKSk7Ci0JSU5TVFJfVElN RV9TRVRfWkVSTyhyZWNlaXZlci0+bWV0cmljcy50aW1lU3BlbnQpOworCXsKKwkJaW50CQkJaW5z dHJ1bWVudF9vcHRpb25zID0gMDsKKworCQlpZiAocmVjZWl2ZXItPmVzLT50aW1pbmcpCisJCQlp bnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJVTUVOVF9USU1FUjsKKwkJaWYgKHJlY2VpdmVyLT5l cy0+YnVmZmVycykKKwkJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7 CisJCUluc3RySW5pdE9wdGlvbnMoJnJlY2VpdmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cnVtZW50 X29wdGlvbnMpOworCX0KIH0KIAogLyoKQEAgLTI0Niw2ICsyNDEsOCBAQCBzZXJpYWxpemVBbmFs eXplU2h1dGRvd24oRGVzdFJlY2VpdmVyICpzZWxmKQogewogCVNlcmlhbGl6ZURlc3RSZWNlaXZl ciAqcmVjZWl2ZXIgPSAoU2VyaWFsaXplRGVzdFJlY2VpdmVyICopIHNlbGY7CiAKKwlJbnN0ckZp bmFsaXplQ2hpbGQoJnJlY2VpdmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cl9zdGFjay5jdXJyZW50 KTsKKwogCWlmIChyZWNlaXZlci0+ZmluZm9zKQogCQlwZnJlZShyZWNlaXZlci0+ZmluZm9zKTsK IAlyZWNlaXZlci0+ZmluZm9zID0gTlVMTDsKQEAgLTI5NiwxNiArMjkzLDE4IEBAIENyZWF0ZUV4 cGxhaW5TZXJpYWxpemVEZXN0UmVjZWl2ZXIoRXhwbGFpblN0YXRlICplcykKICAqIHJlY2VpdmVy IGlmIHRoZSBzdWJqZWN0IHN0YXRlbWVudCBpcyBDUkVBVEUgVEFCTEUgQVMuICBJbiB0aGF0CiAg KiBjYXNlLCByZXR1cm4gYWxsLXplcm9lcyBzdGF0cy4KICAqLwotU2VyaWFsaXplTWV0cmljcwor LyoKKyAqIEdldFNlcmlhbGl6YXRpb25NZXRyaWNzIC0gZ2V0IHNlcmlhbGl6YXRpb24gbWV0cmlj cworICoKKyAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBTZXJpYWxpemVNZXRyaWNzIGluc2lk ZSB0aGUgZGVzdCByZWNlaXZlciwKKyAqIG9yIE5VTEwgaWYgdGhlIHJlY2VpdmVyIGlzIG5vdCBh IFNlcmlhbGl6ZURlc3RSZWNlaXZlciAoZS5nLiBhbiBJbnRvUmVsCisgKiByZWNlaXZlciBmb3Ig Q1JFQVRFIFRBQkxFIEFTKS4KKyAqLworU2VyaWFsaXplTWV0cmljcyAqCiBHZXRTZXJpYWxpemF0 aW9uTWV0cmljcyhEZXN0UmVjZWl2ZXIgKmRlc3QpCiB7Ci0JU2VyaWFsaXplTWV0cmljcyBlbXB0 eTsKLQogCWlmIChkZXN0LT5teWRlc3QgPT0gRGVzdEV4cGxhaW5TZXJpYWxpemUpCi0JCXJldHVy biAoKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBkZXN0KS0+bWV0cmljczsKLQotCW1lbXNldCgm ZW1wdHksIDAsIHNpemVvZihTZXJpYWxpemVNZXRyaWNzKSk7Ci0JSU5TVFJfVElNRV9TRVRfWkVS TyhlbXB0eS50aW1lU3BlbnQpOworCQlyZXR1cm4gJigoU2VyaWFsaXplRGVzdFJlY2VpdmVyICop IGRlc3QpLT5tZXRyaWNzOwogCi0JcmV0dXJuIGVtcHR5OworCXJldHVybiBOVUxMOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCmluZGV4IDg3NmFhZDIxMDBhLi5mN2UxNThlNGRkOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwpAQCAtNTgwLDEzICs1ODAsMTYgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJTGlzdENlbGwgICAqcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0 ZQkgICAqZXN0YXRlID0gTlVMTDsKLQlpbnN0cl90aW1lCXBsYW5zdGFydDsKLQlpbnN0cl90aW1l CXBsYW5kdXJhdGlvbjsKLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQlidWZ1c2Fn ZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOwogCU1lbW9yeUNvbnRleHRD b3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5VTEw7 CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJCWluc3RydW1lbnRfb3B0 aW9ucyA9IElOU1RSVU1FTlRfVElNRVI7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1l bnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisKKwlpbnN0ciA9IEluc3RyUXVlcnlB bGxvYyhpbnN0cnVtZW50X29wdGlvbnMpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNTk4 LDkgKzYwMSw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlzYXZlZF9jdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocGxhbm5lcl9jdHgpOwogCX0KIAotCWlmIChlcy0+YnVmZmVycykKLQkJ YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo cGxhbnN0YXJ0KTsKKwlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCiAJLyogTG9vayBpdCB1cCBp biB0aGUgaGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gRmV0Y2hQcmVwYXJlZFN0YXRlbWVudChleGVj c3RtdC0+bmFtZSwgdHJ1ZSk7CkBAIC02MzUsOCArNjM2LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAog CQkJCQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcHN0YXRlLT5wX3F1ZXJ5RW52KTsKIAotCUlO U1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9USU1FX1NVQlRSQUNU KHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsKKwlJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3Ry KTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTY0NCwxMyArNjQ0LDYgQEAgRXhwbGFpbkV4 ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1l bV9jb3VudGVycyk7CiAJfQogCi0JLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRl cnMuICovCi0JaWYgKGVzLT5idWZmZXJzKQotCXsKLQkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6 ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBn QnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7Ci0JfQotCiAJcGxhbl9saXN0ID0gY3BsYW4t PnN0bXRfbGlzdDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLwpAQCAtNjYwLDcgKzY1Myw3 IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0g Q01EX1VUSUxJVFkpCiAJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0 cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5kdXJhdGlv biwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJCQkgICAmaW5zdHItPmlu c3RyLnRvdGFsLCAoZXMtPmJ1ZmZlcnMgPyAmaW5zdHItPmluc3RyLmJ1ZnVzYWdlIDogTlVMTCks CiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCiAJ CQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBwc3RhdGUs IHBhcmFtTEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwY2UyZTgxZjljMi4uZjcy YzFhYzUyMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTM5LDcgKzIxMzksNyBA QCBFeGVjdXRlVHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAJCQkJCQkgIHJlbCwK IAkJCQkJCSAgMCwJLyogZHVtbXkgcmFuZ2V0YWJsZSBpbmRleCAqLwogCQkJCQkJICBOVUxMLAot CQkJCQkJICAwKTsKKwkJCQkJCSAgTlVMTCk7CiAJCWVzdGF0ZS0+ZXNfb3BlbmVkX3Jlc3VsdF9y ZWxhdGlvbnMgPQogCQkJbGFwcGVuZChlc3RhdGUtPmVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25z LCByZXN1bHRSZWxJbmZvKTsKIAkJcmVzdWx0UmVsSW5mbysrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CmluZGV4IDRkNGU5NmE1MzAyLi5iOGI4ODQwMzQ1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpA QCAtOTMsNiArOTMsNyBAQCBzdGF0aWMgSGVhcFR1cGxlIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJp Z2dlckRhdGEgKnRyaWdkYXRhLAogCQkJCQkJCQkJIGludCB0Z2luZHgsCiAJCQkJCQkJCQkgRm1n ckluZm8gKmZpbmZvLAogCQkJCQkJCQkJIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3RyLAor CQkJCQkJCQkJIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCiAJCQkJCQkJCQkgTWVtb3J5 Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCk7CiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZl RXZlbnQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSAg UmVzdWx0UmVsSW5mbyAqc3JjX3BhcnRpbmZvLApAQCAtMjMxMiw2ICsyMzEzLDcgQEAgRXhlY0Nh bGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJCQkJCWludCB0Z2luZHgsCiAJ CQkJCUZtZ3JJbmZvICpmaW5mbywKIAkJCQkJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIs CisJCQkJCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQg cGVyX3R1cGxlX2NvbnRleHQpCiB7CiAJTE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ2 LDcgKzIzNDgsNyBAQCBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwK IAkgKiBJZiBkb2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhp cyB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydFRyaWdnZXIoaW5zdHIg KyB0Z2luZHgpOworCQlJbnN0clN0YXJ0VHJpZ2dlcihxaW5zdHIsIGluc3RyICsgdGdpbmR4KTsK IAogCS8qCiAJICogRG8gdGhlIGZ1bmN0aW9uIGV2YWx1YXRpb24gaW4gdGhlIHBlci10dXBsZSBt ZW1vcnkgY29udGV4dCwgc28gdGhhdApAQCAtMjQ0MSw2ICsyNDQzLDcgQEAgRXhlY0JTSW5zZXJ0 VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJCQkJCQkJ CQkgICBpLAogCQkJCQkJCQkJICAgcmVsaW5mby0+cmlfVHJpZ0Z1bmN0aW9ucywKIAkJCQkJCQkJ CSAgIHJlbGluZm8tPnJpX1RyaWdJbnN0cnVtZW50LAorCQkJCQkJCQkJICAgZXN0YXRlLT5lc19p bnN0cnVtZW50LAogCQkJCQkJCQkJICAgR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkp OwogCiAJCWlmIChuZXd0dXBsZSkKQEAgLTI1MDIsNiArMjUwNSw3IEBAIEV4ZWNCUkluc2VydFRy aWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkJ ICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkg ICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5z dHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsK IAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTI2MDYsNiArMjYxMCw3IEBAIEV4ZWNJ Ukluc2VydFRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog CQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJ CQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChl c3RhdGUpKTsKIAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTI2NzAsNiArMjY3NSw3 IEBAIEV4ZWNCU0RlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpy ZWxpbmZvKQogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5j dGlvbnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJ CSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5 Q29udGV4dChlc3RhdGUpKTsKIAogCQlpZiAobmV3dHVwbGUpCkBAIC0yNzgwLDYgKzI3ODYsNyBA QCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRl LAogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMs CiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4 dChlc3RhdGUpKTsKIAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTI4ODQsNiArMjg5 MSw3IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZv ICpyZWxpbmZvLAogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdG dW5jdGlvbnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJ CQkJCSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVt b3J5Q29udGV4dChlc3RhdGUpKTsKIAkJaWYgKHJldHR1cGxlID09IE5VTEwpCiAJCQlyZXR1cm4g ZmFsc2U7CQkvKiBEZWxldGUgd2FzIHN1cHByZXNzZWQgKi8KQEAgLTI5NDIsNiArMjk1MCw3IEBA IEV4ZWNCU1VwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvKQogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlv bnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAg IGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29u dGV4dChlc3RhdGUpKTsKIAogCQlpZiAobmV3dHVwbGUpCkBAIC0zMDk0LDYgKzMxMDMsNyBAQCBF eGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAog CQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJ CQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChl c3RhdGUpKTsKIAogCQlpZiAobmV3dHVwbGUgPT0gTlVMTCkKQEAgLTMyNTgsNiArMzI2OCw3IEBA IEV4ZWNJUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlv bnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAg IGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29u dGV4dChlc3RhdGUpKTsKIAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTMzMTYsNiAr MzMyNyw3IEBAIEV4ZWNCU1RydW5jYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJl bEluZm8gKnJlbGluZm8pCiAJCQkJCQkJCQkgICBpLAogCQkJCQkJCQkJICAgcmVsaW5mby0+cmlf VHJpZ0Z1bmN0aW9ucywKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdJbnN0cnVtZW50LAor CQkJCQkJCQkJICAgZXN0YXRlLT5lc19pbnN0cnVtZW50LAogCQkJCQkJCQkJICAgR2V0UGVyVHVw bGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOwogCiAJCWlmIChuZXd0dXBsZSkKQEAgLTQzODMsNyAr NDM5NSw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJICogdG8gaW5j bHVkZSB0aW1lIHNwZW50IHJlLWZldGNoaW5nIHR1cGxlcyBpbiB0aGUgdHJpZ2dlciBjb3N0Lgog CSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihlc3RhdGUtPmVzX2luc3RydW1lbnQsIGluc3RyICsgdGdpbmR4 KTsKIAogCS8qCiAJICogRmV0Y2ggdGhlIHJlcXVpcmVkIHR1cGxlKHMpLgpAQCAtNDU3MSw2ICs0 NTgzLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJICAg dGdpbmR4LAogCQkJCQkJCQkgICBmaW5mbywKIAkJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkJICAg TlVMTCwKIAkJCQkJCQkJICAgcGVyX3R1cGxlX2NvbnRleHQpOwogCWlmIChyZXR0dXBsZSAhPSBO VUxMICYmCiAJCXJldHR1cGxlICE9IExvY1RyaWdnZXJEYXRhLnRnX3RyaWd0dXBsZSAmJgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggNzc4MzRiOTZhMjEuLmMzMzBjODkx YzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTMwOCw4ICszMDgs OCBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxz LCBpbnQgbmluZGV4ZXMsCiAJICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5k IFBBUkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5v IGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkg KiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ0J1 ZmZlclVzYWdlIG9yCi0JICogcGdXYWxVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5Lgor CSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGlu c3RydW1lbnRhdGlvbiwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2ht X3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUo c2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTEwMDYsNiArMTAwNiw3 IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAlQVkluZFN0YXRzICppbmRzdGF0czsKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlkU3RvcmUg ICAqZGVhZF9pdGVtczsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJQnVmZmVyVXNh Z2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CiAJaW50CQkJbmluZGV4 ZXM7CkBAIC0xMDk1LDcgKzEwOTYsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFj azsKIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJT dGFydFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qIFByb2Nlc3MgaW5kZXhlcyB0byBwZXJmb3JtIHZh Y3V1bS9jbGVhbnVwICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKCZw dnMpOwpAQCAtMTEwMyw3ICsxMTA0LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmlu ZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsX3VzYWdl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFs c2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJf dXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVs V29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgYW55IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZh Y3V1bSBkZWxheSB0aW1lICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFE TUUuaW5zdHJ1bWVudCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ODBmZDVkODVlMAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50CkBAIC0w LDAgKzEsMjI3IEBACitzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUuaW5zdHJ1bWVudAorCitJ bnN0cnVtZW50YXRpb24KKz09PT09PT09PT09PT09PQorCitUaGUgaW5zdHJ1bWVudGF0aW9uIHN1 YnN5c3RlbSBtZWFzdXJlcyB0aW1lLCBidWZmZXIgdXNhZ2UgYW5kIFdBTCBhY3Rpdml0eQorZHVy aW5nIHF1ZXJ5IGV4ZWN1dGlvbiBhbmQgb3RoZXIgc2ltaWxhciBhY3Rpdml0aWVzLiAgSXQgaXMg dXNlZCBieQorRVhQTEFJTiBBTkFMWVpFLCBwZ19zdGF0X3N0YXRlbWVudHMsIGFuZCBvdGhlciBj b25zdW1lcnMgdGhhdCBuZWVkCithY3Rpdml0eSBhbmQvb3IgdGltaW5nIG1ldHJpY3Mgb3ZlciBh IHNlY3Rpb24gb2YgY29kZS4KKworVGhlIGRlc2lnbiBoYXMgdHdvIGNlbnRyYWwgZ29hbHM6CisK KyogTWFrZSBpdCBjaGVhcCB0byBtZWFzdXJlIGFjdGl2aXR5IGluIGEgc2VjdGlvbiBvZiBjb2Rl LCBldmVuIHdoZW4KKyAgdGhhdCBzZWN0aW9uIGlzIGNhbGxlZCBtYW55IHRpbWVzIGFuZCB0aGUg YWdncmVnYXRlIGlzIHdoYXQgaXMgdXNlZAorICAoYXMgaXMgdGhlIGNhc2Ugd2l0aCBwZXItbm9k ZSBpbnN0cnVtZW50YXRpb24gaW4gdGhlIGV4ZWN1dG9yKQorCisqIEVuc3VyZSBuZXN0ZWQgaW5z dHJ1bWVudGF0aW9uIGFjY3VyYXRlbHkgbWVhc3VyZXMgYWN0aXZpdHkvdGltaW5nLAorICBhbmQg Y291bnRlciB1cGRhdGVzIGZyb20gYWN0aXZpdHkgZ2V0IHdyaXR0ZW4gdG8gdGhlIGN1cnJlbnRs eQorICBhY3RpdmUgaW5zdHJ1bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCB1cHdhcmQgdG8gcGFy ZW50IG5vZGVzIHdoZW4KKyAgZmluYWxpemVkLCBjb25zaWRlcmluZyBhYm9ydHMgZHVlIHRvIGVy cm9ycy4KKworVGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCithbmQgdGhlIGltcGxlbWVudGF0aW9uIGxpdmVzIGlu IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYy4KKworCitJbnN0cnVtZW50YXRpb24g T3B0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2FsbGVycyBzcGVjaWZ5IHdoYXQg dG8gbWVhc3VyZSB3aXRoIGEgYml0bWFzayBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzOgorCisg IElOU1RSVU1FTlRfUk9XUyAgICAgLS0gcm93IGNvdW50cyBvbmx5ICh1c2VkIHdpdGggTm9kZUlu c3RydW1lbnRhdGlvbikKKyAgSU5TVFJVTUVOVF9USU1FUiAgICAtLSB3YWxsLWNsb2NrIHRpbWlu ZyBhbmQgcm93IGNvdW50cworICBJTlNUUlVNRU5UX0JVRkZFUlMgIC0tIGJ1ZmZlciBoaXQvcmVh ZC9kaXJ0aWVkL3dyaXR0ZW4gY291bnRzIGFuZCBJL08gdGltZQorICBJTlNUUlVNRU5UX1dBTCAg ICAgIC0tIFdBTCByZWNvcmRzLCBGUEksIGJ5dGVzCisKK0lOU1RSVU1FTlRfQlVGRkVSUyBhbmQg SU5TVFJVTUVOVF9XQUwgdXRpbGl6ZSB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrCisoZGVzY3Jp YmVkIGJlbG93KSBmb3IgZWZmaWNpZW50IGhhbmRsaW5nIG9mIGNvdW50ZXIgdmFsdWVzLgorCisK K1N0cnVjdCBIaWVyYXJjaHkKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGZvdXIgaW5z dHJ1bWVudGF0aW9uIHN0cnVjdHMsIGVhY2ggc3BlY2lhbGl6ZWQgZm9yIGEgZGlmZmVyZW50Citz Y29wZToKKworSW5zdHJ1bWVudGF0aW9uICAgICAgICBCYXNlIHN0cnVjdC4gIEhvbGRzIHRpbWlu ZyBhbmQgYnVmZmVyL1dBTCBjb3VudGVycy4KKworUXVlcnlJbnN0cnVtZW50YXRpb24gICBFeHRl bmRzIEluc3RydW1lbnRhdGlvbiBmb3IgcXVlcnktbGV2ZWwgdHJhY2tpbmcuICBXaGVuCisgICAg ICAgICAgICAgICAgICAgICAgIHN0YWNrLWJhc2VkIHRyYWNraW5nIGlzIGVuYWJsZWQsIGl0IG93 bnMgYSBkZWRpY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5Q29udGV4dCBhbmQg dXNlcyB0aGUgUmVzb3VyY2VPd25lciBtZWNoYW5pc20gZm9yCisgICAgICAgICAgICAgICAgICAg ICAgIGFib3J0IGNsZWFudXAuCisKK05vZGVJbnN0cnVtZW50YXRpb24gICAgRXh0ZW5kcyBJbnN0 cnVtZW50YXRpb24gZm9yIHBlci1wbGFuLW5vZGUgc3RhdGlzdGljcworICAgICAgICAgICAgICAg ICAgICAgICAoc3RhcnR1cCB0aW1lLCB0dXBsZSBjb3VudHMsIGxvb3AgY291bnRzLCBldGMpLgor CitUcmlnZ2VySW5zdHJ1bWVudGF0aW9uIEV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uIHdpdGggYSBm aXJpbmcgY291bnQuCisKKworU3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworRm9yIHRyYWNraW5nIFdBTCBvciBidWZmZXIgdXNhZ2UgY291 bnRlcnMsIHRoZSBzcGVjaWFsaXplZCBzdGFjay1iYXNlZAoraW5zdHJ1bWVudGF0aW9uIGlzIHVz ZWQuCisKK0F0IGFsbCB0aW1lcywgdGhlcmUgaXMgYSBzdGFjayB0aGF0IHRyYWNrcyB3aGljaCBJ bnN0cnVtZW50YXRpb24gaXMgY3VycmVudGx5CithY3RpdmUuICBUaGUgc3RhY2sgaXMgcmVwcmVz ZW50ZWQgYnkgaW5zdHJfc3RhY2ssIGEgcGVyLWJhY2tlbmQgZ2xvYmFsCit0aGF0IGhvbGRzIGEg ZHluYW1pYyBhcnJheSBvZiBJbnN0cnVtZW50YXRpb24gcG9pbnRlcnMuICBUaGUgZmllbGQKK2lu c3RyX3N0YWNrLmN1cnJlbnQgYWx3YXlzIHBvaW50cyB0byB0aGUgY3VycmVudCBzdGFjayBlbnRy eSB0aGF0IHNob3VsZAorYmUgdXBkYXRlZCB3aGVuIGFjdGl2aXR5IG9jY3Vycy4gIFdoZW4gdGhl IHN0YWNrIGFycmF5IGlzIGVtcHR5LCB0aGUKK2N1cnJlbnQgc3RhY2sgcG9pbnRzIHRvIGluc3Ry X3RvcC4KKworRm9yIGV4YW1wbGUsIGlmIGEgYmFja2VuZCBoYXMgdHdvIHBvcnRhbHMgb3Blbiwg dGhlIG92ZXJhbGwgbmVzdGluZyBvZgorSW5zdHJ1bWVudGF0aW9uIGFuZCB0aGVpciByZXNwZWN0 aXZlIEluc3RyU3RhcnQvSW5zdHJTdG9wIGNhbGxzIGNyZWF0ZXMgYQordHJlZS1saWtlIHN0cnVj dHVyZSBsaWtlIHRoaXM6CisKKyAgICBTZXNzaW9uIChpbnN0cl90b3ApCisgICAgIHwKKyAgICAg Ky0tIFF1ZXJ5IEEgKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKQorICAgICB8ICAgIHwKKyAgICAgfCAg ICArLS0gTmVzdExvb3AgKE5vZGVJbnN0cnVtZW50YXRpb24pCisgICAgIHwgICAgICAgICB8Cisg ICAgIHwgICAgICAgICArLS0gU2VxIFNjYW4gQSAoTm9kZUluc3RydW1lbnRhdGlvbikKKyAgICAg fCAgICAgICAgICstLSBTZXEgU2NhbiBCIChOb2RlSW5zdHJ1bWVudGF0aW9uKQorICAgICB8Cisg ICAgICstLSBRdWVyeSBCIChRdWVyeUluc3RydW1lbnRhdGlvbikKKyAgICAgICAgICB8CisgICAg ICAgICAgKy0tIFNlcSBTY2FuIEMgKE5vZGVJbnN0cnVtZW50YXRpb24pCisKK1doaWxlIGV4ZWN1 dGluZyBTZXEgU2NhbiBCLCB0aGUgc3RhY2sgbG9va3MgbGlrZToKKworICAgIGluc3RyX3RvcCAg ICAgICAgICAgICAgKGltcGxpY2l0IGJvdHRvbSwgbm90IGluIHRoZSBlbnRyaWVzIGFycmF5KQor ICAgIDA6IFF1ZXJ5IEEKKyAgICAxOiBOZXN0TG9vcAorICAgIDI6IFNlcSBTY2FuIEIgICAgICAg ICAgPC0tIGluc3RyX3N0YWNrLmN1cnJlbnQKKworV2hlbiBubyBxdWVyeSBpcyBydW5uaW5nLCB0 aGUgc3RhY2sgaXMgZW1wdHkgKHN0YWNrX3NpemUgPT0gMCkgYW5kCitpbnN0cl9zdGFjay5jdXJy ZW50IHBvaW50cyB0byBpbnN0cl90b3AuCisKK0FueSBidWZmZXIgb3IgV0FMIGNvdW50ZXIgdXBk YXRlICh2aWEgdGhlIElOU1RSX0JVRlVTQUdFXyogYW5kCitJTlNUUl9XQUxVU0FHRV8qIG1hY3Jv cyBpbiB0aGUgYnVmZmVyIG1hbmFnZXIsIFdBTCBpbnNlcnRpb24gY29kZSwgZXRjLikKK3dyaXRl cyBkaXJlY3RseSBpbnRvIGluc3RyX3N0YWNrLmN1cnJlbnQuICBFYWNoIGluc3RydW1lbnRhdGlv biBub2RlIHN0YXJ0cworemVyb2VkLCBzbyB0aGUgdmFsdWVzIGl0IGFjY3VtdWxhdGVzIHdoaWxl IG9uIHRvcCBvZiB0aGUgc3RhY2sgcmVwcmVzZW50CitleGFjdGx5IHRoZSBhY3Rpdml0eSB0aGF0 IG9jY3VycmVkIGR1cmluZyB0aGF0IHRpbWUuCisKK0V2ZXJ5IEluc3RydW1lbnRhdGlvbiBub2Rl IGhhcyBhIHRhcmdldCwgb3IgcGFyZW50LCBpdCB3aWxsIGJlIGFjY3VtdWxhdGVkCitpbnRvLCB3 aGljaCBpcyB0eXBpY2FsbHkgdGhlIEluc3RydW1lbnRhdGlvbiB0aGF0IHdhcyB0aGUgY3VycmVu dCBzdGFjaworZW50cnkgd2hlbiBpdCB3YXMgY3JlYXRlZC4KKworRm9yIGV4YW1wbGUsIHdoZW4g U2VxIFNjYW4gQSBnZXRzIGZpbmFsaXplZCBpbiByZWd1bGFyIGV4ZWN1dGlvbiB2aWEgRXhlY3V0 b3JGaW5pc2gsCitpdHMgaW5zdHJ1bWVudGF0aW9uIGRhdGEgZ2V0cyBhZGRlZCB0byB0aGUgaW1t ZWRpYXRlIHBhcmVudCBpbgordGhlIGV4ZWN1dGlvbiB0cmVlLCB0aGUgTmVzdExvb3AsIHdoaWNo IHdpbGwgdGhlbiBnZXQgYWRkZWQgdG8gUXVlcnkgQSdzCitRdWVyeUluc3RydW1lbnRhdGlvbiwg d2hpY2ggdGhlbiBhY2N1bXVsYXRlcyB0byB0aGUgcGFyZW50LgorCitXaGlsZSB3ZSBjYW4gdHlw aWNhbGx5IHRoaW5rIG9mIHRoaXMgYXMgYSB0cmVlLCB0aGUgTm9kZUluc3RydW1lbnRhdGlvbgor dW5kZXJuZWF0aCBhIHBhcnRpY3VsYXIgUXVlcnlJbnN0cnVtZW50YXRpb24gY291bGQgYmVoYXZl IGRpZmZlcmVudGx5IC0tCitmb3IgZXhhbXBsZSwgaXQgY291bGQgcHJvcGFnYXRlIGRpcmVjdGx5 IHRvIHRoZSBRdWVyeUluc3RydW1lbnRhdGlvbiwgaW4KK29yZGVyIHRvIG5vdCBzaG93IGN1bXVs YXRpdmUgbnVtYmVycyBpbiBFWFBMQUlOIEFOQUxZWkUuCisKK05vdGUgdGhlc2UgcmVsYXRpb25z aGlwcyBhcmUgcGFydGlhbGx5IGltcGxpY2l0LCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMKK3Rv IE5vZGVJbnN0cnVtZW50YXRpb24uIEVhY2ggUXVlcnlJbnN0cnVtZW50YXRpb24gbWFpbnRhaW5z IGEgbGlzdCBvZiBpdHMKK3VuZmluYWxpemVkIGNoaWxkIG5vZGVzLiAgVGhlIHBhcmVudCBvZiBh IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGl0c2VsZiBpcworZGV0ZXJtaW5lZCBieSB0aGUgc3RhY2sg KHNlZSBiZWxvdyk6IHdoZW4gYSBxdWVyeSBpcyBmaW5hbGl6ZWQgb3IgY2xlYW5lZAordXAgb24g YWJvcnQsIGl0cyBjb3VudGVycyBhcmUgYWNjdW11bGF0ZWQgdG8gd2hhdGV2ZXIgZW50cnkgaXMg dGhlbiBjdXJyZW50CitvbiB0aGUgc3RhY2ssIHdoaWNoIGlzIHR5cGljYWxseSBpbnN0cl90b3Au CisKKworRmluYWxpemF0aW9uIGFuZCBBYm9ydCBTYWZldHkKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKK0ZpbmFsaXphdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiByb2xsaW5nIHVwIGEg bm9kZSdzIGJ1ZmZlci9XQUwgY291bnRlcnMgdG8KK2l0cyBwYXJlbnQuICBJbiBub3JtYWwgZXhl Y3V0aW9uLCBub2RlcyBhcmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIHdoZW4gdGhleQorc3RhcnQg YW5kIHBvcHBlZCB3aGVuIHRoZXkgc3RvcDsgYXQgZmluYWxpemF0aW9uIHRpbWUgdGhlaXIgYWNj dW11bGF0ZWQKK2NvdW50ZXJzIGFyZSBhZGRlZCB0byB0aGUgcGFyZW50LgorCitEdWUgdG8gdGhl IHVzZSBvZiBsb25nam1wIGZvciBlcnJvciBoYW5kbGluZywgZnVuY3Rpb25zIGNhbiBleGl0IGFi cnVwdGx5Cit3aXRob3V0IGV4ZWN1dGluZyB0aGVpciBub3JtYWwgY2xlYW51cCBjb2RlLiAgT24g YWJvcnQsIHR3byB0aGluZ3MgbmVlZAordG8gaGFwcGVuOgorCisxLiBSZXNldCB0aGUgc3RhY2sg dG8gdGhlIGFwcHJvcHJpYXRlIGxldmVsLiAgVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QKKyAg IGxhdGVyIHRyeSB0byB1cGRhdGUgY291bnRlcnMgb24gYSBmcmVlZCBzdGFjayBlbnRyeS4gIFdl IGFsc28gbmVlZCB0bworICAgZW5zdXJlIHRoYXQgdGhlIHN0YWNrIGVudHJ5IHRoYXQgd2FzIGN1 cnJlbnQgYmVmb3JlIGEgcGFydGljdWxhcgorICAgSW5zdHJ1bWVudGF0aW9uIHN0YXJ0ZWQsIGlz IGN1cnJlbnQgYWdhaW4gYWZ0ZXIgaXQgc3RvcHMuCisKKzIuIEZpbmFsaXplIGFsbCBhZmZlY3Rl ZCBJbnN0cnVtZW50YXRpb24gbm9kZXMsIHJvbGxpbmcgdXAgdGhlaXIgY291bnRlcnMKKyAgIHRv IHRoZSBoaWdoZXN0IHN1cnZpdmluZyBJbnN0cnVtZW50YXRpb24sIHNvIHRoYXQgZGF0YSBpcyBu b3QgbG9zdC4KKworRm9yIGV4YW1wbGUsIGlmIFNlcSBTY2FuIEIgYWJvcnRzIHdoaWxlIHRoZSBz dGFjayBpczoKKworICAgIGluc3RyX3RvcCAgICAgICAgICAgICAgKGltcGxpY2l0IGJvdHRvbSkK KyAgICAwOiBRdWVyeSBBCisgICAgMTogTmVzdExvb3AKKyAgICAyOiBTZXEgU2NhbiBCCisKK1Ro ZSBhYm9ydCBoYW5kbGVyIGZvciBRdWVyeSBBIGFjY3VtdWxhdGVzIGFsbCB1bmZpbmFsaXplZCBj aGlsZHJlbiAoU2VxCitTY2FuIEEsIFNlcSBTY2FuIEIsIE5lc3RMb29wKSBkaXJlY3RseSBpbnRv IFF1ZXJ5IEEncyBjb3VudGVycywgdGhlbgordW53aW5kcyB0aGUgc3RhY2sgYW5kIGFjY3VtdWxh dGVzIFF1ZXJ5IEEncyBjb3VudGVycyB0byBpbnN0cl90b3AuCisKK05vdGUgdGhhdCBvbiBhYm9y dCB0aGUgY2hpbGRyZW4gZG8gbm90IGFjY3VtdWxhdGUgdGhyb3VnaCBlYWNoIG90aGVyIChTZXEK K1NjYW4gQiAtPiBOZXN0TG9vcCAtPiBRdWVyeSBBKTsgdGhleSBhbGwgYWNjdW11bGF0ZSBkaXJl Y3RseSB0byB0aGVpcgorcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uLiAgVGhpcyBtZWFucyB0 aGUgb3JkZXIgaW4gd2hpY2ggY2hpbGRyZW4gYXJlCityZWxlYXNlZCBkb2VzIG5vdCBtYXR0ZXIg LS0gaW1wb3J0YW50IGJlY2F1c2UgUmVzb3VyY2VPd25lciBjbGVhbnVwIGRvZXMKK25vdCBndWFy YW50ZWUgYSBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3JkZXIuICBUaGUgcGVyLW5vZGUgYnJlYWtkb3du IGlzIGxvc3QsCitidXQgdGhlIHF1ZXJ5LWxldmVsIHRvdGFsIGlzIHdoYXQgc3Vydml2ZXMgdGhl IGFib3J0LgorCitJZiBtdWx0aXBsZSBRdWVyeUluc3RydW1lbnRhdGlvbnMgYXJlIGFjdGl2ZSBv biB0aGUgc3RhY2sgKGUuZy4gbmVzdGVkCitwb3J0YWxzKSwgZWFjaCBvbmUncyBhYm9ydCBoYW5k bGVyIHVzZXMgSW5zdHJTdG9wRmluYWxpemUgdG8gdW53aW5kIHRvCit3aGljaGV2ZXIgZW50cnkg aXMgaGlnaGVyIHVwLCBzbyB0aGV5IGNvbXBvc2UgY29ycmVjdGx5IHJlZ2FyZGxlc3Mgb2YKK3Jl bGVhc2Ugb3JkZXIuCisKK1RoZXJlIGFyZSB0d28gbWVjaGFuaXNtcyBmb3IgYWNoaWV2aW5nIGFi b3J0IHNhZmV0eToKKworUmVzb3VyY2UgT3duZXIgKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKQorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitRdWVyeUluc3RydW1lbnRhdGlv biByZWdpc3RlcnMgd2l0aCB0aGUgY3VycmVudCBSZXNvdXJjZU93bmVyIGF0IHN0YXJ0LgorT24g dHJhbnNhY3Rpb24gYWJvcnQsIHRoZSByZXNvdXJjZSBvd25lciBzeXN0ZW0gY2FsbHMgdGhlIHJl bGVhc2UgY2FsbGJhY2ssCit3aGljaCB3YWxrcyB1bmZpbmFsaXplZCBjaGlsZCBlbnRyaWVzLCBh Y2N1bXVsYXRlcyB0aGVpciBkYXRhLCB1bndpbmRzIHRoZQorc3RhY2ssIGFuZCBkZXN0cm95cyB0 aGUgZGVkaWNhdGVkIG1lbW9yeSBjb250ZXh0IChmcmVlaW5nIHRoZQorUXVlcnlJbnN0cnVtZW50 YXRpb24gYW5kIGFsbCBjaGlsZCBhbGxvY2F0aW9ucyBhcyBhIHVuaXQpLgorCitUaGlzIGlzIHRo ZSByZWNvbW1lbmRlZCBhcHByb2FjaCB3aGVuIHRoZSBpbnN0cnVtZW50ZWQgY29kZSBhbHJlYWR5 IGhhcyBhbgorYXBwcm9wcmlhdGUgcmVzb3VyY2Ugb3duZXIgKGUuZy4gaXQgcnVucyBpbnNpZGUg YSBwb3J0YWwpLiAgVGhlIHF1ZXJ5CitleGVjdXRvciB1c2VzIHRoaXMgcGF0aC4KKworUEdfRklO QUxMWSAoYmFzZSBJbnN0cnVtZW50YXRpb24pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK1doZW4gbm8gc3VpdGFibGUgcmVzb3VyY2Ugb3duZXIgZXhpc3RzLCBvciB3aGVu IHRoZSBjYWxsZXIgd2FudHMgdG8gaW5zcGVjdAordGhlIGluc3RydW1lbnRhdGlvbiBkYXRhIGV2 ZW4gYWZ0ZXIgYW4gZXJyb3IsIHRoZSBiYXNlIEluc3RydW1lbnRhdGlvbiBjYW4KK2JlIHVzZWQg d2l0aCBhIFBHX1RSWS9QR19GSU5BTExZIGJsb2NrIHRoYXQgY2FsbHMgSW5zdHJTdG9wRmluYWxp emUoKS4KKworQm90aCBtZWNoYW5pc21zIGFkZCBvdmVyaGVhZCwgc28gbmVpdGhlciBpcyBzdWl0 YWJsZSBmb3IgaGlnaC1mcmVxdWVuY3kKK2luc3RydW1lbnRhdGlvbiBsaWtlIHBlci1ub2RlIG1l YXN1cmVtZW50cyBpbiB0aGUgZXhlY3V0b3IuICBJbnN0ZWFkLAorcGxhbiBub2RlIGFuZCB0cmln Z2VyIGNoaWxkcmVuIHJlbHkgb24gdGhlaXIgcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCitm b3IgYWJvcnQgc2FmZXR5OiB0aGV5IGFyZSBhbGxvY2F0ZWQgaW4gdGhlIHBhcmVudCdzIG1lbW9y eSBjb250ZXh0IGFuZAorcmVnaXN0ZXJlZCBpbiBpdHMgdW5maW5hbGl6ZWQtZW50cmllcyBsaXN0 LCBzbyB0aGUgcGFyZW50J3MgYWJvcnQgaGFuZGxlcgorcmVjb3ZlcnMgdGhlaXIgZGF0YSBhdXRv bWF0aWNhbGx5LiAgSW4gbm9ybWFsIGV4ZWN1dGlvbiwgY2hpbGRyZW4gYXJlCitmaW5hbGl6ZWQg ZXhwbGljaXRseSBieSB0aGUgY2FsbGVyLgorCitQYXJhbGxlbCBRdWVyeQorLS0tLS0tLS0tLS0t LS0KKworUGFyYWxsZWwgd29ya2VycyBnZXQgdGhlaXIgb3duIFF1ZXJ5SW5zdHJ1bWVudGF0aW9u IHNvIHRoZXkgY2FuIG1lYXN1cmUKK2J1ZmZlciBhbmQgV0FMIGFjdGl2aXR5IGluZGVwZW5kZW50 bHksIHRoZW4gY29weSB0aGUgdG90YWxzIGludG8gc2hhcmVkCittZW1vcnkgYXQgc2h1dGRvd24u ICBUaGUgbGVhZGVyIGFjY3VtdWxhdGVzIHRoZXNlIGludG8gaXRzIG93biBzdGFjay4KKworV2hl biBwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gaXMgYWN0aXZlLCBwYXJhbGxlbCB3b3JrZXJzIHNr aXAgcGVyLW5vZGUKK2ZpbmFsaXphdGlvbiBhdCBzaHV0ZG93biB0byBhdm9pZCBkb3VibGUtY291 bnRpbmc7IHRoZSBwZXItbm9kZSBkYXRhIGlzCithZ2dyZWdhdGVkIHNlcGFyYXRlbHkgdGhyb3Vn aCBJbnN0ckFnZ05vZGUoKS4KKworCitNZW1vcnkgSGFuZGxpbmcKKz09PT09PT09PT09PT09PQor CitJbnN0cnVtZW50YXRpb24gb2JqZWN0cyB0aGF0IHVzZSB0aGUgc3RhY2sgbXVzdCBzdXJ2aXZl IHVudGlsIGZpbmFsaXphdGlvbgorcnVucywgaW5jbHVkaW5nIHRoZSBhYm9ydCBjYXNlLiAgVG8g ZW5zdXJlIHRoaXMsIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCitjcmVhdGVzIGEgZGVkaWNhdGVkICJJ bnN0cnVtZW50YXRpb24iIE1lbW9yeUNvbnRleHQgKGluc3RyX2N4dCkgYXMgYSBjaGlsZAorb2Yg VG9wTWVtb3J5Q29udGV4dC4gIEFsbCBjaGlsZCBpbnN0cnVtZW50YXRpb24gKG5vZGVzLCB0cmln Z2Vycykgc2hvdWxkIGJlCithbGxvY2F0ZWQgaW4gdGhpcyBjb250ZXh0LgorCitPbiBzdWNjZXNz ZnVsIGNvbXBsZXRpb24sIGluc3RyX2N4dCBpcyByZXBhcmVudGVkIHRvIEN1cnJlbnRNZW1vcnlD b250ZXh0CitzbyBpdHMgbGlmZXRpbWUgaXMgdGllZCB0byB0aGUgY2FsbGVyJ3MgY29udGV4dC4g IE9uIGFib3J0LCB0aGUKK1Jlc291cmNlT3duZXIgY2xlYW51cCBmcmVlcyBpdCBhZnRlciBhY2N1 bXVsYXRpbmcgdGhlIGluc3RydW1lbnRhdGlvbiBkYXRhCit0byB0aGUgY3VycmVudCBzdGFjayBl bnRyeSBhZnRlciByZXNldHRpbmcgdGhlIHN0YWNrLgorCitXaGVuIHRoZSBzdGFjayBpcyBub3Qg bmVlZGVkICh0aW1lci9yb3dzIG9ubHkpLCBJbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMKK2hh cHBlbiBpbiBDdXJyZW50TWVtb3J5Q29udGV4dCBpbnN0ZWFkIG9mIFRvcE1lbW9yeUNvbnRleHQu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBiMGY2MzZiZjhiNi4uZmY4NTZmNTJlZWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNzgsNiArNzgsNyBAQCBFeGVjdXRvckNoZWNrUGVy bXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIC8qIGRlY2xzIGZv ciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlICovCiBzdGF0aWMg dm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMg dm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtU eXBlKTsKK3N0YXRpYyB2b2lkIEV4ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRpb24oRVN0 YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVz dGF0ZSk7CiBzdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0 YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY3V0ZVBsYW4oUXVlcnlEZXNjICpxdWVyeURl c2MsCkBAIC0yNDcsOSArMjQ4LDE5IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19zbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QocXVlcnlEZXNjLT5zbmFwc2hvdCk7CiAJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3Nu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChxdWVyeURlc2MtPmNyb3NzY2hlY2tfc25hcHNob3Qp OwogCWVzdGF0ZS0+ZXNfdG9wX2VmbGFncyA9IGVmbGFnczsKLQllc3RhdGUtPmVzX2luc3RydW1l bnQgPSBxdWVyeURlc2MtPmluc3RydW1lbnRfb3B0aW9uczsKIAllc3RhdGUtPmVzX2ppdF9mbGFn cyA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzOwogCisJLyoKKwkgKiBTZXQgdXAg cXVlcnktbGV2ZWwgaW5zdHJ1bWVudGF0aW9uIGlmIG5lZWRlZC4gV2UgZG8gdGhpcyBiZWZvcmUK KwkgKiBJbml0UGxhbiBzbyB0aGF0IG5vZGUgYW5kIHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGNh biBiZSBhbGxvY2F0ZWQKKwkgKiB3aXRoaW4gdGhlIHF1ZXJ5J3MgZGVkaWNhdGVkIGluc3RydW1l bnRhdGlvbiBtZW1vcnkgY29udGV4dC4KKwkgKi8KKwlpZiAoIXF1ZXJ5RGVzYy0+dG90YWx0aW1l ICYmIHF1ZXJ5RGVzYy0+aW5zdHJ1bWVudF9vcHRpb25zKQorCXsKKwkJcXVlcnlEZXNjLT50b3Rh bHRpbWUgPSBJbnN0clF1ZXJ5QWxsb2MocXVlcnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnMpOwor CQllc3RhdGUtPmVzX2luc3RydW1lbnQgPSBxdWVyeURlc2MtPnRvdGFsdGltZTsKKwl9CisKIAkv KgogCSAqIFNldCB1cCBhbiBBRlRFUi10cmlnZ2VyIHN0YXRlbWVudCBjb250ZXh0LCB1bmxlc3Mg dG9sZCBub3QgdG8sIG9yCiAJICogdW5sZXNzIGl0J3MgRVhQTEFJTi1vbmx5IG1vZGUgKHdoZW4g RXhlY3V0b3JGaW5pc2ggd29uJ3QgYmUgY2FsbGVkKS4KQEAgLTMzMSw5ICszNDIsMjEgQEAgc3Rh bmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJICovCiAJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkvKiBB bGxvdyBpbnN0cnVtZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCisJLyog U3RhcnQgdXAgaW5zdHJ1bWVudGF0aW9uIGZvciB0aGlzIGV4ZWN1dGlvbiBydW4gKi8KIAlpZiAo cXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUp OworCXsKKwkJSW5zdHJRdWVyeVN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKworCQkvKgor CQkgKiBSZW1lbWJlciBhbGwgbm9kZSBlbnRyaWVzIGZvciBhYm9ydCByZWNvdmVyeS4gV2UgZG8g dGhpcyBvbmNlIGhlcmUKKwkJICogYWZ0ZXIgSW5zdHJRdWVyeVN0YXJ0IGhhcyBwdXNoZWQgdGhl IHBhcmVudCBzdGFjayBlbnRyeS4KKwkJICovCisJCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQg JiYKKwkJCWVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHIubmVlZF9zdGFjayAmJgorCQkJIXF1 ZXJ5RGVzYy0+YWxyZWFkeV9leGVjdXRlZCkKKwkJCUV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50 YXRpb24ocXVlcnlEZXNjLT5wbGFuc3RhdGUsCisJCQkJCQkJCQkJCXF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKKwl9CiAKIAkvKgogCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgcXVlcnkg ZGVzY3JpcHRvciBhbmQgdGhlIHF1ZXJ5IGZlYXR1cmUuCkBAIC0zODUsNyArNDA4LDcgQEAgc3Rh bmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCWRlc3QtPnJTaHV0ZG93 bihkZXN0KTsKIAogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdG9wKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKKwkJSW5zdHJRdWVyeVN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUp OwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQpAQCAtNDM1LDcgKzQ1 OCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCiAJ LyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwog CWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdGFydChxdWVyeURlc2MtPnRvdGFs dGltZSk7CisJCUluc3RyUXVlcnlTdGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAkvKiBS dW4gTW9kaWZ5VGFibGUgbm9kZXMgdG8gY29tcGxldGlvbiAqLwogCUV4ZWNQb3N0cHJvY2Vzc1Bs YW4oZXN0YXRlKTsKQEAgLTQ0NCw4ICs0NjcsMjYgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2go UXVlcnlEZXNjICpxdWVyeURlc2MpCiAJaWYgKCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhF Q19GTEFHX1NLSVBfVFJJR0dFUlMpKQogCQlBZnRlclRyaWdnZXJFbmRRdWVyeShlc3RhdGUpOwog CisJLyoKKwkgKiBBY2N1bXVsYXRlIHBlci1ub2RlIGFuZCB0cmlnZ2VyIHN0YXRpc3RpY3MgdG8g dGhlaXIgcmVzcGVjdGl2ZSBwYXJlbnQKKwkgKiBpbnN0cnVtZW50YXRpb24gc3RhY2tzLgorCSAq CisJICogV2Ugc2tpcCB0aGlzIGluIHBhcmFsbGVsIHdvcmtlcnMgYmVjYXVzZSB0aGVpciBwZXIt bm9kZSBzdGF0cyBhcmUKKwkgKiByZXBvcnRlZCBpbmRpdmlkdWFsbHkgdmlhIEV4ZWNQYXJhbGxl bFJlcG9ydEluc3RydW1lbnRhdGlvbiwgYW5kIHRoZQorCSAqIGxlYWRlcidzIG93biBFeGVjRmlu YWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIGhhbmRsZXMgcHJvcGFnYXRpb24uICBJZgorCSAqIHdl IGFjY3VtdWxhdGVkIGhlcmUsIHRoZSBsZWFkZXIgd291bGQgZG91YmxlLWNvdW50OiB3b3JrZXIg cGFyZW50IG5vZGVzCisJICogd291bGQgYWxyZWFkeSBpbmNsdWRlIHRoZWlyIGNoaWxkcmVuJ3Mg c3RhdHMsIGFuZCB0aGVuIHRoZSBsZWFkZXIncworCSAqIGFjY3VtdWxhdGlvbiB3b3VsZCBhZGQg dGhlIGNoaWxkcmVuIGFnYWluLgorCSAqLworCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSAmJiBl c3RhdGUtPmVzX2luc3RydW1lbnQgJiYgIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCUV4ZWNG aW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24ocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCisJCUV4 ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRpb24oZXN0YXRlKTsKKwl9CisKIAlpZiAocXVl cnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJ CUluc3RyUXVlcnlTdG9wRmluYWxpemUocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCkBAIC0xMjYzLDcgKzEzMDQsNyBAQCBJbml0 UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCSAgUmVsYXRp b24gcmVzdWx0UmVsYXRpb25EZXNjLAogCQkJCSAgSW5kZXggcmVzdWx0UmVsYXRpb25JbmRleCwK IAkJCQkgIFJlc3VsdFJlbEluZm8gKnBhcnRpdGlvbl9yb290X3JyaSwKLQkJCQkgIGludCBpbnN0 cnVtZW50X29wdGlvbnMpCisJCQkJICBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQogewog CU1lbVNldChyZXN1bHRSZWxJbmZvLCAwLCBzaXplb2YoUmVzdWx0UmVsSW5mbykpOwogCXJlc3Vs dFJlbEluZm8tPnR5cGUgPSBUX1Jlc3VsdFJlbEluZm87CkBAIC0xMjg0LDggKzEzMjUsOCBAQCBJ bml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJcGFsbG9j MF9hcnJheShGbWdySW5mbywgbik7CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMg PSAoRXhwclN0YXRlICoqKQogCQkJcGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7Ci0JCWlm IChpbnN0cnVtZW50X29wdGlvbnMpCi0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVu dCA9IEluc3RyQWxsb2NUcmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CisJCWlmIChxaW5z dHIpCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2NUcmln Z2VyKHFpbnN0ciwgbik7CiAJfQogCWVsc2UKIAl7CkBAIC0xNTAwLDYgKzE1NDEsMzAgQEAgRXhl Y0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbykKIAlyZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfYW5jZXN0b3JSZXN1bHRSZWxz OwogfQogCitzdGF0aWMgdm9pZAorRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihF U3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0CSAgICpyZWxzID0gTklMOworCisJcmVscyA9IGxpc3Rf Y29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHVwbGVfcm91dGluZ19yZXN1bHRfcmVsYXRpb25zKTsK KwlyZWxzID0gbGlzdF9jb25jYXQocmVscywgZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0 aW9ucyk7CisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHJpZ190YXJnZXRf cmVsYXRpb25zKTsKKworCWZvcmVhY2hfbm9kZShSZXN1bHRSZWxJbmZvLCBySW5mbywgcmVscykK Kwl7CisJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRpID0gckluZm8tPnJpX1RyaWdJbnN0cnVt ZW50OworCisJCWlmICh0aSA9PSBOVUxMIHx8IHJJbmZvLT5yaV9UcmlnRGVzYyA9PSBOVUxMKQor CQkJY29udGludWU7CisKKwkJZm9yIChpbnQgbnQgPSAwOyBudCA8IHJJbmZvLT5yaV9UcmlnRGVz Yy0+bnVtdHJpZ2dlcnM7IG50KyspCisJCXsKKwkJCWlmICh0aVtudF0uaW5zdHIubmVlZF9zdGFj aykKKwkJCQlJbnN0ckFjY3VtU3RhY2soJmVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHIsICZ0 aVtudF0uaW5zdHIpOworCQl9CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Bvc3Rwcm9j ZXNzUGxhbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggNzhmNjBjMTUz MGMuLjZiY2Q5MjJlZWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNzAw LDcgKzcwMCw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBF U3RhdGUgKmVzdGF0ZSwKIAkgKgogCSAqIElmIEVYUExBSU4gaXMgbm90IGluIHVzZSBhbmQgdGhl cmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwKIAkgKiB3ZSBjb3VsZCBza2lw IHRoaXMuICBCdXQgd2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzCi0J ICogbG9va2luZyBhdCBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJ ICogbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4K IAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkg ICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtODI1 LDEzICs4MjUsMTMgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUs IEVTdGF0ZSAqZXN0YXRlLAogCQlpbnQJCQlpOwogCiAJCWluc3RydW1lbnRhdGlvbiA9IHNobV90 b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKLQkJaW5zdHJ1bWVu dGF0aW9uLT5pbnN0cnVtZW50X29wdGlvbnMgPSBlc3RhdGUtPmVzX2luc3RydW1lbnQ7CisJCWlu c3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vcHRpb25zID0gZXN0YXRlLT5lc19pbnN0cnVtZW50 LT5pbnN0cnVtZW50X29wdGlvbnM7CiAJCWluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vZmZz ZXQgPSBpbnN0cnVtZW50X29mZnNldDsKIAkJaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VycyA9 IG53b3JrZXJzOwogCQlpbnN0cnVtZW50YXRpb24tPm51bV9wbGFuX25vZGVzID0gZS5ubm9kZXM7 CiAJCWluc3RydW1lbnQgPSBHZXRJbnN0cnVtZW50YXRpb25BcnJheShpbnN0cnVtZW50YXRpb24p OwogCQlmb3IgKGkgPSAwOyBpIDwgbndvcmtlcnMgKiBlLm5ub2RlczsgKytpKQotCQkJSW5zdHJJ bml0Tm9kZSgmaW5zdHJ1bWVudFtpXSwgZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKKwkJCUluc3Ry SW5pdE5vZGUoJmluc3RydW1lbnRbaV0sIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHJ1bWVu dF9vcHRpb25zKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5T VFJVTUVOVEFUSU9OLAogCQkJCQkgICBpbnN0cnVtZW50YXRpb24pOwogCQlwZWktPmluc3RydW1l bnRhdGlvbiA9IGluc3RydW1lbnRhdGlvbjsKQEAgLTEwODEsMTQgKzEwODEsMjggQEAgRXhlY1Bh cmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJaW5z dHJ1bWVudCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJaW5z dHJ1bWVudCArPSBpICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAlmb3IgKG4gPSAw OyBuIDwgaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsgKytuKQorCXsKIAkJSW5zdHJBZ2dO b2RlKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCwgJmluc3RydW1lbnRbbl0pOwogCisJCS8qCisJCSAq IEFsc28gYWRkIHdvcmtlciBXQUwgdXNhZ2UgdG8gdGhlIGdsb2JhbCBwZ1dhbFVzYWdlIGNvdW50 ZXIuCisJCSAqCisJCSAqIFdoZW4gcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2ZSwg cGFyYWxsZWwgd29ya2VycyBza2lwCisJCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRp b24gKHRvIGF2b2lkIGRvdWJsZS1jb3VudGluZyBpbgorCQkgKiBFWFBMQUlOKSwgc28gcGVyLW5v ZGUgV0FMIGFjdGl2aXR5IGlzIG5vdCByb2xsZWQgdXAgaW50byB0aGUKKwkJICogcXVlcnktbGV2 ZWwgc3RhdHMgdGhhdCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSByZWNlaXZlcy4gV2l0aG91dAor CQkgKiB0aGlzLCBwZ1dhbFVzYWdlIHdvdWxkIHVuZGVyLXJlcG9ydCBXQUwgZ2VuZXJhdGVkIGJ5 IHBhcmFsbGVsCisJCSAqIHdvcmtlcnMgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgYWN0aXZlLgor CQkgKi8KKwkJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0cnVtZW50W25dLmluc3RyLndh bHVzYWdlKTsKKwl9CisKIAkvKgogCSAqIEFsc28gc3RvcmUgdGhlIHBlci13b3JrZXIgZGV0YWls LgogCSAqCi0JICogV29ya2VyIGluc3RydW1lbnRhdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIGlu IHRoZSBzYW1lIGNvbnRleHQgYXMgdGhlCi0JICogcmVndWxhciBpbnN0cnVtZW50YXRpb24gaW5m b3JtYXRpb24sIHdoaWNoIGlzIHRoZSBwZXItcXVlcnkgY29udGV4dC4KLQkgKiBTd2l0Y2ggaW50 byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQuCisJICogRW5zdXJlIHdvcmtlciBpbnN0cnVtZW50 YXRpb24gaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dC4gV2UKKwkgKiBkb24n dCBuZWVkIHRvIHBsYWNlIHRoaXMgaW4gdGhlIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IHNpbmNl IG5vIG1vcmUKKwkgKiBzdGFjay1iYXNlZCBpbnN0cnVtZW50YXRpb24gd29yayBpcyBiZWluZyBk b25lLgogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbnN0YXRl LT5zdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAlpYnl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRp b24tPm51bV93b3JrZXJzLCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwpAQCAtMTQ2Miw2 ICsxNDc2LDcgQEAgdm9pZAogUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogewogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOworCVF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwogCVdh bFVzYWdlICAgKndhbF91c2FnZTsKIAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwpAQCAtMTUyMiw3 ICsxNTM3LDcgQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAq dG9jKQogCSAqIGxlYWRlciwgd2hpY2ggYWxzbyBkb2Vzbid0IGNvdW50IGJ1ZmZlciBhY2Nlc3Nl cyBhbmQgV0FMIGFjdGl2aXR5IHRoYXQKIAkgKiBvY2N1ciBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1 cC4KIAkgKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFy dFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lm aWVkIGEgdHVwbGUgYm91bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApAQCAtMTUzOCw3ICsx NTUzLDggQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9j KQogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24u ICovCiAJYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVG RkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZm ZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShp bnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJ CQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCS8qIFJlcG9ydCBpbnN0 cnVtZW50YXRpb24gZGF0YSBpZiBhbnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBkOTZkNGY5OTQ3Yi4uNmYy OTA5YTFiYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTEzODEsNyAr MTM4MSw3IEBAIEV4ZWNJbml0UGFydGl0aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAog CXsKIAkJUmVzdWx0UmVsSW5mbyAqcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CiAKLQkJ SW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCAwKTsKKwkJ SW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCBOVUxMKTsK IAkJcHJvdXRlLT5ub25sZWFmX3BhcnRpdGlvbnNbZGlzcGF0Y2hpZHhdID0gcnJpOwogCX0KIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDEzMmZlMzdlZjYwLi4yMWFk MWIwNGE1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEyMyw2ICsxMjMs OCBAQAogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUg Km5vZGUpOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVJbnN0cihQbGFuU3Rh dGUgKm5vZGUpOwogc3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRl ICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIEV4ZWNSZW1lbWJlck5vZGVJbnN0 cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CitzdGF0 aWMgYm9vbCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUg Km5vZGUsIHZvaWQgKmNvbnRleHQpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzg4LDEw ICs3OTAsMTAgQEAgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lk ICpjb250ZXh0KQogCSAqIGF0IGxlYXN0IG9uY2UgYWxyZWFkeS4gIFdlIGRvbid0IGV4cGVjdCBt dWNoIENQVSBjb25zdW1wdGlvbiBkdXJpbmcKIAkgKiBub2RlIHNodXRkb3duLCBidXQgaW4gdGhl IGNhc2Ugb2YgR2F0aGVyIG9yIEdhdGhlciBNZXJnZSwgd2UgbWF5IHNodXQKIAkgKiBkb3duIHdv cmtlcnMgYXQgdGhpcyBzdGFnZS4gIElmIHNvLCB0aGVpciBidWZmZXIgdXNhZ2Ugd2lsbCBnZXQK LQkgKiBwcm9wYWdhdGVkIGludG8gcGdCdWZmZXJVc2FnZSBhdCB0aGlzIHBvaW50LCBhbmQgd2Ug d2FudCB0byBtYWtlIHN1cmUKLQkgKiB0aGF0IGl0IGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBH YXRoZXIgbm9kZS4gIFdlIHNraXAgdGhpcyBpZiB0aGUgbm9kZQotCSAqIGhhcyBuZXZlciBiZWVu IGV4ZWN1dGVkLCBzbyBhcyB0byBhdm9pZCBpbmNvcnJlY3RseSBtYWtpbmcgaXQgYXBwZWFyCi0J ICogdGhhdCBpdCBoYXMuCisJICogcHJvcGFnYXRlZCBpbnRvIHRoZSBjdXJyZW50IGluc3RydW1l bnRhdGlvbiBzdGFjayBlbnRyeSBhdCB0aGlzIHBvaW50LAorCSAqIGFuZCB3ZSB3YW50IHRvIG1h a2Ugc3VyZSB0aGF0IGl0IGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBHYXRoZXIgbm9kZS4KKwkg KiBXZSBza2lwIHRoaXMgaWYgdGhlIG5vZGUgaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIHNvIGFz IHRvIGF2b2lkCisJICogaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVhciB0aGF0IGl0IGhhcy4K IAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5n KQogCQlJbnN0clN0YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKQEAgLTgyOSw2ICs4MzEsODAg QEAgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0 KQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50 YXRpb24KKyAqCisgKiBSZWdpc3RlciBhbGwgcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGVudHJp ZXMgYXMgdW5maW5hbGl6ZWQgY2hpbGRyZW4gb2YKKyAqIHRoZSBleGVjdXRvcidzIGluc3RydW1l bnRhdGlvbi4gVGhpcyBpcyBuZWVkZWQgZm9yIGFib3J0IHJlY292ZXJ5OiBpZiB0aGUKKyAqIGV4 ZWN1dG9yIGFib3J0cywgd2UgbmVlZCB0byB3YWxrIGVhY2ggcGVyLW5vZGUgZW50cnkgdG8gcmVj b3ZlciBidWZmZXIvV0FMCisgKiBkYXRhIGZyb20gbm9kZXMgdGhhdCBuZXZlciBnb3QgZmluYWxp emVkLCB0aGF0IHNvbWVvbmUgbWlnaHQgYmUgaW50ZXJlc3RlZAorICogaW4gYXMgYW4gYWdncmVn YXRlLgorICovCit2b2lkCitFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0 ZSAqbm9kZSwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCkKK3sKKwkodm9pZCkgRXhlY1Jl bWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIobm9kZSwgcGFyZW50KTsKK30KKworc3Rh dGljIGJvb2wKK0V4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0 ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50 ID0gKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICopIGNvbnRleHQ7CisKKwlBc3NlcnQocGFyZW50ICE9 IE5VTEwpOworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKG5v ZGUtPmluc3RydW1lbnQpCisJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHBhcmVudCwgJm5vZGUt Pmluc3RydW1lbnQtPmluc3RyKTsKKworCXJldHVybiBwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9k ZSwgRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsIGNvbnRleHQpOworfQor CisvKgorICogRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbgorICoKKyAqIEFjY3VtdWxh dGUgaW5zdHJ1bWVudGF0aW9uIHN0YXRzIGZyb20gYWxsIGV4ZWN1dGlvbiBub2RlcyB0byB0aGVp ciByZXNwZWN0aXZlCisgKiBwYXJlbnRzIChvciB0aGUgb3JpZ2luYWwgcGFyZW50IGluc3RydW1l bnRhdGlvbikuCisgKgorICogVGhpcyBtdXN0IHJ1biBhZnRlciB0aGUgY2xlYW51cCBkb25lIGJ5 IEV4ZWNTaHV0ZG93bk5vZGUsIGFuZCBub3QgcmVseSBvbiBhbnkKKyAqIHJlc291cmNlcyBjbGVh bmVkIHVwIGJ5IGl0LiBXZSBhbHNvIGV4cGVjdCBzaHV0ZG93biBhY3Rpb25zIHRvIGhhdmUgb2Nj dXJyZWQsCisgKiBlLmcuIHBhcmFsbGVsIHdvcmtlciBpbnN0cnVtZW50YXRpb24gdG8gaGF2ZSBi ZWVuIGFkZGVkIHRvIHRoZSBsZWFkZXIuCisgKi8KK3ZvaWQKK0V4ZWNGaW5hbGl6ZU5vZGVJbnN0 cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlKQoreworCSh2b2lkKSBFeGVjRmluYWxpemVOb2Rl SW5zdHJ1bWVudGF0aW9uX3dhbGtlcihub2RlLCBpbnN0cl9zdGFjay5jdXJyZW50KTsKK30KKwor c3RhdGljIGJvb2wKK0V4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5T dGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlJbnN0cnVtZW50YXRpb24gKnBhcmVudCA9 IChJbnN0cnVtZW50YXRpb24gKikgY29udGV4dDsKKworCUFzc2VydChwYXJlbnQgIT0gTlVMTCk7 CisKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIFJlY3Vy c2UgaW50byBjaGlsZHJlbiBmaXJzdCAoYm90dG9tLXVwIGFjY3VtdWxhdGlvbiksIHBhc3Npbmcg b3VyCisJICogaW5zdHJ1bWVudGF0aW9uIGFzIHRoZSBwYXJlbnQgY29udGV4dC4gIFRoaXMgZW5z dXJlcyBjaGlsZHJlbiBjYW4KKwkgKiBhY2N1bXVsYXRlIHRvIHVzIGV2ZW4gaWYgdGhleSB3ZXJl IG5ldmVyIGV4ZWN1dGVkIGJ5IHRoZSBsZWFkZXIgKGUuZy4KKwkgKiBub2RlcyBiZW5lYXRoIEdh dGhlciB0aGF0IG9ubHkgd29ya2VycyByYW4pLgorCSAqLworCXBsYW5zdGF0ZV90cmVlX3dhbGtl cihub2RlLCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlciwKKwkJCQkJCSAg bm9kZS0+aW5zdHJ1bWVudCA/ICZub2RlLT5pbnN0cnVtZW50LT5pbnN0ciA6IHBhcmVudCk7CisK KwlpZiAoIW5vZGUtPmluc3RydW1lbnQpCisJCXJldHVybiBmYWxzZTsKKworCUluc3RyRmluYWxp emVDaGlsZCgmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIsIHBhcmVudCk7CisKKwlyZXR1cm4gZmFs c2U7Cit9CisKIC8qCiAgKiBFeGVjU2V0VHVwbGVCb3VuZAogICoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKaW5kZXggMWViNmI5ZjFmNDAuLjcwMDc2NGRhZjQ1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYwpAQCAtMTUwLDcgKzE1MCw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAll c3RhdGUtPmVzX3RvdGFsX3Byb2Nlc3NlZCA9IDA7CiAKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3Mg PSAwOwotCWVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCA9IDA7CisJZXN0YXRlLT5lc19pbnN0cnVtZW50 ID0gTlVMTDsKIAllc3RhdGUtPmVzX2ZpbmlzaGVkID0gZmFsc2U7CiAKIAllc3RhdGUtPmVzX2V4 cHJjb250ZXh0cyA9IE5JTDsKQEAgLTIyNyw2ICsyMjcsMTUgQEAgRnJlZUV4ZWN1dG9yU3RhdGUo RVN0YXRlICplc3RhdGUpCiAJCWVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9IE5VTEw7 CiAJfQogCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IGdl dHMgZnJlZWQuIFRoaXMgdXN1YWxseSBnZXRzCisJICogcmUtcGFyZW50ZWQgdW5kZXIgdGhlIHBl ci1xdWVyeSBjb250ZXh0IGluIEluc3RyUXVlcnlTdG9wRmluYWxpemUsIGJ1dAorCSAqIHRoYXQg d29uJ3QgaGFwcGVuIGR1cmluZyBFWFBMQUlOIChCVUZGRVJTKSBzaW5jZSBFeGVjdXRvckZpbmlz aCBuZXZlcgorCSAqIGdldHMgY2FsbGVkLCBzbyB3ZSB3b3VsZCBvdGhlcndpc2UgbGVhayBpdCBp biBUb3BNZW1vcnlDb250ZXh0LgorCSAqLworCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiYg ZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0ci5uZWVkX3N0YWNrKQorCQlNZW1vcnlDb250ZXh0 RGVsZXRlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHJfY3h0KTsKKwogCS8qCiAJICogRnJl ZSB0aGUgcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LCB0aGVyZWJ5IHJlbGVhc2luZyBhbGwgd29y a2luZwogCSAqIG1lbW9yeSwgaW5jbHVkaW5nIHRoZSBFU3RhdGUgbm9kZSBpdHNlbGYuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggYmM1NTFmOTVhMDguLjY4OTI3MDZhODNhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xNiwzMCArMTYsNDYgQEAKICNpbmNsdWRlIDx1 bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKLUJ1ZmZlclVz YWdlIHBnQnVmZmVyVXNhZ2U7Ci1zdGF0aWMgQnVmZmVyVXNhZ2Ugc2F2ZV9wZ0J1ZmZlclVzYWdl OwogV2FsVXNhZ2UJcGdXYWxVc2FnZTsKLXN0YXRpYyBXYWxVc2FnZSBzYXZlX3BnV2FsVXNhZ2U7 CitJbnN0cnVtZW50YXRpb24gaW5zdHJfdG9wOworSW5zdHJTdGFja1N0YXRlIGluc3RyX3N0YWNr ID0gezAsIDAsIE5VTEwsICZpbnN0cl90b3B9OwogCi1zdGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFk ZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKTsKLXN0YXRpYyB2b2lk IFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdhbFVzYWdlICphZGQpOwordm9pZAorSW5zdHJT dGFja0dyb3codm9pZCkKK3sKKwlpbnQJCQlzcGFjZSA9IGluc3RyX3N0YWNrLnN0YWNrX3NwYWNl OworCisJaWYgKGluc3RyX3N0YWNrLmVudHJpZXMgPT0gTlVMTCkKKwl7CisJCXNwYWNlID0gMTA7 CQkJCS8qIEFsbG9jYXRlIHN1ZmZpY2llbnQgaW5pdGlhbCBzcGFjZSBmb3IKKwkJCQkJCQkJICog dHlwaWNhbCBhY3Rpdml0eSAqLworCQlpbnN0cl9zdGFjay5lbnRyaWVzID0gTWVtb3J5Q29udGV4 dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkgc2l6ZW9mKEluc3RydW1lbnRh dGlvbiAqKSAqIHNwYWNlKTsKKwl9CisJZWxzZQorCXsKKwkJc3BhY2UgKj0gMjsKKwkJaW5zdHJf c3RhY2suZW50cmllcyA9IHJlcGFsbG9jX2FycmF5KGluc3RyX3N0YWNrLmVudHJpZXMsIEluc3Ry dW1lbnRhdGlvbiAqLCBzcGFjZSk7CisJfQogCisJLyogVXBkYXRlIHN0YWNrIHNwYWNlIGFmdGVy IGFsbG9jYXRpb24gc3VjY2VlZGVkIHRvIHByb3RlY3QgYWdhaW5zdCBPT01zICovCisJaW5zdHJf c3RhY2suc3RhY2tfc3BhY2UgPSBzcGFjZTsKK30KIAogLyogR2VuZXJhbCBwdXJwb3NlIGluc3Ry dW1lbnRhdGlvbiBoYW5kbGluZyAqLwotSW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50 IGluc3RydW1lbnRfb3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgYm9vbAorSW5zdHJOZWVkU3RhY2so aW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFs bG9jMChzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7Ci0JSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwg aW5zdHJ1bWVudF9vcHRpb25zKTsKLQlyZXR1cm4gaW5zdHI7CisJcmV0dXJuIChpbnN0cnVtZW50 X29wdGlvbnMgJiAoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpKSAhPSAwOwog fQogCiB2b2lkCiBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBp bnN0cnVtZW50X29wdGlvbnMpCiB7Ci0JaW5zdHItPm5lZWRfYnVmdXNhZ2UgPSAoaW5zdHJ1bWVu dF9vcHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwOwotCWluc3RyLT5uZWVkX3dhbHVz YWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfV0FMKSAhPSAwOworCWluc3Ry LT5uZWVkX3N0YWNrID0gSW5zdHJOZWVkU3RhY2soaW5zdHJ1bWVudF9vcHRpb25zKTsKIAlpbnN0 ci0+bmVlZF90aW1lciA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAh PSAwOwogfQogCkBAIC01NCw1MCArNzAsMjk1IEBAIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9u ICppbnN0cikKIAkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5zdHItPnN0YXJ0dGltZSk7CiAJ fQogCi0JLyogc2F2ZSBidWZmZXIgdXNhZ2UgdG90YWxzIGF0IG5vZGUgZW50cnksIGlmIG5lZWRl ZCAqLwotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0 ID0gcGdCdWZmZXJVc2FnZTsKKwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0 YWNrKGluc3RyKTsKK30KKworc3RhdGljIHZvaWQKK0luc3RyU3RvcFRpbWVyKEluc3RydW1lbnRh dGlvbiAqaW5zdHIpCit7CisJaW5zdHJfdGltZQllbmR0aW1lOwogCi0JaWYgKGluc3RyLT5uZWVk X3dhbHVzYWdlKQotCQlpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOworCS8qIGxl dCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCisJ aWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKKwkJZWxvZyhFUlJPUiwg Ikluc3RyU3RvcCBjYWxsZWQgd2l0aG91dCBzdGFydCIpOworCisJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChlbmR0aW1lKTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBlbmR0 aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKKworCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0 YXJ0dGltZSk7CiB9CiAKIHZvaWQKIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQog ewotCWluc3RyX3RpbWUJZW5kdGltZTsKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJCUluc3Ry U3RvcFRpbWVyKGluc3RyKTsKKworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQb3BT dGFjayhpbnN0cik7Cit9CisKKy8qCisgKiBTdG9wcyBpbnN0cnVtZW50YXRpb24sIGZpbmFsaXpl cyB0aGUgc3RhY2sgZW50cnkgYW5kIGFjY3VtdWxhdGVzIHRvIGl0cyBwYXJlbnQuCisgKgorICog Tm90ZSB0aGF0IHRoaXMgaW50ZW50aW9uYWxseSBhbGxvd3MgcGFzc2luZyBhIHN0YWNrIHRoYXQg aXMgbm90IHRoZSBjdXJyZW50CisgKiB0b3AsIGFzIGNhbiBoYXBwZW4gd2l0aCBQR19GSU5BTExZ LCBvciByZXNvdXJjZSBvd25lcnMsIHdoaWNoIGRvbid0IGhhdmUgYQorICogZ3VhcmFudGVlZCBj bGVhbnVwIG9yZGVyLgorICoKKyAqIFdlIGFyZSBjYXJlZnVsIGhlcmUgdG8gYWNoaWV2ZSB0d28g Z29hbHM6CisgKgorICogMSkgUmVzZXQgdGhlIHN0YWNrIHRvIHRoZSBwYXJlbnQgb2Ygd2hpY2hl dmVyIG9mIHRoZSByZWxlYXNlZCBzdGFjayBlbnRyaWVzCisgKiAgICBoYXMgdGhlIGxvd2VzdCBp bmRleAorICogMikgQWNjdW11bGF0ZSBhbGwgaW5zdHJ1bWVudGF0aW9uIHRvIHRoZSBjdXJyZW50 bHkgYWN0aXZlIGluc3RydW1lbnRhdGlvbiwKKyAqICAgIHNvIHRoYXQgY2FsbGVycyBnZXQgYSBj b21wbGV0ZSBwaWN0dXJlIG9mIGFjdGl2aXR5LCBldmVuIGFmdGVyIGFuIGFib3J0CisgKi8KK3Zv aWQKK0luc3RyU3RvcEZpbmFsaXplKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaW50CQkJ aWR4ID0gLTE7CisKKwlmb3IgKGludCBpID0gaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSAtIDE7IGkg Pj0gMDsgaS0tKQorCXsKKwkJaWYgKGluc3RyX3N0YWNrLmVudHJpZXNbaV0gPT0gaW5zdHIpCisJ CXsKKwkJCWlkeCA9IGk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChpZHggPj0gMCkKKwl7 CisJCXdoaWxlIChpbnN0cl9zdGFjay5zdGFja19zaXplID4gaWR4ICsgMSkKKwkJCWluc3RyX3N0 YWNrLnN0YWNrX3NpemUtLTsKKworCQlJbnN0clBvcFN0YWNrKGluc3RyKTsKKwl9CiAKLQkvKiBs ZXQncyB1cGRhdGUgdGhlIHRpbWUgb25seSBpZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZCAqLwog CWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdG9wVGltZXIoaW5zdHIpOworCisJSW5z dHJBY2N1bVN0YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKK30KKworLyoKKyAqIEZp bmFsaXplIGNoaWxkIGluc3RydW1lbnRhdGlvbiBieSBhY2N1bXVsYXRpbmcgYnVmZmVyL1dBTCB1 c2FnZSB0byB0aGUKKyAqIHByb3ZpZGVkIGluc3RydW1lbnRhdGlvbiwgd2hpY2ggbWF5IGJlIHRo ZSBjdXJyZW50IGVudHJ5LCBvciBvbmUgdGhlIGNhbGxlcgorICogdHJlYXRzIGFzIGEgcGFyZW50 IGFuZCB3aWxsIGFkZCB0byB0aGUgdG90YWxzIGxhdGVyLgorICoKKyAqIEFsc28gZGVsZXRlcyB0 aGUgdW5maW5hbGl6ZWQgZW50cnkgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nIGluIGFuIGFib3J0 CisgKiBzaXR1YXRpb24sIGUuZy4gZHVyaW5nIGV4ZWN1dG9yIGZpbmlzaC4KKyAqLwordm9pZAor SW5zdHJGaW5hbGl6ZUNoaWxkKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIEluc3RydW1lbnRhdGlv biAqcGFyZW50KQoreworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKIAl7Ci0JCWlmIChJTlNUUl9U SU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCi0JCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9w IGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJCWlmICghZGxpc3Rfbm9kZV9pc19kZXRhY2hlZCgm aW5zdHItPnVuZmluYWxpemVkX2VudHJ5KSkKKwkJCWRsaXN0X2RlbGV0ZV90aG9yb3VnaGx5KCZp bnN0ci0+dW5maW5hbGl6ZWRfZW50cnkpOwogCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5k dGltZSk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihpbnN0ci0+dG90YWwsIGVuZHRpbWUsIGlu c3RyLT5zdGFydHRpbWUpOworCQlJbnN0ckFjY3VtU3RhY2socGFyZW50LCBpbnN0cik7CisJfQor fQorCisKKy8qIFF1ZXJ5IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKgorICogVXNl IFJlc291cmNlT3duZXIgbWVjaGFuaXNtIHRvIGNvcnJlY3RseSByZXNldCBpbnN0cl9zdGFjayBv biBhYm9ydC4KKyAqLworc3RhdGljIHZvaWQgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9u KERhdHVtIHJlcyk7CitzdGF0aWMgY29uc3QgUmVzb3VyY2VPd25lckRlc2MgaW5zdHJ1bWVudGF0 aW9uX3Jlc293bmVyX2Rlc2MgPQoreworCS5uYW1lID0gImluc3RydW1lbnRhdGlvbiIsCisJLnJl bGVhc2VfcGhhc2UgPSBSRVNPVVJDRV9SRUxFQVNFX0FGVEVSX0xPQ0tTLAorCS5yZWxlYXNlX3By aW9yaXR5ID0gUkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTiwKKwkuUmVsZWFzZVJlc291cmNl ID0gUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uLAorCS5EZWJ1Z1ByaW50ID0gTlVMTCwJ CQkvKiBkZWZhdWx0IG1lc3NhZ2UgaXMgZmluZSAqLworfTsKKworc3RhdGljIGlubGluZSB2b2lk CitSZXNvdXJjZU93bmVyUmVtZW1iZXJJbnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBvd25l ciwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyUmVtZW1i ZXIob3duZXIsIFBvaW50ZXJHZXREYXR1bShxaW5zdHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293 bmVyX2Rlc2MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3duZXJGb3JnZXRJ bnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyRm9yZ2V0KG93bmVyLCBQb2ludGVyR2V0RGF0dW0o cWluc3RyKSwgJmluc3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjKTsKK30KKworc3RhdGljIHZv aWQKK1Jlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpCit7CisJUXVlcnlJ bnN0cnVtZW50YXRpb24gKnFpbnN0ciA9IChRdWVyeUluc3RydW1lbnRhdGlvbiAqKSBEYXR1bUdl dFBvaW50ZXIocmVzKTsKKwlNZW1vcnlDb250ZXh0IGluc3RyX2N4dCA9IHFpbnN0ci0+aW5zdHJf Y3h0OworCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCi0JCUlOU1RSX1RJTUVfU0VUX1pFUk8o aW5zdHItPnN0YXJ0dGltZSk7CisJLyogQWNjdW11bGF0ZSBkYXRhIGZyb20gYWxsIHVuZmluYWxp emVkIGNoaWxkIGVudHJpZXMgKG5vZGVzLCB0cmlnZ2VycykgKi8KKwlkbGlzdF9mb3JlYWNoX21v ZGlmeShpdGVyLCAmcWluc3RyLT51bmZpbmFsaXplZF9lbnRyaWVzKQorCXsKKwkJSW5zdHJ1bWVu dGF0aW9uICpjaGlsZCA9IGRsaXN0X2NvbnRhaW5lcihJbnN0cnVtZW50YXRpb24sIHVuZmluYWxp emVkX2VudHJ5LCBpdGVyLmN1cik7CisKKwkJSW5zdHJBY2N1bVN0YWNrKCZxaW5zdHItPmluc3Ry LCBjaGlsZCk7CiAJfQogCi0JLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2FnZSBzaW5jZSBlbnRy eSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdlKQotCQlCdWZm ZXJVc2FnZUFjY3VtRGlmZigmaW5zdHItPmJ1ZnVzYWdlLAotCQkJCQkJCSAmcGdCdWZmZXJVc2Fn ZSwgJmluc3RyLT5idWZ1c2FnZV9zdGFydCk7CisJLyogRW5zdXJlIHRoZSBzdGFjayBpcyByZXNl dCBhcyBleHBlY3RlZCwgYW5kIHdlIGFjY3VtdWxhdGUgdG8gdGhlIHBhcmVudCAqLworCUluc3Ry U3RvcEZpbmFsaXplKCZxaW5zdHItPmluc3RyKTsKKworCS8qCisJICogRGVzdHJveSB0aGUgZGVk aWNhdGVkIGluc3RydW1lbnRhdGlvbiBjb250ZXh0LCB3aGljaCBmcmVlcyB0aGUKKwkgKiBRdWVy eUluc3RydW1lbnRhdGlvbiBhbmQgYWxsIGNoaWxkIGFsbG9jYXRpb25zLgorCSAqLworCU1lbW9y eUNvbnRleHREZWxldGUoaW5zdHJfY3h0KTsKK30KKworUXVlcnlJbnN0cnVtZW50YXRpb24gKgor SW5zdHJRdWVyeUFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCit7CisJUXVlcnlJbnN0cnVt ZW50YXRpb24gKmluc3RyOworCU1lbW9yeUNvbnRleHQgaW5zdHJfY3h0OworCisJLyoKKwkgKiBX aGVuIHRoZSBpbnN0cnVtZW50YXRpb24gc3RhY2sgaXMgdXNlZCwgY3JlYXRlIGEgZGVkaWNhdGVk IG1lbW9yeQorCSAqIGNvbnRleHQgZm9yIHRoaXMgcXVlcnkncyBpbnN0cnVtZW50YXRpb24gYWxs b2NhdGlvbnMuIFRoaXMgY29udGV4dCBpcyBhCisJICogY2hpbGQgb2YgVG9wTWVtb3J5Q29udGV4 dCBzbyBpdCBzdXJ2aXZlcyB0cmFuc2FjdGlvbiBhYm9ydCDigJQKKwkgKiBSZXNvdXJjZU93bmVy IHJlbGVhc2UgbmVlZHMgdG8gYWNjZXNzIGl0LgorCSAqCisJICogRm9yIHNpbXBsZXIgY2FzZXMg KHRpbWVyL3Jvd3Mgb25seSksIHVzZSB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KKwkgKgor CSAqIEFsbCBjaGlsZCBpbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMgKG5vZGVzLCB0cmlnZ2Vy cywgZXRjKSBtdXN0IGJlCisJICogYWxsb2NhdGVkIHdpdGhpbiB0aGlzIGNvbnRleHQgdG8gZW5z dXJlIGNvcnJlY3QgY2xlYW4gdXAgb24gYWJvcnQuCisJICovCisJaWYgKEluc3RyTmVlZFN0YWNr KGluc3RydW1lbnRfb3B0aW9ucykpCisJCWluc3RyX2N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0 ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCSAgIkluc3RydW1lbnRhdGlvbiIsCisJCQkJ CQkJCQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJZWxzZQorCQlpbnN0cl9jeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNh Z2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0 ci0+d2FsdXNhZ2Vfc3RhcnQpOworCWluc3RyID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhpbnN0 cl9jeHQsIHNpemVvZihRdWVyeUluc3RydW1lbnRhdGlvbikpOworCWluc3RyLT5pbnN0cnVtZW50 X29wdGlvbnMgPSBpbnN0cnVtZW50X29wdGlvbnM7CisJaW5zdHItPmluc3RyX2N4dCA9IGluc3Ry X2N4dDsKKworCUluc3RySW5pdE9wdGlvbnMoJmluc3RyLT5pbnN0ciwgaW5zdHJ1bWVudF9vcHRp b25zKTsKKwlkbGlzdF9pbml0KCZpbnN0ci0+dW5maW5hbGl6ZWRfZW50cmllcyk7CisKKwlyZXR1 cm4gaW5zdHI7Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlTdGFydChRdWVyeUluc3RydW1lbnRhdGlv biAqcWluc3RyKQoreworCUluc3RyU3RhcnQoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0 ci0+aW5zdHIubmVlZF9zdGFjaykKKwl7CisJCUFzc2VydChDdXJyZW50UmVzb3VyY2VPd25lciAh PSBOVUxMKTsKKwkJcWluc3RyLT5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJCVJl c291cmNlT3duZXJFbmxhcmdlKHFpbnN0ci0+b3duZXIpOworCQlSZXNvdXJjZU93bmVyUmVtZW1i ZXJJbnN0cnVtZW50YXRpb24ocWluc3RyLT5vd25lciwgcWluc3RyKTsKKwl9Cit9CisKK3ZvaWQK K0luc3RyUXVlcnlTdG9wKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIpCit7CisJSW5zdHJT dG9wKCZxaW5zdHItPmluc3RyKTsKKworCWlmIChxaW5zdHItPmluc3RyLm5lZWRfc3RhY2spCisJ eworCQlBc3NlcnQocWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwkJUmVzb3VyY2VPd25lckZvcmdl dEluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCQlxaW5zdHItPm93bmVy ID0gTlVMTDsKKwl9Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlTdG9wRmluYWxpemUoUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlJbnN0clN0b3BGaW5hbGl6ZSgmcWluc3RyLT5pbnN0 cik7CisKKwlpZiAoIXFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwkJcmV0dXJuOworCisJQXNz ZXJ0KHFpbnN0ci0+b3duZXIgIT0gTlVMTCk7CisJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1l bnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCXFpbnN0ci0+b3duZXIgPSBOVUxMOwor CisJLyoKKwkgKiBSZXBhcmVudCB0aGUgZGVkaWNhdGVkIGluc3RydW1lbnRhdGlvbiBjb250ZXh0 IHVuZGVyIHRoZSBjdXJyZW50IG1lbW9yeQorCSAqIGNvbnRleHQsIHNvIHRoYXQgaXRzIGxpZmV0 aW1lIGlzIG5vdyB0aWVkIHRvIHRoZSBjYWxsZXIncyBjb250ZXh0CisJICogcmF0aGVyIHRoYW4g VG9wTWVtb3J5Q29udGV4dC4KKwkgKi8KKwlNZW1vcnlDb250ZXh0U2V0UGFyZW50KHFpbnN0ci0+ aW5zdHJfY3h0LCBDdXJyZW50TWVtb3J5Q29udGV4dCk7Cit9CisKKy8qCisgKiBSZWdpc3RlciBh IGNoaWxkIEluc3RydW1lbnRhdGlvbiBlbnRyeSBmb3IgYWJvcnQgcHJvY2Vzc2luZy4KKyAqCisg KiBPbiBhYm9ydCwgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uIHdpbGwgd2FsayB0aGUg cGFyZW50J3MgbGlzdCB0bworICogcmVjb3ZlciBidWZmZXIvV0FMIGRhdGEgZnJvbSBlbnRyaWVz IHRoYXQgd2VyZSBuZXZlciBmaW5hbGl6ZWQsIGluIG9yZGVyIGZvcgorICogYWdncmVnYXRlIHRv dGFscyB0byBiZSBhY2N1cmF0ZSBkZXNwaXRlIHRoZSBxdWVyeSBlcnJvcmluZyBvdXQuCisgKi8K K3ZvaWQKK0luc3RyUXVlcnlSZW1lbWJlckNoaWxkKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJl bnQsIEluc3RydW1lbnRhdGlvbiAqY2hpbGQpCit7CisJaWYgKGNoaWxkLT5uZWVkX3N0YWNrKQor CQlkbGlzdF9wdXNoX2hlYWQoJnBhcmVudC0+dW5maW5hbGl6ZWRfZW50cmllcywgJmNoaWxkLT51 bmZpbmFsaXplZF9lbnRyeSk7Cit9CisKKy8qIHN0YXJ0IGluc3RydW1lbnRhdGlvbiBkdXJpbmcg cGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAqLworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5z dHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCkKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcWlu c3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FM KTsKKworCUluc3RyUXVlcnlTdGFydChxaW5zdHIpOworCXJldHVybiBxaW5zdHI7Cit9CisKKy8q IHJlcG9ydCB1c2FnZSBhZnRlciBwYXJhbGxlbCBleGVjdXRvciBzaHV0ZG93biAqLwordm9pZAor SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZl clVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQoreworCUluc3RyUXVlcnlTdG9w RmluYWxpemUocWluc3RyKTsKKwltZW1jcHkoYnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVz YWdlLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKKwltZW1jcHkod2FsdXNhZ2UsICZxaW5zdHItPmlu c3RyLndhbHVzYWdlLCBzaXplb2YoV2FsVXNhZ2UpKTsKK30KKworLyoKKyAqIEFjY3VtdWxhdGUg d29yayBkb25lIGJ5IHBhcmFsbGVsIHdvcmtlcnMgaW4gdGhlIGxlYWRlcidzIHN0YXRzLgorICoK KyAqIE5vdGUgdGhhdCB3aGF0IGdldHMgYWRkZWQgaGVyZSBlZmZlY3RpdmVseSBkZXBlbmRzIG9u IHdoZXRoZXIgcGVyLW5vZGUKKyAqIGluc3RydW1lbnRhdGlvbiBpcyBhY3RpdmUuIElmIGl0J3Mg YWN0aXZlIHRoZSBwYXJhbGxlbCB3b3JrZXIgaW50ZW50aW9uYWxseQorICogc2tpcHMgRXhlY0Zp bmFsaXplTm9kZUluc3RydW1lbnRhdGlvbiBvbiBleGVjdXRvciBzaHV0ZG93biwgYmVjYXVzZSBp dCB3b3VsZAorICogY2F1c2UgZG91YmxlIGNvdW50aW5nLiBJbnN0ZWFkLCB0aGlzIG9ubHkgYWNj dW11bGF0ZXMgYW55IGV4dHJhIGFjdGl2aXR5CisgKiBvdXRzaWRlIG9mIG5vZGVzLgorICoKKyAq IE90aGVyd2lzZSB0aGlzIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGF0IHRoZSBj b21wbGV0ZSBxdWVyeQorICogYWN0aXZpdHkgaXMgYWNjdW11bGF0ZWQuCisgKi8KK3ZvaWQKK0lu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndh bHVzYWdlKQoreworCUJ1ZmZlclVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2Fn ZSwgYnVmdXNhZ2UpOworCVdhbFVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2Fn ZSwgd2FsdXNhZ2UpOworCisJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsIHdhbHVzYWdlKTsKIH0K IAogLyogTm9kZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIAogLyogQWxsb2NhdGUgbmV3 IG5vZGUgaW5zdHJ1bWVudGF0aW9uIHN0cnVjdHVyZSAqLwogTm9kZUluc3RydW1lbnRhdGlvbiAq Ci1JbnN0ckFsbG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUp CitJbnN0ckFsbG9jTm9kZShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBib29sIGFzeW5j X21vZGUpCiB7Ci0JTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5v ZGVJbnN0cnVtZW50YXRpb24pKTsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE1lbW9y eUNvbnRleHRBbGxvYyhxaW5zdHItPmluc3RyX2N4dCwgc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRp b24pKTsKIAotCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJSW5z dHJJbml0Tm9kZShpbnN0ciwgcWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMpOwogCWluc3RyLT5h c3luY19tb2RlID0gYXN5bmNfbW9kZTsKIAogCXJldHVybiBpbnN0cjsKQEAgLTExOCw2ICszNzks NyBAQCBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAlJbnN0clN0 YXJ0KCZpbnN0ci0+aW5zdHIpOwogfQogCisKIC8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwog dm9pZAogSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5U dXBsZXMpCkBAIC0xNDcsMTQgKzQwOSwxMiBAQCBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAkJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0 ci0+aW5zdHIuc3RhcnR0aW1lKTsKIAl9CiAKLQkvKiBBZGQgZGVsdGEgb2YgYnVmZmVyIHVzYWdl IHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoaW5zdHItPmluc3RyLm5lZWRf YnVmdXNhZ2UpCi0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+aW5zdHIuYnVmdXNhZ2Us Ci0JCQkJCQkJICZwZ0J1ZmZlclVzYWdlLCAmaW5zdHItPmluc3RyLmJ1ZnVzYWdlX3N0YXJ0KTsK LQotCWlmIChpbnN0ci0+aW5zdHIubmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBY2N1bURpZmYo Jmluc3RyLT5pbnN0ci53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+aW5z dHIud2FsdXNhZ2Vfc3RhcnQpOworCS8qCisJICogT25seSBwb3AgdGhlIHN0YWNrLCBhY2N1bXVs YXRpb24gcnVucyBpbgorCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KKwkgKi8K KwlpZiAoaW5zdHItPmluc3RyLm5lZWRfc3RhY2spCisJCUluc3RyUG9wU3RhY2soJmluc3RyLT5p bnN0cik7CiAKIAkvKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0aGlzIGN5Y2xlPyAqLwog CWlmICghaW5zdHItPnJ1bm5pbmcpCkBAIC0xODksOCArNDQ5LDggQEAgSW5zdHJFbmRMb29wKE5v ZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCWlmICghaW5zdHItPnJ1bm5pbmcpCiAJCXJldHVy bjsKIAotCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQot CQllbG9nKEVSUk9SLCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5nIG5vZGUiKTsKKwkv KiBFbnN1cmUgSW5zdHJOb2RlU3RvcCB3YXMgY2FsbGVkICovCisJQXNzZXJ0KElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSk7CiAKIAkvKiBBY2N1bXVsYXRlIHBlci1j eWNsZSBzdGF0aXN0aWNzIGludG8gdG90YWxzICovCiAJSU5TVFJfVElNRV9BREQoaW5zdHItPnN0 YXJ0dXAsIGluc3RyLT5maXJzdHR1cGxlKTsKQEAgLTIzMSw2NyArNDkxLDczIEBAIEluc3RyQWdn Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCkK IAlkc3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCiAJLyogQWRkIGRlbHRhIG9m IGJ1ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGRzdC0+ aW5zdHIubmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+aW5zdHIuYnVmdXNh Z2UsICZhZGQtPmluc3RyLmJ1ZnVzYWdlKTsKLQotCWlmIChkc3QtPmluc3RyLm5lZWRfd2FsdXNh Z2UpCi0JCVdhbFVzYWdlQWRkKCZkc3QtPmluc3RyLndhbHVzYWdlLCAmYWRkLT5pbnN0ci53YWx1 c2FnZSk7CisJaWYgKGRzdC0+aW5zdHIubmVlZF9zdGFjaykKKwkJSW5zdHJBY2N1bVN0YWNrKCZk c3QtPmluc3RyLCAmYWRkLT5pbnN0cik7CiB9CiAKIC8qIFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9u IGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2NUcmlnZ2Vy KGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQorSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJ bnN0cnVtZW50YXRpb24gKnFpbnN0ciwgaW50IG4pCiB7Ci0JVHJpZ2dlckluc3RydW1lbnRhdGlv biAqdGdpbnN0ciA9IHBhbGxvYzAobiAqIHNpemVvZihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKSk7 CisJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cjsKIAlpbnQJCQlpOwogCisJLyoKKwkg KiBBbGxvY2F0ZSBpbiB0aGUgcXVlcnkncyBkZWRpY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRl eHQgc28gYWxsCisJICogaW5zdHJ1bWVudGF0aW9uIGRhdGEgaXMgZ3JvdXBlZCB0b2dldGhlciBh bmQgY2xlYW5lZCB1cCBhcyBhIHVuaXQuCisJICovCisJQXNzZXJ0KHFpbnN0ciAhPSBOVUxMICYm IHFpbnN0ci0+aW5zdHJfY3h0ICE9IE5VTEwpOworCXRnaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxs b2NaZXJvKHFpbnN0ci0+aW5zdHJfY3h0LAorCQkJCQkJCQkJIG4gKiBzaXplb2YoVHJpZ2dlcklu c3RydW1lbnRhdGlvbikpOworCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykKLQkJSW5zdHJJbml0 T3B0aW9ucygmdGdpbnN0cltpXS5pbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJSW5zdHJJ bml0T3B0aW9ucygmdGdpbnN0cltpXS5pbnN0ciwgcWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMp OwogCiAJcmV0dXJuIHRnaW5zdHI7CiB9CiAKIHZvaWQKLUluc3RyU3RhcnRUcmlnZ2VyKFRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpCitJbnN0clN0YXJ0VHJpZ2dlcihRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKQogewog CUluc3RyU3RhcnQoJnRnaW5zdHItPmluc3RyKTsKKworCS8qCisJICogT24gZmlyc3QgY2FsbCwg cmVnaXN0ZXIgd2l0aCB0aGUgcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGZvciBhYm9ydAor CSAqIHJlY292ZXJ5LgorCSAqLworCWlmIChxaW5zdHIgJiYgdGdpbnN0ci0+aW5zdHIubmVlZF9z dGFjayAmJgorCQlkbGlzdF9ub2RlX2lzX2RldGFjaGVkKCZ0Z2luc3RyLT5pbnN0ci51bmZpbmFs aXplZF9lbnRyeSkpCisJCWRsaXN0X3B1c2hfaGVhZCgmcWluc3RyLT51bmZpbmFsaXplZF9lbnRy aWVzLAorCQkJCQkJJnRnaW5zdHItPmluc3RyLnVuZmluYWxpemVkX2VudHJ5KTsKIH0KIAogdm9p ZAogSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyLCBpbnQg ZmlyaW5ncykKIHsKKwkvKgorCSAqIFRoaXMgdHJpZ2dlciBtYXkgYmUgY2FsbGVkIGFnYWluLCBz byB3ZSBkb24ndCBmaW5hbGl6ZSBpbnN0cnVtZW50YXRpb24KKwkgKiBoZXJlLiBBY2N1bXVsYXRp b24gdG8gdGhlIHBhcmVudCBoYXBwZW5zIGF0IEV4ZWN1dG9yRmluaXNoIHRocm91Z2gKKwkgKiBF eGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uLgorCSAqLwogCUluc3RyU3RvcCgmdGdp bnN0ci0+aW5zdHIpOwogCXRnaW5zdHItPmZpcmluZ3MgKz0gZmlyaW5nczsKIH0KIAotLyogbm90 ZSBjdXJyZW50IHZhbHVlcyBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogdm9p ZAotSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCkKK0luc3RyQWNjdW1TdGFjayhJbnN0cnVt ZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQpCiB7Ci0Jc2F2ZV9wZ0J1ZmZlclVz YWdlID0gcGdCdWZmZXJVc2FnZTsKLQlzYXZlX3BnV2FsVXNhZ2UgPSBwZ1dhbFVzYWdlOwotfQor CUFzc2VydChkc3QgIT0gTlVMTCk7CisJQXNzZXJ0KGFkZCAhPSBOVUxMKTsKIAotLyogcmVwb3J0 IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3duICovCi12b2lkCi1JbnN0ckVu ZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2Up Ci17Ci0JbWVtc2V0KGJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQlCdWZmZXJV c2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzYXZlX3BnQnVmZmVyVXNh Z2UpOwotCW1lbXNldCh3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JV2FsVXNhZ2VB Y2N1bURpZmYod2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVzYWdlKTsKLX0KKwlp ZiAoIWFkZC0+bmVlZF9zdGFjaykKKwkJcmV0dXJuOwogCi0vKiBhY2N1bXVsYXRlIHdvcmsgZG9u ZSBieSB3b3JrZXJzIGluIGxlYWRlcidzIHN0YXRzICovCi12b2lkCi1JbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQlC dWZmZXJVc2FnZUFkZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZw Z1dhbFVzYWdlLCB3YWx1c2FnZSk7CisJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZh ZGQtPmJ1ZnVzYWdlKTsKKwlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNh Z2UpOwogfQogCiAvKiBkc3QgKz0gYWRkICovCi1zdGF0aWMgdm9pZAordm9pZAogQnVmZmVyVXNh Z2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIHsKIAlkc3Qt PnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdDsKQEAgLTMxMiwzOSArNTc4 LDkgQEAgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2Ug KmFkZCkKIAlJTlNUUl9USU1FX0FERChkc3QtPnRlbXBfYmxrX3dyaXRlX3RpbWUsIGFkZC0+dGVt cF9ibGtfd3JpdGVfdGltZSk7CiB9CiAKLS8qIGRzdCArPSBhZGQgLSBzdWIgKi8KKy8qIGRzdCAr PSBhZGQgKi8KIHZvaWQKLUJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCi0J CQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLAotCQkJCQkgY29uc3QgQnVmZmVyVXNhZ2UgKnN1 YikKLXsKLQlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdCAtIHN1 Yi0+c2hhcmVkX2Jsa3NfaGl0OwotCWRzdC0+c2hhcmVkX2Jsa3NfcmVhZCArPSBhZGQtPnNoYXJl ZF9ibGtzX3JlYWQgLSBzdWItPnNoYXJlZF9ibGtzX3JlYWQ7Ci0JZHN0LT5zaGFyZWRfYmxrc19k aXJ0aWVkICs9IGFkZC0+c2hhcmVkX2Jsa3NfZGlydGllZCAtIHN1Yi0+c2hhcmVkX2Jsa3NfZGly dGllZDsKLQlkc3QtPnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5zaGFyZWRfYmxrc193cml0 dGVuIC0gc3ViLT5zaGFyZWRfYmxrc193cml0dGVuOwotCWRzdC0+bG9jYWxfYmxrc19oaXQgKz0g YWRkLT5sb2NhbF9ibGtzX2hpdCAtIHN1Yi0+bG9jYWxfYmxrc19oaXQ7Ci0JZHN0LT5sb2NhbF9i bGtzX3JlYWQgKz0gYWRkLT5sb2NhbF9ibGtzX3JlYWQgLSBzdWItPmxvY2FsX2Jsa3NfcmVhZDsK LQlkc3QtPmxvY2FsX2Jsa3NfZGlydGllZCArPSBhZGQtPmxvY2FsX2Jsa3NfZGlydGllZCAtIHN1 Yi0+bG9jYWxfYmxrc19kaXJ0aWVkOwotCWRzdC0+bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+ bG9jYWxfYmxrc193cml0dGVuIC0gc3ViLT5sb2NhbF9ibGtzX3dyaXR0ZW47Ci0JZHN0LT50ZW1w X2Jsa3NfcmVhZCArPSBhZGQtPnRlbXBfYmxrc19yZWFkIC0gc3ViLT50ZW1wX2Jsa3NfcmVhZDsK LQlkc3QtPnRlbXBfYmxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtzX3dyaXR0ZW4gLSBzdWIt PnRlbXBfYmxrc193cml0dGVuOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPnNoYXJlZF9i bGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQtPnNoYXJlZF9ibGtfcmVhZF90aW1lLCBzdWItPnNo YXJlZF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT5zaGFyZWRf YmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa193cml0ZV90aW1lLCBzdWIt PnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+bG9j YWxfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRkLT5sb2NhbF9ibGtfcmVhZF90aW1lLCBzdWIt PmxvY2FsX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPmxvY2Fs X2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa193cml0ZV90aW1lLCBzdWIt PmxvY2FsX2Jsa193cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT50ZW1w X2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+dGVtcF9ibGtfcmVhZF90aW1lLCBzdWItPnRl bXBfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+dGVtcF9ibGtf d3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1lLCBzdWItPnRlbXBf YmxrX3dyaXRlX3RpbWUpOwotfQotCi0vKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBXQUwgdXNhZ2Ug YWNjdW11bGF0aW9uICovCi1zdGF0aWMgdm9pZAotV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwg V2FsVXNhZ2UgKmFkZCkKK1dhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdl ICphZGQpCiB7CiAJZHN0LT53YWxfYnl0ZXMgKz0gYWRkLT53YWxfYnl0ZXM7CiAJZHN0LT53YWxf cmVjb3JkcyArPSBhZGQtPndhbF9yZWNvcmRzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggYjM4MTcwZjBmYmUuLjNjYTBhN2E2MzVkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTkwNCw3ICs5MDQsNyBAQCBjcmVhdGVf ZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCSAqIFVzZSBS ZWxhdGlvbiBvcGVuZWQgYnkgbG9naWNhbHJlcF9yZWxfb3BlbigpIGluc3RlYWQgb2Ygb3Blbmlu ZyBpdAogCSAqIGFnYWluLgogCSAqLwotCUluaXRSZXN1bHRSZWxJbmZvKHJlc3VsdFJlbEluZm8s IHJlbC0+bG9jYWxyZWwsIDEsIE5VTEwsIDApOworCUluaXRSZXN1bHRSZWxJbmZvKHJlc3VsdFJl bEluZm8sIHJlbC0+bG9jYWxyZWwsIDEsIE5VTEwsIE5VTEwpOwogCiAJLyoKIAkgKiBXZSBwdXQg dGhlIFJlc3VsdFJlbEluZm8gaW4gdGhlIGVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25zIGxpc3Qs IGV2ZW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggM2UxYzM5MTYwZGIuLmNm NGY0MjQ2Y2EyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtMTI2Niw5ICsx MjY2LDkgQEAgUGluQnVmZmVyRm9yQmxvY2soUmVsYXRpb24gcmVsLAogCWlmIChyZWwpCiAJewog CQkvKgotCQkgKiBXaGlsZSBwZ0J1ZmZlclVzYWdlJ3MgInJlYWQiIGNvdW50ZXIgaXNuJ3QgYnVt cGVkIHVubGVzcyB3ZSByZWFjaAotCQkgKiBXYWl0UmVhZEJ1ZmZlcnMoKSAoc28sIG5vdCBmb3Ig aGl0cywgYW5kIG5vdCBmb3IgYnVmZmVycyB0aGF0IGFyZQotCQkgKiB6ZXJvZWQgaW5zdGVhZCks IHRoZSBwZXItcmVsYXRpb24gc3RhdHMgYWx3YXlzIGNvdW50IHRoZW0uCisJCSAqIFdoaWxlIHRo ZSBjdXJyZW50IGJ1ZmZlciB1c2FnZSAicmVhZCIgY291bnRlciBpc24ndCBidW1wZWQgdW5sZXNz CisJCSAqIHdlIHJlYWNoIFdhaXRSZWFkQnVmZmVycygpIChzbywgbm90IGZvciBoaXRzLCBhbmQg bm90IGZvciBidWZmZXJzCisJCSAqIHRoYXQgYXJlIHplcm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1y ZWxhdGlvbiBzdGF0cyBhbHdheXMgY291bnQgdGhlbS4KIAkJICovCiAJCXBnc3RhdF9jb3VudF9i dWZmZXJfcmVhZChyZWwpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9pby5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMK aW5kZXggZTM4MjlkN2ZlN2MuLmU3ZmM3ZjA3MWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfaW8uYwpAQCAtMTE0LDkgKzExNCw5IEBAIHBnc3RhdF9wcmVwYXJlX2lvX3RpbWUo Ym9vbCB0cmFja19pb19ndWMpCiAgKiBwZ19zdGF0X2RhdGFiYXNlIG9ubHkgY291bnRzIGJsb2Nr IHJlYWQgYW5kIHdyaXRlIHRpbWVzLCB0aGVzZSBhcmUgZG9uZSBmb3IKICAqIElPT1BfUkVBRCwg SU9PUF9XUklURSBhbmQgSU9PUF9FWFRFTkQuCiAgKgotICogcGdCdWZmZXJVc2FnZSBpcyB1c2Vk IGZvciBFWFBMQUlOLiAgcGdCdWZmZXJVc2FnZSBoYXMgd3JpdGUgYW5kIHJlYWQgc3RhdHMKLSAq IGZvciBzaGFyZWQsIGxvY2FsIGFuZCB0ZW1wb3JhcnkgYmxvY2tzLiAgcGdfc3RhdF9pbyBkb2Vz IG5vdCB0cmFjayB0aGUKLSAqIGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBibG9ja3MsIHNvIHRoZXNl IGFyZSBpZ25vcmVkIGhlcmUuCisgKiBFeGVjdXRvciBpbnN0cnVtZW50YXRpb24gaXMgdXNlZCBm b3IgRVhQTEFJTi4gQnVmZmVyIHVzYWdlIHRyYWNrZWQgdGhlcmUgaGFzCisgKiB3cml0ZSBhbmQg cmVhZCBzdGF0cyBmb3Igc2hhcmVkLCBsb2NhbCBhbmQgdGVtcG9yYXJ5IGJsb2Nrcy4gcGdfc3Rh dF9pbworICogZG9lcyBub3QgdHJhY2sgdGhlIGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBibG9ja3Ms IHNvIHRoZXNlIGFyZSBpZ25vcmVkIGhlcmUuCiAgKi8KIHZvaWQKIHBnc3RhdF9jb3VudF9pb19v cF90aW1lKElPT2JqZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9f b3AsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2RyLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2RyLmgKaW5kZXggZjk4ZWFhZTE4NjQuLmZhOThkMjk1 ODlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2RyLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oCkBAIC0yMywxMSArMjMsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlIEV4cGxhaW5TdGF0ZTsKIHR5cGVkZWYgc3RydWN0IFNl cmlhbGl6ZU1ldHJpY3MKIHsKIAl1aW50NjQJCWJ5dGVzU2VudDsJCS8qICMgb2YgYnl0ZXMgc2Vy aWFsaXplZCAqLwotCWluc3RyX3RpbWUJdGltZVNwZW50OwkJLyogdGltZSBzcGVudCBzZXJpYWxp emluZyAqLwotCUJ1ZmZlclVzYWdlIGJ1ZmZlclVzYWdlOwkvKiBidWZmZXJzIGFjY2Vzc2VkIGR1 cmluZyBzZXJpYWxpemF0aW9uICovCisJSW5zdHJ1bWVudGF0aW9uIGluc3RyOwkJLyogcGVyLXR1 cGxlIHRpbWluZy9idWZmZXIgbWVhc3VyZW1lbnQgKi8KIH0gU2VyaWFsaXplTWV0cmljczsKIAog ZXh0ZXJuIERlc3RSZWNlaXZlciAqQ3JlYXRlRXhwbGFpblNlcmlhbGl6ZURlc3RSZWNlaXZlcihF eHBsYWluU3RhdGUgKmVzKTsKLWV4dGVybiBTZXJpYWxpemVNZXRyaWNzIEdldFNlcmlhbGl6YXRp b25NZXRyaWNzKERlc3RSZWNlaXZlciAqZGVzdCk7CitleHRlcm4gU2VyaWFsaXplTWV0cmljcyAq R2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoRGVzdFJlY2VpdmVyICpkZXN0KTsKIAogI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCBkM2E1NzI0Mjg0NC4uMzQwMDI5YTIwMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtNTEsOCArNTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBRdWVy eURlc2MKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRlUGxhbiAqLwogCWJvb2wJCWFs cmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwogCi0JLyog VGhpcyBpcyBhbHdheXMgc2V0IE5VTEwgYnkgdGhlIGNvcmUgc3lzdGVtLCBidXQgcGx1Z2lucyBj YW4gY2hhbmdlIGl0ICovCi0Jc3RydWN0IEluc3RydW1lbnRhdGlvbiAqdG90YWx0aW1lOwkvKiB0 b3RhbCB0aW1lIHNwZW50IGluIEV4ZWN1dG9yUnVuICovCisJLyogVGhpcyBmaWVsZCBpcyBzZXQg YnkgRXhlY3V0b3JSdW4sIG9yIHBsdWdpbnMgKi8KKwlzdHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRp b24gKnRvdGFsdGltZTsgLyogdG90YWwgdGltZSBzcGVudCBpbiBFeGVjdXRvclJ1biAqLwogfSBR dWVyeURlc2M7CiAKIC8qIGluIHBxdWVyeS5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRl eCA0OTFjNDg4NjUwNi4uNzU0MzRmNjRiYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAt MjMzLDYgKzIzMyw3IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90 LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBmcm9t IGZ1bmN0aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8KK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1 bWVudGF0aW9uIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFy dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFy ZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVy biB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU0LDcgKzI1NSw3 IEBAIGV4dGVybiB2b2lkIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCQkJCQkJICBSZWxhdGlvbiByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCQkJICBJ bmRleCByZXN1bHRSZWxhdGlvbkluZGV4LAogCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcGFydGl0 aW9uX3Jvb3RfcnJpLAotCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CisJCQkJCQkJ ICBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKTsKIGV4dGVybiBSZXN1bHRSZWxJbmZvICpF eGVjR2V0VHJpZ2dlclJlc3VsdFJlbChFU3RhdGUgKmVzdGF0ZSwgT2lkIHJlbGlkLAogCQkJCQkJ CQkJCQkgIFJlc3VsdFJlbEluZm8gKnJvb3RSZWxJbmZvKTsKIGV4dGVybiBMaXN0ICpFeGVjR2V0 QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvKTsKQEAgLTMwMSw2ICszMDIsOCBAQCBleHRlcm4gdm9pZCBFeGVjU2V0RXhlY1Byb2NO b2RlKFBsYW5TdGF0ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRkIGZ1bmN0aW9uKTsKIGV4dGVybiBO b2RlICpNdWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhl Y0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUo UGxhblN0YXRlICpub2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50 YXRpb24oUGxhblN0YXRlICpub2RlLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50KTsKK2V4 dGVybiB2b2lkIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2Rl KTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBs YW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4 IGQ0NzY5ZjNkYTdiLi5mNDljM2Y5OWNmMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApA QCAtMTMsNiArMTMsNyBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX0gKICNkZWZpbmUgSU5TVFJVTUVO VF9ICiAKKyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0 cl90aW1lLmgiCiAKIApAQCAtNjgsMjkgKzY5LDkxIEBAIHR5cGVkZWYgZW51bSBJbnN0cnVtZW50 T3B0aW9uCiB9IEluc3RydW1lbnRPcHRpb247CiAKIC8qCi0gKiBHZW5lcmFsIHB1cnBvc2UgaW5z dHJ1bWVudGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FML2J1ZmZlciB1c2FnZQor ICogSW5zdHJ1bWVudGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNhcHR1cmluZyB0aW1lIGFuZCBXQUwv YnVmZmVyIHVzYWdlCiAgKgotICogSW5pdGlhbGl6ZWQgdGhyb3VnaCBJbnN0ckFsbG9jLCBmb2xs b3dlZCBieSBvbmUgb3IgbW9yZSBjYWxscyB0byBhIHBhaXIgb2YKLSAqIEluc3RyU3RhcnQvSW5z dHJTdG9wIChhY3Rpdml0eSBpcyBtZWFzdXJlZCBpbmJldHdlZW4pLgorICogSWYgdXNlZCBkaXJl Y3RseToKKyAqIC0gQWxsb2NhdGUgb24gdGhlIHN0YWNrIGFuZCB6ZXJvIGluaXRpYWxpemUgdGhl IHN0cnVjdAorICogLSBDYWxsIEluc3RySW5pdE9wdGlvbnMgdG8gc2V0IGluc3RydW1lbnRhdGlv biBvcHRpb25zCisgKiAtIENhbGwgSW5zdHJTdGFydCBiZWZvcmUgdGhlIGFjdGl2aXR5IHlvdSB3 YW50IHRvIG1lYXN1cmUKKyAqIC0gQ2FsbCBJbnN0clN0b3AgLyBJbnN0clN0b3BGaW5hbGl6ZSBh ZnRlciB0aGUgYWN0aXZpdHkgdG8gY2FwdHVyZSB0b3RhbHMKKyAqCisgKiBJbnN0clN0YXJ0L0lu c3RyU3RvcCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGUgbGFzdCBzdG9wIGNhbGwg bXVzdAorICogYmUgdG8gSW5zdHJTdG9wRmluYWxpemUgdG8gZW5zdXJlIHBhcmVudCBzdGFjayBl bnRyaWVzIGdldCB0aGUgYWNjdW11bGF0ZWQKKyAqIHRvdGFscy4gSWYgdGhlcmUgaXMgcmlzayBv ZiB0cmFuc2FjdGlvbiBhYm9ydHMgeW91IG11c3QgY2FsbAorICogSW5zdHJTdG9wRmluYWxpemUg aW4gYSBQR19UUlkvUEdfRklOQUxMWSBibG9jayB0byBhdm9pZCBjb3JydXB0aW5nIHRoZQorICog aW5zdHJ1bWVudGF0aW9uIHN0YWNrLgorICoKKyAqIEluIGEgcXVlcnkgY29udGV4dCB1c2UgUXVl cnlJbnN0cnVtZW50YXRpb24gaW5zdGVhZCwgd2hpY2ggaGFuZGxlcyBhYm9ydHMKKyAqIHVzaW5n IHRoZSByZXNvdXJjZSBvd25lciBsb2dpYy4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVu dGF0aW9uCiB7CiAJLyogUGFyYW1ldGVycyBzZXQgYXQgY3JlYXRpb246ICovCiAJYm9vbAkJbmVl ZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCi0JYm9vbAkJbmVlZF9i dWZ1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1c2FnZSBkYXRhICovCi0JYm9vbAkJ bmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCisJYm9v bAkJbmVlZF9zdGFjazsJCS8qIHRydWUgaWYgd2UgbmVlZCBXQUwvYnVmZmVyIHVzYWdlIGRhdGEg Ki8KIAkvKiBJbnRlcm5hbCBzdGF0ZSBrZWVwaW5nOiAqLwogCWluc3RyX3RpbWUJc3RhcnR0aW1l OwkJLyogc3RhcnQgdGltZSBvZiBsYXN0IEluc3RyU3RhcnQgKi8KLQlCdWZmZXJVc2FnZSBidWZ1 c2FnZV9zdGFydDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0ICovCi0JV2FsVXNhZ2UJd2FsdXNh Z2Vfc3RhcnQ7IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLwogCS8qIEFjY3VtdWxhdGVkIHN0YXRp c3RpY3M6ICovCiAJaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCBydW50aW1lICovCiAJQnVm ZmVyVXNhZ2UgYnVmdXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIgdXNhZ2UgKi8KIAlXYWxVc2FnZQl3 YWx1c2FnZTsJCS8qIHRvdGFsIFdBTCB1c2FnZSAqLworCS8qIEFib3J0IGhhbmRsaW5nOiBsaW5r IGluIHBhcmVudCBRdWVyeUluc3RydW1lbnRhdGlvbidzIHVuZmluYWxpemVkIGxpc3QgKi8KKwlk bGlzdF9ub2RlCXVuZmluYWxpemVkX2VudHJ5OwogfSBJbnN0cnVtZW50YXRpb247CiAKKy8qCisg KiBRdWVyeS1yZWxhdGVkIGluc3RydW1lbnRhdGlvbiB0cmFja2luZy4KKyAqCisgKiBVc2FnZToK KyAqIC0gQWxsb2NhdGUgb24gdGhlIGhlYXAgdXNpbmcgSW5zdHJRdWVyeUFsbG9jIChyZXF1aXJl ZCBmb3IgYWJvcnQgaGFuZGxpbmcpCisgKiAtIENhbGwgSW5zdHJRdWVyeVN0YXJ0IGJlZm9yZSB0 aGUgYWN0aXZpdHkgeW91IHdhbnQgdG8gbWVhc3VyZQorICogLSBDYWxsIEluc3RyUXVlcnlTdG9w IC8gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZSBhZnRlcndhcmRzIHRvIGNhcHR1cmUgdG90YWxzCisg KgorICogSW5zdHJRdWVyeVN0YXJ0L0luc3RyUXVlcnlTdG9wIG1heSBiZSBjYWxsZWQgbXVsdGlw bGUgdGltZXMuIFRoZSBsYXN0IHN0b3AKKyAqIGNhbGwgbXVzdCBiZSB0byBJbnN0clF1ZXJ5U3Rv cEZpbmFsaXplIHRvIGVuc3VyZSBwYXJlbnQgc3RhY2sgZW50cmllcyBnZXQKKyAqIHRoZSBhY2N1 bXVsYXRlZCB0b3RhbHMuCisgKgorICogVXNlcyByZXNvdXJjZSBvd25lciBtZWNoYW5pc20gZm9y IGhhbmRsaW5nIGFib3J0cywgYXMgc3VjaCwgdGhlIGNhbGxlcgorICogKm11c3QqIG5vdCBleGl0 IG91dCBvZiB0aGUgdG9wIGxldmVsIHRyYW5zYWN0aW9uIGFmdGVyIGhhdmluZyBjYWxsZWQKKyAq IEluc3RyUXVlcnlTdGFydCwgd2l0aG91dCBmaXJzdCBjYWxsaW5nIEluc3RyUXVlcnlTdG9wIG9y CisgKiBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplLiBJbiB0aGUgY2FzZSBvZiBhIHRyYW5zYWN0aW9u IGFib3J0LCBsb2dpYyBlcXVpdmFsZW50CisgKiB0byBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplIHdp bGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCisgKi8KK3N0cnVjdCBSZXNvdXJjZU93bmVyRGF0 YTsKK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCit7CisJSW5zdHJ1bWVudGF0 aW9uIGluc3RyOworCisJLyogT3JpZ2luYWwgaW5zdHJ1bWVudF9vcHRpb25zIGZsYWdzIHVzZWQg dG8gY3JlYXRlIHRoaXMgaW5zdHJ1bWVudGF0aW9uICovCisJaW50CQkJaW5zdHJ1bWVudF9vcHRp b25zOworCisJLyogUmVzb3VyY2Ugb3duZXIgdXNlZCBmb3IgY2xlYW51cCBmb3IgYWJvcnRzIGJl dHdlZW4gSW5zdHJTdGFydC9JbnN0clN0b3AgKi8KKwlzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGEg Km93bmVyOworCisJLyoKKwkgKiBEZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIGFsbCBpbnN0 cnVtZW50YXRpb24gYWxsb2NhdGlvbnMgYmVsb25naW5nCisJICogdG8gdGhpcyBxdWVyeSAobm9k ZSBpbnN0cnVtZW50YXRpb24sIHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uLCBldGMuKS4KKwkgKiBJ bml0aWFsbHkgYSBjaGlsZCBvZiBUb3BNZW1vcnlDb250ZXh0IHNvIGl0IHN1cnZpdmVzIHRyYW5z YWN0aW9uIGFib3J0CisJICogZm9yIFJlc291cmNlT3duZXIgY2xlYW51cCwgd2hpY2ggaXMgdGhl biByZWFzc2lnbmVkIHRvIHRoZSBjdXJyZW50CisJICogbWVtb3J5IGNvbnRleHQgb24gSW5zdHJR dWVyeVN0b3BGaW5hbGl6ZS4KKwkgKi8KKwlNZW1vcnlDb250ZXh0IGluc3RyX2N4dDsKKworCS8q CisJICogQ2hpbGQgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBvbiBhYm9ydCwg c2luY2UgdGhleSBhcmUgbm90CisJICogcmVnaXN0ZXJlZCBhcyBhIHJlc291cmNlIG93bmVyIHRo ZW1zZWx2ZXMuIENvbnRhaW5zIGJvdGggbm9kZSBhbmQKKwkgKiB0cmlnZ2VyIGluc3RydW1lbnRh dGlvbiBlbnRyaWVzIGxpbmtlZCB2aWEgaW5zdHIudW5maW5hbGl6ZWRfZW50cnkuCisJICovCisJ ZGxpc3RfaGVhZAl1bmZpbmFsaXplZF9lbnRyaWVzOworfSBRdWVyeUluc3RydW1lbnRhdGlvbjsK KwogLyoKICAqIFNwZWNpYWxpemVkIGluc3RydW1lbnRhdGlvbiBmb3IgcGVyLW5vZGUgZXhlY3V0 aW9uIHN0YXRpc3RpY3MKKyAqCisgKiBSZWxpZXMgb24gYW4gb3V0ZXIgUXVlcnlJbnN0cnVtZW50 YXRpb24gaGF2aW5nIGJlZW4gc2V0IHVwIHRvIGhhbmRsZSB0aGUKKyAqIHN0YWNrIHVzZWQgZm9y IFdBTC9idWZmZXIgdXNhZ2Ugc3RhdGlzdGljcywgYW5kIHJlbGllcyBvbiBpdCBmb3IgbWFuYWdp bmcKKyAqIGFib3J0cy4gU29sZWx5IGludGVuZGVkIGZvciB0aGUgZXhlY3V0b3IgYW5kIGFueW9u ZSByZXBvcnRpbmcgYWJvdXQgaXRzCisgKiBhY3Rpdml0aWVzIChlLmcuIEVYUExBSU4gQU5BTFla RSkuCiAgKi8KIHR5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIHsKQEAgLTExMSw2 ICsxNzQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgogCWRvdWJsZQkJ bmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgIm90aGVyIiBxdWFscyAqLwog fSBOb2RlSW5zdHJ1bWVudGF0aW9uOwogCisvKgorICogQ2FyZSBtdXN0IGJlIHRha2VuIHdpdGgg YW55IHBvaW50ZXJzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBzdHJ1Y3QsIGFzIHRoaXMKKyAqIGdl dHMgY29waWVkIGFjcm9zcyBwcm9jZXNzZXMgZHVyaW5nIHBhcmFsbGVsIHF1ZXJ5IGV4ZWN1dGlv bi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgogewogCWlu dAkJCW51bV93b3JrZXJzOwkvKiAjIG9mIHN0cnVjdHVyZXMgdGhhdCBmb2xsb3cgKi8KQEAgLTEy NCwxNiArMTkxLDEwMiBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiAJ CQkJCQkJCSAqIHdhcyBmaXJlZCAqLwogfSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uOwogCi1leHRl cm4gUEdETExJTVBPUlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKKy8qCisgKiBEeW5hbWlj IGFycmF5LWJhc2VkIHN0YWNrIGZvciB0cmFja2luZyBjdXJyZW50IFdBTC9idWZmZXIgdXNhZ2Ug Y29udGV4dC4KKyAqCisgKiBXaGVuIHRoZSBzdGFjayBpcyBlbXB0eSwgJ2N1cnJlbnQnIHBvaW50 cyB0byBpbnN0cl90b3Agd2hpY2ggYWNjdW11bGF0ZXMKKyAqIHNlc3Npb24tbGV2ZWwgdG90YWxz LgorICovCit0eXBlZGVmIHN0cnVjdCBJbnN0clN0YWNrU3RhdGUKK3sKKwlpbnQJCQlzdGFja19z cGFjZTsJLyogYWxsb2NhdGVkIGNhcGFjaXR5IG9mIGVudHJpZXMgYXJyYXkgKi8KKwlpbnQJCQlz dGFja19zaXplOwkJLyogY3VycmVudCBudW1iZXIgb2YgZW50cmllcyAqLworCisJSW5zdHJ1bWVu dGF0aW9uICoqZW50cmllczsJLyogZHluYW1pYyBhcnJheSBvZiBwb2ludGVycyAqLworCUluc3Ry dW1lbnRhdGlvbiAqY3VycmVudDsJLyogdG9wIG9mIHN0YWNrLCBvciAmaW5zdHJfdG9wIHdoZW4g ZW1wdHkgKi8KK30gSW5zdHJTdGFja1N0YXRlOworCiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNh Z2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvYyhpbnQg aW5zdHJ1bWVudF9vcHRpb25zKTsKKy8qCisgKiBUaGUgdG9wIGluc3RydW1lbnRhdGlvbiByZXBy ZXNlbnRzIGEgcnVubmluZyB0b3RhbCBvZiB0aGUgY3VycmVudCBiYWNrZW5kCisgKiBXQUwvYnVm ZmVyIHVzYWdlIGluZm9ybWF0aW9uLiBUaGlzIHdpbGwgbm90IGJlIHVwZGF0ZWQgaW1tZWRpYXRl bHksIGJ1dAorICogcmF0aGVyIHdoZW4gdGhlIGN1cnJlbnQgc3RhY2sgZW50cnkgZ2V0cyBhY2N1 bXVsYXRlZCB3aGljaCB0eXBpY2FsbHkgaGFwcGVucworICogYXQgcXVlcnkgZW5kLgorICoKKyAq IENhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHV0aWxpemluZyB0aGlzIGluIHRoZSBwYXJhbGxlbCB3 b3JrZXIgY29udGV4dDoKKyAqIFBhcmFsbGVsIHdvcmtlcnMgd2lsbCByZXBvcnQgYmFjayB0aGVp ciBpbnN0cnVtZW50YXRpb24gdG8gdGhlIGNhbGxlciwKKyAqIGFuZCB0aGlzIGdldHMgYWRkZWQg dG8gdGhlIGNhbGxlcidzIHN0YWNrLiBJZiB0aGlzIHdlcmUgdG8gYmUgdXNlZCBpbiB0aGUKKyAq IHNoYXJlZCBtZW1vcnkgc3RhdHMgaW5mcmFzdHJ1Y3R1cmUgaXQgd291bGQgbmVlZCB0byBiZSBz a2lwcGVkIG9uIHBhcmFsbGVsCisgKiB3b3JrZXJzIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZy4K KyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RydW1lbnRhdGlvbiBpbnN0cl90b3A7CisKKy8q CisgKiBUaGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrIHN0YXRlLiBUaGUgJ2N1cnJlbnQnIGZpZWxk IHBvaW50cyB0byB0aGUKKyAqIGN1cnJlbnRseSBhY3RpdmUgc3RhY2sgZW50cnkgdGhhdCBpcyBn ZXR0aW5nIHVwZGF0ZWQgYXMgYWN0aXZpdHkgaGFwcGVucywKKyAqIGFuZCB3aWxsIGJlIGFjY3Vt dWxhdGVkIHRvIHBhcmVudCBzdGFja3Mgd2hlbiBpdCBnZXRzIGZpbmFsaXplZCBieQorICogSW5z dHJTdG9wIChmb3Igbm9uLWV4ZWN1dG9yIHVzZSBjYXNlcyksIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0 cnVtZW50YXRpb24KKyAqIChleGVjdXRvciBmaW5pc2gpIG9yIFJlc093bmVyUmVsZWFzZUluc3Ry dW1lbnRhdGlvbiBvbiBhYm9ydC4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RyU3RhY2tT dGF0ZSBpbnN0cl9zdGFjazsKKworZXh0ZXJuIHZvaWQgSW5zdHJTdGFja0dyb3codm9pZCk7CisK Ky8qCisgKiBQdXNoZXMgdGhlIHN0YWNrIHNvIHRoYXQgYWxsIFdBTC9idWZmZXIgdXNhZ2UgdXBk YXRlcyBnbyB0byB0aGUgcGFzc2VkIGluCisgKiBpbnN0cnVtZW50YXRpb24gZW50cnkuCisgKgor ICogU2VlIG5vdGUgb24gSW5zdHJQb3BTdGFjayByZWdhcmRpbmcgc2FmZSB1c2Ugb2YgdGhlc2Ug ZnVuY3Rpb25zLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUHVzaFN0YWNrKEluc3Ry dW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaWYgKHVubGlrZWx5KGluc3RyX3N0YWNrLnN0YWNrX3Np emUgPT0gaW5zdHJfc3RhY2suc3RhY2tfc3BhY2UpKQorCQlJbnN0clN0YWNrR3JvdygpOworCisJ aW5zdHJfc3RhY2suZW50cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXplKytdID0gaW5zdHI7CisJ aW5zdHJfc3RhY2suY3VycmVudCA9IGluc3RyOworfQorCisvKgorICogUG9wcyB0aGUgc3RhY2sg ZW50cnkgYmFjayB0byB0aGUgcHJldmlvdXMgb25lIHRoYXQgd2FzIGVmZmVjdGl2ZSBhdAorICog SW5zdHJQdXNoU3RhY2suCisgKgorICogQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIGludGVy bWVkaWF0ZSBzdGFjayBlbnRyaWVzIGFyZSBza2lwcGVkLCB0bworICogaGFuZGxlIGFib3J0cyBj b3JyZWN0bHkuIElmIHlvdSdyZSB0aGlua2luZyBvZiBjYWxsaW5nIHRoaXMgaW4gYSBQR19GSU5B TExZCisgKiBibG9jaywgY29uc2lkZXIgaW5zdGVhZCB1c2luZyBJbnN0clN0YXJ0ICsgSW5zdHJT dG9wRmluYWxpemUgd2hpY2ggY2FuIHNraXAKKyAqIGludGVybWVkaWF0ZSBzdGFjayBlbnRyaWVz LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2soSW5zdHJ1bWVudGF0aW9u ICppbnN0cikKK3sKKwlBc3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDApOworCUFzc2Vy dChpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxXSA9PSBpbnN0 cik7CisJaW5zdHJfc3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJlbnQgPSBp bnN0cl9zdGFjay5zdGFja19zaXplID4gMAorCQk/IGluc3RyX3N0YWNrLmVudHJpZXNbaW5zdHJf c3RhY2suc3RhY2tfc2l6ZSAtIDFdCisJCTogJmluc3RyX3RvcDsKK30KKwogZXh0ZXJuIHZvaWQg SW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7 CiBleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4g dm9pZCBJbnN0clN0b3BGaW5hbGl6ZShJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2 b2lkIEluc3RyRmluYWxpemVDaGlsZChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBJbnN0cnVtZW50 YXRpb24gKnBhcmVudCk7CitleHRlcm4gdm9pZCBJbnN0ckFjY3VtU3RhY2soSW5zdHJ1bWVudGF0 aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKTsKIAotZXh0ZXJuIE5vZGVJbnN0cnVtZW50 YXRpb24gKkluc3RyQWxsb2NOb2RlKGludCBpbnN0cnVtZW50X29wdGlvbnMsCi0JCQkJCQkJCQkJ ICAgYm9vbCBhc3luY19tb2RlKTsKK2V4dGVybiBRdWVyeUluc3RydW1lbnRhdGlvbiAqSW5zdHJR dWVyeUFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVy eVN0YXJ0KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clF1 ZXJ5U3RvcChRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJR dWVyeVN0b3BGaW5hbGl6ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZv aWQgSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQoUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwg SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CisKK3BnX25vZGlzY2FyZCBleHRlcm4gUXVlcnlJbnN0 cnVtZW50YXRpb24gKkluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOworZXh0ZXJuIHZvaWQg SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZl clVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4dGVybiB2b2lkIEluc3Ry QWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVz YWdlKTsKKworZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NOb2RlKFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGJvb2wgYXN5bmNfbW9kZSk7CiBleHRlcm4gdm9pZCBJ bnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24g Kmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq aW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKQEAgLTE0MSwzNSArMjk0LDM2IEBAIGV4dGVybiB2b2lk IEluc3RyVXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91Ymxl IG5UdXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24g Kmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpk c3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKLWV4dGVybiBUcmlnZ2VySW5zdHJ1bWVu dGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7 Ci1leHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0 Z2luc3RyKTsKK2V4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dl cihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBpbnQgbik7CitleHRlcm4gdm9pZCBJbnN0 clN0YXJ0VHJpZ2dlcihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAorCQkJCQkJCSAgVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0clN0b3BUcmln Z2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKTsKIAotZXh0 ZXJuIHZvaWQgSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1leHRlcm4gdm9pZCBJbnN0 ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNh Z2UpOwotZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1 ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBY2N1 bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKLQkJCQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICphZGQs IGNvbnN0IEJ1ZmZlclVzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVm ZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCk7CitleHRlcm4gdm9pZCBXYWxV c2FnZUFkZChXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkKTsKIGV4dGVybiB2b2lk IFdhbFVzYWdlQWNjdW1EaWZmKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQsCiAJ CQkJCQkJICBjb25zdCBXYWxVc2FnZSAqc3ViKTsKIAogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9J TkNSKGZsZCkgZG8geyBcCi0JCXBnQnVmZmVyVXNhZ2UuZmxkKys7IFwKKwkJaW5zdHJfc3RhY2su Y3VycmVudC0+YnVmdXNhZ2UuZmxkKys7IFwKIAl9IHdoaWxlKDApCiAjZGVmaW5lIElOU1RSX0JV RlVTQUdFX0FERChmbGQsdmFsKSBkbyB7IFwKLQkJcGdCdWZmZXJVc2FnZS5mbGQgKz0gKHZhbCk7 IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkICs9ICh2YWwpOyBcCiAJfSB3 aGlsZSgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwK LQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCUlOU1RSX1RJTUVf QUREKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgdmFsKTsgXAogCX0gd2hpbGUg KDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0 YXJ0dmFsKSBkbyB7IFwKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQs IGVuZHZhbCwgc3RhcnR2YWwpOyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyX3N0YWNr LmN1cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7IFwKIAl9IHdoaWxlICgw KQorCiAjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKIAkJcGdXYWxVc2Fn ZS5mbGQrKzsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZS5mbGQrKzsgXAogCX0g d2hpbGUoMCkKICNkZWZpbmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAogCQlw Z1dhbFVzYWdlLmZsZCArPSAodmFsKTsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2Fn ZS5mbGQgKz0gKHZhbCk7IFwKIAl9IHdoaWxlKDApCiAKICNlbmRpZgkJCQkJCQkvKiBJTlNUUlVN RU5UX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggM2VjYWU3NTUyZmMuLmIyODI4OGFhMWU4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBJ bnN0cnVtZW50YXRpb24gSW5zdHJ1bWVudGF0aW9uOwogdHlwZWRlZiBzdHJ1Y3QgcGFpcmluZ2hl YXAgcGFpcmluZ2hlYXA7CiB0eXBlZGVmIHN0cnVjdCBQbGFuU3RhdGUgUGxhblN0YXRlOwogdHlw ZWRlZiBzdHJ1Y3QgUXVlcnlFbnZpcm9ubWVudCBRdWVyeUVudmlyb25tZW50OwordHlwZWRlZiBz dHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRpb24gUXVlcnlJbnN0cnVtZW50YXRpb247CiB0eXBlZGVm IHN0cnVjdCBSZWxhdGlvbkRhdGEgKlJlbGF0aW9uOwogdHlwZWRlZiBSZWxhdGlvbiAqUmVsYXRp b25QdHI7CiB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2FuS2V5RGF0YTsKQEAgLTc1Myw3 ICs3NTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWN1dG9yUnVu KCkgY2FsbHMuICovCiAKIAlpbnQJCQllc190b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRv IEV4ZWN1dG9yU3RhcnQgKi8KLQlpbnQJCQllc19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVt ZW50T3B0aW9uIGZsYWdzICovCisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmVzX2luc3RydW1lbnQ7 CS8qIHF1ZXJ5LWxldmVsIGluc3RydW1lbnRhdGlvbiAqLwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkv KiB0cnVlIHdoZW4gRXhlY3V0b3JGaW5pc2ggaXMgZG9uZSAqLwogCiAJTGlzdAkgICAqZXNfZXhw cmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVzb3duZXIuaAppbmRleCBlYjYwMzNiNGZkYi4uNTQ2M2JjOTIxZjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3du ZXIuaApAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIHVpbnQzMiBSZXNvdXJjZVJlbGVhc2VQcmlv cml0eTsKICNkZWZpbmUgUkVMRUFTRV9QUklPX1NOQVBTSE9UX1JFRlMJCQk1MDAKICNkZWZpbmUg UkVMRUFTRV9QUklPX0ZJTEVTCQkJCQk2MDAKICNkZWZpbmUgUkVMRUFTRV9QUklPX1dBSVRFVkVO VFNFVFMJCQk3MDAKKyNkZWZpbmUgUkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTgkJODAwCiAK IC8qIDAgaXMgY29uc2lkZXJlZCBpbnZhbGlkICovCiAjZGVmaW5lIFJFTEVBU0VfUFJJT19GSVJT VAkJCQkJMQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA0NDlhY2NhOGRjMS4uNzM5Mzky NmUzNGQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzU1LDYgKzEzNTUsNyBAQCBJ bmplY3Rpb25Qb2ludFNoYXJlZFN0YXRlCiBJbmplY3Rpb25Qb2ludHNDdGwKIElubGluZUNvZGVC bG9jawogSW5zZXJ0U3RtdAorSW5zdHJTdGFja1N0YXRlCiBJbnN0cnVtZW50YXRpb24KIEludDEy OEFnZ1N0YXRlCiBJbnQ4VHJhbnNUeXBlRGF0YQpAQCAtMjQ3Nyw2ICsyNDc4LDcgQEAgUXVlcnlD b21wbGV0aW9uCiBRdWVyeURlc2MKIFF1ZXJ5RW52aXJvbm1lbnQKIFF1ZXJ5SW5mbworUXVlcnlJ bnN0cnVtZW50YXRpb24KIFF1ZXJ5SXRlbQogUXVlcnlJdGVtVHlwZQogUXVlcnlNb2RlCi0tIAoy LjQ3LjEKCg== --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Disposition: attachment; filename="v12-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf190 RnJvbSAxNmU0N2FjMjg4MjA4YTZlYzViYTdmY2NiZDZmYzY2OWVlNTM3ZTYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMiAxLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgdHJpZ2dlciBsb2dpYyBmcm9tIG90aGVyCiB1c2VzCgpJ bnRyb2R1Y2UgVHJpZ2dlckluc3RydW1lbnRhdGlvbiB0byBjYXB0dXJlIHRyaWdnZXIgdGltaW5n IGFuZCBmaXJpbmdzCihwcmV2aW91c2x5IGNvdW50ZWQgaW4gIm50dXBsZXMiKSwgdG8gYWlkIGEg ZnV0dXJlIHJlZmFjdG9yaW5nIHRoYXQKc3BsaXRzIG91dCBhbGwgSW5zdHJ1bWVudGF0aW9uIGZp ZWxkcyBiZXlvbmQgdGltaW5nIGFuZCBXQUwvYnVmZmVycyBpbnRvCm1vcmUgc3BlY2lmaWMgc3Ry dWN0cy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6 CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgIHwgMTkg KysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgIHwg MjIgKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyB8IDI2ICsrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50Lmgg fCAxMiArKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICB8ICAz ICsrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgIDEgKwogNyBmaWxlcyBj aGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggZTRiNzAxNjZiMGUuLmViNmVmMjNjMmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC0xMTAxLDE4ICsxMTAxLDE1IEBAIHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZv ICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJZm9yIChudCA9 IDA7IG50IDwgckluZm8tPnJpX1RyaWdEZXNjLT5udW10cmlnZ2VyczsgbnQrKykKIAl7CiAJCVRy aWdnZXIgICAgKnRyaWcgPSBySW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdnZXJzICsgbnQ7Ci0JCUlu c3RydW1lbnRhdGlvbiAqaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQgKyBudDsKKwkJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9IHJJbmZvLT5yaV9UcmlnSW5zdHJ1bWVu dCArIG50OwogCQljaGFyCSAgICpyZWxuYW1lOwogCQljaGFyCSAgICpjb25uYW1lID0gTlVMTDsK IAotCQkvKiBNdXN0IGNsZWFuIHVwIGluc3RydW1lbnRhdGlvbiBzdGF0ZSAqLwotCQlJbnN0ckVu ZExvb3AoaW5zdHIpOwotCiAJCS8qCiAJCSAqIFdlIGlnbm9yZSB0cmlnZ2VycyB0aGF0IHdlcmUg bmV2ZXIgaW52b2tlZDsgdGhleSBsaWtlbHkgYXJlbid0CiAJCSAqIHJlbGV2YW50IHRvIHRoZSBj dXJyZW50IHF1ZXJ5IHR5cGUuCiAJCSAqLwotCQlpZiAoaW5zdHItPm50dXBsZXMgPT0gMCkKKwkJ aWYgKHRnaW5zdHItPmZpcmluZ3MgPT0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCUV4cGxhaW5PcGVu R3JvdXAoIlRyaWdnZXIiLCBOVUxMLCB0cnVlLCBlcyk7CkBAIC0xMTM3LDExICsxMTM0LDExIEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlpZiAoc2hvd19yZWxuYW1lKQogCQkJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwgIiBvbiAlcyIsIHJlbG5hbWUpOwogCQkJaWYgKGVzLT50aW1pbmcpCi0J CQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1lPSUuM2YgY2FsbHM9JS4wZlxuIiwK LQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLT50b3RhbCksCi0JCQkJCQkJ CSBpbnN0ci0+bnR1cGxlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1l PSUuM2YgY2FsbHM9JWRcbiIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2lu c3RyLT5pbnN0ci50b3RhbCksCisJCQkJCQkJCSB0Z2luc3RyLT5maXJpbmdzKTsKIAkJCWVsc2UK LQkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSUuMGZcbiIsIGluc3RyLT5u dHVwbGVzKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSVkXG4iLCB0 Z2luc3RyLT5maXJpbmdzKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTExNTEsOSArMTE0OCw5IEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJSZWxhdGlvbiIsIHJl bG5hbWUsIGVzKTsKIAkJCWlmIChlcy0+dGltaW5nKQogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0 KCJUaW1lIiwgIm1zIiwKLQkJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+ dG90YWwpLCAzLAorCQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHRnaW5zdHItPmlu c3RyLnRvdGFsKSwgMywKIAkJCQkJCQkJCSBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi Q2FsbHMiLCBOVUxMLCBpbnN0ci0+bnR1cGxlcywgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5 SW50ZWdlcigiQ2FsbHMiLCBOVUxMLCB0Z2luc3RyLT5maXJpbmdzLCBlcyk7CiAJCX0KIAogCQlp ZiAoY29ubmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA5MGU5NGZiOGE1YS4uNGQ0ZTk2 YTUzMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIGJv b2wgVHJpZ2dlckVuYWJsZWQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8s CiBzdGF0aWMgSGVhcFR1cGxlIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLAogCQkJCQkJCQkJIGludCB0Z2luZHgsCiAJCQkJCQkJCQkgRm1nckluZm8gKmZpbmZvLAot CQkJCQkJCQkJIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCQkgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBwZXJfdHVwbGVfY29u dGV4dCk7CiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICplc3RhdGUs IFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqc3JjX3Bh cnRpbmZvLApAQCAtMjMxMSw3ICsyMzExLDcgQEAgc3RhdGljIEhlYXBUdXBsZQogRXhlY0NhbGxU cmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJCQkJCWludCB0Z2luZHgsCiAJCQkJ CUZtZ3JJbmZvICpmaW5mbywKLQkJCQkJSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQgcGVyX3R1cGxl X2NvbnRleHQpCiB7CiAJTE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ2LDcgKzIzNDYs NyBAQCBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkgKiBJZiBk b2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2Vy LgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIERvIHRoZSBm dW5jdGlvbiBldmFsdWF0aW9uIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQsIHNvIHRo YXQKQEAgLTIzOTEsMTAgKzIzOTEsMTAgQEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEsCiAKIAkvKgogCSAqIElmIGRvaW5nIEVYUExBSU4gQU5BTFlaRSwgc3RvcCBj aGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlciwgYW5kIGNvdW50Ci0JICogb25lICJ0dXBsZSBy ZXR1cm5lZCIgKHJlYWxseSB0aGUgbnVtYmVyIG9mIGZpcmluZ3MpLgorCSAqIHRoZSBmaXJpbmcg b2YgdGhlIHRyaWdnZXIuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0b3BOb2RlKGluc3Ry ICsgdGdpbmR4LCAxKTsKKwkJSW5zdHJTdG9wVHJpZ2dlcihpbnN0ciArIHRnaW5keCwgMSk7CiAK IAlyZXR1cm4gKEhlYXBUdXBsZSkgRGF0dW1HZXRQb2ludGVyKHJlc3VsdCk7CiB9CkBAIC0zOTQ3 LDcgKzM5NDcsNyBAQCBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0 YXRlLAogCQkJCQkJCQlSZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJCQkJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjLAogCQkJCQkJCQlGbWdySW5mbyAqZmluZm8sCi0JCQkJCQkJCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3Ry LAogCQkJCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9jb250ZXh0LAogCQkJCQkJCQlUdXBs ZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MSwKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnRy aWdfdHVwbGVfc2xvdDIpOwpAQCAtNDM0Miw3ICs0MzQyLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0 ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJUmVzdWx0UmVsSW5mbyAqc3JjX3JlbEluZm8sCiAJCQkJ CVJlc3VsdFJlbEluZm8gKmRzdF9yZWxJbmZvLAogCQkJCQlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2Ms Ci0JCQkJCUZtZ3JJbmZvICpmaW5mbywgSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJRm1n ckluZm8gKmZpbmZvLCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwKIAkJCQkJTWVtb3J5 Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJVHVwbGVUYWJsZVNsb3QgKnRyaWdfdHVw bGVfc2xvdDEsCiAJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxlX3Nsb3QyKQpAQCAtNDM4 Myw3ICs0MzgzLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAkgKiB0 byBpbmNsdWRlIHRpbWUgc3BlbnQgcmUtZmV0Y2hpbmcgdHVwbGVzIGluIHRoZSB0cmlnZ2VyIGNv c3QuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0YXJ0Tm9kZShpbnN0ciArIHRnaW5keCk7 CisJCUluc3RyU3RhcnRUcmlnZ2VyKGluc3RyICsgdGdpbmR4KTsKIAogCS8qCiAJICogRmV0Y2gg dGhlIHJlcXVpcmVkIHR1cGxlKHMpLgpAQCAtNDYwMCwxMCArNDYwMCwxMCBAQCBBZnRlclRyaWdn ZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCiAJLyoKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFO QUxZWkUsIHN0b3AgY2hhcmdpbmcgdGltZSB0byB0aGlzIHRyaWdnZXIsIGFuZCBjb3VudAotCSAq IG9uZSAidHVwbGUgcmV0dXJuZWQiIChyZWFsbHkgdGhlIG51bWJlciBvZiBmaXJpbmdzKS4KKwkg KiB0aGUgZmlyaW5nIG9mIHRoZSB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJT dG9wTm9kZShpbnN0ciArIHRnaW5keCwgMSk7CisJCUluc3RyU3RvcFRyaWdnZXIoaW5zdHIgKyB0 Z2luZHgsIDEpOwogfQogCiAKQEAgLTQ3MTksNyArNDcxOSw3IEBAIGFmdGVyVHJpZ2dlckludm9r ZUV2ZW50cyhBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywKIAlSZWxhdGlvbglyZWwgPSBO VUxMOwogCVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IE5VTEw7CiAJRm1nckluZm8gICAqZmluZm8g PSBOVUxMOwotCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOworCVRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDEgPSBOVUxMLAog CQkJICAgKnNsb3QyID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNDVlMDBj NmFmODUuLjAyMzdkOGMzYjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyODUsNyAr MTI4NSw3IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRlICoqKQogCQkJ cGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7CiAJCWlmIChpbnN0cnVtZW50X29wdGlvbnMp Ci0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2MobiwgaW5z dHJ1bWVudF9vcHRpb25zLCBmYWxzZSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1 bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CiAJfQogCWVs c2UKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggYTQwNjEwYmMyNTIuLjkzNTRh ZDdiZTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xOTYsNiArMTk2LDMyIEBA IEluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQp CiAJCVdhbFVzYWdlQWRkKCZkc3QtPndhbHVzYWdlLCAmYWRkLT53YWx1c2FnZSk7CiB9CiAKKy8q IFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCitUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICoKK0luc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQor eworCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBwYWxsb2MwKG4gKiBzaXplb2Yo VHJpZ2dlckluc3RydW1lbnRhdGlvbikpOworCWludAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKQorCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGluc3RydW1lbnRfb3B0aW9u cyk7CisKKwlyZXR1cm4gdGdpbnN0cjsKK30KKwordm9pZAorSW5zdHJTdGFydFRyaWdnZXIoVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cikKK3sKKwlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0 ci0+aW5zdHIpOworfQorCit2b2lkCitJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQoreworCUluc3RyU3RvcE5vZGUoJnRnaW5zdHIt Pmluc3RyLCAwKTsKKwl0Z2luc3RyLT5maXJpbmdzICs9IGZpcmluZ3M7Cit9CisKIC8qIG5vdGUg Y3VycmVudCB2YWx1ZXMgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dG9yIHN0YXJ0dXAgKi8KIHZvaWQK IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgK aW5kZXggOTc1OWYzZWE1ZDguLmE5YzIyMzMyMjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCkBAIC0xMDAsNiArMTAwLDEzIEBAIHR5cGVkZWYgc3RydWN0IFdvcmtlckluc3RydW1lbnRh dGlvbgogCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CiB9IFdvcmtlckluc3RydW1lbnRhdGlvbjsKIAordHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbgoreworCUluc3RydW1lbnRhdGlvbiBpbnN0cjsKKwlpbnQJCQlmaXJpbmdzOwkJ LyogbnVtYmVyIG9mIHRpbWVzIHRoZSBpbnN0cnVtZW50ZWQgdHJpZ2dlcgorCQkJCQkJCQkgKiB3 YXMgZmlyZWQgKi8KK30gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKKwogZXh0ZXJuIFBHRExMSU1Q T1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNh Z2UgcGdXYWxVc2FnZTsKIApAQCAtMTExLDYgKzExOCwxMSBAQCBleHRlcm4gdm9pZCBJbnN0clN0 b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2 b2lkIEluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUg blR1cGxlcyk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3Ry dW1lbnRhdGlvbiAqYWRkKTsKKworZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lk IEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpOworZXh0 ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry LCBpbnQgZmlyaW5ncyk7CisKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZv aWQpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKIGV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggMDkwY2ZjY2Y2NWYuLjkwODg5OGFhN2M5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtNjAsNiArNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2Fu S2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7CiB0eXBlZGVm IHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBzdHJ1Y3QgVElE Qml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVtZW50YXRpb24g VHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29udmVyc2lvbk1h cCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NEYXRhICpUdXBs ZURlc2M7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZXNvcnRzdGF0ZSBUdXBsZXNvcnRzdGF0ZTsKQEAg LTU1Miw3ICs1NTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJRXhwclN0YXRl ICoqcmlfVHJpZ1doZW5FeHByczsKIAogCS8qIG9wdGlvbmFsIHJ1bnRpbWUgbWVhc3VyZW1lbnRz IGZvciB0cmlnZ2VycyAqLwotCUluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CisJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CiAKIAkvKiBPbi1kZW1h bmQgY3JlYXRlZCBzbG90cyBmb3IgdHJpZ2dlcnMgLyByZXR1cm5pbmcgcHJvY2Vzc2luZyAqLwog CVR1cGxlVGFibGVTbG90ICpyaV9SZXR1cm5pbmdTbG90OwkvKiBmb3IgdHJpZ2dlciBvdXRwdXQg dHVwbGVzICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGM3MmY2YzU5NTczLi43ZGRm OTcwZmI5NyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMyMTMsNiArMzIxMyw3IEBA IFRyaWdnZXJEZXNjCiBUcmlnZ2VyRXZlbnQKIFRyaWdnZXJGbGFncwogVHJpZ2dlckluZm8KK1Ry aWdnZXJJbnN0cnVtZW50YXRpb24KIFRyaWdnZXJUcmFuc2l0aW9uCiBUcnVuY2F0ZVN0bXQKIFRz bVJvdXRpbmUKLS0gCjIuNDcuMQoK --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Disposition: attachment; filename="v12-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1f2 RnJvbSA0ODYxNDU3MjNlOWE5ODYzYzg3ZGZlMmY1MWNjMzZiOTA1ZDJlZjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDI2IE1hciAyMDI2IDIzOjMxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMy85XSBp bnN0cnVtZW50YXRpb246IFJlcGxhY2UgZGlyZWN0IGNoYW5nZXMgb2YKIHBnQnVmZmVyVXNhZ2Uv cGdXYWxVc2FnZSB3aXRoIElOU1RSXyogbWFjcm9zCgpUaGlzIGVuY2Fwc3VsYXRlcyB0aGUgb3du ZXJzaGlwIG9mIHRoZXNlIGdsb2JhbHMgYmV0dGVyLCBhbmQgd2lsbCBhbGxvdwphIHN1YnNlcXVl bnQgcmVmYWN0b3JpbmcuCgpBdXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5 OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3paM1VvdG5S cnJuWFdBdiUzREY0YXZScTlNUTh6VSUyQmJ4b045dHBvdkV1NmZHUSU0MG1haWwuZ21haWwuY29t I2ZjNzE0MGU4YWYyMWUwN2E5MGEwOWQ3ZTc2YjMwMGM0Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyAgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9maWxlL2J1ZmZpbGUuYyAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCA5ZTg5OTliYmI2MS4uNzFjOWEyNjU2NjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKQEAgLTExMDMsMTAgKzExMDMsMTAgQEAgWExvZ0luc2VydFJlY29yZChYTG9n UmVjRGF0YSAqcmRhdGEsCiAJLyogUmVwb3J0IFdBTCB0cmFmZmljIHRvIHRoZSBpbnN0cnVtZW50 YXRpb24uICovCiAJaWYgKGluc2VydGVkKQogCXsKLQkJcGdXYWxVc2FnZS53YWxfYnl0ZXMgKz0g cmVjaGRyLT54bF90b3RfbGVuOwotCQlwZ1dhbFVzYWdlLndhbF9yZWNvcmRzKys7Ci0JCXBnV2Fs VXNhZ2Uud2FsX2ZwaSArPSBudW1fZnBpOwotCQlwZ1dhbFVzYWdlLndhbF9mcGlfYnl0ZXMgKz0g ZnBpX2J5dGVzOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2J5dGVzLCByZWNoZHItPnhsX3Rv dF9sZW4pOworCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9yZWNvcmRzKTsKKwkJSU5TVFJfV0FM VVNBR0VfQUREKHdhbF9mcGksIG51bV9mcGkpOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2Zw aV9ieXRlcywgZnBpX2J5dGVzKTsKIAogCQkvKiBSZXF1aXJlZCBmb3IgdGhlIGZsdXNoIG9mIHBl bmRpbmcgc3RhdHMgV0FMIGRhdGEgKi8KIAkJcGdzdGF0X3JlcG9ydF9maXhlZCA9IHRydWU7CkBA IC0yMDg1LDcgKzIwODUsNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRv LCBUaW1lTGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCQkJCQlXcml0ZVJxc3QuRmx1 c2ggPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFzdCwgdGxpLCBm YWxzZSk7CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJcGdXYWxVc2Fn ZS53YWxfYnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX2J1ZmZl cnNfZnVsbCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklURV9ESVJUWV9E T05FKCk7CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggM2Nj MGIwYmRkOTIuLjNlMWMzOTE2MGRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpA QCAtODQwLDcgKzg0MCw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOCiAJCXsKIAkJCVBpbkxv Y2FsQnVmZmVyKGJ1ZkhkciwgdHJ1ZSk7CiAKLQkJCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19o aXQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19oaXQpOwogCiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJfQpAQCAtODYxLDcgKzg2MSw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tO CiAJCXsKIAkJCWlmIChCdWZmZXJUYWdzRXF1YWwoJnRhZywgJmJ1Zkhkci0+dGFnKSkKIAkJCXsK LQkJCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCsrOworCQkJCUlOU1RSX0JVRlVTQUdF X0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCVVucGlu QnVmZmVyKGJ1Zkhkcik7CkBAIC0xNjg0LDkgKzE2ODQsOSBAQCBUcmFja0J1ZmZlckhpdChJT09i amVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LAogCQkJCQkJCQkJICB0cnVlKTsK IAogCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQlwZ0J1ZmZlclVz YWdlLmxvY2FsX2Jsa3NfaGl0ICs9IDE7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxr c19oaXQpOwogCWVsc2UKLQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19oaXQgKz0gMTsKKwkJ SU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwogCiAJcGdzdGF0X2NvdW50X2lv X29wKGlvX29iamVjdCwgaW9fY29udGV4dCwgSU9PUF9ISVQsIDEsIDApOwogCkBAIC0yMTQ4LDkg KzIxNDgsOSBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKIAkJCQkJCQlpb19zdGFydCwgMSwgaW9fYnVmZmVy c19sZW4gKiBCTENLU1opOwogCiAJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCi0JCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19yZWFkICs9IGlvX2J1ZmZlcnNfbGVuOwor CQlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7CiAJ ZWxzZQotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47 CisJCUlOU1RSX0JVRlVTQUdFX0FERChzaGFyZWRfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7 CiAKIAkvKgogCSAqIFRyYWNrIHZhY3V1bSBjb3N0IHdoZW4gaXNzdWluZyBJTywgbm90IGFmdGVy IHdhaXRpbmcgZm9yIGl0LiBPdGhlcndpc2UKQEAgLTMwNDMsNyArMzA0Myw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCVRlcm1pbmF0ZUJ1 ZmZlcklPKGJ1Zl9oZHIsIGZhbHNlLCBCTV9WQUxJRCwgdHJ1ZSwgZmFsc2UpOwogCX0KIAotCXBn QnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVG VVNBR0VfQUREKHNoYXJlZF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAkqZXh0ZW5kZWRf YnkgPSBleHRlbmRfYnk7CiAKQEAgLTMxODksNyArMzE4OSw3IEBAIE1hcmtCdWZmZXJEaXJ0eShC dWZmZXIgYnVmZmVyKQogCSAqLwogCWlmICghKG9sZF9idWZfc3RhdGUgJiBCTV9ESVJUWSkpCiAJ ewotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJ CQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCX0KQEAgLTQ2MDEs NyArNDYwMSw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJl bG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09CSkVD VF9SRUxBVElPTiwgaW9fY29udGV4dCwKIAkJCQkJCQlJT09QX1dSSVRFLCBpb19zdGFydCwgMSwg QkxDS1NaKTsKIAotCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3Nfd3JpdHRlbik7CiAKIAkvKgogCSAqIE1hcmsgdGhl IGJ1ZmZlciBhcyBjbGVhbiBhbmQgZW5kIHRoZSBCTV9JT19JTl9QUk9HUkVTUyBzdGF0ZS4KQEAg LTU3OTYsNyArNTc5Niw3IEBAIE1hcmtTaGFyZWRCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZl ciwgQnVmZmVyRGVzYyAqYnVmSGRyLCB1aW50NjQgbG9ja3N0YXRlLAogCQkJVW5sb2NrQnVmSGRy KGJ1Zkhkcik7CiAJCX0KIAotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsK KwkJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1 bUNvc3RBY3RpdmUpCiAJCQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5 OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IDM5NmRhODRiMjVj Li44NTFiOTkwNTZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC0y MTgsNyArMjE4LDcgQEAgRmx1c2hMb2NhbEJ1ZmZlcihCdWZmZXJEZXNjICpidWZIZHIsIFNNZ3JS ZWxhdGlvbiByZWxuKQogCS8qIE1hcmsgbm90LWRpcnR5ICovCiAJVGVybWluYXRlTG9jYWxCdWZm ZXJJTyhidWZIZHIsIHRydWUsIDAsIGZhbHNlKTsKIAotCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxr c193cml0dGVuKys7CisJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX3dyaXR0ZW4pOwog fQogCiBzdGF0aWMgQnVmZmVyCkBAIC00NzksNyArNDc5LDcgQEAgRXh0ZW5kQnVmZmVyZWRSZWxM b2NhbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCiAJKmV4dGVuZGVkX2J5ID0gZXh0ZW5k X2J5OwogCi0JcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3dyaXR0ZW4gKz0gZXh0ZW5kX2J5Owor CUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAly ZXR1cm4gZmlyc3RfYmxvY2s7CiB9CkBAIC01MTAsNyArNTEwLDcgQEAgTWFya0xvY2FsQnVmZmVy RGlydHkoQnVmZmVyIGJ1ZmZlcikKIAlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJmJ1 Zkhkci0+c3RhdGUpOwogCiAJaWYgKCEoYnVmX3N0YXRlICYgQk1fRElSVFkpKQotCQlwZ0J1ZmZl clVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZCsrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2Fs X2Jsa3NfZGlydGllZCk7CiAKIAlidWZfc3RhdGUgfD0gQk1fRElSVFk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvYnVmZmlsZS5jCmluZGV4IGM0YWZlNGQzNjhhLi44YjUwMWRmY2FkZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBAIC00NzUsMTMgKzQ3NSwxMyBAQCBCdWZGaWxlTG9hZEJ1 ZmZlcihCdWZGaWxlICpmaWxlKQogCWlmICh0cmFja19pb190aW1pbmcpCiAJewogCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZm ZXJVc2FnZS50ZW1wX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKKwkJSU5TVFJf QlVGVVNBR0VfVElNRV9BQ0NVTV9ESUZGKHRlbXBfYmxrX3JlYWRfdGltZSwgaW9fdGltZSwgaW9f c3RhcnQpOwogCX0KIAogCS8qIHdlIGNob29zZSBub3QgdG8gYWR2YW5jZSBjdXJPZmZzZXQgaGVy ZSAqLwogCiAJaWYgKGZpbGUtPm5ieXRlcyA+IDApCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtz X3JlYWQrKzsKKwkJSU5TVFJfQlVGVVNBR0VfSU5DUih0ZW1wX2Jsa3NfcmVhZCk7CiB9CiAKIC8q CkBAIC01NDksMTMgKzU0OSwxMyBAQCBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQog CQlpZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CiAJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlv X3RpbWUpOwotCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtf d3JpdGVfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOworCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9B Q0NVTV9ESUZGKHRlbXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKIAkJfQog CiAJCWZpbGUtPmN1ck9mZnNldCArPSBieXRlc3Rvd3JpdGU7CiAJCXdwb3MgKz0gYnl0ZXN0b3dy aXRlOwogCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtzX3dyaXR0ZW4rKzsKKwkJSU5TVFJfQlVG VVNBR0VfSU5DUih0ZW1wX2Jsa3Nfd3JpdHRlbik7CiAJfQogCWZpbGUtPmRpcnR5ID0gZmFsc2U7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggMmJlMjZlOTIyODMu LmUzODI5ZDdmZTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAt MTM1LDE3ICsxMzUsMTcgQEAgcGdzdGF0X2NvdW50X2lvX29wX3RpbWUoSU9PYmplY3QgaW9fb2Jq ZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCwgSU9PcCBpb19vcCwKIAkJCXsKIAkJCQlwZ3N0YXRf Y291bnRfYnVmZmVyX3dyaXRlX3RpbWUoSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoaW9fdGltZSkp OwogCQkJCWlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfUkVMQVRJT04pCi0JCQkJCUlOU1RSX1RJ TUVfQUREKHBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1lKTsKKwkJ CQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1l KTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfd3JpdGVfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGxvY2FsX2Jsa193cml0ZV90aW1l LCBpb190aW1lKTsKIAkJCX0KIAkJCWVsc2UgaWYgKGlvX29wID09IElPT1BfUkVBRCkKIAkJCXsK IAkJCQlwZ3N0YXRfY291bnRfYnVmZmVyX3JlYWRfdGltZShJTlNUUl9USU1FX0dFVF9NSUNST1NF Qyhpb190aW1lKSk7CiAJCQkJaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrX3JlYWRfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKHNoYXJlZF9ibGtfcmVhZF90aW1l LCBpb190aW1lKTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxB VElPTikKLQkJCQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfcmVhZF90 aW1lLCBpb190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQobG9jYWxfYmxrX3Jl YWRfdGltZSwgaW9fdGltZSk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CmluZGV4IGIxMWQ2NDYzM2I1Li5kNDc2OWYzZGE3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnQuaApAQCAtMTUzLDQgKzE1MywyMyBAQCBleHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFjY3VtRGlm ZihCdWZmZXJVc2FnZSAqZHN0LAogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpz dWIpOwogCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKKwkJcGdCdWZm ZXJVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQURE KGZsZCx2YWwpIGRvIHsgXAorCQlwZ0J1ZmZlclVzYWdlLmZsZCArPSAodmFsKTsgXAorCX0gd2hp bGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCisJ SU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5mbGQsIHZhbCk7IFwKKwl9IHdoaWxlICgwKQor I2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYoZmxkLGVuZHZhbCxzdGFydHZh bCkgZG8geyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UuZmxkLCBlbmR2 YWwsIHN0YXJ0dmFsKTsgXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lO Q1IoZmxkKSBkbyB7IFwKKwkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZp bmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCAr PSAodmFsKTsgXAorCX0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAq LwotLSAKMi40Ny4xCgo= --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Disposition: attachment; filename="v12-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1g3 RnJvbSBiYTE4YWI4ZDE1NjYwOWE1NjNjMTUzMDk3YzE3M2RhZDhkNTM5ODllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIyIEZlYiAyMDI2IDE2OjEyOjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTIgNC85XSBp bnN0cnVtZW50YXRpb246IEFkZCBhZGRpdGlvbmFsIHJlZ3Jlc3Npb24gdGVzdHMKIGNvdmVyaW5n IGJ1ZmZlciB1c2FnZQoKVGhpcyBhZGRzIHJlZ3Jlc3Npb24gdGVzdHMgdGhhdCBjb3ZlciBzb21l IG9mIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIKYXJvdW5kIHRoZSBidWZmZXIgc3RhdGlzdGljcyBy ZXBvcnRlZCBpbiBFWFBMQUlOIEFOQUxZWkUsIHNwZWNpZmljYWxseQpob3cgdGhleSBiZWhhdmUg aW4gcGFyYWxsZWwgcXVlcnksIG5lc3RlZCBmdW5jdGlvbiBjYWxscyBhbmQgYWJvcnQKc2l0dWF0 aW9ucy4KClRlc3RpbmcgdGhpcyBpcyBjaGFsbGVuZ2luZyBiZWNhdXNlIHRoZXJlIGNhbiBiZSBk aWZmZXJlbnQgc291cmNlcyBvZgpidWZmZXIgYWN0aXZpdHksIHNvIHdlIHJlbHkgb24gdGVtcG9y YXJ5IHRhYmxlcyB3aGVyZSB3ZSBjYW4gdG8gcHJvdmUKdGhhdCBhY3Rpdml0eSB3YXMgY2FwdHVy ZWQgYW5kIG5vdCBsb3N0LiBUaGlzIHN1cHBvcnRzIGEgZnV0dXJlIGNvbW1pdAp0aGF0IHdpbGwg cmV3b3JrIHNvbWUgb2YgdGhlIGluc3RydW1lbnRhdGlvbiBsb2dpYyB0aGF0IGNvdWxkIGNhdXNl CmFyZWFzIGNvdmVyZWQgYnkgdGhlc2UgdGVzdHMgdG8gZmFpbC4KCkF1dGhvcjogTHVrYXMgRml0 dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogLi4uL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dCAgIHwgIDcwICsrKysrKysKIGNv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQgICB8ICA0OCArKysrKwog Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsICAgIHwgIDU2ICsrKysr CiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNxbCAgICAgICAgfCAgMzMgKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0ICAgICAgICAgfCAxOTcgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAg ICAgICAgfCAxOTQgKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC91dGlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxp dHkub3V0CmluZGV4IGU0ZDY1NjRlYTViLi5jYmE0ODdmNmJlNSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKKysrIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKQEAgLTI4OSw2ICsyODksNzYg QEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdAogKDMgcm93cykKIAorLS0gQnVmZmVy IHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBU QUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRP IGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitDUkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVm ZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNV VEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdo X3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRl bWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKyBydW5fZXhwbGFpbl9idWZmZXJz X3Rlc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBFWFBM QUlOIGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1QgcXVl cnksIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVyX3N0 YXRzCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNUIHJ1 bl9leHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAg ICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgfCBoYXNfYnVmZmVyX3N0YXRzIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgU0VM RUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpIHwgdAorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdDsKK0RST1AgVEFCTEUgZmxvd190aHJvdWdoX3Rl c3Q7CistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9ydAorU0VUIHBn X3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19j YWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19jYWxs X3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIgVkFM VUVTICgwLCAnenp6Jyk7CitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19wcm9j KCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQTEFJTiBBTkFMWVpF IFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxFQ1QgKiBGUk9NIHBn c3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGlu czsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVM TCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK0NBTEwgcGdzc19jYWxsX3JvbGxiYWNr X3Byb2MoKTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Js a3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVz X2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxi YWNrX3Byb2MlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgcXVl cnkgICAgICAgICAgICAgIHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVy YXRlZCB8IHdhbF9yZWNvcmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKSB8ICAg ICAxIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisK K0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitE Uk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRl bWVudHMudHJhY2sgPSAndG9wJzsKIC0tIENBTEwKIENSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVS RSBzdW1fb25lKGkgaW50KSBBUyAkJAogREVDTEFSRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL2V4cGVjdGVkL3dhbC5vdXQKaW5kZXggOTc3ZTM4MmQ4NDguLjYxMTIxM2RhZWY2IDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0CisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKQEAgLTI4LDMgKzI4 LDUxIEBAIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0 OwogIHQKICgxIHJvdykKIAorLS0KKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgd2l0 aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcGdz c19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJyb3Jf dGFiIFZBTFVFUyAoMCwgJ3p6eicpOworQ1JFQVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygp IFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRI IGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19lcnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVU VVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBX SEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFT IHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIHBnc3NfZXJyb3JfZnVuYygpOwor IHBnc3NfZXJyb3JfZnVuYyAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEJ1 ZmZlci9XQUwgdXNhZ2UgZnJvbSB0aGUgd0NURSBJTlNFUlQgc2hvdWxkIHN1cnZpdmUgdGhlIGV4 Y2VwdGlvbgorU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNf Z2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2Vycm9yX2Z1bmMl JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgcXVlcnkgICAgICAgICAg IHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVyYXRlZCB8IHdhbF9yZWNv cmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNFTEVDVCBwZ3NzX2Vycm9yX2Z1bmMoKSB8ICAgICAxIHwgdCAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgcGdzc19lcnJvcl90YWI7 CitEUk9QIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYzsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVu dHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbCBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbAppbmRleCBkZDk3MjAzYzIx MC4uNzU0MGU0OWM3M2MgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC91dGlsaXR5LnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0 eS5zcWwKQEAgLTE1Miw2ICsxNTIsNjIgQEAgRVhQTEFJTiAoY29zdHMgb2ZmKSBTRUxFQ1QgYSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyB0YWIoYSkgV0hFUkUgYSA9IDc7CiAKIFNFTEVD VCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVl cnkgQ09MTEFURSAiQyI7CiAKKy0tIEJ1ZmZlciBzdGF0cyBzaG91bGQgZmxvdyB0aHJvdWdoIEVY UExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZmxvd190aHJvdWdoX3Rlc3QgKGEgaW50 LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBmbG93X3Rocm91Z2hfdGVzdCBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCitD UkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFT ICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdoX3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisKK1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKworLS0gRVhQTEFJ TiBlbnRyaWVzIHNob3VsZCBoYXZlIG5vbi16ZXJvIGJ1ZmZlciBzdGF0cworU0VMRUNUIHF1ZXJ5 LCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgaGFzX2J1ZmZlcl9zdGF0 cworRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJ1NFTEVDVCBydW5f ZXhwbGFpbl9idWZmZXJzX3Rlc3QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RS T1AgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93X3Ro cm91Z2hfdGVzdDsKKworLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyBkdXJpbmcgYWJv cnQKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK0NSRUFURSBURU1QIFRB QkxFIHBnc3NfY2FsbF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBURU1QIFRBQkxF IHBnc3NfY2FsbF90YWIyIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Nh bGxfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9y b2xsYmFja19wcm9jKCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQ TEFJTiBBTkFMWVpFIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxF Q1QgKiBGUk9NIHBnc3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElO VE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNl dCgpIElTIE5PVCBOVUxMIEFTIHQ7CitDQUxMIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jKCk7CisK K1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+ IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVzX2dlbmVyYXRl ZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZST00gcGdfc3Rh dF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxiYWNrX3Byb2Ml JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgcGdzc19jYWxsX3Rh YjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitEUk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxf cm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKKwog LS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIHN1bV9vbmUoaSBpbnQpIEFTICQk CiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2Fs LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsCmluZGV4IDFkYzE1 NTJhODFlLi40NjdlMzIxYjIwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvc3FsL3dhbC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dhbC5z cWwKQEAgLTE4LDMgKzE4LDM2IEBAIHdhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5l cmF0ZWQsCiB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3MKIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogU0VMRUNUIHBn X3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBWYWxp ZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIHdpdGggY2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NR TAorLS0KK0NSRUFURSBURU1QIFRBQkxFIHBnc3NfZXJyb3JfdGFiIChhIGludCwgYiBjaGFyKDIw KSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKworQ1JF QVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFS RQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19l cnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAw IElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgor ICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKK1NFTEVDVCBwZ3NzX2Vycm9yX2Z1 bmMoKTsKKworLS0gQnVmZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91bGQg c3Vydml2ZSB0aGUgZXhjZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19o aXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAw IGFzIHdhbF9ieXRlc19nZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNf Z2VuZXJhdGVkCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBn c3NfZXJyb3JfZnVuYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJM RSBwZ3NzX2Vycm9yX3RhYjsKK0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VMRUNU IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCA3YzFmMjZiMTgyYy4uZTI4ZTc1NDM2OTMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtODIyLDMgKzgyMiwyMDAgQEAg c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3Rz IG9mZikgc2VsZWN0IHN1bShuKSBvdmUKICg5IHJvd3MpCiAKIHJlc2V0IHdvcmtfbWVtOworLS0g RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2UgZnJv bSBQTC9wZ1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2FjdGlv biByb2xsYmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQsIGIg Y2hhcigyMCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6eicp OworQ1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQK K0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRP IGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxF Q1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVy byBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgRlVO Q1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpIFJFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0 b3RhbF9idWZmZXJzIGludDsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGV4cGxhaW5f ZXhjX2Z1bmMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQ bGFuJzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAw OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKyBleGNlcHRpb25f YnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCistLSBBbHNvIHRlc3Qgd2l0aCBuZXN0ZWQgRVhQTEFJTiBBTkFMWVpFICh0d28gbGV2ZWxz IG9mIGluc3RydW1lbnRhdGlvbikKK0NSRUFURSBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzX25lc3RlZCgpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQorICAg IHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0b3RhbF9idWZmZXJzIGludDsK K0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1 ZmZlcnMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAwOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlv bl9idWZmZXJzX25lc3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlOwor IGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWlu X2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9l eGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYzsKK0RST1Ag VEFCTEUgZXhwbGFpbl9leGNfdGFiOworLS0gQ3Vyc29yIGluc3RydW1lbnRhdGlvbiB0ZXN0Lgor LS0gVmVyaWZ5IHRoYXQgYnVmZmVyIHVzYWdlIGlzIGNvcnJlY3RseSB0cmFja2VkIHRocm91Z2gg Y3Vyc29yIGV4ZWN1dGlvbiBwYXRocy4KKy0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvcnMgZXhlcmNp c2UgRXhlY1NodXRkb3duTm9kZSBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCistLSAoRVhFQ19GTEFH X0JBQ0tXQVJEIGlzIG5vdCBzZXQpLCB3aGlsZSBzY3JvbGxhYmxlIGN1cnNvcnMgb25seSBzaHV0 IGRvd24KKy0tIG5vZGVzIGluIEV4ZWN1dG9yRmluaXNoLiBJbiBib3RoIGNhc2VzLCBidWZmZXIg dXNhZ2UgZnJvbSB0aGUgaW5uZXIgY3Vyc29yCistLSBzY2FuIHNob3VsZCBiZSBjb3JyZWN0bHkg YWNjdW11bGF0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3QgQVMgU0VMRUNU ICogRlJPTSB0ZW5rMTsKK0NSRUFURSBGVU5DVElPTiBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJF VFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9S IFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250 IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZF VENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7 CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsK KyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW4oKSBSRVRVUk5TIGJpZ2ludCBBUyAkJAorREVDTEFSRQor ICAgIGN1ciBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdDsK KyAgICByZWMgUkVDT1JEOworICAgIGNudCBiaWdpbnQgOj0gMDsKK0JFR0lOCisgICAgT1BFTiBj dXI7CisgICAgTE9PUAorICAgICAgICBGRVRDSCBORVhUIEZST00gY3VyIElOVE8gcmVjOworICAg ICAgICBFWElUIFdIRU4gTk9UIEZPVU5EOworICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICBF TkQgTE9PUDsKKyAgICBDTE9TRSBjdXI7CisgICAgUkVUVVJOIGNudDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVy cygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sgYm9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4p IEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAg IGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xsX2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBp bnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2FuOiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1 ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT LCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9i dWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9k ZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVORCBMT09QOworICAgIGRpcmVjdF9idWYgOj0K KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsK KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsK KworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1 bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jf bm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+ MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBza2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VM RUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBs YW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vy c29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVyIGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisg ICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRhdGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJo ZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1jb3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2Nh bikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIChub3Njcm9sbF9idWYgPj0gZGly ZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAg ICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICogMC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0 X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCAqIEZST00gY2hl Y2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpOworIG5vc2Nyb2xsX29rIHwgc2Nyb2xsX29rIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHQgICAgICAgICAgIHwgdAorKDEgcm93KQorCitE Uk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZVTkNUSU9O IGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW47 CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKy0tIFBhcmFsbGVsIHF1ZXJ5IGJ1ZmZlciBk b3VibGUtY291bnRpbmcgdGVzdC4KKy0tCistLSBDb21wYXJlcyBzZXJpYWwgU2VxIFNjYW4gYnVm ZmVycyB2cyBwYXJhbGxlbCBTZXEgU2NhbiBidWZmZXJzLgorLS0gVGhleSBzY2FuIHRoZSBzYW1l IHRhYmxlIHNvIHRoZSBidWZmZXIgY291bnQgc2hvdWxkIGJlIHNpbWlsYXIuCistLSBEb3VibGUt Y291bnRpbmcgd291bGQgbWFrZSB0aGUgcGFyYWxsZWwgY291bnQgfjJ4IGxhcmdlci4KK0NSRUFU RSBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxF KHJhdGlvIG51bWVyaWMpIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAg c2VyaWFsX2J1ZmZlcnMgaW50OworICAgIHBhcmFsbGVsX2J1ZmZlcnMgaW50OworICAgIG5vZGUg anNvbjsKK0JFR0lOCisgICAgLS0gU2VyaWFsIC0tCisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+ J1BsYW4nOworICAgIHNlcmlhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J1NoYXJlZCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidTaGFyZWQgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIFBhcmFsbGVsIC0tCisg ICAgU0VUIExPQ0FMIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBwYXJh bGxlbF90dXBsZV9jb3N0ID0gMDsKKyAgICBTRVQgTE9DQUwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAyOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9m ZjsKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZP Uk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMScgSU5UTyBwbGFu X2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBwYXJhbGxlbF9i dWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBIaXQgQmxvY2tzJyk6 OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidTaGFyZWQgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKworICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1Qgcm91bmQocGFyYWxsZWxfYnVm ZmVyczo6bnVtZXJpYyAvIEdSRUFURVNUKHNlcmlhbF9idWZmZXJzLCAxKSk7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworU0VMRUNUICogRlJPTSBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1 ZmZlcnMoKTsKKyByYXRpbyAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5z cWwKaW5kZXggZWJkYWI0MjYwNGIuLmNmNWM2MzM1YTE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWlu LnNxbApAQCAtMTg4LDMgKzE4OCwxOTcgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmUKIC0tIFRl c3QgdHVwbGVzdG9yZSBzdG9yYWdlIHVzYWdlIGluIFdpbmRvdyBhZ2dyZWdhdGUgKG1lbW9yeSBh bmQgZGlzayBjYXNlLCBmaW5hbCByZXN1bHQgaXMgZGlzaykKIHNlbGVjdCBleHBsYWluX2ZpbHRl cignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikg b3ZlcihwYXJ0aXRpb24gYnkgbSkgZnJvbSAoU0VMRUNUIG4gPCAzIGFzIG0sIG4gZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwyNTAwKSBhKG4pKScpOwogcmVzZXQgd29ya19tZW07CisKKy0tIEVYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMpIHNob3VsZCByZXBvcnQgYnVmZmVyIHVzYWdlIGZyb20gUEwv cGdTUUwKKy0tIEVYQ0VQVElPTiBibG9ja3MsIGV2ZW4gYWZ0ZXIgc3VidHJhbnNhY3Rpb24gcm9s bGJhY2suCitDUkVBVEUgVEVNUCBUQUJMRSBleHBsYWluX2V4Y190YWIgKGEgaW50LCBiIGNoYXIo MjApKTsKK0lOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKwor Q1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RF Q0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIGV4 cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1Qg YSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBU SEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFT ICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRv dGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgZXhwbGFpbl9l eGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1Bs YW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNl cHRpb25fYnVmZmVycygpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2libGU7CisKKy0tIEFsc28g dGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBsZXZlbHMgb2YgaW5zdHJ1bWVu dGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNf bmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpz b247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBF WEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09O KQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpJyBJTlRP IHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHRvdGFs X2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2Nrcycp OjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyc19u ZXN0ZWQoKSBBUyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlzaWJsZTsKKworRFJPUCBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJ T04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFp bl9leGNfZnVuYzsKK0RST1AgVEFCTEUgZXhwbGFpbl9leGNfdGFiOworCistLSBDdXJzb3IgaW5z dHJ1bWVudGF0aW9uIHRlc3QuCistLSBWZXJpZnkgdGhhdCBidWZmZXIgdXNhZ2UgaXMgY29ycmVj dGx5IHRyYWNrZWQgdGhyb3VnaCBjdXJzb3IgZXhlY3V0aW9uIHBhdGhzLgorLS0gTm9uLXNjcm9s bGFibGUgY3Vyc29ycyBleGVyY2lzZSBFeGVjU2h1dGRvd25Ob2RlIGFmdGVyIGVhY2ggRXhlY3V0 b3JSdW4KKy0tIChFWEVDX0ZMQUdfQkFDS1dBUkQgaXMgbm90IHNldCksIHdoaWxlIHNjcm9sbGFi bGUgY3Vyc29ycyBvbmx5IHNodXQgZG93bgorLS0gbm9kZXMgaW4gRXhlY3V0b3JGaW5pc2guIElu IGJvdGggY2FzZXMsIGJ1ZmZlciB1c2FnZSBmcm9tIHRoZSBpbm5lciBjdXJzb3IKKy0tIHNjYW4g c2hvdWxkIGJlIGNvcnJlY3RseSBhY2N1bXVsYXRlZC4KKworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vy c29yX2J1Zl90ZXN0IEFTIFNFTEVDVCAqIEZST00gdGVuazE7CisKK0NSRUFURSBGVU5DVElPTiBj dXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAg Y3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0Owor ICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1 cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAg ICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVO RCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxfc2NhbigpIFJFVFVS TlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVD VCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2lu dCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5F WFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAg ICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBS RVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9O IGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxFKG5vc2Nyb2xsX29r IGJvb2xlYW4sIHNjcm9sbF9vayBib29sZWFuKSBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNv biBqc29uOworICAgIG5vZGUganNvbjsKKyAgICBkaXJlY3RfYnVmIGludDsKKyAgICBub3Njcm9s bF9idWYgaW50OworICAgIHNjcm9sbF9idWYgaW50OworQkVHSU4KKyAgICAtLSBEaXJlY3Qgc2Nh bjogZ2V0IGxlYWYgU2VxIFNjYW4gbm9kZSBidWZmZXJzIGFzIGJhc2VsaW5lCisgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAg ICAgICAgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3QnIElOVE8gcGxhbl9qc29uOworICAg IG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgV0hJTEUgbm9kZS0+J1BsYW5zJyBJ UyBOT1QgTlVMTCBMT09QCisgICAgICAgIG5vZGUgOj0gbm9kZS0+J1BsYW5zJy0+MDsKKyAgICBF TkQgTE9PUDsKKyAgICBkaXJlY3RfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBOb24tc2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBydW5zIGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKyAg ICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBK U09OKQorICAgICAgICBTRUxFQ1QgY3Vyc29yX25vc2Nyb2xsX3NjYW4oKScgSU5UTyBwbGFuX2pz b247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBub3Njcm9sbF9idWYg Oj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDAp ICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAw KTsKKworICAgIC0tIFNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgaXMg c2tpcHBlZAorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfc2Nyb2xsX3NjYW4oKScgSU5U TyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBzY3Jv bGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6 aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6 OmludCwgMCk7CisKKyAgICAtLSBCb3RoIGN1cnNvciBwYXRocyBzaG91bGQgcmVwb3J0IGJ1ZmZl ciBjb3VudHMgYWJvdXQgYXMgaGlnaCBhcworICAgIC0tIHRoZSBkaXJlY3Qgc2NhbiAoc2FtZSBk YXRhIHBsdXMgbWlub3IgY2F0YWxvZyBvdmVyaGVhZCksIGFuZCBub3QKKyAgICAtLSBkb3VibGUt Y291bnRlZCAoPCAyeCB0aGUgZGlyZWN0IHNjYW4pCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAor ICAgICAgICAobm9zY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUgQU5EIG5vc2Nyb2xsX2J1 ZiA8IGRpcmVjdF9idWYgKiAyKSwKKyAgICAgICAgKHNjcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAq IDAuNSBBTkQgc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKTsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygp OworCitEUk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZV TkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xs X3NjYW47CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKworLS0gUGFyYWxsZWwgcXVlcnkg YnVmZmVyIGRvdWJsZS1jb3VudGluZyB0ZXN0LgorLS0KKy0tIENvbXBhcmVzIHNlcmlhbCBTZXEg U2NhbiBidWZmZXJzIHZzIHBhcmFsbGVsIFNlcSBTY2FuIGJ1ZmZlcnMuCistLSBUaGV5IHNjYW4g dGhlIHNhbWUgdGFibGUgc28gdGhlIGJ1ZmZlciBjb3VudCBzaG91bGQgYmUgc2ltaWxhci4KKy0t IERvdWJsZS1jb3VudGluZyB3b3VsZCBtYWtlIHRoZSBwYXJhbGxlbCBjb3VudCB+MnggbGFyZ2Vy LgorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVycygpIFJFVFVS TlMgVEFCTEUocmF0aW8gbnVtZXJpYykgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNv bjsKKyAgICBzZXJpYWxfYnVmZmVycyBpbnQ7CisgICAgcGFyYWxsZWxfYnVmZmVycyBpbnQ7Cisg ICAgbm9kZSBqc29uOworQkVHSU4KKyAgICAtLSBTZXJpYWwgLS0KKyAgICBTRVQgTE9DQUwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9q c29uLT4wLT4nUGxhbic7CisgICAgc2VyaWFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nU2hhcmVkIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NF KChub2RlLT4+J1NoYXJlZCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gUGFyYWxs ZWwgLS0KKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExP Q0FMIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uID0gb2ZmOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RT IE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxJyBJ TlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHBh cmFsbGVsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIEhpdCBC bG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBSZWFk IEJsb2NrcycpOjppbnQsIDApOworCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVCByb3VuZChwYXJh bGxlbF9idWZmZXJzOjpudW1lcmljIC8gR1JFQVRFU1Qoc2VyaWFsX2J1ZmZlcnMsIDEpKTsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfcGFyYWxsZWxf ZXhwbGFpbl9idWZmZXJzKCk7CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfZXhwbGFp bl9idWZmZXJzOwotLSAKMi40Ny4xCgo= --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Disposition: attachment; filename="v12-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1i5 RnJvbSA4MGRiZjY1Zjc5ZGVjYTA4ZjVlMTA4NzJjYWMyMjZkMGQ4ZWRjYTBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTIgNi85XSBp bnN0cnVtZW50YXRpb246IFVzZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGZvcgogcGFyYWxsZWwg d29ya2VycwoKVGhpcyBzaW1wbGlmaWVzIHRoZSBEU00gYWxsb2NhdGlvbnMgYSBiaXQgc2luY2Ug d2UgZG9uJ3QgbmVlZCB0bwpzZXBhcmF0ZWx5IGFsbG9jYXRlIFdBTCBhbmQgYnVmZmVyIHVzYWdl LCBhbmQgYWxsb3dzIHRoZSBlYXNpZXIgZnV0dXJlCmFkZGl0aW9uIG9mIGEgdGhpcmQgc3RhY2st YmFzZWQgc3RydWN0IGJlaW5nIGRpc2N1c3NlZC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICB8IDQzICsrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgfCA0MyArKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDUyICsrKysrKysrLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8IDY2ICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j ICAgICB8IDE0ICsrKy0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8 ICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDQgKy0KIDgg ZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwppbmRleCAzYTUxNzZjNzZjNy4uOWU1NDViNGVmMGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTUxLDggKzUxLDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0JSSU5f U0hBUkVECQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAz KQotI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAw MDAwMDAwMDA0KQotI2RlZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05T VCgweEIwMDAwMDAwMDAwMDAwMDUpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJ T04JVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBp bmRleCBidWlsZHMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4g YQpAQCAtMTQ4LDggKzE0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5MZWFkZXIKIAlCcmluU2hh cmVkICpicmluc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJU25hcHNob3QJc25h cHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJyaW5MZWFkZXI7CiAKIC8qCkBAIC0yMzg3 LDggKzIzODUsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIg PSBwYWxsb2MwX29iamVjdChCcmluTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlC dWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29s CQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC0yNDMw LDE4ICsyNDI3LDE0IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZv ciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAq IGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJ bnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90 b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVy VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTI1MTQsMTUgKzI1MDcsMTIgQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCX0KIAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2Vy J3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3Bh Y2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5p dGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAot CQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Up OwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAg IG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3Rv Y19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2Fn ZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3Np emUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAK IAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwog CUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTI1MzMsOCArMjUyMyw3IEBAIF9icmlu X2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAlicmlubGVhZGVyLT5icmluc2hhcmVkID0gYnJpbnNoYXJlZDsK IAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKIAlicmlubGVhZGVyLT5zbmFw c2hvdCA9IHNuYXBzaG90OwotCWJyaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7Ci0JYnJp bmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKKwlicmlubGVhZGVyLT5pbnN0ciA9 IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwg YmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPT0gMCkKQEAgLTI1NzMsNyArMjU2Miw3IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVh ZGVyICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJICogb3Igd2UgbWlnaHQg Z2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXIt PnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5 KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsK KwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJyaW5sZWFkZXItPmluc3RyW2ldKTsKIAogCS8q IEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICov CiAJaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKQEAgLTI4ODgsOCAr Mjg3Nyw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2tt b2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJf aW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogCS8qCkBAIC0yOTUwLDExICsyOTM4LDggQEAgX2Jy aW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKIAogCS8qIFJlcG9y dCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlidWZmZXJ1 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFs c2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VT QUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVm ZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4 X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBo ZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggMGQ4MGY3MmEw YjAuLmYzZGU2MmNlN2YzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTQ1LDgg KzQ1LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQJCQlVSU5UNjRDT05TVCgw eEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQJCQlVSU5U NjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9U RVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAzKQotI2RlZmluZSBQQVJBTExFTF9L RVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQotI2RlZmluZSBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDUp CisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1QoMHhCMDAw MDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBpbmRleCBidWlsZHMgcGVyZm9ybWVk IGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4gYQpAQCAtMTM4LDggKzEzNyw3IEBA IHR5cGVkZWYgc3RydWN0IEdpbkxlYWRlcgogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJ U2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKIH0gR2luTGVhZGVyOwogCiB0eXBlZGVmIHN0cnVjdApAQCAtOTQ1LDggKzk0Myw3 IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlT aGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IHBhbGxvYzBf b2JqZWN0KEdpbkxlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIApAQCAtOTg3LDE4ICs5ODQsMTQg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQg QnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24g LS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBu byBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJ ICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5z dHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShz aXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5 cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBj eHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3Bh Y2UgKi8KQEAgLTEwNjYsMTUgKzEwNTksMTIgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl9CiAK IAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBC dWZmZXJVc2FnZTsgbm8gbmVlZCB0bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtl cidzIEluc3RydW1lbnRhdGlvbjsgbm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0J d2FsdXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUo c2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv YywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2ht X3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVt ZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg UEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtl cnMsIHNhdmluZyBzdGF0dXMgZm9yIGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdv cmtlcnMocGN4dCk7CkBAIC0xMDg1LDggKzEwNzUsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CWdpbmxlYWRlci0+Z2luc2hhcmVkID0gZ2luc2hhcmVkOwogCWdpbmxlYWRlci0+c2hhcmVkc29y dCA9IHNoYXJlZHNvcnQ7CiAJZ2lubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWdpbmxl YWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQlnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVm ZmVydXNhZ2U7CisJZ2lubGVhZGVyLT5pbnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKQEAgLTExMjUsNyArMTExNCw3 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQot CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdp bmxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVh ZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNo b3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNu YXBzaG90KSkKQEAgLTIxMTksOCArMjEwOCw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwog CUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwot CVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0 cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTIy MDAsMTEgKzIxODgsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZh bHNlKTsKIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGlu c3RyLAotCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJ ICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJO dW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJs ZV9jbG9zZShoZWFwUmVsLCBoZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCAyZDdiN2NlZjkxMi4uY2IyMzhmODYyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC02Niw4ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlRfU1BPT0wyCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMykKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAw MDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEEw MDAwMDAwMDAwMDAwMDUpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2 NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTglVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDUpCiAKIC8qCiAgKiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OIGRpc2FibGVzIHRoZSBsZWFkZXIncyBwYXJ0aWNpcGF0aW9u IGluCkBAIC0xOTUsOCArMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKIAlTaGFyZWRz b3J0ICpzaGFyZWRzb3J0OwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQyOwogCVNuYXBzaG90CXNu YXBzaG90OwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogfSBCVExlYWRlcjsKIAogLyoKQEAgLTE0MDgs OCArMTQwNiw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0 MjsKIAlCVFNwb29sICAgICpidHNwb29sID0gYnVpbGRzdGF0ZS0+c3Bvb2w7CiAJQlRMZWFkZXIg ICAqYnRsZWFkZXIgPSBwYWxsb2MwX29iamVjdChCVExlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5z dHI7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsK IApAQCAtMTQ2MiwxOCArMTQ1OSwxNCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJfQogCiAJLyoK LQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlIC0tIFBBUkFM TEVMX0tFWV9XQUxfVVNBR0UKLQkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KKwkg KiBFc3RpbWF0ZSBzcGFjZSBmb3IgSW5zdHJ1bWVudGF0aW9uIC0tIFBBUkFMTEVMX0tFWV9JTlNU UlVNRU5UQVRJT04uCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQg dGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQogCSAqIGhhdmUgbm8gd2F5IG9mIGtu b3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KIAkg KiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm cGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAg IG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOwogCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAogCS8qIEZpbmFsbHks IGVzdGltYXRlIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0xNTYwLDE1ICsx NTUzLDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNw YWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZTsgbm8gbmVlZCB0 bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEluc3RydW1lbnRhdGlvbjsg bm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2Fs bG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0JVRkZF Ul9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29y a2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtlcnMsIHNhdmluZyBzdGF0dXMgZm9y IGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdvcmtlcnMocGN4dCk7CkBAIC0xNTgw LDggKzE1NzAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRsZWFkZXItPnNoYXJlZHNvcnQg PSBzaGFyZWRzb3J0OwogCWJ0bGVhZGVyLT5zaGFyZWRzb3J0MiA9IHNoYXJlZHNvcnQyOwogCWJ0 bGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWJ0bGVhZGVyLT53YWx1c2FnZSA9IHdhbHVz YWdlOwotCWJ0bGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJ0bGVhZGVyLT5p bnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVu Y2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNf bGF1bmNoZWQgPT0gMCkKQEAgLTE2MjAsNyArMTYwOSw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRM ZWFkZXIgKmJ0bGVhZGVyKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQog CSAqLwogCWZvciAoaSA9IDA7IGkgPCBidGxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7 IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtp XSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZi dGxlYWRlci0+aW5zdHJbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXIt PnNuYXBzaG90KSkKQEAgLTE3NTQsOCArMTc0Myw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKICNpZmRlZiBC VFJFRV9CVUlMRF9TVEFUUwpAQCAtMTgzNywxMSArMTgyNSw4IEBAIF9idF9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkgICBzaGFyZWRz b3J0Miwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVy aW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtl ck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdv cmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRB VElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0 cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKIAlp ZiAobG9nX2J0cmVlX2J1aWxkX3N0YXRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKaW5kZXggYzMzMGM4OTFjMDMuLmI1ZmVkNTRmYjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTQ3LDkgKzQ3LDggQEAKICAqLwogI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX1NIQVJFRAkJCTEKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9RVUVSWV9U RVhUCQkyCi0jZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFCTMKLSNkZWZp bmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKLSNkZWZpbmUgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUwkJNQorI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RS VU1FTlRBVElPTgkzCisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJCTQK IAogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3b3JrZXJzLiAgU28g dGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQpAQCAtMTg4LDExICsxODcsOCBAQCBzdHJ1Y3Qg UGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIFNoYXJlZCBkZWFkIGl0ZW1zIHNwYWNlIGFtb25nIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzICovCiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAotCS8q IFBvaW50cyB0byBidWZmZXIgdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlCdWZmZXJVc2FnZSAqYnVm ZmVyX3VzYWdlOwotCi0JLyogUG9pbnRzIHRvIFdBTCB1c2FnZSBhcmVhIGluIERTTSAqLwotCVdh bFVzYWdlICAgKndhbF91c2FnZTsKKwkvKiBQb2ludHMgdG8gaW5zdHJ1bWVudGF0aW9uIGFyZWEg aW4gRFNNICovCisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAogCS8qCiAJICogRmFsc2UgaWYg dGhlIGluZGV4IGlzIHRvdGFsbHkgdW5zdWl0YWJsZSB0YXJnZXQgZm9yIGFsbCBwYXJhbGxlbApA QCAtMjUwLDggKzI0Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlk U3RvcmUgICAqZGVhZF9pdGVtczsKIAlQVkluZFN0YXRzICppbmRzdGF0czsKLQlCdWZmZXJVc2Fn ZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsKKwlJbnN0cnVtZW50YXRp b24gKmluc3RyOwogCWJvb2wJICAgKndpbGxfcGFyYWxsZWxfdmFjdXVtOwogCVNpemUJCWVzdF9p bmRzdGF0c19sZW47CiAJU2l6ZQkJZXN0X3NoYXJlZF9sZW47CkBAIC0zMDQsMTggKzI5OSwxNSBA QCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsCiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEp OwogCiAJLyoKLQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgQnVmZmVyVXNhZ2UgYW5kIFdhbFVzYWdl IC0tCi0JICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfV0FMX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRp b24gLS0KKwkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2Fs VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfVkFD VVVNX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0zOTYsMTcgKzM4OCwxMyBAQCBwYXJhbGxl bF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsCiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZv ciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlIGFuZCBXYWxVc2FnZTsgbm8gbmVlZCB0bwotCSAq IGluaXRpYWxpemUKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVt ZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgogCSAqLwotCWJ1ZmZlcl91c2Fn ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9m KEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJfdXNhZ2UpOwotCXB2 cy0+YnVmZmVyX3VzYWdlID0gYnVmZmVyX3VzYWdlOwotCXdhbF91c2FnZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfV0FMX1VTQUdFLCB3YWxfdXNhZ2UpOwotCXB2cy0+d2FsX3VzYWdlID0gd2FsX3VzYWdl OworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXpl KHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3Ry KTsKKwlwdnMtPmluc3RyID0gaW5zdHI7CiAKIAkvKiBTdG9yZSBxdWVyeSBzdHJpbmcgZm9yIHdv cmtlcnMgKi8KIAlpZiAoZGVidWdfcXVlcnlfc3RyaW5nKQpAQCAtNzQ5LDcgKzczNyw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChw dnMtPnBjeHQpOwogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQotCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+aW5zdHJbaV0pOwogCX0KIAogCS8qCkBAIC0xMDA3LDggKzk5NSw3IEBAIHBhcmFsbGVs X3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlQVlNoYXJlZCAg ICpzaGFyZWQ7CiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAlRdWVyeUluc3RydW1lbnRhdGlv biAqaW5zdHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxf dXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJbmluZGV4ZXM7 CiAJY2hhcgkgICAqc2hhcmVkcXVlcnk7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJh Y2s7CkBAIC0xMTAyLDExICsxMDg5LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5k ZXhlcygmcHZzKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KLQlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd KTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgYW55 IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB0aW1lICovCiAJaWYgKHRyYWNrX2Nv c3RfZGVsYXlfdGltaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCA2YmNk OTIyZWVhNS4uNjNlOWIxZjQwOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBA IC02MCwxMyArNjAsMTIgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0VYRUNVVE9SX0ZJWEVECQlV SU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9QTEFO TkVEU1RNVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAyKQogI2RlZmluZSBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTwkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAzKQotI2Rl ZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDQpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1Qo MHhFMDAwMDAwMDAwMDAwMDA0KQogI2RlZmluZSBQQVJBTExFTF9LRVlfVFVQTEVfUVVFVUUJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RS VU1FTlRBVElPTglVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MDYpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9EU0EJCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAw MDAwMDA3KQogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElP TiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEEpCiAKICNkZWZpbmUgUEFS QUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjMxLDggKzYzMCw2IEBAIEV4ZWNJ bml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlj aGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOwogCWNoYXIJICAgKnBh cmFtbGlzdGluZm9fc3BhY2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwotCVdhbFVz YWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICpp bnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2lu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwpAQCAtNjk2LDIxICs2OTMs MTQgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAog CS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIEJ1ZmZlclVzYWdlLgorCSAqIEVzdGltYXRlIHNw YWNlIGZvciBJbnN0cnVtZW50YXRpb24uCiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1 c2UgYW5kIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2Ug Y291bGQgc2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBh bnlvbmUncwogCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRp dGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMp KTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Ci0KLQkvKgot CSAqIFNhbWUgdGhpbmcgZm9yIFdhbFVzYWdlLgotCSAqLwotCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSks IHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0 aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3IgdHVwbGUgcXVldWVzLiAqLwpA QCAtNzk2LDE3ICs3ODYsMTggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFu c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBh cmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbywgJnBhcmFtbGlzdGluZm9fc3BhY2Up OwogCi0JLyogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgQnVmZmVyVXNhZ2U7IG5v IG5lZWQgdG8gaW5pdGlhbGl6ZS4gKi8KLQlidWZ1c2FnZV9zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLAotCQkJCQkJCQkJICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgYnVmdXNhZ2Vfc3BhY2UpOwotCXBlaS0+YnVmZmVyX3VzYWdlID0gYnVm dXNhZ2Vfc3BhY2U7CisJLyoKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJ bnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgorCSAqLworCXsKKwkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAotCS8qIFNhbWUgZm9yIFdhbFVzYWdlLiAqLwotCXdh bHVzYWdlX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCQkgIG11 bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2FnZV9zcGFjZSk7Ci0J cGVpLT53YWxfdXNhZ2UgPSB3YWx1c2FnZV9zcGFjZTsKKwkJaW5zdHIgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywKKwkJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24p LCBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsKKwkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBp bnN0cjsKKwl9CiAKIAkvKiBTZXQgdXAgdGhlIHR1cGxlIHF1ZXVlcyB0aGF0IHRoZSB3b3JrZXJz IHdpbGwgd3JpdGUgaW50by4gKi8KIAlwZWktPnRxdWV1ZSA9IEV4ZWNQYXJhbGxlbFNldHVwVHVw bGVRdWV1ZXMocGN4dCwgZmFsc2UpOwpAQCAtODMyLDkgKzgyMyw5IEBAIEV4ZWNJbml0UGFyYWxs ZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVu dCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9 IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2RlKCZpbnN0 cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RydW1lbnRfb3B0aW9ucyk7Ci0J CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwK KwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfTk9ERV9JTlNUUlVNRU5U QVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7Ci0JCXBlaS0+aW5zdHJ1bWVudGF0aW9u ID0gaW5zdHJ1bWVudGF0aW9uOworCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1 bWVudGF0aW9uOwogCiAJCWlmIChlc3RhdGUtPmVzX2ppdF9mbGFncyAhPSBQR0pJVF9OT05FKQog CQl7CkBAIC0xMjM2LDcgKzEyMjcsNyBAQCBFeGVjUGFyYWxsZWxGaW5pc2goUGFyYWxsZWxFeGVj dXRvckluZm8gKnBlaSkKIAkgKiBmaW5pc2gsIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRh dGEuKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgaSsrKQotCQlJbnN0ckFjY3Vt UGFyYWxsZWxRdWVyeSgmcGVpLT5idWZmZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7 CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwZWktPmluc3RydW1lbnRhdGlvbltpXSk7CiAK IAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsKIH0KQEAgLTEyNTAsMTAgKzEyNDEsMTAgQEAgRXhlY1Bh cmFsbGVsRmluaXNoKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB2b2lkCiBFeGVjUGFyYWxs ZWxDbGVhbnVwKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB7Ci0JLyogQWNjdW11bGF0ZSBp bnN0cnVtZW50YXRpb24sIGlmIGFueS4gKi8KLQlpZiAocGVpLT5pbnN0cnVtZW50YXRpb24pCisJ LyogQWNjdW11bGF0ZSBub2RlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLworCWlmIChwZWkt Pm5vZGVfaW5zdHJ1bWVudGF0aW9uKQogCQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRh dGlvbihwZWktPnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOwor CQkJCQkJCQkJCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uKTsKIAogCS8qIEFjY3VtdWxhdGUg SklUIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmppdF9pbnN0cnVtZW50 YXRpb24pCkBAIC0xNDc3LDggKzE0NjgsNiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiB7CiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZw ZXM7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCUJ1ZmZlclVzYWdlICpidWZmZXJf dXNhZ2U7Ci0JV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwogCURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7 CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50YXRpb247CkBAIC0xNDkzLDcgKzE0ODIsNyBAQCBQYXJhbGxlbFF1ZXJ5TWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTZXQgdXAgRGVzdFJlY2Vp dmVyLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiwgYW5kIFF1ZXJ5RGVzYy4gKi8KIAly ZWNlaXZlciA9IEV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKHNlZywgdG9jKTsKLQlpbnN0cnVtZW50 YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04s IHRydWUpOworCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX05PREVfSU5TVFJVTUVOVEFUSU9OLCB0cnVlKTsKIAlpZiAoaW5zdHJ1bWVudGF0aW9uICE9 IE5VTEwpCiAJCWluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVu dF9vcHRpb25zOwogCWppdF9pbnN0cnVtZW50YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OLApAQCAtMTU1MSwxMSArMTU0MCwxMiBAQCBQ YXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRXhlY3V0 b3JGaW5pc2gocXVlcnlEZXNjKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmlu ZyBwYXJhbGxlbCBleGVjdXRpb24uICovCi0JYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwor CXsKKwkJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CisKKwkJd29ya2VyX2luc3RyID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7 CisJCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdv cmtlck51bWJlcl0pOworCX0KIAogCS8qIFJlcG9ydCBpbnN0cnVtZW50YXRpb24gZGF0YSBpZiBh bnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4gKi8KIAlpZiAoaW5zdHJ1bWVudGF0 aW9uICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggNjg5MjcwNmE4M2Eu LjA5ZDVmZmU4NjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0zMjIsMTEgKzMy MiwxMiBAQCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQogCiAvKiByZXBvcnQgdXNhZ2Ug YWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQKLUluc3RyRW5kUGFyYWxs ZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBJbnN0cnVtZW50YXRpb24gKmRzdCkKIHsKIAlJbnN0clF1ZXJ5 U3RvcEZpbmFsaXplKHFpbnN0cik7Ci0JbWVtY3B5KGJ1ZnVzYWdlLCAmcWluc3RyLT5pbnN0ci5i dWZ1c2FnZSwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JbWVtY3B5KHdhbHVzYWdlLCAmcWluc3Ry LT5pbnN0ci53YWx1c2FnZSwgc2l6ZW9mKFdhbFVzYWdlKSk7CisJZHN0LT5uZWVkX3N0YWNrID0g cWluc3RyLT5pbnN0ci5uZWVkX3N0YWNrOworCW1lbWNweSgmZHN0LT5idWZ1c2FnZSwgJnFpbnN0 ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1lbWNweSgmZHN0LT53 YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkpOwogfQog CiAvKgpAQCAtMzQyLDEyICszNDMsMTEgQEAgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXMKICAqIGFj dGl2aXR5IGlzIGFjY3VtdWxhdGVkLgogICovCiB2b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVy eShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyQWNjdW1Q YXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JQnVmZmVyVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7Ci0JV2FsVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisJSW5zdHJBY2N1bVN0 YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKIAotCVdhbFVzYWdlQWRkKCZwZ1dhbFVz YWdlLCB3YWx1c2FnZSk7CisJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNh Z2UpOwogfQogCiAvKiBOb2RlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjUGFyYWxsZWwuaAppbmRleCA1YTIwMzQ4MTFkNS4uNmM4YjYwMmQwN2YgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCkBAIC0yNSw5ICsyNSw4IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsRXhlY3V0b3JJbmZvCiB7CiAJUGxhblN0YXRlICAqcGxhbnN0YXRlOwkJLyog cGxhbiBzdWJ0cmVlIHdlJ3JlIHJ1bm5pbmcgaW4gcGFyYWxsZWwgKi8KIAlQYXJhbGxlbENvbnRl eHQgKnBjeHQ7CQkvKiBwYXJhbGxlbCBjb250ZXh0IHdlJ3JlIHVzaW5nICovCi0JQnVmZmVyVXNh Z2UgKmJ1ZmZlcl91c2FnZTsJLyogcG9pbnRzIHRvIGJ1ZnVzYWdlIGFyZWEgaW4gRFNNICovCi0J V2FsVXNhZ2UgICAqd2FsX3VzYWdlOwkJLyogd2FsdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOyAvKiBvcHRpb25hbCAq LworCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOwkvKiBpbnN0cnVtZW50YXRpb24g YXJlYSBpbiBEU00gKi8KKwlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqbm9kZV9pbnN0 cnVtZW50YXRpb247CS8qIG9wdGlvbmFsICovCiAJc3RydWN0IFNoYXJlZEppdEluc3RydW1lbnRh dGlvbiAqaml0X2luc3RydW1lbnRhdGlvbjsJLyogb3B0aW9uYWwgKi8KIAlkc2FfYXJlYSAgICph cmVhOwkJCS8qIHBvaW50cyB0byBEU0EgYXJlYSBpbiBEU00gKi8KIAlkc2FfcG9pbnRlciBwYXJh bV9leGVjOwkJLyogc2VyaWFsaXplZCBQQVJBTV9FWEVDIHBhcmFtZXRlcnMgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2luc3RydW1lbnQuaAppbmRleCBmNDljM2Y5OWNmMi4uYjMwYTE1YmMwMjcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKQEAgLTI4Myw4ICsyODMsOCBAQCBleHRlcm4gdm9pZCBJbnN0 clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4g dm9pZCBJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50 LCBJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIAogcGdfbm9kaXNjYXJkIGV4dGVybiBRdWVyeUlu c3RydW1lbnRhdGlvbiAqSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1leHRlcm4gdm9p ZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgSW5z dHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2Fs dXNhZ2UpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIsIEluc3RydW1lbnRhdGlvbiAqZHN0KTsKK2V4dGVybiB2b2lkIEluc3Ry QWNjdW1QYXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogCiBleHRlcm4gTm9k ZUluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY05vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFp bnN0ciwgYm9vbCBhc3luY19tb2RlKTsKIGV4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotLSAKMi40Ny4x Cgo= --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0009-Add-test_session_buffer_usage-test-module.patch" Content-Disposition: attachment; filename="v12-0009-Add-test_session_buffer_usage-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1l8 RnJvbSAzOTY5MGMxMjE3MWMyZGIwZDEwZTRkMDE1ZWI3ZGM3ODAxYzI2MmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMiA5LzldIEFk ZCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIHRlc3QgbW9kdWxlCgpUaGlzIGlzIGludGVuZGVk IGZvciB0ZXN0aW5nIGluc3RydW1lbnRhdGlvbiByZWxhdGVkIGxvZ2ljIGFzIGl0IHBlcnRhaW5z CnRvIHRoZSB0b3AgbGV2ZWwgc3RhY2sgdGhhdCBpcyBtYWludGFpbmVkIGFzIGEgcnVubmluZyB0 b3RhbC4gVGhlcmUgaXMKY3VycmVudGx5IG5vIGluLWNvcmUgdXNlciB0aGF0IHV0aWxpemVzIHRo ZSB0b3AtbGV2ZWwgdmFsdWVzIGluIHRoaXMKbWFubmVyLCBhbmQgZXNwZWNpYWxseSBkdXJpbmcg YWJvcnQgc2l0dWF0aW9ucyB0aGlzIGhlbHBzIGVuc3VyZSB3ZSBkb24ndApsb3NlIGFjdGl2aXR5 IGR1ZSB0byBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5maW5hbGl6ZWQgbm9kZSBzdGFja3MuCi0t LQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiAu Li4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmlsZSAgICAgICAgfCAgMjMgKysKIC4u Li9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dCAgICB8IDM0MiArKysrKysr KysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkICAg ICB8ICAzMyArKwogLi4uL3NxbC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbCAgICAgICAg IHwgMjQ1ICsrKysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAu c3FsICAgICAgICB8ICAzMSArKwogLi4uL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyAgICAg ICAgICAgICAgIHwgIDk1ICsrKysrCiAuLi4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sICAgICAgICAgfCAgIDUgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NzYgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvTWFrZWZpbGUKaW5kZXggODY0YjQwN2FiY2YuLmM1YWNlMTYyZmUyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZp bGUKQEAgLTQ4LDYgKzQ4LDcgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X3Jlc293bmVyIFwKIAkJ ICB0ZXN0X3Jsc19ob29rcyBcCiAJCSAgdGVzdF9zYXNscHJlcCBcCisJCSAgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSBcCiAJCSAgdGVzdF9zaG1fbXEgXAogCQkgIHRlc3Rfc2xydSBcCiAJCSAg dGVzdF90aWRzdG9yZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCBlNWFjYWNkNTA4My4uODAyY2M5 M2Q3MWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtNDksNiArNDksNyBAQCBzdWJkaXIoJ3Rlc3Rf cmVnZXgnKQogc3ViZGlyKCd0ZXN0X3Jlc293bmVyJykKIHN1YmRpcigndGVzdF9ybHNfaG9va3Mn KQogc3ViZGlyKCd0ZXN0X3Nhc2xwcmVwJykKK3N1YmRpcigndGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZScpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRpcigndGVzdF9zbHJ1JykKIHN1YmRp cigndGVzdF90aWRzdG9yZScpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjEyNTJiMjIyY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCisKK01PRFVM RV9iaWcgPSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlCitPQkpTID0gXAorCSQoV0lOMzJSRVMp IFwKKwl0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm8KKworRVhURU5TSU9OID0gdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZQorREFUQSA9IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5z cWwKK1BHRklMRURFU0MgPSAidGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSAtIHNob3cgYnVmZmVy IHVzYWdlIHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24iCisKK1JFR1JFU1MgPSB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBw Z19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAk KFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxk ZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9j b250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3Rl ZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNWY3ZDM0OTg3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvZXhwZWN0ZWQvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5vdXQKQEAgLTAsMCArMSwzNDIgQEAKK0xPQUQgJ3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UnOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlOwor LS0gVmVyaWZ5IGFsbCBjb2x1bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3VudCgqKSA9 IDEgQVMgb2sgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNoYXJlZF9i bGtzX2hpdCA+PSAwIEFORCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJlZF9ibGtz X2RpcnRpZWQgPj0gMCBBTkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBsb2NhbF9i bGtzX2hpdCA+PSAwIEFORCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxfYmxrc19k aXJ0aWVkID49IDAgQU5EIGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1wX2Jsa3Nf cmVhZCA+PSAwIEFORCB0ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRfYmxrX3Jl YWRfdGltZSA+PSAwIEFORCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgbG9jYWxf YmxrX3JlYWRfdGltZSA+PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCB0 ZW1wX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAwOworIG9r IAorLS0tLQorIHQKKygxIHJvdykKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVy IGJ1ZmZlciBhY3Rpdml0eQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQo KTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVm X2FjdGl2aXR5IChpZCBpbnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rp dml0eSBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDAwKSBBUyBpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisgY291 bnQgCistLS0tLS0tCisgIDEwMDAKKygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsg bG9jYWxfYmxrc19yZWFkID4gMCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UoKTsKKyBibG9ja3NfaW5jcmVhc2VkIAorLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5OworLS0gUGFyYWxs ZWwgcXVlcnkgdGVzdAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAw KSk7CitJTlNFUlQgSU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBw YXJfZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1 cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSBwYXJfZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cp CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRf Ymxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgp OworLS0gTWVhc3VyZSBwYXJhbGxlbCBzY2FuIGRlbHRhIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNp cGF0aW5nIGluIHNjYW5uaW5nLgorLS0gV29ya2VycyBkbyBhbGwgdGFibGUgc2Nhbm5pbmc7IGxl YWRlciBvbmx5IHJ1bnMgdGhlIEdhdGhlciBub2RlLgorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Qg PSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAy OworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VMRUNUIHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisgY291bnQgCistLS0tLS0tCisgIDUw MDAKKygxIHJvdykKKworLS0gQ29uZmlybSB3ZSBnb3QgYSBzaW1pbGFyIGhpdCBjb3VudGVyIHRo cm91Z2ggcGFyYWxsZWwgd29ya2VyIGFjY3VtdWxhdGlvbgorU0VMRUNUIHNoYXJlZF9ibGtzX2hp dCA+IHMuc2VyaWFsX2RlbHRhIC8gMiBBTkQgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVs dGEgKiAyCisgICAgICAgQVMgbGVhZGVyX2J1ZmZlcnNfbWF0Y2gKK0ZST00gdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSgpLCBkY19zZXJpYWxfcmVzdWx0IHM7CisgbGVhZGVyX2J1ZmZlcnNfbWF0 Y2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBwYXJhbGxl bF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJh bGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CitEUk9QIFRBQkxFIHBh cl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CistLQorLS0gQWJvcnQvZXhjZXB0aW9uIHRlc3Rz OiB2ZXJpZnkgYnVmZmVyIHVzYWdlIHN1cnZpdmVzIHZhcmlvdXMgZXJyb3IgcGF0aHMuCistLQor LS0gUm9sbGVkLWJhY2sgZGl2aWRlLWJ5LXplcm8gdW5kZXIgRVhQTEFJTiBBTkFMWVpFCitDUkVB VEUgVEVNUCBUQUJMRSBleGNfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitTRUxFQ1QgdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICBXSVRIIGlucyBB UyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAg ICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCitT RUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxl CitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBleGNlcHRpb25fYnVmZmVyc192 aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9Q IFRBQkxFIGV4Y190YWI7CistLSBVbmlxdWUgY29uc3RyYWludCB2aW9sYXRpb24gaW4gcmVndWxh ciBxdWVyeQorQ1JFQVRFIFRFTVAgVEFCTEUgdW5pcXVlX3RhYiAoYSBpbnQgVU5JUVVFLCBiIGNo YXIoMjApKTsKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFMVUVTICgxLCAnZmlyc3QnKTsKK1NF TEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2R1cGxpY2F0ZScp OworRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJ1bmlxdWVfdGFiX2Ffa2V5IgorREVUQUlMOiAgS2V5IChhKT0oMSkgYWxyZWFkeSBleGlzdHMu CitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPiAwIEFTIHVuaXF1ZV92aW9sYXRpb25fYnVmZmVyc192 aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyB1bmlxdWVfdmlvbGF0 aW9uX2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKy0tIENhdWdodCBleGNlcHRp b24gaW4gUEwvcGdTUUwgc3VidHJhbnNhY3Rpb24gKEJFR0lOLi4uRVhDRVBUSU9OKQorQ1JFQVRF IFRFTVAgVEFCTEUgc3VieGFjdF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBGVU5D VElPTiBzdWJ4YWN0X2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQkCitCRUdJTgorICAgIEJF R0lOCisgICAgICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RikKKyAgICAgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBzdWJ4YWN0X3RhYiBWQUxV RVMgKDEsICcnYWFhJycpIFJFVFVSTklORyBhKQorICAgICAgICAgICAgU0VMRUNUIGEgLyAwIEZS T00gaW5zJzsKKyAgICBFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICAg ICAgUkVUVVJOICdjYXVnaHQnOworICAgIEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1YnhhY3Rf ZXhjX2Z1bmMoKTsKKyBzdWJ4YWN0X2V4Y19mdW5jIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1 Z2h0CisoMSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIHN1YnhhY3Rf YnVmZmVyc192aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBzdWJ4 YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK0RST1AgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUgc3VieGFj dF90YWI7CistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2 ZXJpZnkgcG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90 YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBp LCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKK0NS RUFURSBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0RFQ0xB UkUKKyAgICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lOCisgICAgQkVHSU4K KyAgICAgICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIgTE9PUAorICAgICAg ICAgICAgY250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAyNTAgVEhFTgorICAg ICAgICAgICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAg IEVORCBMT09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAg ICAgICBSRVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3MnOworICAgIEVORDsK KyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitT RUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworICAgIGN1cnNvcl9leGNfZnVu YyAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0IGFmdGVyIDI1MCByb3dzCiso MSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAg ICAgICBBUyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSgpOworIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9O IGN1cnNvcl9leGNfZnVuYzsKK0RST1AgVEFCTEUgY3Vyc29yX3RhYjsKKy0tIFRyaWdnZXIgYWJv cnQgdW5kZXIgRVhQTEFJTiBBTkFMWVpFOiB2ZXJpZnkgdGhhdCBidWZmZXIgYWN0aXZpdHkgZnJv bSBhCistLSB0cmlnZ2VyIHRoYXQgdGhyb3dzIGFuIGVycm9yIGlzIHN0aWxsIHByb3Blcmx5IHBy b3BhZ2F0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX2Vycl90YWIgKGEgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQg SU5UTyB0cmlnX3dvcmtfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKy0tIFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dv cmtfdGFiIHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtf dGFiOworIGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElP TiB0cmlnX2Vycl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZP Uk0gY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworICAgIFJBSVNFIEVYQ0VQVElPTiAndHJp Z2dlciBlcnJvcic7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgor ICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKy0tIE1l YXN1cmUgaG93IG1hbnkgbG9jYWwgYnVmZmVyIGhpdHMgYSBzY2FuIG9mIHRyaWdfd29ya190YWIg cHJvZHVjZXMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFi OworIGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxF IHRyaWdfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9o aXRzIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworLS0gTm93IHRyaWdnZXIgdGhl IHNhbWUgc2NhbiB2aWEgYSB0cmlnZ2VyIHRoYXQgZXJyb3JzCitTRUxFQ1QgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgIElOU0VSVCBJTlRPIHRyaWdfZXJy X3RhYiBWQUxVRVMgKDEpOworRVJST1I6ICB0cmlnZ2VyIGVycm9yCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gdHJpZ19lcnJfZnVuYygpIGxpbmUgNCBhdCBSQUlTRQorLS0gVGhlIHRyaWdn ZXIgc2Nhbm5lZCB0cmlnX3dvcmtfdGFiIGJ1dCBlcnJvcmVkIGJlZm9yZSBJbnN0clN0b3BUcmln Z2VyIHJhbi4KKy0tIEluc3RyU3RvcEZpbmFsaXplIGluIHRoZSBQR19DQVRDSCBlbnN1cmVzIGJ1 ZmZlciBkYXRhIGlzIHN0aWxsIHByb3BhZ2F0ZWQuCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPj0g cy5zZXJpYWxfaGl0cyAvIDIKKyAgICAgICBBUyB0cmlnZ2VyX2Fib3J0X2J1ZmZlcnNfcHJvcGFn YXRlZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHRyaWdfc2VyaWFsX3Jlc3Vs dCBzOworIHRyaWdnZXJfYWJvcnRfYnVmZmVyc19wcm9wYWdhdGVkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0cmlnX2Vycl90 YWIsIHRyaWdfd29ya190YWIsIHRyaWdfc2VyaWFsX3Jlc3VsdDsKK0RST1AgRlVOQ1RJT04gdHJp Z19lcnJfZnVuYzsKKy0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2VyIGJ1ZmZlciBhY3Rp dml0eSBpcyBjdXJyZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCistLQorLS0gV2hlbiBh IHBhcmFsbGVsIHdvcmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVyeSBhbmQKKy0tIEV4 ZWNQYXJhbGxlbFJlcG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNvIHRoZSB3b3JrZXIn cyBidWZmZXIKKy0tIGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hhcmVkIG1lbW9yeSwg ZGVzcGl0ZSB0aGUgaW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1cmVkIGJ5IHRoZSBy ZXMgb3duZXIgcmVsZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitDUkVBVEUgVEFCTEUg cGFyX2Fib3J0X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9hYm9y dF90YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgQVMgaTsKKy0tIFdhcm0gc2hhcmVkIGJ1ZmZlcnMgc28gYWxsIHJlYWRzIGJlY29tZSBo aXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfYWJvcnRfdGFiOworIGNvdW50IAorLS0tLS0t LQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgYXMgYSBy ZWZlcmVuY2UgKGxlYWRlciByZWFkcyBhbGwgYmxvY2tzKQorU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVz ZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBiOjppbnQyIEZST00gcGFy X2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXgg Zm9yIHR5cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIKK0NSRUFU RSBUQUJMRSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJlZF9ibGtzX2hp dCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBO b3cgZm9yY2UgcGFyYWxsZWwgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5p bmcKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0 ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK1NFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGlj aXBhdGlvbiA9IG9mZjsKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9uOyAtLSBFbnN1cmUg d2UgZ2V0IENPTlRFWFQgbGluZSBjb25zaXN0ZW50bHkKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgYjo6 aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHgiCitDT05URVhUOiAgcGFyYWxsZWwgd29ya2VyCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9x dWVyeTsKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFibGUgYnV0IGFib3J0ZWQgYmVmb3JlIHJl cG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRlcidzIGRlbHRhIHNob3VsZCBiZSBtdWNo IGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVudGluZworLS0gdGhhdCB3b3JrZXIgYnVm ZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IDwg cy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90X3By b3BhZ2F0ZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBwYXJfYWJvcnRfc2Vy aWFsX3Jlc3VsdCBzOworIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9wYWdhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUkVTRVQg cGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBt aW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworRFJPUCBU QUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdDsKKy0tIENsZWFudXAK K0RST1AgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI5NmY2N2RjN2ZlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21l c29uLmJ1aWxkCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYycsCispCisK K2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBb CisgICAgJy0tTkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICAnLS1GSUxF REVTQycsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIC0gc2hvdyBidWZmZXIgdXNhZ2Ugc3Rh dGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicsXSkKK2VuZGlmCisKK3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl JywKKyAgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rl c3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5jb250cm9sJywKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5z cWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24u Y3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAg ICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhZjIxNTljNGE2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLnNxbApAQCAtMCwwICsxLDI0NSBAQAorTE9BRCAndGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZSc7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2U7CisKKy0tIFZlcmlmeSBhbGwgY29sdW1ucyBhcmUgbm9uLW5lZ2F0aXZlCitTRUxFQ1Qg Y291bnQoKikgPSAxIEFTIG9rIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpCitXSEVS RSBzaGFyZWRfYmxrc19oaXQgPj0gMCBBTkQgc2hhcmVkX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBz aGFyZWRfYmxrc19kaXJ0aWVkID49IDAgQU5EIHNoYXJlZF9ibGtzX3dyaXR0ZW4gPj0gMAorICBB TkQgbG9jYWxfYmxrc19oaXQgPj0gMCBBTkQgbG9jYWxfYmxrc19yZWFkID49IDAKKyAgQU5EIGxv Y2FsX2Jsa3NfZGlydGllZCA+PSAwIEFORCBsb2NhbF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQg dGVtcF9ibGtzX3JlYWQgPj0gMCBBTkQgdGVtcF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgc2hh cmVkX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgc2hhcmVkX2Jsa193cml0ZV90aW1lID49IDAKKyAg QU5EIGxvY2FsX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgPj0g MAorICBBTkQgdGVtcF9ibGtfcmVhZF90aW1lID49IDAgQU5EIHRlbXBfYmxrX3dyaXRlX3RpbWUg Pj0gMDsKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0 eQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKworQ1JFQVRFIFRF TVAgVEFCTEUgdGVzdF9idWZfYWN0aXZpdHkgKGlkIGludCwgZGF0YSB0ZXh0KTsKK0lOU0VSVCBJ TlRPIHRlc3RfYnVmX2FjdGl2aXR5IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAxMDApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X2J1 Zl9hY3Rpdml0eTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4g MCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KworRFJPUCBUQUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKworLS0gUGFyYWxsZWwgcXVlcnkgdGVz dAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQg SU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIEFTIGk7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7 CisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29y aykKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKworU0VMRUNUIHRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBh cl9kY190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVD VCBzaGFyZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZSgpOworCistLSBNZWFzdXJlIHBhcmFsbGVsIHNjYW4gZGVsdGEgd2l0aCBsZWFkZXIg Tk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcuCistLSBXb3JrZXJzIGRvIGFsbCB0YWJsZSBz Y2FubmluZzsgbGVhZGVyIG9ubHkgcnVucyB0aGUgR2F0aGVyIG5vZGUuCitTRVQgcGFyYWxsZWxf c2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitTRVQgbWluX3Bh cmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CisK K1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQo KikgRlJPTSBwYXJfZGNfdGFiOworCistLSBDb25maXJtIHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNv dW50ZXIgdGhyb3VnaCBwYXJhbGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVk X2Jsa3NfaGl0ID4gcy5zZXJpYWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxrc19oaXQgPCBzLnNl cmlhbF9kZWx0YSAqIDIKKyAgICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRjaAorRlJPTSB0ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRB QkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CisKKy0tCistLSBBYm9ydC9leGNlcHRp b24gdGVzdHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2ZXMgdmFyaW91cyBlcnJvciBwYXRo cy4KKy0tCisKKy0tIFJvbGxlZC1iYWNrIGRpdmlkZS1ieS16ZXJvIHVuZGVyIEVYUExBSU4gQU5B TFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZXhjX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworCitT RUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5U TyBleGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgICAgICBTRUxFQ1Qg YSAvIDAgRlJPTSBpbnM7CisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIGV4Y2Vw dGlvbl9idWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOwor CitEUk9QIFRBQkxFIGV4Y190YWI7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbiBp biByZWd1bGFyIHF1ZXJ5CitDUkVBVEUgVEVNUCBUQUJMRSB1bmlxdWVfdGFiIChhIGludCBVTklR VUUsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdmaXJz dCcpOworCitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworSU5TRVJU IElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNhdGUnKTsKKworU0VMRUNUIGxvY2Fs X2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKwor LS0gQ2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5F WENFUFRJT04pCitDUkVBVEUgVEVNUCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigy MCkpOworCitDUkVBVEUgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBB UyAkJAorQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgICAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElO VE8gc3VieGFjdF90YWIgVkFMVUVTICgxLCAnJ2FhYScnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAg ICAgIFNFTEVDVCBhIC8gMCBGUk9NIGlucyc7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25f YnlfemVybyBUSEVOCisgICAgICAgIFJFVFVSTiAnY2F1Z2h0JzsKKyAgICBFTkQ7CisgICAgUkVU VVJOICdub3QgcmVhY2hlZCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1Qg dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIHN1YnhhY3RfZXhjX2Z1 bmMoKTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgc3VieGFjdF9idWZmZXJz X3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIEZVTkNU SU9OIHN1YnhhY3RfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIHN1YnhhY3RfdGFiOworCistLSBDdXJz b3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkgcG9zdC1leGNl cHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEgaW50LCBiIGNo YXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAy MDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKworQ1JFQVRFIEZVTkNUSU9O IGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVDTEFSRQorICAgIHJlYyBy ZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBGT1Ig cmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAgICAgICAgICBjbnQgOj0g Y250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisgICAgICAgICAgICAgICAg UEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIExPT1A7Cisg ICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgICAgIFJFVFVSTiAn Y2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5EOworICAgIFJFVFVSTiAn bm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjdXJzb3JfZXhjX2Z1bmMoKTsK KworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMAorICAgICAgIEFT IGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlKCk7CisKK0RST1AgRlVOQ1RJT04gY3Vyc29yX2V4Y19mdW5jOworRFJPUCBUQUJMRSBj dXJzb3JfdGFiOworCistLSBUcmlnZ2VyIGFib3J0IHVuZGVyIEVYUExBSU4gQU5BTFlaRTogdmVy aWZ5IHRoYXQgYnVmZmVyIGFjdGl2aXR5IGZyb20gYQorLS0gdHJpZ2dlciB0aGF0IHRocm93cyBh biBlcnJvciBpcyBzdGlsbCBwcm9wZXJseSBwcm9wYWdhdGVkLgorQ1JFQVRFIFRFTVAgVEFCTEUg dHJpZ19lcnJfdGFiIChhIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX3dvcmtfdGFiIChh IGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gdHJpZ193b3JrX3RhYiBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIGk7CisKKy0t IFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtfdGFiIHJlYWRzIGJlY29tZSBoaXRzCitT RUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworCitDUkVBVEUgRlVOQ1RJT04gdHJp Z19lcnJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBQRVJGT1JNIGNv dW50KCopIEZST00gdHJpZ193b3JrX3RhYjsKKyAgICBSQUlTRSBFWENFUFRJT04gJ3RyaWdnZXIg ZXJyb3InOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitD UkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgorICAg IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKworLS0gTWVh c3VyZSBob3cgbWFueSBsb2NhbCBidWZmZXIgaGl0cyBhIHNjYW4gb2YgdHJpZ193b3JrX3RhYiBw cm9kdWNlcworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdf c2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9oaXRzIEZS T00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCistLSBOb3cgdHJpZ2dlciB0aGUgc2Ft ZSBzY2FuIHZpYSBhIHRyaWdnZXIgdGhhdCBlcnJvcnMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYp CisgICAgSU5TRVJUIElOVE8gdHJpZ19lcnJfdGFiIFZBTFVFUyAoMSk7CisKKy0tIFRoZSB0cmln Z2VyIHNjYW5uZWQgdHJpZ193b3JrX3RhYiBidXQgZXJyb3JlZCBiZWZvcmUgSW5zdHJTdG9wVHJp Z2dlciByYW4uCistLSBJbnN0clN0b3BGaW5hbGl6ZSBpbiB0aGUgUEdfQ0FUQ0ggZW5zdXJlcyBi dWZmZXIgZGF0YSBpcyBzdGlsbCBwcm9wYWdhdGVkLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID49 IHMuc2VyaWFsX2hpdHMgLyAyCisgICAgICAgQVMgdHJpZ2dlcl9hYm9ydF9idWZmZXJzX3Byb3Bh Z2F0ZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCB0cmlnX3NlcmlhbF9yZXN1 bHQgczsKKworRFJPUCBUQUJMRSB0cmlnX2Vycl90YWIsIHRyaWdfd29ya190YWIsIHRyaWdfc2Vy aWFsX3Jlc3VsdDsKK0RST1AgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYzsKKworLS0gUGFyYWxsZWwg d29ya2VyIGFib3J0OiB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBOT1QgcHJv cGFnYXRlZCBvbiBhYm9ydC4KKy0tCistLSBXaGVuIGEgcGFyYWxsZWwgd29ya2VyIGFib3J0cywg SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5IGFuZAorLS0gRXhlY1BhcmFsbGVsUmVwb3J0SW5zdHJ1bWVu dGF0aW9uIG5ldmVyIHJ1biwgc28gdGhlIHdvcmtlcidzIGJ1ZmZlcgorLS0gYWN0aXZpdHkgaXMg bmV2ZXIgd3JpdHRlbiB0byBzaGFyZWQgbWVtb3J5LCBkZXNwaXRlIHRoZSBpbmZvcm1hdGlvbiBo YXZpbmcgYmVlbgorLS0gY2FwdHVyZWQgYnkgdGhlIHJlcyBvd25lciByZWxlYXNlIGluc3RydW1l bnRhdGlvbiBoYW5kbGluZy4KK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfdGFiIChhIGludCwgYiBj aGFyKDIwMCkpOworSU5TRVJUIElOVE8gcGFyX2Fib3J0X3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4 JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCistLSBXYXJtIHNo YXJlZCBidWZmZXJzIHNvIGFsbCByZWFkcyBiZWNvbWUgaGl0cworU0VMRUNUIGNvdW50KCopIEZS T00gcGFyX2Fib3J0X3RhYjsKKworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSBhcyBhIHJl ZmVyZW5jZSAobGVhZGVyIHJlYWRzIGFsbCBibG9ja3MpCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciA9IDA7CisKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jl c2V0KCk7CitTRUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7 CisKK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJl ZF9ibGtzX2hpdCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl KCk7CisKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGlu ZyBpbiBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVs X3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xl YWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247 IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorCitTRUxFQ1QgdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGI6OmludDIgRlJPTSBwYXJf YWJvcnRfdGFiIFdIRVJFIGEgPiAxMDAwOworCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsK KworLS0gV29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJvcnRlZCBiZWZvcmUgcmVwb3J0 aW5nIHN0YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEgc2hvdWxkIGJlIG11Y2ggbGVz cyB0aGFuIGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0aGF0IHdvcmtlciBidWZmZXIg YWN0aXZpdHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPCBzLnNl cmlhbF9kZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRfYnVmZmVyc19ub3RfcHJvcGFn YXRlZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHBhcl9hYm9ydF9zZXJpYWxf cmVzdWx0IHM7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90 dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJfcGFy dGljaXBhdGlvbjsKKworRFJPUCBUQUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFs X3Jlc3VsdDsKKworLS0gQ2xlYW51cAorRFJPUCBFWFRFTlNJT04gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Ut LTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5ODMzYmU0 NzBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKQEAgLTAsMCArMSwz MSBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0 IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xl Y2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIiB0byBs b2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UoCisgICAgT1VUIHNoYXJlZF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHNoYXJl ZF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrc19kaXJ0aWVkIGJpZ2ludCwK KyAgICBPVVQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3Nf aGl0IGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgbG9j YWxfYmxrc19kaXJ0aWVkIGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc193cml0dGVuIGJpZ2lu dCwKKyAgICBPVVQgdGVtcF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCB0ZW1wX2Jsa3Nfd3Jp dHRlbiBiaWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNp b24sCisgICAgT1VUIHNoYXJlZF9ibGtfd3JpdGVfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAg IE9VVCBsb2NhbF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIGxvY2Fs X2Jsa193cml0ZV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHRlbXBfYmxrX3JlYWRf dGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0ZW1wX2Jsa193cml0ZV90aW1lIGRvdWJs ZSBwcmVjaXNpb24KKykKK1JFVFVSTlMgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFJFU1RSSUNURUQ7 CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKK1JF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0JworTEFOR1VBR0UgQyBQQVJBTExFTCBSRVNUUklDVEVEOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjUwZWIxYTJmZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uu YwpAQCAtMCwwICsxLDk1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X3Nlc3Np b25fYnVmZmVyX3VzYWdlLmMKKyAqCSAgc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3Ig dGhlIGN1cnJlbnQgc2Vzc2lvbgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisj aW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCisKK1BHX01PRFVMRV9NQUdJQ19FWFQoCisJCQkJCS5uYW1lID0gInRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UiLAorCQkJCQkudmVyc2lvbiA9IFBHX1ZFUlNJT04KKyk7 CisKKyNkZWZpbmUgTlVNX0JVRkZFUl9VU0FHRV9DT0xVTU5TIDE2CisKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQpOworCisjZGVmaW5lIEhBVkVfSU5TVFJfU1RB Q0sgMQkJLyogQ2hhbmdlIHRvIDAgd2hlbiB0ZXN0aW5nIGJlZm9yZSBzdGFjaworCQkJCQkJCQkg KiBjaGFuZ2UgKi8KKworLyoKKyAqIFNRTCBmdW5jdGlvbjogdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZSgpCisgKgorICogUmV0dXJucyBhIHNpbmdsZSByb3cgd2l0aCBhbGwgQnVmZmVyVXNhZ2Ug Y291bnRlcnMgYWNjdW11bGF0ZWQgc2luY2UgdGhlCisgKiBzdGFydCBvZiB0aGUgc2Vzc2lvbi4g RXhjbHVkZXMgYW55IHVzYWdlIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAqIHN0 YWNrIChlLmcuIGlmIHRoaXMgZ2V0cyBjYWxsZWQgaW5zaWRlIGEgc3RhdGVtZW50IHRoYXQgYWxz byBoYWQgYnVmZmVyCisgKiBhY3Rpdml0eSkuCisgKi8KK0RhdHVtCit0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0 dW0JCXZhbHVlc1tOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlNdOworCWJvb2wJCW51bGxzW05VTV9C VUZGRVJfVVNBR0VfQ09MVU1OU107CisJQnVmZmVyVXNhZ2UgKnVzYWdlOworCisJaWYgKGdldF9j YWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBP U0lURSkKKwkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOwor CisJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworI2lmIEhBVkVfSU5TVFJfU1RB Q0sKKwl1c2FnZSA9ICZpbnN0cl90b3AuYnVmdXNhZ2U7CisjZWxzZQorCXVzYWdlID0gJnBnQnVm ZmVyVXNhZ2U7CisjZW5kaWYKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNo YXJlZF9ibGtzX2hpdCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVk X2Jsa3NfcmVhZCk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Js a3NfZGlydGllZCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Js a3Nfd3JpdHRlbik7CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxr c19oaXQpOworCXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfcmVh ZCk7CisJdmFsdWVzWzZdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19kaXJ0aWVk KTsKKwl2YWx1ZXNbN10gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW4p OworCXZhbHVlc1s4XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc19yZWFkKTsKKwl2 YWx1ZXNbOV0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbik7CisJdmFs dWVzWzEwXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5z aGFyZWRfYmxrX3JlYWRfdGltZSkpOworCXZhbHVlc1sxMV0gPSBGbG9hdDhHZXREYXR1bShJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSk7CisJdmFs dWVzWzEyXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5s b2NhbF9ibGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzEzXSA9IEZsb2F0OEdldERhdHVtKElOU1RS X1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSkpOworCXZhbHVl c1sxNF0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVt cF9ibGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzE1XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKHVzYWdlLT50ZW1wX2Jsa193cml0ZV90aW1lKSk7CisKKwlQR19SRVRV Uk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVl cywgbnVsbHMpKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb246IHRlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2VfcmVzZXQoKQorICoKKyAqIFJlc2V0cyBhbGwgQnVmZmVyVXNhZ2UgY291bnRlcnMg b24gdGhlIHRvcCBpbnN0cnVtZW50YXRpb24gc3RhY2sgdG8gemVyby4KKyAqIFVzZWZ1bCBpbiB0 ZXN0cyB0byBhdm9pZCB0aGUgYmFzZWxpbmUvZGVsdGEgcGF0dGVybi4KKyAqLworRGF0dW0KK3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZiBI QVZFX0lOU1RSX1NUQUNLCisJbWVtc2V0KCZpbnN0cl90b3AuYnVmdXNhZ2UsIDAsIHNpemVvZihC dWZmZXJVc2FnZSkpOworI2Vsc2UKKwltZW1zZXQoJnBnQnVmZmVyVXNhZ2UsIDAsIHNpemVvZihC dWZmZXJVc2FnZSkpOworI2VuZGlmCisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQxY2ZiMTVhNzY1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UuY29udHJvbApAQCAtMCwwICsxLDUgQEAKKyMgdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZSBleHRlbnNpb24KK2NvbW1lbnQgPSAnc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlz dGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCitt b2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJworcmVs b2NhdGFibGUgPSB0cnVlCi0tIAoyLjQ3LjEKCg== --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Disposition: attachment; filename="v12-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1j6 RnJvbSAxNmU0NGQ1NTA4ZjkxZGQyM2RhNzgwOTAxZjNlYzAxMjY5NjU2MjhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTc6NTI6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMiA3LzldIGlu c3RydW1lbnRhdGlvbjogT3B0aW1pemUgRXhlY1Byb2NOb2RlSW5zdHIKIGluc3RydWN0aW9ucyBi eSBpbmxpbmluZwoKRm9yIG1vc3QgcXVlcmllcywgdGhlIGJ1bGsgb2YgdGhlIG92ZXJoZWFkIG9m IEVYUExBSU4gQU5BTFlaRSBoYXBwZW5zIGluCkV4ZWNQcm9jTm9kZUluc3RyIHdoZW4gc3RhcnRp bmcvc3RvcHBpbmcgaW5zdHJ1bWVudGF0aW9uIGZvciB0aGF0IG5vZGUuCgpQcmV2aW91c2x5IGVh Y2ggRXhlY1Byb2NOb2RlSW5zdHIgd291bGQgY2hlY2sgd2hpY2ggaW5zdHJ1bWVudGF0aW9uCm9w dGlvbnMgYXJlIGFjdGl2ZSBpbiB0aGUgSW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSBjYWxs cywgYW5kIGRvIHRoZQpjb3JyZXNwb25kaW5nIHdvcmsgKHRpbWVycywgaW5zdHJ1bWVudGF0aW9u IHN0YWNrLCBldGMuKS4gVGhlc2UKY29uZGl0aW9uYWxzIGJlaW5nIGNoZWNrZWQgZm9yIGVhY2gg dHVwbGUgYmVpbmcgZW1pdHRlZCBhZGQgdXAsIGFuZCBjYXVzZQpub24tb3B0aW1hbCBzZXQgb2Yg aW5zdHJ1Y3Rpb25zIHRvIGJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIuCgpCZWNhdXNlIHdl IGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZWNoYW5pc20gdG8gc3BlY2lmeSBhIGZ1bmN0aW9u CnBvaW50ZXIgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgZW5hYmxlZCwgd2UgY2FuIGluc3RlYWQg Y3JlYXRlIHNwZWNpYWxpemVkCmZ1bmN0aW9ucyB0aGF0IGFyZSB0YWlsb3JlZCB0byB0aGUgaW5z dHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxlZCwgYW5kCmF2b2lkIGNvbmRpdGlvbmFscyBvbiBz dWJzZXF1ZW50IEV4ZWNQcm9jTm9kZUluc3RyIGNhbGxzLiBUaGlzIHJlc3VsdHMgaW4KdGhlIG92 ZXJoZWFkIGZvciBFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikgZm9y IGEgc3RyZXNzCnRlc3Qgd2l0aCBhIGxhcmdlIENPVU5UKCopIHRoYXQgZG9lcyBtYW55IEV4ZWNQ cm9jTm9kZSBjYWxscyBmcm9tIH4gMjAlIG9uCnRvcCBvZiBhY3R1YWwgcnVudGltZSB0byB+IDMl LiBXaGVuIHVzaW5nIEJVRkZFUlMgT04gdGhlIHNhbWUgcXVlcnkgZ29lcwpmcm9tIH4gMjAlIHRv IH4gMTAlIG9uIHRvcCBvZiBhY3R1YWwgcnVudGltZS4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lA cGVyY29uYS5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC9DQVA1M1BreEZQN2k3LXd5OThabUVKMTFlZFlxLVJyUHZKb2E0a3pHaEJCakVS QTROeXclNDBtYWlsLmdtYWlsLmNvbSNlOGRmZDAxOGEwN2Q3ZjhkNDE1NjVhMDc5ZDQwYzU2NAot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIHwgIDIyICstLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgIHwgMTk4ICsrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgIHwgICA1ICsKIDMg ZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggMjFhZDFiMDRhNTcuLjlmNTY5ODA2M2YwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTIxLDcgKzEyMSw2IEBACiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1By b2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhl Y1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93 bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiBzdGF0aWMgYm9v bCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRh dGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKQEAgLTQ2NSw3ICs0 NjQsNyBAQCBFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiAJICogaGF2ZSBFeGVj UHJvY05vZGUoKSBkaXJlY3RseSBjYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5vdyBv bi4KIAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCkKLQkJbm9kZS0+RXhlY1Byb2NOb2RlID0g RXhlY1Byb2NOb2RlSW5zdHI7CisJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEluc3RyTm9kZVNldHVw RXhlY1Byb2NOb2RlKG5vZGUtPmluc3RydW1lbnQpOwogCWVsc2UKIAkJbm9kZS0+RXhlY1Byb2NO b2RlID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbDsKIApAQCAtNDczLDI1ICs0NzIsNiBAQCBFeGVj UHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQcm9jTm9k ZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkga2VlcGlu ZwotICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0aGUg bm9ybWFsIGNhc2Ugd2hlcmUKLSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQuCi0gKi8K LXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5v ZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2RlKG5vZGUt Pmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2RlKTsK LQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3VsdCkgPyAw LjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJTXVs dGlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCAwOWQ1ZmZlODY1 MS4uNGVhODA3ZTI5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTU5LDI5ICs1 OSwyMCBAQCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0 cnVtZW50X29wdGlvbnMpCiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25z ICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotdm9pZAotSW5zdHJTdGFydChJbnN0cnVt ZW50YXRpb24gKmluc3RyKQorc3RhdGljIGlubGluZSB2b2lkCitJbnN0clN0YXJ0VGltZXIoSW5z dHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIpCi0JewotCQlp ZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwotCQllbHNlCi0JCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwotCX0KKwlBc3NlcnQoSU5TVFJfVElN RV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKTsKIAotCWlmIChpbnN0ci0+bmVlZF9zdGFjaykK LQkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5zdHIt PnN0YXJ0dGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQKIEluc3Ry U3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaW5zdHJfdGltZQllbmR0aW1l OwogCi0JLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVyIHdhcyByZXF1 ZXN0ZWQgKi8KLQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQll bG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJQXNzZXJ0KCFJ TlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpOwogCiAJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKQEAgLTg5LDYgKzgwLDE2IEBAIEluc3RyU3RvcFRp bWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+ c3RhcnR0aW1lKTsKIH0KIAordm9pZAorSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQoreworCWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdGFydFRpbWVyKGluc3RyKTsK KworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworfQor CiB2b2lkCiBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKQEAgLTM3Miw2NSAr MzczLDU3IEBAIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBp bnN0cnVtZW50X29wdGlvbnMpCiAJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0 cnVtZW50X29wdGlvbnMpOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLworLyogRW50 cnkgdG8gYSBwbGFuIG5vZGUuIElmIHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJOb2RlU2V0 dXBFeGVjUHJvY05vZGUuICovCiB2b2lkCiBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cikKIHsKIAlJbnN0clN0YXJ0KCZpbnN0ci0+aW5zdHIpOwogfQogCi0KLS8qIEV4 aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwotdm9pZAotSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCisvKgorICogVXBkYXRlcyB0aGUgbm9kZSBp bnN0cnVtZW50YXRpb24gdGltZSBjb3VudGVyLgorICoKKyAqIE5vdGUgdGhpcyBpcyBkaWZmZXJl bnQgZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKyAqIElu c3RyRW5kTG9vcC4gV2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNl IHdlIG5lZWQgdG8KKyAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVw bGUgaW4gZWFjaCBjeWNsZSwgYW5kIHRoZW4KKyAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdG9wTm9kZVRpbWVyKE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyKQogewotCWRvdWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxl Y291bnQ7CiAJaW5zdHJfdGltZQllbmR0aW1lOwogCi0JLyogY291bnQgdGhlIHJldHVybmVkIHR1 cGxlcyAqLwotCWluc3RyLT50dXBsZWNvdW50ICs9IG5UdXBsZXM7CisJQXNzZXJ0KCFJTlNUUl9U SU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSkpOworCisJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIs IGVuZHRpbWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVfU0VUX1pFUk8o aW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAKIAkvKgotCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5 IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkLgorCSAqIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxl IG9mIHRoaXMgY3ljbGU/CiAJICoKLQkgKiBOb3RlIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gSW5z dHJTdG9wIGJlY2F1c2UgdG90YWwgaXMgb25seSB1cGRhdGVkIGluCi0JICogSW5zdHJFbmRMb29w LiBXZSBuZWVkIHRoZSBzZXBhcmF0ZSBjb3VudGVyIHZhcmlhYmxlIGJlY2F1c2Ugd2UgbmVlZCB0 bwotCSAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVwbGUgaW4gZWFj aCBjeWNsZSwgYW5kIHRoZW4KLQkgKiBhY2N1bXVsYXRlIGl0IHRvZ2V0aGVyLgorCSAqIEluIGFz eW5jIG1vZGUsIGlmIHRoZSBwbGFuIG5vZGUgaGFkbid0IGVtaXR0ZWQgYW55IHR1cGxlcyBiZWZv cmUsIHRoaXMKKwkgKiBtaWdodCBiZSB0aGUgZmlyc3QgdHVwbGUKIAkgKi8KLQlpZiAoaW5zdHIt Pmluc3RyLm5lZWRfdGltZXIpCi0JewotCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5p bnN0ci5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcE5vZGUgY2FsbGVkIHdp dGhvdXQgc3RhcnQiKTsKLQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOwotCQlJ TlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5pbnN0 ci5zdGFydHRpbWUpOworCWlmICghaW5zdHItPnJ1bm5pbmcgfHwgKGluc3RyLT5hc3luY19tb2Rl ICYmIGluc3RyLT50dXBsZWNvdW50IDwgMS4wKSkKKwkJaW5zdHItPmZpcnN0dHVwbGUgPSBpbnN0 ci0+Y291bnRlcjsKK30KIAotCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0ci5zdGFy dHRpbWUpOwotCX0KKy8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZS4gSWYgeW91IG1vZGlmeSB0aGlz LCBjaGVjayBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZS4gKi8KK3ZvaWQKK0luc3RyU3RvcE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWlmIChp bnN0ci0+aW5zdHIubmVlZF90aW1lcikKKwkJSW5zdHJTdG9wTm9kZVRpbWVyKGluc3RyKTsKIAot CS8qCi0JICogT25seSBwb3AgdGhlIHN0YWNrLCBhY2N1bXVsYXRpb24gcnVucyBpbgotCSAqIEV4 ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KLQkgKi8KKwkvKiBPbmx5IHBvcCB0aGUgc3Rh Y2ssIGFjY3VtdWxhdGlvbiBydW5zIGluIEluc3RyRmluYWxpemVOb2RlICovCiAJaWYgKGluc3Ry LT5pbnN0ci5uZWVkX3N0YWNrKQogCQlJbnN0clBvcFN0YWNrKCZpbnN0ci0+aW5zdHIpOwogCi0J LyogSXMgdGhpcyB0aGUgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZT8gKi8KLQlpZiAoIWluc3Ry LT5ydW5uaW5nKQotCXsKLQkJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOwotCQlpbnN0ci0+Zmlyc3R0 dXBsZSA9IGluc3RyLT5jb3VudGVyOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBJbiBhc3lu YyBtb2RlLCBpZiB0aGUgcGxhbiBub2RlIGhhZG4ndCBlbWl0dGVkIGFueSB0dXBsZXMgYmVmb3Jl LAotCQkgKiB0aGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCB0dXBsZQotCQkgKi8KLQkJaWYgKGluc3Ry LT5hc3luY19tb2RlICYmIHNhdmVfdHVwbGVjb3VudCA8IDEuMCkKLQkJCWluc3RyLT5maXJzdHR1 cGxlID0gaW5zdHItPmNvdW50ZXI7Ci0JfQorCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKworCS8q IGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVw bGVzOwogfQogCiAvKiBVcGRhdGUgdHVwbGUgY291bnQgKi8KQEAgLTQ5NSw2ICs0ODgsOTkgQEAg SW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlv biAqYWRkKQogCQlJbnN0ckFjY3VtU3RhY2soJmRzdC0+aW5zdHIsICZhZGQtPmluc3RyKTsKIH0K IAorLyoKKyAqIFNwZWNpYWxpemVkIGhhbmRsaW5nIG9mIGluc3RydW1lbnRlZCBFeGVjUHJvY05v ZGUKKyAqCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyBFeGVj UHJvY05vZGVSZWFsIHdyYXBwZWQgaW4KKyAqIEluc3RyU3RhcnROb2RlIGFuZCBJbnN0clN0b3BO b2RlLCBidXQgYXZvaWQgdGhlIGNvbmRpdGlvbmFscyBpbiB0aGUgaG90IHBhdGgKKyAqIGJ5IGNo ZWNraW5nIHRoZSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyB3aGVuIHRoZSBFeGVjUHJvY05vZGUg cG9pbnRlciBnZXRzCisgKiBmaXJzdCBzZXQsIGFuZCB0aGVuIHVzaW5nIGEgc3BlY2lhbC1wdXJw b3NlIGZ1bmN0aW9uIGZvciBlYWNoLiBUaGlzIHJlc3VsdHMKKyAqIGluIGEgbW9yZSBvcHRpbWl6 ZWQgc2V0IG9mIGNvbXBpbGVkIGluc3RydWN0aW9ucy4KKyAqLworCisjaW5jbHVkZSAiZXhlY3V0 b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKworLyogU2ltcGxp ZmllZCBwb3A6IHJlc3RvcmUgc2F2ZWQgc3RhdGUgaW5zdGVhZCBvZiByZS1kZXJpdmluZyBmcm9t IGFycmF5ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2tUbyhJbnN0cnVtZW50 YXRpb24gKnByZXYpCit7CisJQXNzZXJ0KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlB c3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDEgPyBpbnN0cl9zdGFjay5lbnRyaWVzW2lu c3RyX3N0YWNrLnN0YWNrX3NpemUgLSAyXSA9PSBwcmV2IDogJmluc3RyX3RvcCA9PSBwcmV2KTsK KwlpbnN0cl9zdGFjay5zdGFja19zaXplLS07CisJaW5zdHJfc3RhY2suY3VycmVudCA9IHByZXY7 Cit9CisKK3N0YXRpYyBpbmxpbmUgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHIo UGxhblN0YXRlICpub2RlLCBib29sIG5lZWRfdGltZXIsIGJvb2wgbmVlZF9zdGFjaykKK3sKKwlO b2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmluc3RydW1lbnQ7CisJSW5zdHJ1bWVu dGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVz dWx0OworCisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKCZpbnN0ci0+aW5zdHIp OworCWlmIChuZWVkX3RpbWVyKQorCQlJbnN0clN0YXJ0VGltZXIoJmluc3RyLT5pbnN0cik7CisK KwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJaWYgKG5lZWRfdGlt ZXIpCisJCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CisJaWYgKG5lZWRfc3RhY2spCisJCUlu c3RyUG9wU3RhY2tUbyhwcmV2KTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1 cElzTnVsbChyZXN1bHQpKQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJG dWxsKFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwg dHJ1ZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJ bnN0clJvd3NTdGFja09ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05v ZGVJbnN0cihub2RlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq CitFeGVjUHJvY05vZGVJbnN0clJvd3NUaW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJl dHVybiBFeGVjUHJvY05vZGVJbnN0cihub2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBU dXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NPbmx5KFBsYW5TdGF0ZSAqbm9k ZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgZmFsc2UsIGZhbHNlKTsKK30K KworLyoKKyAqIFJldHVybnMgYW4gRXhlY1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBp bnN0cnVtZW50YXRpb24gY2FsbHMsCisgKiB0YWlsb3JlZCB0byB0aGUgaW5zdHJ1bWVudGF0aW9u IG9wdGlvbnMgZW5hYmxlZCBmb3IgdGhlIG5vZGUuCisgKi8KK0V4ZWNQcm9jTm9kZU10ZAorSW5z dHJOb2RlU2V0dXBFeGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJ Ym9vbAkJbmVlZF90aW1lciA9IGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyOworCWJvb2wJCW5lZWRf c3RhY2sgPSBpbnN0ci0+aW5zdHIubmVlZF9zdGFjazsKKworCWlmIChuZWVkX3RpbWVyICYmIG5l ZWRfc3RhY2spCisJCXJldHVybiBFeGVjUHJvY05vZGVJbnN0ckZ1bGw7CisJZWxzZSBpZiAobmVl ZF9zdGFjaykKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c1N0YWNrT25seTsKKwllbHNl IGlmIChuZWVkX3RpbWVyKQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzVGltZXJPbmx5 OworCWVsc2UKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c09ubHk7Cit9CisKIC8qIFRy aWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICoKIEluc3RyQWxsb2NUcmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBu KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGIzMGExNWJjMDI3Li5jYWQwNTJhM2E5 MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBleHRl cm4gdm9pZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRh dGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpOwogCit0eXBlZGVmIHN0cnVjdCBU dXBsZVRhYmxlU2xvdCBUdXBsZVRhYmxlU2xvdDsKK3R5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZSBQ bGFuU3RhdGU7Cit0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNQcm9jTm9kZU10ZCkgKFBs YW5TdGF0ZSAqcHN0YXRlKTsKK2V4dGVybiBFeGVjUHJvY05vZGVNdGQgSW5zdHJOb2RlU2V0dXBF eGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCiBleHRlcm4gVHJpZ2dl ckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0ciwgaW50IG4pOwogZXh0ZXJuIHZvaWQgSW5zdHJTdGFydFRyaWdnZXIoUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0ciwKIAkJCQkJCQkgIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRn aW5zdHIpOwotLSAKMi40Ny4xCgo= --0000000000008dc0d4064e9f4706 Content-Type: application/x-patch; name="v12-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Disposition: attachment; filename="v12-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnk3rf1k7 RnJvbSBlMGFiZjk1MDUyMjNiMDBkYzM2MWM5MTU2NzY5ODc0MzZkMTc3NTk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMiA4LzldIElu ZGV4IHNjYW5zOiBTaG93IHRhYmxlIGJ1ZmZlciBhY2Nlc3NlcyBzZXBhcmF0ZWx5IGluCiBFWFBM QUlOIEFOQUxZWkUKClRoaXMgc2V0cyB1cCBhIHNlcGFyYXRlIGluc3RydW1lbnRhdGlvbiBzdGFj ayB0aGF0IGlzIHVzZWQgd2hpbHN0IGFuCkluZGV4IFNjYW4gb3IgSW5kZXggT25seSBTY2FuIGRv ZXMgc2Nhbm5pbmcgb24gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZSBkdWUKdG8gYWRkaXRpb25hbCBk YXRhIGJlaW5nIG5lZWRlZC4KCkVYUExBSU4gQU5BTFlaRSB3aWxsIG5vdyBzaG93ICJUYWJsZSBC dWZmZXJzIiB0aGF0IHJlcHJlc2VudCBzdWNoIGFjdGl2aXR5LgpUaGUgYWN0aXZpdHkgaXMgYWxz byBpbmNsdWRlZCBpbiByZWd1bGFyICJCdWZmZXJzIiB0b2dldGhlciB3aXRoIGluZGV4CmFjdGl2 aXR5IGFuZCB0aGF0IG9mIGFueSBjaGlsZCBub2Rlcy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6 ZWwuZGU+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BreHJt cEVDelZGcGVlRUVIREdlNnU2MjVzJTJCWWttVnY1LWd3M0xfTkRTZmJpQSU0MG1haWwuZ21haWwu Y29tI2NiNTgzYTA4ZThlMDk2YWExZjA5M2JiMTc4OTA2MTczCi0tLQogZG9jL3NyYy9zZ21sL3Bl cmZvcm0uc2dtbCAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQogZG9jL3NyYy9zZ21sL3JlZi9l eHBsYWluLnNnbWwgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICB8ICA0NyArKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jICAgICAgICB8ICA1MyArKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyNyArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKystLS0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICAgIHwgICA1ICsKIDggZmlsZXMgY2hh bmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCmluZGV4 IDYwNGU4NTc4YThkLi5kMjhmNGYyMjUzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BlcmZv cm0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCkBAIC03MzQsNiArNzM0LDcg QEAgV0hFUkUgdDEudW5pcXVlMSAmbHQ7IDEwIEFORCB0MS51bmlxdWUyID0gdDIudW5pcXVlMjsK ICAgIC0mZ3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsyX3VuaXF1ZTIgb24gdGVuazIgdDIgIChj b3N0PTAuMjkuLjcuOTAgcm93cz0xIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDAzLi4wLjAw MyByb3dzPTEuMDAgbG9vcHM9MTApCiAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IHQx LnVuaXF1ZTIpCiAgICAgICAgICBJbmRleCBTZWFyY2hlczogMTAKKyAgICAgICAgIFRhYmxlIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9MTAKICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MjQgcmVh ZD02CiAgUGxhbm5pbmc6CiAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE1IGRpcnRpZWQ9OQpAQCAt MTAwNSw3ICsxMDA2LDggQEAgRVhQTEFJTiBBTkFMWVpFIFNFTEVDVCAqIEZST00gcG9seWdvbl90 YmwgV0hFUkUgZjEgQCZndDsgcG9seWdvbiAnKDAuNSwyLjApJzsKICAgIEluZGV4IENvbmQ6IChm MSBAJmd0OyAnKCgwLjUsMikpJzo6cG9seWdvbikKICAgIFJvd3MgUmVtb3ZlZCBieSBJbmRleCBS ZWNoZWNrOiAxCiAgICBJbmRleCBTZWFyY2hlczogMQotICAgQnVmZmVyczogc2hhcmVkIGhpdD0x CisgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MgogIFBsYW5uaW5nIFRpbWU6IDAuMDM5IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAuMDk4IG1zCiA8 L3NjcmVlbj4KQEAgLTEwMTQsNyArMTAxNiw5IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBG Uk9NIHBvbHlnb25fdGJsIFdIRVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4wKSc7CiAgICAg dGhlbiByZWplY3RlZCBieSBhIHJlY2hlY2sgb2YgdGhlIGluZGV4IGNvbmRpdGlvbi4gIFRoaXMg aGFwcGVucyBiZWNhdXNlIGEKICAgICBHaVNUIGluZGV4IGlzIDxxdW90ZT5sb3NzeTwvcXVvdGU+ IGZvciBwb2x5Z29uIGNvbnRhaW5tZW50IHRlc3RzOiBpdCBhY3R1YWxseQogICAgIHJldHVybnMg dGhlIHJvd3Mgd2l0aCBwb2x5Z29ucyB0aGF0IG92ZXJsYXAgdGhlIHRhcmdldCwgYW5kIHRoZW4g d2UgaGF2ZQotICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9uIHRob3NlIHJv d3MuCisgICAgdG8gZG8gdGhlIGV4YWN0IGNvbnRhaW5tZW50IHRlc3Qgb24gdGhvc2Ugcm93cy4g VGhlIDxsaXRlcmFsPlRhYmxlIEJ1ZmZlcnM8L2xpdGVyYWw+CisgICAgY291bnRzIGluZGljYXRl IGhvdyBtYW55IG9wZXJhdGlvbnMgd2VyZSBwZXJmb3JtZWQgb24gdGhlIHRhYmxlIGluc3RlYWQg b2YKKyAgICB0aGUgaW5kZXguIFRoaXMgbnVtYmVyIGlzIGluY2x1ZGVkIGluIHRoZSA8bGl0ZXJh bD5CdWZmZXJzPC9saXRlcmFsPiBjb3VudHMuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAt MTIwMywxMyArMTIwNywxNCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSB0ZW5rMSBX SEVSRSB1bmlxdWUxICZsdDsgMTAwIEFORCB1bmlxdWUyICZndDsgOTAwMAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4K IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0mendzcDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICBMaW1pdCAgKGNvc3Q9MC4yOS4uMTQuMzMgcm93cz0yIHdp ZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDUxLi4wLjA3MSByb3dzPTIuMDAgbG9vcHM9MSkKLSAg IEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICAgIC0m Z3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTIgb24gdGVuazEgIChjb3N0PTAuMjku LjcwLjUwIHJvd3M9MTAgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4wNTEuLjAuMDcwIHJvd3M9 Mi4wMCBsb29wcz0xKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgJmd0OyA5MDAwKQog ICAgICAgICAgRmlsdGVyOiAodW5pcXVlMSAmbHQ7IDEwMCkKICAgICAgICAgIFJvd3MgUmVtb3Zl ZCBieSBGaWx0ZXI6IDI4NwogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKLSAgICAgICAgIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgICAgICAgIFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MTEKKyAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICBQbGFubmluZyBUaW1lOiAwLjA3 NyBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA4NiBtcwogPC9zY3JlZW4+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5z Z21sCmluZGV4IDViOGI1MjE4MDJlLi43MTA3MDczNmFjYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwK QEAgLTUwOSw2ICs1MDksNyBAQCBFWFBMQUlOIEFOQUxZWkUgRVhFQ1VURSBxdWVyeSgxMDAsIDIw MCk7CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZXN0X3BrZXkgb24gdGVzdCAgKGNvc3Q9 MC4yOS4uMTAuMjcgcm93cz05OSB3aWR0aD04KSAoYWN0dWFsIHRpbWU9MC4wMDkuLjAuMDI1IHJv d3M9OTkuMDAgbG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICgoaWQgJmd0OyAxMDApIEFO RCAoaWQgJmx0OyAyMDApKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKKyAgICAgICAgIFRh YmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQogICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD00 CiAgUGxhbm5pbmcgVGltZTogMC4yNDQgbXMKICBFeGVjdXRpb24gVGltZTogMC4wNzMgbXMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwppbmRleCBkYzVlNjM5NTViYy4uZWVmMzQzYTlkOTcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBzaG93X2luc3Ry dW1lbnRhdGlvbl9jb3VudChjb25zdCBjaGFyICpxbGFiZWwsIGludCB3aGljaCwKIHN0YXRpYyB2 b2lkIHNob3dfZm9yZWlnbnNjYW5faW5mbyhGb3JlaWduU2NhblN0YXRlICpmc3N0YXRlLCBFeHBs YWluU3RhdGUgKmVzKTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBsYWluX2dldF9pbmRleF9uYW1l KE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0 ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7Ci1zdGF0aWMgdm9pZCBzaG93X2J1ZmZl cl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOworc3Rh dGljIHZvaWQgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVy VXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0aXRsZSk7CiBzdGF0aWMgdm9pZCBzaG93X3dhbF91 c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZv aWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0 IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKQEAgLTYxMCw3ICs2MTAsNyBA QCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCX0KIAogCQlpZiAoYnVmdXNhZ2UpCi0JCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgYnVmdXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVz YWdlLCBOVUxMKTsKIAogCQlpZiAobWVtX2NvdW50ZXJzKQogCQkJc2hvd19tZW1vcnlfY291bnRl cnMoZXMsIG1lbV9jb3VudGVycyk7CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBFeHBsYWluUHJpbnRT ZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykKIAkJ aWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIu YnVmdXNhZ2UpKQogCQl7CiAJCQllcy0+aW5kZW50Kys7Ci0JCQlzaG93X2J1ZmZlcl91c2FnZShl cywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAm bWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJZXMtPmluZGVudC0tOwogCQl9CiAJ fQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0 ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCQkJCQkJCUJZVEVTX1RPX0tJTE9C WVRFUyhtZXRyaWNzLT5ieXRlc1NlbnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkZv cm1hdCIsIGZvcm1hdCwgZXMpOwogCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93X2J1ZmZlcl91 c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdl KGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCX0KIAogCUV4cGxhaW5DbG9z ZUdyb3VwKCJTZXJpYWxpemF0aW9uIiwgIlNlcmlhbGl6YXRpb24iLCB0cnVlLCBlcyk7CkBAIC0x OTY5LDYgKzE5NjksOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQg YnkgRmlsdGVyIiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJCXNob3dfaW5k ZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlpZiAoZXMtPmJ1ZmZlcnMgJiYg cGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmKChJbmRl eFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIuYnVm dXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9JbmRleE9ubHlTY2FuOgogCQkJ c2hvd19zY2FuX3F1YWwoKChJbmRleE9ubHlTY2FuICopIHBsYW4pLT5pbmRleHF1YWwsCkBAIC0x OTg2LDYgKzE5ODksOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJIZWFwIEZldGNoZXMiLCBOVUxM LAogCQkJCQkJCQkJIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+bnR1cGxlczIsIDAsIGVzKTsKIAkJ CXNob3dfaW5kZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlpZiAoZXMtPmJ1 ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVz LCAmKChJbmRleE9ubHlTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aW9zc19JbnN0cnVtZW50LT50 YWJsZV9pbnN0ci5idWZ1c2FnZSwgIlRhYmxlIik7CiAJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1h cEluZGV4U2NhbjoKIAkJCXNob3dfc2Nhbl9xdWFsKCgoQml0bWFwSW5kZXhTY2FuICopIHBsYW4p LT5pbmRleHF1YWxvcmlnLApAQCAtMjI4Nyw3ICsyMjkzLDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0 YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIFNob3cgYnVmZmVyL1dBTCB1 c2FnZSAqLwogCWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCi0JCXNo b3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2Fn ZSk7CisJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0 ci5idWZ1c2FnZSwgTlVMTCk7CiAJaWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50 KQogCQlzaG93X3dhbF91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2Fs dXNhZ2UpOwogCkBAIC0yMzA2LDcgKzIzMTIsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCiAJCQlFeHBsYWluT3BlbldvcmtlcihuLCBlcyk7 CiAJCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVt ZW50LT5pbnN0ci5idWZ1c2FnZSk7CisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVt ZW50LT5pbnN0ci5idWZ1c2FnZSwgTlVMTCk7CiAJCQlpZiAoZXMtPndhbCkKIAkJCQlzaG93X3dh bF91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAkJCUV4cGxhaW5DbG9z ZVdvcmtlcihuLCBlcyk7CkBAIC00MTA2LDcgKzQxMTIsNyBAQCBwZWVrX2J1ZmZlcl91c2FnZShF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAgKiBTaG93IGJ1ZmZl ciB1c2FnZSBkZXRhaWxzLiAgVGhpcyBiZXR0ZXIgYmUgc3luYyB3aXRoIHBlZWtfYnVmZmVyX3Vz YWdlLgogICovCiBzdGF0aWMgdm9pZAotc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQorc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0 YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0aXRsZSkKIHsK IAlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKQEAgLTQxMzEsNiAr NDEzNyw4IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZl clVzYWdlICp1c2FnZSkKIAkJaWYgKGhhc19zaGFyZWQgfHwgaGFzX2xvY2FsIHx8IGhhc190ZW1w KQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlpZiAodGl0bGUpCisJCQkJYXBw ZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0bGUpOwogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhlcy0+c3RyLCAiQnVmZmVyczoiKTsKIAogCQkJaWYgKGhhc19zaGFyZWQpCkBAIC00 MTg2LDYgKzQxOTQsOCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hhcmVkX3RpbWluZyB8fCBoYXNfbG9j YWxfdGltaW5nIHx8IGhhc190ZW1wX3RpbWluZykKIAkJewogCQkJRXhwbGFpbkluZGVudFRleHQo ZXMpOworCQkJaWYgKHRpdGxlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzICIs IHRpdGxlKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkkvTyBUaW1pbmdz OiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZF90aW1pbmcpCkBAIC00MjI3LDYgKzQyMzcsMTQgQEAg c2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVz YWdlKQogCX0KIAllbHNlCiAJeworCQljaGFyCSAgICpidWZmZXJzX3RpdGxlID0gTlVMTDsKKwor CQlpZiAodGl0bGUpCisJCXsKKwkJCWJ1ZmZlcnNfdGl0bGUgPSBwc3ByaW50ZigiJXMgQnVmZmVy cyIsIHRpdGxlKTsKKwkJCUV4cGxhaW5PcGVuR3JvdXAoYnVmZmVyc190aXRsZSwgYnVmZmVyc190 aXRsZSwgdHJ1ZSwgZXMpOworCQl9CisKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVk IEhpdCBCbG9ja3MiLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRfYmxrc19oaXQsIGVz KTsKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVkIFJlYWQgQmxvY2tzIiwgTlVMTCwK QEAgLTQyNDcsOCArNDI2NSwyMCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCQkJCQkJICAgdXNhZ2UtPnRlbXBfYmxrc19y ZWFkLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRlbXAgV3JpdHRlbiBCbG9ja3Mi LCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbiwgZXMpOworCisJCWlm IChidWZmZXJzX3RpdGxlKQorCQkJRXhwbGFpbkNsb3NlR3JvdXAoYnVmZmVyc190aXRsZSwgYnVm ZmVyc190aXRsZSwgdHJ1ZSwgZXMpOworCiAJCWlmICh0cmFja19pb190aW1pbmcpCiAJCXsKKwkJ CWNoYXIJICAgKnRpbWluZ3NfdGl0bGUgPSBOVUxMOworCisJCQlpZiAodGl0bGUpCisJCQl7CisJ CQkJdGltaW5nc190aXRsZSA9IHBzcHJpbnRmKCIlcyBJL08gVGltaW5ncyIsIHRpdGxlKTsKKwkJ CQlFeHBsYWluT3Blbkdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUsIHRydWUsIGVz KTsKKwkJCX0KKwogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlNoYXJlZCBJL08gUmVhZCBUaW1l IiwgIm1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRf YmxrX3JlYWRfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CkBAIC00MjY3LDYgKzQyOTcsOSBAQCBz aG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNh Z2UpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGVtcCBJL08gV3JpdGUgVGltZSIsICJtcyIs CiAJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfd3JpdGVf dGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CisKKwkJCWlmICh0aW1pbmdzX3RpdGxlKQorCQkJCUV4 cGxhaW5DbG9zZUdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUsIHRydWUsIGVzKTsK IAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggOWY1Njk4MDYz ZjAuLjcxYTg5N2YyYjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDE4 LDYgKzQxOCwyOSBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NOb2RlKGVzdGF0ZS0+ ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBhYmxlKTsKIAorCS8q CisJICogSW5kZXhTY2FuIC8gSW5kZXhPbmx5U2NhbiB0cmFjayB0YWJsZSBhbmQgaW5kZXggYWNj ZXNzIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNvbGxlY3Qg dGltaW5nIGZvciB0aGVtIChldmVuIGlmIGVuYWJsZWQpLCBzaW5jZQorCSAqIHdlIGRvbid0IG5l ZWQgaXQsIGFuZCBleGVjdXRvciBub2RlcyBjYWxsIEluc3RyUHVzaFN0YWNrIC8KKwkgKiBJbnN0 clBvcFN0YWNrIChpbnN0ZWFkIG9mIHRoZSBmdWxsIEluc3RyTm9kZSopIHRvIHJlZHVjZSBvdmVy aGVhZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYmIChlc3RhdGUtPmVzX2lu c3RydW1lbnQtPmluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfQlVGRkVSUykgIT0gMCkK Kwl7CisJCWlmIChJc0EocmVzdWx0LCBJbmRleFNjYW5TdGF0ZSkpCisJCXsKKwkJCUluZGV4U2Nh blN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRleFNjYW5TdGF0ZSwgcmVzdWx0KTsKKworCQkJSW5z dHJJbml0T3B0aW9ucygmaXNzLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsIElOU1RSVU1F TlRfQlVGRkVSUyk7CisJCX0KKwkJZWxzZSBpZiAoSXNBKHJlc3VsdCwgSW5kZXhPbmx5U2NhblN0 YXRlKSkKKwkJeworCQkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUoSW5kZXhP bmx5U2NhblN0YXRlLCByZXN1bHQpOworCisJCQlJbnN0ckluaXRPcHRpb25zKCZpb3NzLT5pb3Nz X0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCQl9CisJfQor CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODM3LDggKzg2MCwyNCBAQCBFeGVjUmVtZW1iZXJO b2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQp CiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChub2RlLT5pbnN0cnVtZW50KQorCXsKIAkJSW5zdHJR dWVyeVJlbWVtYmVyQ2hpbGQocGFyZW50LCAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOwogCisJ CS8qIEluZGV4U2Nhbi9JbmRleE9ubHlTY2FuIGhhdmUgYSBzZXBhcmF0ZSBlbnRyeSB0byB0cmFj ayB0YWJsZSBhY2Nlc3MgKi8KKwkJaWYgKElzQShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJCXsK KwkJCUluZGV4U2NhblN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRleFNjYW5TdGF0ZSwgbm9kZSk7 CisKKwkJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHBhcmVudCwgJmlzcy0+aXNzX0luc3RydW1l bnQtPnRhYmxlX2luc3RyKTsKKwkJfQorCQllbHNlIGlmIChJc0Eobm9kZSwgSW5kZXhPbmx5U2Nh blN0YXRlKSkKKwkJeworCQkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUoSW5k ZXhPbmx5U2NhblN0YXRlLCBub2RlKTsKKworCQkJSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQocGFy ZW50LCAmaW9zcy0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CisJCX0KKwl9CisKIAly ZXR1cm4gcGxhbnN0YXRlX3RyZWVfd2Fsa2VyKG5vZGUsIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVt ZW50YXRpb25fd2Fsa2VyLCBjb250ZXh0KTsKIH0KIApAQCAtODgwLDYgKzkxOSwyMCBAQCBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpCiAJaWYgKCFub2RlLT5pbnN0cnVtZW50KQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KiBJbmRleFNjYW4vSW5kZXhPbmx5U2NhbiBoYXZlIGEgc2VwYXJhdGUgZW50cnkgdG8gdHJhY2sg dGFibGUgYWNjZXNzICovCisJaWYgKElzQShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJeworCQlJ bmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIG5vZGUpOworCisJ CUluc3RyRmluYWxpemVDaGlsZCgmaXNzLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZu b2RlLT5pbnN0cnVtZW50LT5pbnN0cik7CisJfQorCWVsc2UgaWYgKElzQShub2RlLCBJbmRleE9u bHlTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUo SW5kZXhPbmx5U2NhblN0YXRlLCBub2RlKTsKKworCQlJbnN0ckZpbmFsaXplQ2hpbGQoJmlvc3Mt Pmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZub2RlLT5pbnN0cnVtZW50LT5pbnN0cik7 CisJfQorCiAJSW5zdHJGaW5hbGl6ZUNoaWxkKCZub2RlLT5pbnN0cnVtZW50LT5pbnN0ciwgcGFy ZW50KTsKIAogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYwppbmRleCA3MGM1NWVlNmQ2MS4uNjNlMjRhMGJjZDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTI3Niw3ICsyNzYsNyBAQCBFeGVj SW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBiaXRtYXAgaW5k ZXggc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCkKLQkJ aW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhTY2FuSW5z dHJ1bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50ID0gTWVtb3J5Q29u dGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RyX2N4dCwgc2l6ZW9mKElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbikpOwogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24u ICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3Rh dGUpLT5yZWxsb2NrbW9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CmluZGV4IGRlNjE1NGZkNTQxLi4wZGY4MjhlM2VkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC02Nyw2ICs2Nyw3IEBAIEluZGV4T25seU5leHQoSW5kZXhP bmx5U2NhblN0YXRlICpub2RlKQogCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CiAJVHVwbGVUYWJs ZVNsb3QgKnNsb3Q7CiAJSXRlbVBvaW50ZXIgdGlkOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVf aW5zdHIgPSBOVUxMOwogCiAJLyoKIAkgKiBleHRyYWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBm cm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtODMsNiArODQsOSBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAllY29udGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250 ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90OwogCisJaWYgKG5vZGUtPmlv c3NfSW5zdHJ1bWVudCAmJiBub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRf c3RhY2spCisJCXRhYmxlX2luc3RyID0gJm5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5z dHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CiAJCS8qCkBAIC0xNjUsMTEgKzE2OSwy MiBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQlJdGVt UG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCksCiAJCQkJCQkJJm5vZGUtPmlvc3NfVk1CdWZmZXIp KQogCQl7CisJCQlib29sCQlmb3VuZDsKKwogCQkJLyoKIAkJCSAqIFJhdHMsIHdlIGhhdmUgdG8g dmlzaXQgdGhlIGhlYXAgdG8gY2hlY2sgdmlzaWJpbGl0eS4KIAkJCSAqLwogCQkJSW5zdHJDb3Vu dFR1cGxlczIobm9kZSwgMSk7Ci0JCQlpZiAoIWluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5v ZGUtPmlvc3NfVGFibGVTbG90KSkKKworCQkJaWYgKHRhYmxlX2luc3RyKQorCQkJCUluc3RyUHVz aFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJZm91bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5k ZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCk7CisKKwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJ bnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJaWYgKCFmb3VuZCkKIAkJCQljb250aW51 ZTsJCS8qIG5vIHZpc2libGUgdHVwbGUsIHRyeSBuZXh0IGluZGV4IGVudHJ5ICovCiAKIAkJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90KTsKQEAgLTQzNiw2ICs0NTEsNyBAQCBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCSAqIHdoaWNo IHdpbGwgaGF2ZSBhIG5ldyBJbmRleE9ubHlTY2FuU3RhdGUgYW5kIHplcm9lZCBzdGF0cy4KIAkJ ICovCiAJCXdpbnN0cnVtZW50LT5uc2VhcmNoZXMgKz0gbm9kZS0+aW9zc19JbnN0cnVtZW50LT5u c2VhcmNoZXM7CisJCUluc3RyQWNjdW1TdGFjaygmd2luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAm bm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CiAJfQogCiAJLyoKQEAgLTYxMCw3 ICs2MjYsNyBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5zdHJ1bWVudGF0aW9uIG9m IGluZGV4LW9ubHkgc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCkKLQkJaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5k ZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50ID0g TWVtb3J5Q29udGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RyX2N4dCwg c2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbikpOwogCiAJLyogT3BlbiB0aGUgaW5kZXgg cmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJl bGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKQEAgLTg5OSw0ICs5MTUsMTEgQEAgRXhlY0luZGV4 T25seVNjYW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAJCVNoYXJlZEluZm8tPm51bV93b3JrZXJzICogc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRh dGlvbik7CiAJbm9kZS0+aW9zc19TaGFyZWRJbmZvID0gcGFsbG9jKHNpemUpOwogCW1lbWNweShu b2RlLT5pb3NzX1NoYXJlZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRl IHdvcmtlcnMnIHRhYmxlIGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLwor CWZvciAoaW50IGkgPSAwOyBpIDwgbm9kZS0+aW9zc19TaGFyZWRJbmZvLT5udW1fd29ya2Vyczsg aSsrKQorCXsKKwkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxl X2luc3RyLAorCQkJCQkJJm5vZGUtPmlvc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0udGFi bGVfaW5zdHIpOworCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAx NjIwZDE0NjA3MS4uZDMyYTU5ZmI2MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2Fu LmMKQEAgLTg1LDcgKzg1LDEwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlF eHByQ29udGV4dCAqZWNvbnRleHQ7CiAJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAJSW5kZXhT Y2FuRGVzYyBzY2FuZGVzYzsKKwlJdGVtUG9pbnRlciB0aWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJYm9vbAkJZm91bmQ7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJsZV9pbnN0ciA9IE5VTEw7 CiAKIAkvKgogCSAqIGV4dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2Nh biBub2RlCkBAIC0xMDIsNiArMTA1LDkgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2Rl KQogCWVjb250ZXh0ID0gbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9k ZS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3Ry ID0gJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9 PSBOVUxMKQogCXsKIAkJLyoKQEAgLTEzMiw4ICsxMzgsMjQgQEAgSW5kZXhOZXh0KEluZGV4U2Nh blN0YXRlICpub2RlKQogCS8qCiAJICogb2ssIG5vdyB0aGF0IHdlIGhhdmUgd2hhdCB3ZSBuZWVk LCBmZXRjaCB0aGUgbmV4dCB0dXBsZS4KIAkgKi8KLQl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90 KHNjYW5kZXNjLCBkaXJlY3Rpb24sIHNsb3QpKQorCXdoaWxlICgodGlkID0gaW5kZXhfZ2V0bmV4 dF90aWQoc2NhbmRlc2MsIGRpcmVjdGlvbikpICE9IE5VTEwpCiAJeworCQlpZiAodGFibGVfaW5z dHIpCisJCQlJbnN0clB1c2hTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJZm9yICg7OykKKwkJewor CQkJZm91bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBzbG90KTsKKwkJCWlmIChmb3Vu ZCB8fCAhc2NhbmRlc2MtPnhzX2hlYXBfY29udGludWUpCisJCQkJYnJlYWs7CisJCX0KKworCQlp ZiAodGFibGVfaW5zdHIpCisJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQlpZiAo dW5saWtlbHkoIWZvdW5kKSkKKwkJCWNvbnRpbnVlOworCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKIAkJLyoKQEAgLTE4MSw2ICsyMDMsNyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRl eFNjYW5TdGF0ZSAqbm9kZSkKIAlEYXR1bQkgICAqbGFzdGZldGNoZWRfdmFsczsKIAlib29sCSAg ICpsYXN0ZmV0Y2hlZF9udWxsczsKIAlpbnQJCQljbXA7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJs ZV9pbnN0ciA9IE5VTEw7CiAKIAllc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKIApAQCAtMjAw LDYgKzIyMyw5IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpub2RlKQog CWVjb250ZXh0ID0gbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9kZS0+ aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3RyID0g Jm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9PSBO VUxMKQogCXsKIAkJLyoKQEAgLTI2MywzNiArMjg5LDY3IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVy KEluZGV4U2NhblN0YXRlICpub2RlKQogCQl9CiAKIAkJLyoKLQkJICogRmV0Y2ggbmV4dCB0dXBs ZSBmcm9tIHRoZSBpbmRleC4KKwkJICogRmV0Y2ggbmV4dCB2YWxpZCB0dXBsZSBmcm9tIHRoZSBp bmRleC4KIAkJICovCi1uZXh0X2luZGV4dHVwbGU6Ci0JCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90 KHNjYW5kZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCisJCWZvciAoOzspCiAJCXsK KwkJCUl0ZW1Qb2ludGVyIHRpZDsKKwkJCWJvb2wJCWZvdW5kOworCisJCQkvKiBUaW1lIHRvIGZl dGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLworCQkJdGlkID0gaW5kZXhfZ2V0bmV4 dF90aWQoc2NhbmRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uKTsKKworCQkJLyogSWYgd2UncmUg b3V0IG9mIGluZGV4IGVudHJpZXMsIHdlJ3JlIGRvbmUgKi8KKwkJCWlmICh0aWQgPT0gTlVMTCkK KwkJCXsKKwkJCQkvKgorCQkJCSAqIE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0 IHdlIHN0aWxsIG5lZWQgdG8gZHJhaW4KKwkJCQkgKiBhbnkgcmVtYWluaW5nIHR1cGxlcyBmcm9t IHRoZSBxdWV1ZSBiZWZvcmUgd2UncmUgZG9uZS4KKwkJCQkgKi8KKwkJCQlub2RlLT5pc3NfUmVh Y2hlZEVuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCUFzc2VydChJdGVtUG9pbnRl ckVxdWFscyh0aWQsICZzY2FuZGVzYy0+eHNfaGVhcHRpZCkpOworCisJCQlpZiAodGFibGVfaW5z dHIpCisJCQkJSW5zdHJQdXNoU3RhY2sodGFibGVfaW5zdHIpOworCisJCQlmb3IgKDs7KQorCQkJ eworCQkJCWZvdW5kID0gaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCk7CisJCQkJaWYg KGZvdW5kIHx8ICFzY2FuZGVzYy0+eHNfaGVhcF9jb250aW51ZSkKKwkJCQkJYnJlYWs7CisJCQl9 CisKKwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsK KwogCQkJLyoKLQkJCSAqIE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0IHdlIHN0 aWxsIG5lZWQgdG8gZHJhaW4gYW55Ci0JCQkgKiByZW1haW5pbmcgdHVwbGVzIGZyb20gdGhlIHF1 ZXVlIGJlZm9yZSB3ZSdyZSBkb25lLgorCQkJICogSWYgdGhlIGluZGV4IHdhcyBsb3NzeSwgd2Ug aGF2ZSB0byByZWNoZWNrIHRoZSBpbmRleCBxdWFscyBhbmQKKwkJCSAqIE9SREVSIEJZIGV4cHJl c3Npb25zIHVzaW5nIHRoZSBmZXRjaGVkIHR1cGxlLgogCQkJICovCi0JCQlub2RlLT5pc3NfUmVh Y2hlZEVuZCA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSBp bmRleCB3YXMgbG9zc3ksIHdlIGhhdmUgdG8gcmVjaGVjayB0aGUgaW5kZXggcXVhbHMgYW5kCi0J CSAqIE9SREVSIEJZIGV4cHJlc3Npb25zIHVzaW5nIHRoZSBmZXRjaGVkIHR1cGxlLgotCQkgKi8K LQkJaWYgKHNjYW5kZXNjLT54c19yZWNoZWNrKQotCQl7Ci0JCQllY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGUgPSBzbG90OwotCQkJaWYgKCFFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9y aWcsIGVjb250ZXh0KSkKKwkJCWlmIChmb3VuZCAmJiBzY2FuZGVzYy0+eHNfcmVjaGVjaykKIAkJ CXsKLQkJCQkvKiBGYWlscyByZWNoZWNrLCBzbyBkcm9wIGl0IGFuZCBsb29wIGJhY2sgZm9yIGFu b3RoZXIgKi8KLQkJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOwotCQkJCS8qIGFsbG93 IHRoaXMgbG9vcCB0byBiZSBjYW5jZWxsYWJsZSAqLwotCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7Ci0JCQkJZ290byBuZXh0X2luZGV4dHVwbGU7CisJCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlID0gc2xvdDsKKwkJCQlpZiAoIUV4ZWNRdWFsQW5kUmVzZXQobm9kZS0+aW5kZXhxdWFsb3Jp ZywgZWNvbnRleHQpKQorCQkJCXsKKwkJCQkJLyogRmFpbHMgcmVjaGVjaywgc28gZHJvcCBpdCBh bmQgbG9vcCBiYWNrIGZvciBhbm90aGVyICovCisJCQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9k ZSwgMSk7CisJCQkJCS8qIGFsbG93IHRoaXMgbG9vcCB0byBiZSBjYW5jZWxsYWJsZSAqLworCQkJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQl9CisK KwkJCWlmIChmb3VuZCkKKwkJCQlicmVhazsKIAkJfQogCisJCS8qIE5vIG1vcmUgaW5kZXggZW50 cmllcywgcmUtcnVuIHRvIGNsZWFyIHRoZSByZW9yZGVyIHF1ZXVlICovCisJCWlmIChub2RlLT5p c3NfUmVhY2hlZEVuZCkKKwkJCWNvbnRpbnVlOworCiAJCWlmIChzY2FuZGVzYy0+eHNfcmVjaGVj a29yZGVyYnkpCiAJCXsKIAkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CkBAIC04 MTgsNiArODc1LDcgQEAgRXhlY0VuZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJ ICogd2hpY2ggd2lsbCBoYXZlIGEgbmV3IEluZGV4T25seVNjYW5TdGF0ZSBhbmQgemVyb2VkIHN0 YXRzLgogCQkgKi8KIAkJd2luc3RydW1lbnQtPm5zZWFyY2hlcyArPSBub2RlLT5pc3NfSW5zdHJ1 bWVudC0+bnNlYXJjaGVzOworCQlJbnN0ckFjY3VtU3RhY2soJndpbnN0cnVtZW50LT50YWJsZV9p bnN0ciwgJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CiAJfQogCiAJLyoKQEAg LTk4MCw3ICsxMDM4LDcgQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBpbnN0cnVtZW50YXRpb24gb2Yg aW5kZXggc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCkK LQkJaW5kZXhzdGF0ZS0+aXNzX0luc3RydW1lbnQgPSBwYWxsb2MwX29iamVjdChJbmRleFNjYW5J bnN0cnVtZW50YXRpb24pOworCQlpbmRleHN0YXRlLT5pc3NfSW5zdHJ1bWVudCA9IE1lbW9yeUNv bnRleHRBbGxvY1plcm8oZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0cl9jeHQsIHNpemVvZihJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24pKTsKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9u LiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0 YXRlKS0+cmVsbG9ja21vZGU7CkBAIC0xODM0LDQgKzE4OTIsMTEgQEAgRXhlY0luZGV4U2NhblJl dHJpZXZlSW5zdHJ1bWVudGF0aW9uKEluZGV4U2NhblN0YXRlICpub2RlKQogCQlTaGFyZWRJbmZv LT5udW1fd29ya2VycyAqIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOwogCW5vZGUt Pmlzc19TaGFyZWRJbmZvID0gcGFsbG9jKHNpemUpOwogCW1lbWNweShub2RlLT5pc3NfU2hhcmVk SW5mbywgU2hhcmVkSW5mbywgc2l6ZSk7CisKKwkvKiBBZ2dyZWdhdGUgd29ya2VycycgdGFibGUg YnVmZmVyL1dBTCB1c2FnZSBpbnRvIGxlYWRlcidzIGVudHJ5ICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBub2RlLT5pc3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnM7IGkrKykKKwl7CisJCUluc3Ry QWNjdW1TdGFjaygmbm9kZS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLAorCQkJCQkJJm5v ZGUtPmlzc19TaGFyZWRJbmZvLT53aW5zdHJ1bWVudFtpXS50YWJsZV9pbnN0cik7CisJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaAppbmRleCAyYTBmZjM3N2E3My4uZTIz MTVjZWYzODQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9k ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCkBAIC0xOCw2 ICsxOCw4IEBACiAjaWZuZGVmIElOU1RSVU1FTlRfTk9ERV9ICiAjZGVmaW5lIElOU1RSVU1FTlRf Tk9ERV9ICiAKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisKIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGFnZ3Jl Z2F0ZSBmdW5jdGlvbiBleGVjdXRpb24KQEAgLTQ4LDYgKzUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uCiB7CiAJLyogSW5kZXggc2VhcmNoIGNvdW50IChpbmNy ZW1lbnRlZCB3aXRoIHBnc3RhdF9jb3VudF9pbmRleF9zY2FuIGNhbGwpICovCiAJdWludDY0CQlu c2VhcmNoZXM7CisKKwkvKiBJbnN0cnVtZW50YXRpb24gdXRpbGl6ZWQgZm9yIHRyYWNraW5nIGJ1 ZmZlciB1c2FnZSBkdXJpbmcgdGFibGUgYWNjZXNzICovCisJSW5zdHJ1bWVudGF0aW9uIHRhYmxl X2luc3RyOwogfSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CiAKIC8qCi0tIAoyLjQ3LjEKCg== --0000000000008dc0d4064e9f4706--