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 1vM8KX-001mjE-2x for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 17:20:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vM8KW-003769-1o for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Nov 2025 17:20:24 +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 1vM8KV-00375y-1o for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 17:20:24 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vM8KL-000YnP-3B for pgsql-hackers@lists.postgresql.org; Thu, 20 Nov 2025 17:20:22 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-640a0812658so1790017a12.0 for ; Thu, 20 Nov 2025 09:20:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763659212; x=1764264012; 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=HTQQl3XT+8/vxRA7Nnph9b8JoCD9xai26Ji790Qwxh8=; b=LG2TBz/NiMgSGSOE7qv0C6ccmh987VuhjceZ3SMcEzBOiHD2jWHWCZDvC4SW3Q9HmV qTJ0ipbsuTGibNncTXzMIpsbpSkNePbUJEO3i94GcWG9MFj9YsVdRE1geMcd5miCf3Ni qQJf24SKi3BsohoVX9jjyosTsSbh7rtfDu96wUUFIoPS8M/7O5KPSLcf8sgD8Yq5FBaT oxQipnXs8EP2AAKDlPChKvLxw6XL+lQDjoDt5GIzYDGEWRvR/PuypKiEWCYpoKsQHwf4 NBGSZ7gWE0p7u8+bMEn3+ZsFOdrXl1wU9wrsMrPma+CcRbkkEcU26po+1+tjkdCqDoKQ 9pqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763659212; x=1764264012; 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=HTQQl3XT+8/vxRA7Nnph9b8JoCD9xai26Ji790Qwxh8=; b=Nc8hSCFv9PBW5ip6L1+0fLMNEVeY3YdewTq73AIfUqm5gCIajnTAoIfY1LDcADU/Hr ujBvTqxnHzCaLXSMT/SU+fwitHl+bTQUp1jNcC4KW78yH0DFH2xc7f7cYsmh7GwTm6XR PQFSn4oA1Sh/45CuBgX0AFgmeCxub30gUNJkYfRU+8EUHWAYungFkTKFNWCWNe18WQEB GfFh4NRh6ozGZ/wuzSJp3EMUsI3VqnarJxrLmJpjr2eB3NM0dI43yhyF3gF+dHbgZc/L tAm2UQJAnDXrHqrj4vx48KlUSOzUqhDKj8exZ+B8Mb/cGsvzOT5QwbHTOyhmvktwChlZ HK+Q== X-Forwarded-Encrypted: i=1; AJvYcCXkau/M/556Btr6nCwerX/ft6aP8yDAEWZuA79uD5z3f6arO4zso9Fcx+IVPvQyXNSYc5h+yY1S6hwdmzOd@lists.postgresql.org X-Gm-Message-State: AOJu0YzS1nXGxFxgW/Cg1k7T/l21wb0hkQSOh8meQzDlZc/YOH9jfUZm eftqBKBX5N9jXg1LfoCF/czo3MgRCUWySXUisb3lKcRKZiSyu2AkpbHdG3P6R7HlFkRCxwz6bzd ZuHHmiKJH6onjlzdTealeghjh0M6gbYk= X-Gm-Gg: ASbGncvOFUNE7Un4SPxg6fNksbihcpYfkbZn4mbWqcdEd1dvcqiRhPl4KPzqUOzwKZX ertAMY1xp9knRz4LO9PaQ0PaR4wxNbwdRwilHZye5iapo7GZJ9Qq7l2Kgleh976cfEVEwHJ6kuf 9WSqtBzLVUUS83cWhS1qma8bJgJfUveoC6FhXdSeAABHqz2TrHdDSc1E5lXJ+ANczxW+/jLJ+tL Fjygox065P1ptP6H3TCe6kjCBqMtyHVY7VCrTcoSiJyPBz5UATR1UEYdmQi2mQvXao7owni X-Google-Smtp-Source: AGHT+IE+KsvXcP0brjwGPQlNuOQ73KuGNeHfO7wf9/cKg798rAbmX+3h3E0cOBwj+Ibn/J6XSCRkFEYU/mtGn/QsnGk= X-Received: by 2002:a05:6402:4414:b0:640:b573:a304 with SMTP id 4fb4d7f45d1cf-64536467b9dmr3646116a12.31.1763659211524; Thu, 20 Nov 2025 09:20:11 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Thu, 20 Nov 2025 12:19:58 -0500 X-Gm-Features: AWmQ_bkXJVoKVt0uEfVdkHeLZykCmMWDISRo1OGLfM7Lrs5AWUR5M3R0cTAgdSI Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000cf08db064409e86d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cf08db064409e86d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Nov 19, 2025 at 6:13=E2=80=AFPM Melanie Plageman wrote: > > Since it is passed into one of the helpers, I think I agree. Attached > v21 has this change. I've committed the first three patches. Attached v22 is the remaining patches which set the VM in heap_page_prune_and_freeze() for vacuum and then allow on-access pruning to also set the VM. - Melanie --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0001-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v22-0001-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p3usb0 RnJvbSAzNjNmMGU0YWM5YWM3Njk5YTZkOWMyYTI2N2EyYWQ2MDgyNTQwN2M4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE3IE5vdiAyMDI1IDE1OjExOjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMS85XSBTcGxpdCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGludG8gaGVs cGVycwoKUmVmYWN0b3IgdGhlIHNldHVwIGFuZCBwbGFubmluZyBwaGFzZXMgb2YgcHJ1bmluZyBh bmQgZnJlZXppbmcgaW50bwpoZWxwZXJzLiBUaGlzIHN0cmVhbWxpbmVzIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKCkgYW5kIG1ha2VzIGl0IG1vcmUKY2xlYXIgd2hlbiB0aGUgZXhhbWluYXRp b24gb2YgdHVwbGVzIGVuZHMgYW5kIHBhZ2UgbW9kaWZpY2F0aW9ucyBiZWdpbi4KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDU1OSArKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzA3IGluc2VydGlvbnMoKyksIDI1MiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDE4NTA0NzZkY2Q4Li4x NDYwMTkzYjkyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE1Nyw2ICsx NTcsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKIH0gUHJ1bmVTdGF0ZTsKIAogLyogTG9jYWwgZnVuY3Rp b25zICovCitzdGF0aWMgdm9pZCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkIG5ld19yZWxmcm96ZW5feGlkLAorCQkJ CQkJCSAgIE11bHRpWGFjdElkIG5ld19yZWxtaW5fbXhpZCwKKwkJCQkJCQkgICBjb25zdCBQcnVu ZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJCQkgICBQcnVuZVN0YXRlICpwcnN0YXRlKTsK K3N0YXRpYyB2b2lkIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBidWZmZXIs CisJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpv ZmZfbG9jKTsKIHN0YXRpYyBIVFNWX1Jlc3VsdCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0o UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwKIAkJCQkJ CQkJCQkJICAgQnVmZmVyIGJ1ZmZlcik7CkBAIC0zMDgsMjAwICszMTYsMjIgQEAgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIH0KIAogLyoKLSAq IERlY2lkZSB3aGV0aGVyIHRvIHByb2NlZWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhl IGZyZWV6ZSBwbGFucwotICogcHJlcGFyZWQgZm9yIHRoZSBnaXZlbiBoZWFwIGJ1ZmZlci4gSWYg ZnJlZXppbmcgaXMgY2hvc2VuLCB0aGlzIGZ1bmN0aW9uCi0gKiBwZXJmb3JtcyBzZXZlcmFsIHBy ZS1mcmVlemUgY2hlY2tzLgotICoKLSAqIFRoZSB2YWx1ZXMgb2YgZG9fcHJ1bmUsIGRvX2hpbnRf cHJ1bmUsIGFuZCBkaWRfdHVwbGVfaGludF9mcGkgbXVzdCBiZQotICogZGV0ZXJtaW5lZCBiZWZv cmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgotICoKLSAqIHByc3RhdGUgaXMgYm90aCBhbiBpbnB1 dCBhbmQgb3V0cHV0IHBhcmFtZXRlci4KLSAqCi0gKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxk IGFwcGx5IHRoZSBmcmVlemUgcGxhbnMgYW5kIGZyZWV6ZSB0dXBsZXMgb24gdGhlCi0gKiBwYWdl LCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICogSGVscGVyIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZSgpIHRvIGluaXRpYWxpemUgdGhlIFBydW5lU3RhdGUgdXNpbmcKKyAqIHRoZSBwcm92 aWRlZCBwYXJhbWV0ZXJzLgogICovCi1zdGF0aWMgYm9vbAotaGVhcF9wYWdlX3dpbGxfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAotCQkJCQkgIGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLAotCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCi0JCQkJCSAgYm9vbCBkb19oaW50X3By dW5lLAotCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpCi17Ci0JYm9vbAkJZG9fZnJlZXplID0g ZmFsc2U7Ci0KLQkvKgotCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVkIHdlIHNob3VsZCBub3Qg YXR0ZW1wdCB0byBmcmVlemUgYW55IHR1cGxlcywKLQkgKiB2YWxpZGF0ZSB0aGF0IGV2ZXJ5dGhp bmcgaXMgaW4gdGhlIHJpZ2h0IHN0YXRlIGFuZCByZXR1cm4uCi0JICovCi0JaWYgKCFwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCUFzc2VydCghcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBw cnN0YXRlLT5uZnJvemVuID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID09 IDAgfHwgIXByc3RhdGUtPmFsbF92aXNpYmxlKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWlm IChwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCkKLQl7Ci0JCS8qCi0JCSAqIGhlYXBf cHJlcGFyZV9mcmVlemVfdHVwbGUgaW5kaWNhdGVkIHRoYXQgYXQgbGVhc3Qgb25lIFhJRC9NWElE IGZyb20KLQkJICogYmVmb3JlIEZyZWV6ZUxpbWl0L011bHRpWGFjdEN1dG9mZiBpcyBwcmVzZW50 LiAgTXVzdCBmcmVlemUgdG8KLQkJICogYWR2YW5jZSByZWxmcm96ZW54aWQvcmVsbWlubXhpZC4K LQkJICovCi0JCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIE9w cG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUgcGFnZSBpZiB3ZSBhcmUgZ2VuZXJhdGluZyBhbiBG UEkKLQkJICogYW55d2F5IGFuZCBpZiBkb2luZyBzbyBtZWFucyB0aGF0IHdlIGNhbiBzZXQgdGhl IHBhZ2UgYWxsLWZyb3plbgotCQkgKiBhZnRlcndhcmRzIChtaWdodCBub3QgaGFwcGVuIHVudGls IFZBQ1VVTSdzIGZpbmFsIGhlYXAgcGFzcykuCi0JCSAqCi0JCSAqIFhYWDogUHJldmlvdXNseSwg d2Uga25ldyBpZiBwcnVuaW5nIGVtaXR0ZWQgYW4gRlBJIGJ5IGNoZWNraW5nCi0JCSAqIHBnV2Fs VXNhZ2Uud2FsX2ZwaSBiZWZvcmUgYW5kIGFmdGVyIHBydW5pbmcuICBPbmNlIHRoZSBmcmVlemUg YW5kCi0JCSAqIHBydW5lIHJlY29yZHMgd2VyZSBjb21iaW5lZCwgdGhpcyBoZXVyaXN0aWMgY291 bGRuJ3QgYmUgdXNlZAotCQkgKiBhbnltb3JlLiAgVGhlIG9wcG9ydHVuaXN0aWMgZnJlZXplIGhl dXJpc3RpYyBtdXN0IGJlIGltcHJvdmVkOwotCQkgKiBob3dldmVyLCBmb3Igbm93LCB0cnkgdG8g YXBwcm94aW1hdGUgdGhlIG9sZCBsb2dpYy4KLQkJICovCi0JCWlmIChwcnN0YXRlLT5hbGxfZnJv emVuICYmIHByc3RhdGUtPm5mcm96ZW4gPiAwKQotCQl7Ci0JCQlBc3NlcnQocHJzdGF0ZS0+YWxs X3Zpc2libGUpOwotCi0JCQkvKgotCQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFnZSBh bGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5IGVtaXR0ZWQKLQkJCSAqIGFuIEZQSSBvciB3aWxsIGRv IHNvIGFueXdheT8KLQkJCSAqLwotCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQot CQkJewotCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJCWRvX2ZyZWV6ZSA9IHRydWU7 Ci0JCQkJZWxzZSBpZiAoZG9fcHJ1bmUpCi0JCQkJewotCQkJCQlpZiAoWExvZ0NoZWNrQnVmZmVy TmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJfQotCQkJ CWVsc2UgaWYgKGRvX2hpbnRfcHJ1bmUpCi0JCQkJewotCQkJCQlpZiAoWExvZ0hpbnRCaXRJc05l ZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQlkb19m cmVlemUgPSB0cnVlOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQotCWlmIChkb19mcmVlemUpCi0J ewotCQkvKgotCQkgKiBWYWxpZGF0ZSB0aGUgdHVwbGVzIHdlIHdpbGwgYmUgZnJlZXppbmcgYmVm b3JlIGVudGVyaW5nIHRoZQotCQkgKiBjcml0aWNhbCBzZWN0aW9uLgotCQkgKi8KLQkJaGVhcF9w cmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+bmZyb3pl bik7Ci0KLQkJLyoKLQkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhv cml6b24gc2hvdWxkIGJlIGZvciBhIHJlY29yZAotCQkgKiBmcmVlemluZyB0dXBsZXMuIFdlIGNh biB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCi0JCSAqIGZvciBj b25mbGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZy b3plbgotCQkgKiBpbiB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuIE90aGVyd2lzZSwg d2UgZ2VuZXJhdGUgYQotCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sg ZnJvbSBPbGRlc3RYbWluLgotCQkgKi8KLQkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCi0JCQlw cnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2Zm X3hpZDsKLQkJZWxzZQotCQl7Ci0JCQkvKiBBdm9pZHMgZmFsc2UgY29uZmxpY3RzIHdoZW4gaG90 X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCi0JCQlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9y aXpvbiA9IHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW47Ci0JCQlUcmFuc2FjdGlvbklkUmV0 cmVhdChwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbik7Ci0JCX0KLQl9Ci0JZWxzZSBpZiAo cHJzdGF0ZS0+bmZyb3plbiA+IDApCi0JewotCQkvKgotCQkgKiBUaGUgcGFnZSBjb250YWluZWQg c29tZSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IGZyb3plbiwgYW5kIHdlCi0JCSAqIGNo b3NlIG5vdCB0byBmcmVlemUgdGhlbSBub3cuICBUaGUgcGFnZSB3b24ndCBiZSBhbGwtZnJvemVu IHRoZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVk KTsKLQotCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCXByc3RhdGUtPm5mcm96ZW4g PSAwOwkvKiBhdm9pZCBtaXNjb3VudHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCi0JfQotCWVsc2UK LQl7Ci0JCS8qCi0JCSAqIFdlIGhhdmUgbm8gZnJlZXplIHBsYW5zIHRvIGV4ZWN1dGUuICBUaGUg cGFnZSBtaWdodCBhbHJlYWR5IGJlCi0JCSAqIGFsbC1mcm96ZW4gKHBlcmhhcHMgb25seSBmb2xs b3dpbmcgcHJ1bmluZyksIHRob3VnaC4gIFN1Y2ggcGFnZXMKLQkJICogY2FuIGJlIG1hcmtlZCBh bGwtZnJvemVuIGluIHRoZSBWTSBieSBvdXIgY2FsbGVyLCBldmVuIHRob3VnaCBub25lCi0JCSAq IG9mIGl0cyB0dXBsZXMgd2VyZSBuZXdseSBmcm96ZW4gaGVyZS4KLQkJICovCi0JfQotCi0JcmV0 dXJuIGRvX2ZyZWV6ZTsKLX0KLQotCi0vKgotICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0 aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBh Z2UuCi0gKgotICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sg b24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKLSAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9y bWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodAotICogYWxz byBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxp bmUgcG9pbnRlcgotICogYXJyYXkgZm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCi0g KgotICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJv bCBmcmVlemluZyBhbmQgcHJ1bmluZwotICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBv ZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBvbiB3aGF0IGVhY2gKLSAqIHBhcmFtZXRlciBk b2VzLgotICoKLSAqIElmIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQg aW4gcGFyYW1zLCB3ZSB3aWxsIGZyZWV6ZQotICogdHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4g b3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBvcgotICogaWYgaXQn cyBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2Ug dG8gZG8gc28KLSAqIG5vdy4gIFRoZSAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdf cmVsZnJvemVuX3hpZCcgYW5kCi0gKiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJl cXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuCi0gKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9w dGlvbiBpcyBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQg cHJlc3VsdC0+YWxsX2Zyb3plbiBhZnRlciBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0bwot ICogb3Bwb3J1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNh biBiZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0 aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1h dGlvbi4KLSAqCi0gKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBi eSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKLSAqIHR1cGxlcyByZW1vdmVkIGFuZCB0 aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCi0gKiBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXpp bmcgaXQuICBSZXF1aXJlZAotICogYnkgYWxsIGNhbGxlcnMuCi0gKgotICogb2ZmX2xvYyBpcyB0 aGUgb2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9y Ci0gKiBjYWxsYmFjay4KLSAqCi0gKiBuZXdfcmVsZnJvemVuX3hpZCBhbmQgbmV3X3JlbG1pbl9t eGlkIG11c3QgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciBpZiB0aGUKLSAqIEhFQVBfUEFHRV9QUlVO RV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBjb250YWlu IHRoZQotICogb2xkZXN0IFhJRCBhbmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9uIHNv IGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkCi0gKiB3aXRoIG9sZGVzdCB2YWx1ZXMgcHJlc2Vu dCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUKLSAqIHdo b2xlIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldwotICog cmVsZnJvemVueGlkL3JlbG1pbm14aWQgZm9yIHRoZSByZWxhdGlvbi4KLSAqLwotdm9pZAotaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKLQkJCQkJ CSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpv ZmZfbG9jLAotCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCi0JCQkJ CQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQorc3RhdGljIHZvaWQKK3BydW5lX2Zy ZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAorCQkJCSAgIFRyYW5zYWN0aW9u SWQgbmV3X3JlbGZyb3plbl94aWQsCisJCQkJICAgTXVsdGlYYWN0SWQgbmV3X3JlbG1pbl9teGlk LAorCQkJCSAgIGNvbnN0IFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAorCQkJCSAgIFBydW5l U3RhdGUgKnByc3RhdGUpCiB7Ci0JQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKLQlQ YWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwotCUJsb2NrTnVtYmVyIGJsb2Nrbm8g PSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwotCU9mZnNldE51bWJlciBvZmZudW0sCi0J CQkJbWF4b2ZmOwotCVBydW5lU3RhdGUJcHJzdGF0ZTsKLQlIZWFwVHVwbGVEYXRhIHR1cDsKLQli b29sCQlkb19mcmVlemU7Ci0JYm9vbAkJZG9fcHJ1bmU7Ci0JYm9vbAkJZG9faGludF9wcnVuZTsK LQlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7Ci0JaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVz YWdlLndhbF9mcGk7Ci0KIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0ZSAqLwotCXByc3Rh dGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKLQlwcnN0YXRlLm1hcmtfdW51c2VkX25vdyA9 CisJcHJzdGF0ZS0+dmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKKwlwcnN0YXRlLT5tYXJrX3Vu dXNlZF9ub3cgPQogCQkocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5V U0VEX05PVykgIT0gMDsKLQlwcnN0YXRlLmF0dGVtcHRfZnJlZXplID0gKHBhcmFtcy0+b3B0aW9u cyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7Ci0JcHJzdGF0ZS5jdXRvZmZzID0gcGFy YW1zLT5jdXRvZmZzOworCXByc3RhdGUtPmF0dGVtcHRfZnJlZXplID0gKHBhcmFtcy0+b3B0aW9u cyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBh cmFtcy0+Y3V0b2ZmczsKIAogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBh Z2UgYW5kIG1ha2UgbGlzdHMgb2YgaXRlbXMgdG8gY2hhbmdlLApAQCAtNTE0LDQxICszNDQsNDIg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkgKiBwcnVuYWJsZSwgd2Ugd2lsbCBzYXZlIHRoZSBsb3dlc3QgcmVsZXZhbnQgWElEIGluIG5l d19wcnVuZV94aWQuIEFsc28KIAkgKiBpbml0aWFsaXplIHRoZSByZXN0IG9mIG91ciB3b3JraW5n IHN0YXRlLgogCSAqLwotCXByc3RhdGUubmV3X3BydW5lX3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwotCXByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 Ci0JcHJzdGF0ZS5ucmVkaXJlY3RlZCA9IHByc3RhdGUubmRlYWQgPSBwcnN0YXRlLm51bnVzZWQg PSBwcnN0YXRlLm5mcm96ZW4gPSAwOwotCXByc3RhdGUubnJvb3RfaXRlbXMgPSAwOwotCXByc3Rh dGUubmhlYXBvbmx5X2l0ZW1zID0gMDsKKwlwcnN0YXRlLT5uZXdfcHJ1bmVfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJcHJzdGF0ZS0+bGF0ZXN0X3hpZF9yZW1vdmVkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CisJcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgPSBwcnN0YXRlLT5uZGVhZCA9IHBy c3RhdGUtPm51bnVzZWQgPSAwOworCXByc3RhdGUtPm5mcm96ZW4gPSAwOworCXByc3RhdGUtPm5y b290X2l0ZW1zID0gMDsKKwlwcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMgPSAwOwogCiAJLyogaW5p dGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KLQlwcnN0YXRlLnBhZ2Vmcnou ZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCisJ cHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKKwlpZiAocHJzdGF0ZS0+ YXR0ZW1wdF9mcmVlemUpCiAJewotCQlBc3NlcnQobmV3X3JlbGZyb3plbl94aWQgJiYgbmV3X3Jl bG1pbl9teGlkKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSAq bmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96 ZW5YaWQgPSAqbmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdl UmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6 ZVBhZ2VSZWxtaW5NeGlkID0gKm5ld19yZWxtaW5fbXhpZDsKKwkJcHJzdGF0ZS0+cGFnZWZyei5G cmVlemVQYWdlUmVsZnJvemVuWGlkID0gbmV3X3JlbGZyb3plbl94aWQ7CisJCXByc3RhdGUtPnBh Z2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gbmV3X3JlbGZyb3plbl94aWQ7CisJCXBy c3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQgPSBuZXdfcmVsbWluX214aWQ7CisJ CXByc3RhdGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9IG5ld19yZWxtaW5fbXhp ZDsKIAl9CiAJZWxzZQogCXsKLQkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkID09IE5VTEwgJiYg bmV3X3JlbG1pbl9teGlkID09IE5VTEwpOwotCQlwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJl bG1pbk14aWQgPSBJbnZhbGlkTXVsdGlYYWN0SWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6 ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFjdElkOwotCQlwcnN0YXRlLnBhZ2Vmcnou RnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlwcnN0YXRl LnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCAmJgor CQkJICAgbmV3X3JlbG1pbl9teGlkID09IEludmFsaWRNdWx0aVhhY3RJZCk7CisJCXByc3RhdGUt PnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQgPSBJbnZhbGlkTXVsdGlYYWN0SWQ7CisJCXBy c3RhdGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJ ZDsKKwkJcHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJfQogCi0JcHJzdGF0ZS5uZGVsZXRlZCA9IDA7Ci0J cHJzdGF0ZS5saXZlX3R1cGxlcyA9IDA7Ci0JcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxlcyA9 IDA7Ci0JcHJzdGF0ZS5oYXN0dXAgPSBmYWxzZTsKLQlwcnN0YXRlLmxwZGVhZF9pdGVtcyA9IDA7 Ci0JcHJzdGF0ZS5kZWFkb2Zmc2V0cyA9IHByZXN1bHQtPmRlYWRvZmZzZXRzOwotCXByc3RhdGUu ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5u ZGVsZXRlZCA9IDA7CisJcHJzdGF0ZS0+bGl2ZV90dXBsZXMgPSAwOworCXByc3RhdGUtPnJlY2Vu dGx5X2RlYWRfdHVwbGVzID0gMDsKKwlwcnN0YXRlLT5oYXN0dXAgPSBmYWxzZTsKKwlwcnN0YXRl LT5scGRlYWRfaXRlbXMgPSAwOworCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gKE9mZnNldE51bWJl ciAqKSBwcmVzdWx0LT5kZWFkb2Zmc2V0czsKKwlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpv biA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBDYWxsZXIgbWF5IHVwZGF0ZSB0 aGUgVk0gYWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCisJICogVmFjdXVt IG1heSB1cGRhdGUgdGhlIFZNIGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBv ZgogCSAqIHdoZXRoZXIgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl biBhZnRlciBwcnVuaW5nIGFuZAogCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBk byB0aGF0LgogCSAqCkBAIC01NzEsMTAgKzQwMiwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIGFsbF9mcm96ZW4gYmVmb3JlIHdl IHJldHVybiB0aGVtIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgogCSAqIGRvZXNu J3Qgc2V0IHRoZSBWTSBiaXRzIGluY29ycmVjdGx5LgogCSAqLwotCWlmIChwcnN0YXRlLmF0dGVt cHRfZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCXByc3RhdGUu YWxsX3Zpc2libGUgPSB0cnVlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOworCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwog CX0KIAllbHNlCiAJewpAQCAtNTgyLDggKzQxMyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqIEluaXRpYWxpemluZyB0byBmYWxz ZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRoZW0gaW4KIAkJICogaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgogCQkgKi8KLQkJcHJzdGF0ZS5hbGxf dmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwog CX0KIAogCS8qCkBAIC01OTQsMTAgKzQyNSwyOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24g dGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUgcGFnZSBhcwogCSAqIGFsbC12 aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlv bklkLgogCSAqLwotCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7Cit9CiAKLQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwot CXR1cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKKy8q CisgKiBIZWxwZXIgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIEl0ZXJhdGVzIG92 ZXIgZXZlcnkgdHVwbGUgb24gdGhlCisgKiBwYWdlLCBleGFtaW5lcyBpdHMgdmlzaWJpbGl0eSBp bmZvcm1hdGlvbiwgYW5kIGRldGVybWluZXMgdGhlIGFwcHJvcHJpYXRlCisgKiBhY3Rpb24gZm9y IGVhY2ggdHVwbGUuIEFsbCB0dXBsZXMgYXJlIHByb2Nlc3NlZCBhbmQgY2xhc3NpZmllZCBkdXJp bmcgdGhpcworICogcGhhc2UsIGJ1dCBubyBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIHRoZSBw YWdlIHVudGlsIHRoZSBsYXRlciBleGVjdXRpb24KKyAqIHN0YWdlLgorICoKKyAqICpvZmZfbG9j IGlzIHVzZWQgZm9yIGVycm9yIGNhbGxiYWNrIGFuZCBjbGVhcmVkIGJlZm9yZSByZXR1cm5pbmcu CisgKi8KK3N0YXRpYyB2b2lkCitwcnVuZV9mcmVlemVfcGxhbihPaWQgcmVsb2lkLCBCdWZmZXIg YnVmZmVyLCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCSAgT2Zmc2V0TnVtYmVyICpvZmZfbG9j KQoreworCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJQmxvY2tOdW1iZXIg YmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CisJT2Zmc2V0TnVtYmVyIG1h eG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJT2Zmc2V0TnVtYmVyIG9mZm51 bTsKKwlIZWFwVHVwbGVEYXRhIHR1cDsKKworCXR1cC50X3RhYmxlT2lkID0gcmVsb2lkOwogCiAJ LyoKIAkgKiBEZXRlcm1pbmUgSFRTViBmb3IgYWxsIHR1cGxlcywgYW5kIHF1ZXVlIHRoZW0gdXAg Zm9yIHByb2Nlc3NpbmcgYXMgSE9UCkBAIC02MzIsMTMgKzQ4MiwxMyBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKi8KIAkJKm9mZl9s b2MgPSBvZmZudW07CiAKLQkJcHJzdGF0ZS5wcm9jZXNzZWRbb2ZmbnVtXSA9IGZhbHNlOwotCQlw cnN0YXRlLmh0c3Zbb2ZmbnVtXSA9IC0xOworCQlwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSA9 IGZhbHNlOworCQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSAtMTsKIAogCQkvKiBOb3RoaW5nIHRv IGRvIGlmIHNsb3QgZG9lc24ndCBjb250YWluIGEgdHVwbGUgKi8KIAkJaWYgKCFJdGVtSWRJc1Vz ZWQoaXRlbWlkKSkKIAkJewotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3VudXNl ZChwYWdlLCAmcHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF91bnVzZWQocGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK QEAgLTY0OCwxNyArNDk4LDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBJZiB0aGUgY2FsbGVyIHNldCBtYXJrX3VudXNlZF9u b3cgdHJ1ZSwgd2UgY2FuIHNldCBkZWFkIGxpbmUKIAkJCSAqIHBvaW50ZXJzIExQX1VOVVNFRCBu b3cuCiAJCQkgKi8KLQkJCWlmICh1bmxpa2VseShwcnN0YXRlLm1hcmtfdW51c2VkX25vdykpCi0J CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKCZwcnN0YXRlLCBvZmZudW0sIGZhbHNlKTsKKwkJ CWlmICh1bmxpa2VseShwcnN0YXRlLT5tYXJrX3VudXNlZF9ub3cpKQorCQkJCWhlYXBfcHJ1bmVf cmVjb3JkX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIGZhbHNlKTsKIAkJCWVsc2UKLQkJCQloZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChwYWdlLCAmcHJzdGF0ZSwgb2ZmbnVtKTsK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChwYWdlLCBwcnN0YXRlLCBv ZmZudW0pOwogCQkJY29udGludWU7CiAJCX0KIAogCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGl0 ZW1pZCkpCiAJCXsKIAkJCS8qIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgSE9UIGNoYWluICovCi0J CQlwcnN0YXRlLnJvb3RfaXRlbXNbcHJzdGF0ZS5ucm9vdF9pdGVtcysrXSA9IG9mZm51bTsKKwkJ CXByc3RhdGUtPnJvb3RfaXRlbXNbcHJzdGF0ZS0+bnJvb3RfaXRlbXMrK10gPSBvZmZudW07CiAJ CQljb250aW51ZTsKIAkJfQogCkBAIC02NzIsMjEgKzUyMiwxNSBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQl0dXAudF9sZW4gPSBJdGVt SWRHZXRMZW5ndGgoaXRlbWlkKTsKIAkJSXRlbVBvaW50ZXJTZXQoJnR1cC50X3NlbGYsIGJsb2Nr bm8sIG9mZm51bSk7CiAKLQkJcHJzdGF0ZS5odHN2W29mZm51bV0gPSBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0oJnByc3RhdGUsICZ0dXAsCi0JCQkJCQkJCQkJCQkJCSAgIGJ1ZmZlcik7CisJ CXByc3RhdGUtPmh0c3Zbb2ZmbnVtXSA9IGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bShwcnN0 YXRlLCAmdHVwLAorCQkJCQkJCQkJCQkJCQkJYnVmZmVyKTsKIAogCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkoaHR1cCkpCi0JCQlwcnN0YXRlLnJvb3RfaXRlbXNbcHJzdGF0ZS5ucm9v dF9pdGVtcysrXSA9IG9mZm51bTsKKwkJCXByc3RhdGUtPnJvb3RfaXRlbXNbcHJzdGF0ZS0+bnJv b3RfaXRlbXMrK10gPSBvZmZudW07CiAJCWVsc2UKLQkJCXByc3RhdGUuaGVhcG9ubHlfaXRlbXNb cHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5oZWFwb25s eV9pdGVtc1twcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CiAJfQogCi0JLyoK LQkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIG1heSBoYXZlIGNhdXNlZAotCSAqIGFuIEZQSSB0byBiZSBlbWl0dGVkLgotCSAqLwotCWRp ZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2FnZS53YWxfZnBpOwotCiAJ LyoKIAkgKiBQcm9jZXNzIEhPVCBjaGFpbnMuCiAJICoKQEAgLTY5OCwzMCArNTQyLDMwIEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog dGhlIHBhZ2UgaW5zdGVhZCBvZiB1c2luZyB0aGUgcm9vdF9pdGVtcyBhcnJheSwgYWxzbyBkaWQg aXQgaW4KIAkgKiBhc2NlbmRpbmcgb2Zmc2V0IG51bWJlciBvcmRlci4pCiAJICovCi0JZm9yIChp bnQgaSA9IHByc3RhdGUubnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKKwlmb3IgKGludCBp ID0gcHJzdGF0ZS0+bnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKIAl7Ci0JCW9mZm51bSA9 IHByc3RhdGUucm9vdF9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+cm9vdF9pdGVtc1tp XTsKIAogCQkvKiBJZ25vcmUgaXRlbXMgYWxyZWFkeSBwcm9jZXNzZWQgYXMgcGFydCBvZiBhbiBl YXJsaWVyIGNoYWluICovCi0JCWlmIChwcnN0YXRlLnByb2Nlc3NlZFtvZmZudW1dKQorCQlpZiAo cHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQljb250aW51ZTsKIAogCQkvKiBzZWUgcHJl Y2VkaW5nIGxvb3AgKi8KIAkJKm9mZl9sb2MgPSBvZmZudW07CiAKIAkJLyogUHJvY2VzcyB0aGlz IGl0ZW0gb3IgY2hhaW4gb2YgaXRlbXMgKi8KLQkJaGVhcF9wcnVuZV9jaGFpbihwYWdlLCBibG9j a25vLCBtYXhvZmYsIG9mZm51bSwgJnByc3RhdGUpOworCQloZWFwX3BydW5lX2NoYWluKHBhZ2Us IGJsb2Nrbm8sIG1heG9mZiwgb2ZmbnVtLCBwcnN0YXRlKTsKIAl9CiAKIAkvKgogCSAqIFByb2Nl c3MgYW55IGhlYXAtb25seSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IHByb2Nlc3NlZCBh cyBwYXJ0IG9mCiAJICogYSBIT1QgY2hhaW4uCiAJICovCi0JZm9yIChpbnQgaSA9IHByc3RhdGUu bmhlYXBvbmx5X2l0ZW1zIC0gMTsgaSA+PSAwOyBpLS0pCisJZm9yIChpbnQgaSA9IHByc3RhdGUt Pm5oZWFwb25seV9pdGVtcyAtIDE7IGkgPj0gMDsgaS0tKQogCXsKLQkJb2ZmbnVtID0gcHJzdGF0 ZS5oZWFwb25seV9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+aGVhcG9ubHlfaXRlbXNb aV07CiAKLQkJaWYgKHByc3RhdGUucHJvY2Vzc2VkW29mZm51bV0pCisJCWlmIChwcnN0YXRlLT5w cm9jZXNzZWRbb2ZmbnVtXSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIHNlZSBwcmVjZWRpbmcgbG9v cCAqLwpAQCAtNzQwLDcgKzU4NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqIHJldHVybiB0cnVlIGZvciBhbiBYTUlOX0lOVkFM SUQgdHVwbGUsIHNvIHRoaXMgY29kZSB3aWxsIHdvcmsgZXZlbgogCQkgKiB3aGVuIHRoZXJlIHdl cmUgc2VxdWVudGlhbCB1cGRhdGVzIHdpdGhpbiB0aGUgYWJvcnRlZCB0cmFuc2FjdGlvbi4pCiAJ CSAqLwotCQlpZiAocHJzdGF0ZS5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCisJCWlm IChwcnN0YXRlLT5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCiAJCXsKIAkJCUl0ZW1J ZAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVh ZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwpA QCAtNzQ4LDggKzU5Miw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCQlpZiAobGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0 ZWQoaHR1cCkpKQogCQkJewogCQkJCUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6 b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkgICZwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCk7Ci0J CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKCZwcnN0YXRlLCBvZmZudW0sIHRydWUpOworCQkJ CQkJCQkJCQkJCSAgJnByc3RhdGUtPmxhdGVzdF94aWRfcmVtb3ZlZCk7CisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1ZSk7CiAJCQl9CiAJCQllbHNlCiAJ CQl7CkBAIC03NjYsNyArNjEwLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCX0KIAkJfQogCQllbHNlCi0JCQloZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKHBhZ2UsICZwcnN0YXRlLCBvZmZudW0pOworCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0YXRlLCBvZmZudW0p OwogCX0KIAogCS8qIFdlIHNob3VsZCBub3cgaGF2ZSBwcm9jZXNzZWQgZXZlcnkgdHVwbGUgZXhh Y3RseSBvbmNlICAqLwpAQCAtNzc3LDEyICs2MjEsMjIzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJewogCQkqb2ZmX2xvYyA9IG9mZm51 bTsKIAotCQlBc3NlcnQocHJzdGF0ZS5wcm9jZXNzZWRbb2ZmbnVtXSk7CisJCUFzc2VydChwcnN0 YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSk7CiAJfQogI2VuZGlmCiAKIAkvKiBDbGVhciB0aGUgb2Zm c2V0IGluZm9ybWF0aW9uIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIGdpdmVuIHBhZ2UuICov CiAJKm9mZl9sb2MgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworfQorCisvKgorICogRGVjaWRlIHdo ZXRoZXIgdG8gcHJvY2VlZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplIHBs YW5zCisgKiBwcmVwYXJlZCBmb3IgdGhlIGdpdmVuIGhlYXAgYnVmZmVyLiBJZiBmcmVlemluZyBp cyBjaG9zZW4sIHRoaXMgZnVuY3Rpb24KKyAqIHBlcmZvcm1zIHNldmVyYWwgcHJlLWZyZWV6ZSBj aGVja3MuCisgKgorICogVGhlIHZhbHVlcyBvZiBkb19wcnVuZSwgZG9faGludF9wcnVuZSwgYW5k IGRpZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCisgKiBkZXRlcm1pbmVkIGJlZm9yZSBjYWxsaW5n IHRoaXMgZnVuY3Rpb24uCisgKgorICogcHJzdGF0ZSBpcyBib3RoIGFuIGlucHV0IGFuZCBvdXRw dXQgcGFyYW1ldGVyLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXBwbHkgdGhl IGZyZWV6ZSBwbGFucyBhbmQgZnJlZXplIHR1cGxlcyBvbiB0aGUKKyAqIHBhZ2UsIGFuZCBmYWxz ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGlu dF9mcGksCisJCQkJCSAgYm9vbCBkb19wcnVuZSwKKwkJCQkJICBib29sIGRvX2hpbnRfcHJ1bmUs CisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSkKK3sKKwlib29sCQlkb19mcmVlemUgPSBmYWxz ZTsKKworCS8qCisJICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZWQgd2Ugc2hvdWxkIG5vdCBhdHRl bXB0IHRvIGZyZWV6ZSBhbnkgdHVwbGVzLAorCSAqIHZhbGlkYXRlIHRoYXQgZXZlcnl0aGluZyBp cyBpbiB0aGUgcmlnaHQgc3RhdGUgYW5kIHJldHVybi4KKwkgKi8KKwlpZiAoIXByc3RhdGUtPmF0 dGVtcHRfZnJlZXplKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3Rh dGUtPm5mcm96ZW4gPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLT5scGRlYWRfaXRlbXMgPT0gMCB8 fCAhcHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKHBy c3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQorCXsKKwkJLyoKKwkJICogaGVhcF9wcmVw YXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFzdCBvbmUgWElEL01YSUQgZnJv bQorCQkgKiBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0b2ZmIGlzIHByZXNlbnQuICBN dXN0IGZyZWV6ZSB0bworCQkgKiBhZHZhbmNlIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkLgorCQkg Ki8KKwkJZG9fZnJlZXplID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogT3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBnZW5lcmF0aW5nIGFuIEZQSQor CQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQgd2UgY2FuIHNldCB0aGUgcGFn ZSBhbGwtZnJvemVuCisJCSAqIGFmdGVyd2FyZHMgKG1pZ2h0IG5vdCBoYXBwZW4gdW50aWwgVkFD VVVNJ3MgZmluYWwgaGVhcCBwYXNzKS4KKwkJICoKKwkJICogWFhYOiBQcmV2aW91c2x5LCB3ZSBr bmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tpbmcKKwkJICogcGdXYWxVc2Fn ZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmluZy4gIE9uY2UgdGhlIGZyZWV6ZSBhbmQK KwkJICogcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlzIGhldXJpc3RpYyBjb3VsZG4n dCBiZSB1c2VkCisJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5pc3RpYyBmcmVlemUgaGV1cmlz dGljIG11c3QgYmUgaW1wcm92ZWQ7CisJCSAqIGhvd2V2ZXIsIGZvciBub3csIHRyeSB0byBhcHBy b3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgorCQkgKi8KKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4g JiYgcHJzdGF0ZS0+bmZyb3plbiA+IDApCisJCXsKKwkJCUFzc2VydChwcnN0YXRlLT5hbGxfdmlz aWJsZSk7CisKKwkJCS8qCisJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdlIGFsbC1m cm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAorCQkJICogYW4gRlBJIG9yIHdpbGwgZG8gc28g YW55d2F5PworCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikpCisJCQl7 CisJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKKwkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJ CQllbHNlIGlmIChkb19wcnVuZSkKKwkJCQl7CisJCQkJCWlmIChYTG9nQ2hlY2tCdWZmZXJOZWVk c0JhY2t1cChidWZmZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQkJZWxz ZSBpZiAoZG9faGludF9wcnVuZSkKKwkJCQl7CisJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVk KCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKKwkJCQkJCWRvX2ZyZWV6 ZSA9IHRydWU7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJaWYgKGRvX2ZyZWV6ZSkKKwl7CisJ CS8qCisJCSAqIFZhbGlkYXRlIHRoZSB0dXBsZXMgd2Ugd2lsbCBiZSBmcmVlemluZyBiZWZvcmUg ZW50ZXJpbmcgdGhlCisJCSAqIGNyaXRpY2FsIHNlY3Rpb24uCisJCSAqLworCQloZWFwX3ByZV9m cmVlemVfY2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS0+ZnJvemVuLCBwcnN0YXRlLT5uZnJvemVuKTsK KworCQkvKgorCQkgKiBDYWxjdWxhdGUgd2hhdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpv biBzaG91bGQgYmUgZm9yIGEgcmVjb3JkCisJCSAqIGZyZWV6aW5nIHR1cGxlcy4gV2UgY2FuIHVz ZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBjdXRvZmYKKwkJICogZm9yIGNvbmZs aWN0cyB3aGVuIHRoZSB3aG9sZSBwYWdlIGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVu CisJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gT3RoZXJ3aXNlLCB3ZSBn ZW5lcmF0ZSBhCisJCSAqIGNvbnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9t IE9sZGVzdFhtaW4uCisJCSAqLworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCXByc3Rh dGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCQllbHNlCisJCXsKKwkJCS8qIEF2b2lkcyBmYWxzZSBjb25mbGljdHMgd2hlbiBob3Rfc3Rh bmRieV9mZWVkYmFjayBpbiB1c2UgKi8KKwkJCXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9u ID0gcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbjsKKwkJCVRyYW5zYWN0aW9uSWRSZXRyZWF0 KHByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uKTsKKwkJfQorCX0KKwllbHNlIGlmIChwcnN0 YXRlLT5uZnJvemVuID4gMCkKKwl7CisJCS8qCisJCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21l IHR1cGxlcyB0aGF0IHdlcmUgbm90IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKKwkJICogY2hvc2Ug bm90IHRvIGZyZWV6ZSB0aGVtIG5vdy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhl bi4KKwkJICovCisJCUFzc2VydCghcHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpOwor CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+bmZyb3plbiA9IDA7 CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBpbnN0cnVtZW50YXRpb24gKi8KKwl9CisJZWxzZQorCXsK KwkJLyoKKwkJICogV2UgaGF2ZSBubyBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdl IG1pZ2h0IGFscmVhZHkgYmUKKwkJICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2lu ZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3VjaCBwYWdlcworCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1m cm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKKwkJICogb2Yg aXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZyb3plbiBoZXJlLgorCQkgKi8KKwl9CisKKwlyZXR1cm4g ZG9fZnJlZXplOworfQorCisKKy8qCisgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24g YW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCisgKiBzcGVjaWZpZWQgcGFnZS4K KyAqCisgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9jayBvbiB0 aGUgcGFnZS4gIE5vdGUgdGhhdCB3ZQorICogZG9uJ3QgdXBkYXRlIHRoZSBGU00gaW5mb3JtYXRp b24gZm9yIHBhZ2Ugb24gY2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0CisgKiBhbHNvIG5l ZWQgdG8gYWNjb3VudCBmb3IgYSByZWR1Y3Rpb24gaW4gdGhlIGxlbmd0aCBvZiB0aGUgbGluZSBw b2ludGVyCisgKiBhcnJheSBmb2xsb3dpbmcgYXJyYXkgdHJ1bmNhdGlvbiBieSB1cy4KKyAqCisg KiBwYXJhbXMgY29udGFpbnMgdGhlIGlucHV0IHBhcmFtZXRlcnMgdXNlZCB0byBjb250cm9sIGZy ZWV6aW5nIGFuZCBwcnVuaW5nCisgKiBiZWhhdmlvci4gU2VlIHRoZSBkZWZpbml0aW9uIG9mIFBy dW5lRnJlZXplUGFyYW1zIGZvciBtb3JlIG9uIHdoYXQgZWFjaAorICogcGFyYW1ldGVyIGRvZXMu CisgKgorICogSWYgdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBw YXJhbXMsIHdlIHdpbGwgZnJlZXplCisgKiB0dXBsZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yCisgKiBpZiBpdCdzIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbworICogbm93LiAgVGhlICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxm cm96ZW5feGlkJyBhbmQKKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KKyAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKKyAqIGFuZCBwcmVz dWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvCisgKiBv cHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlCisgKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCisgKiBiZWNhdXNlIGF0IHRoZSBt b21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9u LgorICoKKyAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNh bGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgorICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBv ZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KKyAqIGhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyBp dC4gIFJlcXVpcmVkCisgKiBieSBhbGwgY2FsbGVycy4KKyAqCisgKiBvZmZfbG9jIGlzIHRoZSBv ZmZzZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJyb3IKKyAq IGNhbGxiYWNrLgorICoKKyAqIG5ld19yZWxmcm96ZW5feGlkIGFuZCBuZXdfcmVsbWluX214aWQg bXVzdCBwcm92aWRlZCBieSB0aGUgY2FsbGVyIGlmIHRoZQorICogSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRhaW4gdGhl CisgKiBvbGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24gc28gZmFy LiAgVGhleSB3aWxsIGJlIHVwZGF0ZWQKKyAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVzZW50IG9u IHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQorICogd2hvbGUg cmVsYXRpb24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3CisgKiByZWxm cm96ZW54aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgorICovCit2b2lkCitoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAorCQkJCQkJICAg UHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9s b2MsCisJCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdfcmVsZnJvemVuX3hpZCwKKwkJCQkJCSAg IE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCit7CisJQnVmZmVyCQlidWZmZXIgPSBwYXJh bXMtPmJ1ZmZlcjsKKwlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCVBydW5l U3RhdGUJcHJzdGF0ZTsKKwlib29sCQlkb19mcmVlemU7CisJYm9vbAkJZG9fcHJ1bmU7CisJYm9v bAkJZG9faGludF9wcnVuZTsKKwlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7CisJaW50NjQJCWZw aV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisKKwkvKiBJbml0aWFsaXplIHByc3RhdGUg Ki8KKwlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLAorCQkJCQkgICBuZXdfcmVsZnJvemVuX3hp ZCA/CisJCQkJCSAgICpuZXdfcmVsZnJvemVuX3hpZCA6IEludmFsaWRUcmFuc2FjdGlvbklkLAor CQkJCQkgICBuZXdfcmVsbWluX214aWQgPworCQkJCQkgICAqbmV3X3JlbG1pbl9teGlkIDogSW52 YWxpZE11bHRpWGFjdElkLAorCQkJCQkgICBwcmVzdWx0LAorCQkJCQkgICAmcHJzdGF0ZSk7CisK KwkvKgorCSAqIEV4YW1pbmUgYWxsIGxpbmUgcG9pbnRlcnMgYW5kIHR1cGxlIHZpc2liaWxpdHkg aW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lCisJICogd2hpY2ggbGluZSBwb2ludGVycyBzaG91bGQg Y2hhbmdlIHN0YXRlIGFuZCB3aGljaCB0dXBsZXMgbWF5IGJlIGZyb3plbi4KKwkgKiBQcmVwYXJl IHF1ZXVlIG9mIHN0YXRlIGNoYW5nZXMgdG8gbGF0ZXIgYmUgZXhlY3V0ZWQgaW4gYSBjcml0aWNh bAorCSAqIHNlY3Rpb24uCisJICovCisJcHJ1bmVfZnJlZXplX3BsYW4oUmVsYXRpb25HZXRSZWxp ZChwYXJhbXMtPnJlbGF0aW9uKSwKKwkJCQkJICBidWZmZXIsICZwcnN0YXRlLCBvZmZfbG9jKTsK KworCS8qCisJICogSWYgY2hlY2tzdW1zIGFyZSBlbmFibGVkLCBjYWxsaW5nIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bSgpIHdoaWxlCisJICogY2hlY2tpbmcgdHVwbGUgdmlzaWJpbGl0eSBp bmZvcm1hdGlvbiBpbiBwcnVuZV9mcmVlemVfcGxhbigpIG1heSBoYXZlCisJICogY2F1c2VkIGFu IEZQSSB0byBiZSBlbWl0dGVkLgorCSAqLworCWRpZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZv cmUgIT0gcGdXYWxVc2FnZS53YWxfZnBpOwogCiAJZG9fcHJ1bmUgPSBwcnN0YXRlLm5yZWRpcmVj dGVkID4gMCB8fAogCQlwcnN0YXRlLm5kZWFkID4gMCB8fAotLSAKMi40My4wCgo= --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0002-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v22-0002-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p3xv51 RnJvbSA4ZWJhZjQzNGFmNWFmYWViY2Y3MTU1MDExNmM1OTM1NWIzYmYxNWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYyMiAyLzldIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSB2YWN1dW0gcGhh c2UgSQogcHJ1bmUvZnJlZXplCgpWYWN1dW0gbm8gbG9uZ2VyIGVtaXRzIGEgc2VwYXJhdGUgV0FM IHJlY29yZCBmb3IgZWFjaCBwYWdlIHNldAphbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuIGR1cmlu ZyBwaGFzZSBJLiBJbnN0ZWFkLCB2aXNpYmlsaXR5IG1hcAp1cGRhdGVzIGFyZSBub3cgaW5jbHVk ZWQgaW4gdGhlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4gcmVjb3JkIHRoYXQKaXMgYWxy ZWFkeSBlbWl0dGVkIGZvciBwcnVuaW5nIGFuZCBmcmVlemluZy4KClByZXZpb3VzbHksIGhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgZGV0ZXJtaW5lZCB3aGV0aGVyIGEgcGFnZSB3YXMKYWxs LXZpc2libGUsIGJ1dCB0aGUgY29ycmVzcG9uZGluZyBWTSBiaXRzIHdlcmUgb25seSBzZXQgbGF0 ZXIgaW4KbGF6eV9zY2FuX3BydW5lKCkuIE5vdyB0aGUgVk0gaXMgdXBkYXRlZCBpbW1lZGlhdGVs eSBpbgpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRo ZSBoZWFwCm1vZGlmaWNhdGlvbnMuCgpUaGlzIGNoYW5nZSBhcHBsaWVzIG9ubHkgdG8gdmFjdXVt IHBoYXNlIEksIG5vdCB0byBwcnVuaW5nIHBlcmZvcm1lZApkdXJpbmcgbm9ybWFsIHBhZ2UgYWNj ZXNzLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29t PgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9N eDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyB8ICAzNyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICAgfCA0NjIgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNDEgKy0tLS0tLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgfCAgNDMgKystCiA0IGZpbGVzIGNo YW5nZWQsIDQ0NyBpbnNlcnRpb25zKCspLCAzMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggMTFjYjNmNzRkYTUuLjJhZjcyNDQ1MWMzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTEwNCw2ICsxMDQsOCBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlPZmZzZXROdW1i ZXIgKmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0 YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9fcHJ1bmU7CisJCWJvb2wJCXNldF9s c24gPSBmYWxzZTsKKwkJYm9vbAkJbWFya19idWZmZXJfZGlydHkgPSBmYWxzZTsKIAogCQloZWFw X3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywK IAkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCkBAIC0xNTcsMTcg KzE1OSwzNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCQkvKiBUaGVyZSBzaG91bGQgYmUgbm8gbW9yZSBkYXRhICovCiAJCUFzc2VydCgoY2hhciAq KSBmcnpfb2Zmc2V0cyA9PSBkYXRhcHRyICsgZGF0YWxlbik7CiAKLQkJaWYgKHZtZmxhZ3MgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0JCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQot CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKGRvX3BydW5lIHx8IG5wbGFucyA+IDAp CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHNldF9sc24gPSB0cnVlOwogCiAJCS8qCi0JCSAqIFNl ZSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKCkgZm9yIGNvbW1lbnRhcnkgb24gd2hlbiB3ZSBz ZXQgdGhlCi0JCSAqIGhlYXAgcGFnZSBMU04uCisJCSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkg cmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kCisJCSAqIHVwIHdpdGgg d2l0aCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNldCBhbmQgdGhlIHBhZ2UtbGV2ZWwKKwkJICog UERfQUxMX1ZJU0lCTEUgYml0IGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNl cXVlbnQgcGFnZQorCQkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgdmlz aWJpbGl0eSBtYXAgYml0LgorCQkgKgorCQkgKiB2bWZsYWdzIG1heSBiZSBub256ZXJvIHdpdGgg UERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgKGUuZy4gd2hlbgorCQkgKiBtYXJraW5nIGFuIGFs bC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbikuIElmIG9ubHkgdGhlIFZNIGlzIHVwZGF0ZWQsCisJ CSAqIHRoZSBoZWFwIHBhZ2UgbmVlZCBub3QgYmUgZGlydGllZC4KIAkJICovCi0JCWlmIChkb19w cnVuZSB8fCBucGxhbnMgPiAwIHx8Ci0JCQkoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCWlmICgodm1mbGFncyAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXsKKwkJ CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJbWFya19idWZmZXJfZGlydHkgPSB0cnVlOwor CisJCQkvKgorCQkJICogU2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoKSBmb3IgY29tbWVu dGFyeSBvbiB3aGVuIHdlIHNldAorCQkJICogdGhlIGhlYXAgcGFnZSBMU04uCisJCQkgKi8KKwkJ CWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQkJc2V0X2xzbiA9IHRydWU7CisJCX0KKwor CQlpZiAobWFya19idWZmZXJfZGlydHkpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwor CQlpZiAoc2V0X2xzbikKIAkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKIAogCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAxNDYwMTkzYjkyMC4uYmE1NzhjMWNlMGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVmIHN0cnVjdAogCWJv b2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQgZnJlZXppbmcgdHVw bGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hldGhlciBvciBub3QgdG8gYXR0 ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0X3VwZGF0ZV92bTsKIAlzdHJ1 Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQwLDE2ICsxNDIsMTcgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KIAkgKgotCSAqIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24g dGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBjb25mbGljdCBob3Jp em9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0IGlzIG9ubHkgdmFsaWQgaWYg d2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9u IHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHdo ZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9u IHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRoZSBsaXZlCisJICogdHVwbGVz IG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAqIE5PVEU6IGFsbF92aXNpYmxl IGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuCiAJ ICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8g dXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Igbm90 LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFsdWVzIHJldHVybmVkIHRv IHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkgKiBMUF9ERUFEIGl0ZW1zIGFm dGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZS4KKwkg KiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2Ugb3Ig bm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdmFsdWVzIHVsdGltYXRl bHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVB RCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8KKwkgKiBvcHBvcnR1 bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxs X2Zyb3plbjsKQEAgLTE4OCwxMCArMTkxLDIxIEBAIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROCiAK IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCitzdGF0aWMg VHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJl ZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlk X3JlbW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkg IFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29sIGJsa19hbHJlYWR5X2F2 LAorCQkJCQkJCQkJICBib29sIHNldF9ibGtfYWxsX2Zyb3plbik7CiBzdGF0aWMgYm9vbCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ CQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGlu dF9wcnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKLQorc3RhdGljIGJvb2wg aGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJICAgQmxv Y2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZiwKKwkJCQkJCQkJ ICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKKwkJCQkJ CQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgdWludDggKnZtZmxh Z3MsCisJCQkJCQkJCSAgIGJvb2wgKmRvX3NldF9wZF92aXMpOwogCiAvKgogICogT3B0aW9uYWxs eSBwcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gaW4gdGhlIHNwZWNpZmllZCBwYWdlLgpA QCAtMjc4LDYgKzI5Miw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIpCiAJCQkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCiAJ CQlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJhbXMgPSB7LnJlbGF0aW9uID0gcmVsYXRpb24sLmJ1ZmZl ciA9IGJ1ZmZlciwKKwkJCQkudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyLC5ibGtfa25vd25fYXYg PSBmYWxzZSwKIAkJCQkucmVhc29uID0gUFJVTkVfT05fQUNDRVNTLC5vcHRpb25zID0gMCwKIAkJ CQkudmlzdGVzdCA9IHZpc3Rlc3QsLmN1dG9mZnMgPSBOVUxMCiAJCQl9OwpAQCAtMzMxLDYgKzM0 Niw4IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXBy c3RhdGUtPm1hcmtfdW51c2VkX25vdyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwogCXByc3RhdGUtPmF0dGVtcHRfZnJlZXplID0g KHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0 ZS0+YXR0ZW1wdF91cGRhdGVfdm0gPQorCQkocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BS VU5FX1VQREFURV9WSVMpICE9IDA7CiAJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2Zm czsKIAogCS8qCkBAIC0zNzksNTEgKzM5Niw1NCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBWYWN1dW0gbWF5IHVwZGF0ZSB0aGUgVk0g YWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCi0JICogd2hldGhlciB0aGUg cGFnZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGFmdGVyIHBydW5pbmcgYW5k Ci0JICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisJICogVHJhY2sg d2hldGhlciB0aGUgcGFnZSBjb3VsZCBiZSBtYXJrZWQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1m cm96ZW4uCisJICogVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBvcHBvcnR1bmlzdGljIGZy ZWV6aW5nIGFuZCBmb3IgdXBkYXRpbmcKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgKFZNKSBpZiBy ZXF1ZXN0ZWQgYnkgdGhlIGNhbGxlci4KKwkgKgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0g cGVyZm9ybXMgZnJlZXppbmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1 cmUuIFZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMgcmVxdWlyZWQgbm90IGp1c3QgZm9yIHNldHRp bmcgdGhlIFZNCisJICogYml0cywgYnV0IGFsc28gZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmc6 IHdlIG9ubHkgY29uc2lkZXIgZnJlZXppbmcgaWYKKwkgKiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUg YWxsLWZyb3plbiwgb3IgaWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQKKwkgKiBmb3Ig ZGVhZCB0dXBsZXMgdGhhdCBWQUNVVU0gd2lsbCByZW1vdmUuIElmIGF0dGVtcHRfdXBkYXRlX3Zt IGlzIGZhbHNlLAorCSAqIHdlIHdpbGwgbm90IHNldCB0aGUgVk0gYml0IGV2ZW4gaWYgdGhlIHBh Z2UgaXMgZm91bmQgdG8gYmUgYWxsLXZpc2libGUuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkg VkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkg KiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhh dCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUg YSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMg d2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5n IHRoZSBWTSBiaXRzLgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHBhc3Nl ZCB3aXRob3V0IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJICogcHJzdGF0ZS5hbGxfZnJvemVu IG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gZmFsc2UsIHNpbmNlIHdlIHdpbGwgbm90IGNhbGwKKwkg KiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgZm9yIGVhY2ggdHVwbGUuCiAJICoKLQkgKiBJ biBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBW TSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZv ciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBi ZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5n IHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlm IHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2 ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0 IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1v dmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQot CSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBu b3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVu IHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4Ci0JICogdGhhdCBhZnRlciBzY2FubmluZyB0 aGUgbGluZSBwb2ludGVycy4gV2UgbXVzdCBjb3JyZWN0IGFsbF92aXNpYmxlIGFuZAotCSAqIGFs bF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0aGVtIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhl IGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXRzIGluY29ycmVjdGx5LgorCSAqIERl YWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtIHNob3Vs ZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcuIFRoZXJlZm9yZSwgd2Ug ZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogYW5kIGFsbF9mcm96ZW4gd2hlbiB3ZSBlbmNv dW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdAorCSAqIHRoZW0gYWZ0ZXIg ZGVjaWRpbmcgd2hldGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLCB0 bworCSAqIGF2b2lkIHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCisJICoKKwkgKiBJ ZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdlIHNraXAg dGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6aW5nIGFs bF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlpZiAocHJz dGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7 CiAJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0YXRlLT5h dHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1ZTsKKwkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJ bml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0 aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJ ICovCiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CiAJCXByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMg dGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJbiB0aGUg Y29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gdGhl Ci0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0aGUgZW5k IG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHRo ZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2FjdGlvbiBv biB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0JICogYWxs LXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRyYW5zYWN0 aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0 aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlmIHRoZSBw YWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhh dCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQu IEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxj dWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KKwkgKiB3aGVuIHVwZGF0aW5nIHRo ZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICovCiAJ cHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiB9 CkBAIC03NTgsMTAgKzc3OCwxMzMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7CiB9CiAKKy8qCisgKiBE ZWNpZGUgd2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgZm9yIGhlYXBfYmxr LCB1c2luZworICogaW5mb3JtYXRpb24gZnJvbSBQcnVuZVN0YXRlIGFuZCBibGtfa25vd25fYXYu IFNvbWUgY2FsbGVycyBtYXkgYWxyZWFkeQorICogaGF2ZSBleGFtaW5lZCB0aGlzIHBhZ2XigJlz IFZNIGJpdHMgKGUuZy4sIFZBQ1VVTSBpbiB0aGUgcHJldmlvdXMKKyAqIGhlYXBfdmFjX3NjYW5f bmV4dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0IGFsb25nLgorICoKKyAqIFJldHVy bnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25nIHdpdGgg dGhlIGRlc2lyZWQKKyAqIGZsYWdzIGluICp2bWZsYWdzLiBBbHNvIGluZGljYXRlcyB2aWEgZG9f c2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FMTF9WSVNJQkxFCisgKiBzaG91bGQgYmUgc2V0IG9uIHRo ZSBoZWFwIHBhZ2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJl bGF0aW9uIHJlbGF0aW9uLAorCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJICAg QnVmZmVyIGhlYXBfYnVmLAorCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgIGJvb2wg YmxrX2tub3duX2F2LAorCQkJCQkgICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkg ICB1aW50OCAqdm1mbGFncywKKwkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3ZpcykKK3sKKwlQYWdl CQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsKKwlib29sCQlkb19zZXRfdm0g PSBmYWxzZTsKKworCSpkb19zZXRfcGRfdmlzID0gZmFsc2U7CisKKwlpZiAoIXByc3RhdGUtPmF0 dGVtcHRfdXBkYXRlX3ZtKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAh cHJzdGF0ZS0+YWxsX2Zyb3plbik7CisJCUFzc2VydCgqdm1mbGFncyA9PSAwKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCWlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhUGFnZUlzQWxsVmlz aWJsZShoZWFwX3BhZ2UpKQorCQkqZG9fc2V0X3BkX3ZpcyA9IHRydWU7CisKKwlpZiAoKHByc3Rh dGUtPmFsbF92aXNpYmxlICYmICFibGtfa25vd25fYXYpIHx8CisJCShwcnN0YXRlLT5hbGxfZnJv emVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSkpCisJ eworCQkqdm1mbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmIChwcnN0YXRl LT5hbGxfZnJvemVuKQorCQkJKnZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwor CisJCWRvX3NldF92bSA9IHRydWU7CisJfQorCisJLyoKKwkgKiBOb3cgaGFuZGxlIHR3byBwb3Rl bnRpYWwgY29ycnVwdGlvbiBjYXNlczoKKwkgKgorCSAqIFRoZXNlIGRvIG5vdCBuZWVkIHRvIGhh cHBlbiBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIGFyZSBub3QKKwkgKiBXQUwtbG9nZ2VkLgor CSAqCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hv dWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhv d2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCBpbiB2YWN1dW0gdGhlIGJpdAorCSAqIGdvdCBjbGVh cmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11 c3QKKwkgKiByZWNoZWNrIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0 aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwllbHNlIGlmIChibGtfa25vd25fYXYgJiYgIVBhZ2VJ c0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhy ZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJw YWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBz ZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5l ZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJh Y2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0 IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQorCSAqIHlldCwgd2hpbGUgUERf QUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQorCSAq IG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1 ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250 cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKKwkgKiB0aGlu ayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQor CSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkgKgorCSAqIFRoZXJlIHNob3Vs ZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNl dCwKKwkgKiBob3dldmVyLgorCSAqLworCWVsc2UgaWYgKHByc3RhdGUtPmxwZGVhZF9pdGVtcyA+ IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZXJlcG9ydChXQVJOSU5H LAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBh Z2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiBy ZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVhcF9wYWdl KTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihy ZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7CisJfQorCisJcmV0dXJuIGRvX3NldF92bTsKK30KKworCisjaWZkZWYgVVNFX0FTU0VS VF9DSEVDS0lORworCisvKgorICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKCkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGNhbGxlcnMKKyAqIHRoYXQgZXhwZWN0IG5v IExQX0RFQUQgb24gdGhlIHBhZ2UuIEN1cnJlbnRseSBhc3NlcnQtb25seSwgYnV0IHRoZXJlIGlz IG5vCisgKiByZWFzb24gbm90IHRvIHVzZSBpdCBvdXRzaWRlIG9mIGFzc2VydHMuCisgKi8KK3N0 YXRpYyBib29sCitoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBib29sICphbGxf ZnJvemVuLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJ CQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoreworCisJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKKwkJCQkJCQkJCQkgIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKKwkJCQkJCQkJ CQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsK K30KKyNlbmRpZgogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBw b3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBhZ2UuCisgKiBz cGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdl ZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4g YW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKICAqIGRv bid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJlaGFs Zi4gIENhbGxlciBtaWdodApAQCAtNzc2LDEyICs5MTksMTMgQEAgaGVhcF9wYWdlX3dpbGxfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogdHVwbGVzIGlmIGl0J3Mg cmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBv cgogICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0g cGVyZm9ybWFuY2UgdG8gZG8gc28KICAqIG5vdy4gIFRoZSAncGFyYW1zLmN1dG9mZnMnLCAncHJl c3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCi0gKiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1 bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuCi0gKiBIRUFQX1BBR0VfUFJV TkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNp YmxlCi0gKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBhZnRlciBkZXRlcm1pbmluZyB3aGV0aGVy IG9yIG5vdCB0bwotICogb3Bwb3J1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRo ZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNldCB0byBmYWxzZSB3 aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAotICog YmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQg dGhhdCBpbmZvcm1hdGlvbi4KKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVx dWlyZWQgd2hlbiBmcmVlemluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJ UyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YKKyAqIHRoZSBw YWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgVk0gYXQgdGhlIHNhbWUgdGltZSBh cyBwcnVuaW5nIGFuZAorICogZnJlZXppbmcgdGhlIGhlYXAgcGFnZS4gV2Ugd2lsbCBhbHNvIHVw ZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRzIGFuZAorICogcHJlc3VsdC0+bmV3X3ZtYml0cyB3aXRo IHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVmb3JlIGFuZCBhZnRlciB1cGRhdGluZyBpdAorICogZm9y IHRoZSBjYWxsZXIgdG8gdXNlIGluIGJvb2trZWVwaW5nLgogICoKICAqIHByZXN1bHQgY29udGFp bnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJl ciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24g dGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTgwNiwxMyArOTUwLDIwIEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkgICBNdWx0 aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQogewogCUJ1ZmZlcgkJYnVmZmVyID0gcGFyYW1zLT5i dWZmZXI7CisJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+dm1idWZmZXI7CiAJUGFnZQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlQcnVuZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9f ZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwogCWJvb2wJCWRvX2hpbnRfcHJ1bmU7CisJYm9vbAkJ ZG9fc2V0X3ZtOworCWJvb2wJCWRvX3NldF9wZF92aXM7CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRf ZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0 aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJdWludDgJCW5ld192 bWJpdHMgPSAwOworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKIAogCS8qIEluaXRpYWxpemUgcHJz dGF0ZSAqLwogCXBydW5lX2ZyZWV6ZV9zZXR1cChwYXJhbXMsCkBAIC04NzgsNiArMTAyOSwzNCBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAog CQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlB c3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKwlBc3Nl cnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsK KworCS8qCisJICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSBwYWdlLWxldmVsIFBEX0FMTF9W SVNJQkxFIGJpdCBhbmQgdGhlIFZNIGJpdHMKKwkgKiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9t IHRoZSBWTSBhbmQgdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJICoKKwkgKiBX aGlsZSBpdCBpcyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlIGNv cnJlc3BvbmRpbmcKKwkgKiBWTSBiaXQgaXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBr ZWVwIHRoZW0gaW4gc3luYy4KKwkgKgorCSAqIEFjY29yZGluZ2x5LCB3ZSBhbHNvIGFsbG93IHVw ZGF0aW5nIG9ubHkgdGhlIFZNIHdoZW4gUERfQUxMX1ZJU0lCTEUgaGFzCisJICogYWxyZWFkeSBi ZWVuIHNldC4gU2V0dGluZyBvbmx5IHRoZSBWTSBpcyBtb3N0IGNvbW1vbiB3aGVuIHNldHRpbmcg YW4KKwkgKiBhbHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbi4KKwkgKi8KKwlkb19z ZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJ CQkgICBibG9ja25vLCBidWZmZXIsIHZtYnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJ CQkJCQkJCSAgICZwcnN0YXRlLCAmbmV3X3ZtYml0cywgJmRvX3NldF9wZF92aXMpOworCisJLyog V2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBWTSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2ls bCBiZSAqLworCUFzc2VydCghZG9fc2V0X3ZtIHx8IGRvX3NldF9wZF92aXMgfHwgUGFnZUlzQWxs VmlzaWJsZShwYWdlKSk7CisKKwljb25mbGljdF94aWQgPSBnZXRfY29uZmxpY3RfeGlkKGRvX3By dW5lLCBkb19mcmVlemUsIGRvX3NldF92bSwKKwkJCQkJCQkJCXByc3RhdGUubGF0ZXN0X3hpZF9y ZW1vdmVkLCBwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52 aXNpYmlsaXR5X2N1dG9mZl94aWQsIHBhcmFtcy0+YmxrX2tub3duX2F2LAorCQkJCQkJCQkJKGRv X3NldF92bSAmJiAobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpKTsKKwor CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGEgY3JpdGljYWwgc2VjdGlvbiAqLwor CWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3Jp dGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTg5OSwxNCArMTA3OCwxNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJ CS8qCiAJCSAqIElmIHRoYXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlz IGEgbm9uLVdBTC1sb2dnZWQKLQkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUg b3IgcHJ1bmUgdGhlIHBhZ2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJl bG93LgorCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUg cGFnZSBvciBzZXQKKwkJICogUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVy IGRpcnR5IGJlbG93LgorCQkgKgorCQkgKiBTZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGlzIGZ1bGx5 IFdBTC1sb2dnZWQgYmVjYXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJICogZm9yIHRoZSBWTSB0byBi ZSBzZXQgYW5kIFBEX0FMTF9WSVNJQkxFIHRvIGJlIGNsZWFyLgogCQkgKi8KLQkJaWYgKCFkb19m cmVlemUgJiYgIWRvX3BydW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUgJiYgIWRv X3NldF9wZF92aXMpCiAJCQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQog Ci0JaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXpl IHx8IGRvX3NldF92bSkKIAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBh bmQgcmVwYWlyIHBhZ2UgZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtOTIw LDM2ICsxMTAyLDQzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90 dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJr QnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKGRvX3NldF9wZF92aXMpCisJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKIAotCQkvKgotCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkUq IHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkCi0JCSAqLwotCQlpZiAoUmVsYXRpb25OZWVkc1dB TChwYXJhbXMtPnJlbGF0aW9uKSkKKwkJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19z ZXRfcGRfdmlzKQorCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJaWYgKGRvX3NldF92 bSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhl IHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBvZiBh bGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3NpYmxl IG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55Ci0J CQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3Qg eG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29y ZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBm cmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3aXRo IHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3JkIHdp bGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29uZmxp Y3RfeGlkOworCQkJQXNzZXJ0KFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwogCi0JCQlpZiAoVHJh bnNhY3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJ CSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0 ZS5mcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UKLQkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3Nl dF92bWJpdHMoYmxvY2tubywKKwkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMsCisJ CQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJaWYgKG9sZF92 bWJpdHMgPT0gbmV3X3ZtYml0cykKKwkJCXsKKwkJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOworCQkJCS8qIFVuc2V0IHNvIHdlIGRvbid0IGVtaXQgV0FMIHNpbmNl IG5vIGNoYW5nZSBvY2N1cnJlZCAqLworCQkJCWRvX3NldF92bSA9IGZhbHNlOworCQkJfQorCQl9 CiAKKwkJLyoKKwkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2lu ZyB3aGF0IHdlIGRpZC4gSWYgd2Ugd2VyZQorCQkgKiBvbmx5IHVwZGF0aW5nIHRoZSBWTSBhbmQg aXQgdHVybnMgb3V0IGl0IHdhcyBhbHJlYWR5IHNldCwgd2Ugd2lsbAorCQkgKiBoYXZlIHVuc2V0 IGRvX3NldF92bSBlYXJsaWVyLiBBcyBzdWNoLCBjaGVjayBpdCBhZ2FpbiBiZWZvcmUKKwkJICog ZW1pdHRpbmcgdGhlIHJlY29yZC4KKwkJICovCisJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHBhcmFt cy0+cmVsYXRpb24pICYmCisJCQkoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkp CisJCXsKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVm ZmVyLAotCQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLAkvKiB2bWJ1ZmZlciAqLwotCQkJCQkJCQkJ ICAwLAkvKiB2bWZsYWdzICovCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IHZtYnVmZmVyIDogSW52 YWxpZEJ1ZmZlciwKKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gbmV3X3ZtYml0cyA6IDAsCiAJCQkJ CQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwgcGFyYW1zLT5yZWFzb24sCisJ CQkJCQkJCQkgIHRydWUsIC8qIGNsZWFudXAgbG9jayAqLworCQkJCQkJCQkJICBkb19zZXRfcGRf dmlzLAorCQkJCQkJCQkJICBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96 ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0 YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHByc3RhdGUubmRl YWQsCkBAIC05NTksMjggKzExNDgsNDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCUVORF9DUklUX1NFQ1RJT04oKTsKIAorCWlmIChk b19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisK KwkvKgorCSAqIER1cmluZyBpdHMgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNh bGxzCisJICogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgdG8gZGV0ZXJtaW5lIHdo ZXRoZXIgYSBwYWdlIGlzCisJICogYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uIFRoZSBsb2dp YyBoZXJlIGlzIHNpbWlsYXIuIEFmdGVyIGNvbXBsZXRpbmcKKwkgKiBwcnVuaW5nIGFuZCBmcmVl emluZywgdXNlIGFuIGFzc2VydGlvbiB0byB2ZXJpZnkgdGhhdCBvdXIgcmVzdWx0cworCSAqIHJl bWFpbiBjb25zaXN0ZW50IHdpdGggaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkuCisJ ICovCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxl KQorCXsKKwkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CisJCWJvb2wJCWRlYnVnX2FsbF9m cm96ZW47CisKKwkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQo cHJzdGF0ZS5jdXRvZmZzKTsKKworCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJh bXMtPnJlbGF0aW9uLCBidWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0 WG1pbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJCQkJCQkgICZkZWJ1Z19j dXRvZmYsIG9mZl9sb2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsKKworCQlBc3NlcnQocHJzdGF0ZS5h bGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0b2ZmID09IHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkKTsKKwl9CisjZW5kaWYKKwogCS8qIENvcHkgaW5mb3JtYXRp b24gYmFjayBmb3IgY2FsbGVyICovCiAJcHJlc3VsdC0+bmRlbGV0ZWQgPSBwcnN0YXRlLm5kZWxl dGVkOwogCXByZXN1bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFkOwogCXByZXN1bHQtPm5m cm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47CiAJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0YXRl LmxpdmVfdHVwbGVzOwogCXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0ZS5y ZWNlbnRseV9kZWFkX3R1cGxlczsKLQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxs X3Zpc2libGU7Ci0JcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3plbjsKIAlw cmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKLQotCS8qCi0JICogRm9yIGNhbGxlcnMg cGxhbm5pbmcgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6 b24KLQkgKiBmb3IgdGhhdCByZWNvcmQgbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBh Z2UuICBIb3dldmVyLCBpZiB0aGUKLQkgKiBwYWdlIGlzIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVy ZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZQotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gc2hv dWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMKLQkgKiB0aGUg Y2FzZSB0aGF0IHdlIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUg cmVjb3JkCi0JICogaW5jbHVkZWQgdGhlIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHRoZSBjYWxs ZXIgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJvemVuKQotCQlw cmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxz ZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1 dG9mZl94aWQ7CisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+ b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7CiAKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0 YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2Fz IGFscmVhZHkgZmlsbGVkIGluICovCkBAIC0xNDcyLDYgKzE2ODAsOCBAQCBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYgogCQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAorCQkJCUFzc2VydChw cnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSk7CisKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclht aW5Db21taXR0ZWQoaHR1cCkpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZh bHNlOwpAQCAtMjEyMiw2ICsyMzMyLDY1IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBs ZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1cm4gbnBsYW5zOwogfQogCisvKgor ICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUgWExPR19IRUFQ Ml9QUlVORV9WQUNVVU1fU0NBTgorICogcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25J ZAorZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBk b19zZXRfdm0sCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0ZXN0X3hpZF9yZW1vdmVkLCBUcmFuc2Fj dGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCSBUcmFuc2FjdGlvbklkIHZpc2liaWxp dHlfY3V0b2ZmX3hpZCwgYm9vbCBibGtfYWxyZWFkeV9hdiwKKwkJCQkgYm9vbCBzZXRfYmxrX2Fs bF9mcm96ZW4pCit7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CisKKwkvKgorCSAqIFdl IGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdlIGFyZSBub3QgcHJ1 bmluZyBvcgorCSAqIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0aW5nIGFuIGFscmVh ZHkgYWxsLXZpc2libGUgcGFnZQorCSAqIGFsbC1mcm96ZW4gaW4gdGhlIFZNLiBJbiB0aGlzIGNh c2UsIGFsbCBvZiB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIG11c3QKKwkgKiBhbHJlYWR5IGJlIHZp c2libGUgdG8gYWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZSBzdGFuZGJ5LgorCSAqLworCWlmICgh ZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQlkb19zZXRfdm0gJiYgYmxrX2FscmVhZHlfYXYg JiYgc2V0X2Jsa19hbGxfZnJvemVuKQorCQlyZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisK KwkvKgorCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29y ZCBzaG91bGQgYmUgdGhlIG1vc3QKKwkgKiBjb25zZXJ2YXRpdmUgb2YgYWxsIHRoZSBob3Jpem9u cyBjYWxjdWxhdGVkIGZvciBhbnkgb2YgdGhlIHBvc3NpYmxlCisJICogbW9kaWZpY2F0aW9ucy4g IElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zIG9uCisJ ICogdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgeG1heCBvZiB0aGUgbW9zdCBy ZWNlbnRseSByZW1vdmVkCisJICogdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxsIGNv bmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBmcmVlemUKKwkgKiB0dXBsZXMsIGFueSB0cmFu c2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlCisJICogeW91 bmdlc3QgdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KKwkgKi8K Kwljb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogSWYgd2Ug YXJlIHVwZGF0aW5nIHRoZSBWTSwgdGhlIGNvbmZsaWN0IGhvcml6b24gaXMgYWxtb3N0IGFsd2F5 cyB0aGUKKwkgKiB2aXNpYmlsaXR5IGN1dG9mZiBYSUQuCisJICoKKwkgKiBTZXBhcmF0ZWx5LCBp ZiB3ZSBhcmUgZnJlZXppbmcgYW55IHR1cGxlcywgYXMgYW4gb3B0aW1pemF0aW9uLCB3ZSBjYW4K KwkgKiB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpv biBpZiB0aGUgcGFnZSB3aWxsCisJICogYmUgYWxsLWZyb3plbi4gVGhpcyBpcyB0cnVlIGV2ZW4g aWYgdGhlcmUgYXJlIExQX0RFQUQgbGluZSBwb2ludGVycworCSAqIGJlY2F1c2Ugd2UgaWdub3Jl ZCB0aG9zZSB3aGVuIG1haW50YWluaW5nIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQuCisJICog VGhpcyB3aWxsIGhhdmUgYmVlbiBjYWxjdWxhdGVkIGVhcmxpZXIgYXMgdGhlIGZyel9jb25mbGlj dF9ob3Jpem9uIHdoZW4KKwkgKiB3ZSBkZXRlcm1pbmVkIHdlIHdvdWxkIGZyZWV6ZS4KKwkgKi8K KwlpZiAoZG9fc2V0X3ZtKQorCQljb25mbGljdF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7 CisJZWxzZSBpZiAoZG9fZnJlZXplKQorCQljb25mbGljdF94aWQgPSBmcnpfY29uZmxpY3RfaG9y aXpvbjsKKworCS8qCisJICogSWYgd2UgYXJlIHJlbW92aW5nIHR1cGxlcyB3aXRoIGEgeW91bmdl ciB4bWF4IHRoYW4gb3VyIHNvIGZhcgorCSAqIGNhbGN1bGF0ZWQgY29uZmxpY3RfeGlkLCB3ZSBt dXN0IHVzZSB0aGlzIGFzIG91ciBob3Jpem9uLgorCSAqLworCWlmIChUcmFuc2FjdGlvbklkRm9s bG93cyhsYXRlc3RfeGlkX3JlbW92ZWQsIGNvbmZsaWN0X3hpZCkpCisJCWNvbmZsaWN0X3hpZCA9 IGxhdGVzdF94aWRfcmVtb3ZlZDsKKworCXJldHVybiBjb25mbGljdF94aWQ7Cit9CisKIC8qCiAg KiBXcml0ZSBhbiBYTE9HX0hFQVAyX1BSVU5FKiBXQUwgcmVjb3JkCiAgKgpAQCAtMjE0Niw2ICsy NDE1LDE1IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBp bnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1 cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3RpbGwgYmUgcGlubmVkIGFu ZCBsb2NrZWQuCiAgKgorICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBE X0FMTF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKKyAqIHRoZSBwYWdlIExTTiB3aGVu IGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAor ICogcHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KKyAqCisgKiBJbiBzb21lIGNh c2VzLCBzdWNoIGFzIHdoZW4gaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyBzZXR0aW5n IGFuCisgKiBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4sIFBEX0FM TF9WSVNJQkxFIG1heSBhbHJlYWR5IGJlCisgKiBzZXQuIFNvLCBpdCBpcyBwb3NzaWJsZSBmb3Ig dm1mbGFncyB0byBiZSBub24temVybyBhbmQgc2V0X3BkX2FsbF92aXMgdG8gYmUKKyAqIGZhbHNl LgorICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2NyaWJibGVzIG9uIHRoZSAnZnJvemVuJyBh cnJheS4KICAqCiAgKiBOb3RlOiBUaGlzIGlzIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24s IHNvIGNhcmVmdWwgd2hhdCB5b3UgZG8gaGVyZS4KQEAgLTIxNTUsNiArMjQzMyw3IEBAIGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKIAkJCQkJCSAgVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAorCQkJCQkJICBi b29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCiAJCQkJCQkg IEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVt YmVyICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCkBAIC0yMTkxLDcgKzI0NzAsNyBAQCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCSAqLwogCWlmICghZG9fcHJ1bmUgJiYKIAkJbmZyb3plbiA9PSAwICYmCi0JCSghZG9fc2V0 X3ZtIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFY TG9nSGludEJpdElzTmVlZGVkKCkpKQogCQlyZWdidWZfZmxhZ3NfaGVhcCB8PSBSRUdCVUZfTk9f SU1BR0U7CiAKIAkvKgpAQCAtMjMwOSw3ICsyNTg4LDggQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBTZWUgY29tbWVudCBh dCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiBhYm91dCByZWdidWZfZmxhZ3NfaGVhcCBmb3IKIAkg KiBkZXRhaWxzIG9uIHdoZW4gd2UgY2FuIGFkdmFuY2UgdGhlIHBhZ2UgTFNOLgogCSAqLwotCWlm IChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fCAoZG9fc2V0X3ZtICYmIFhMb2dIaW50Qml0SXNO ZWVkZWQoKSkpCisJaWYgKGRvX3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8CisJCShzZXRfcGRfYWxs X3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCXsKIAkJQXNzZXJ0KEJ1ZmZlcklzRGly dHkoYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDdhNmQ2ZjQyNjM0Li5lZjcz ZWFmYjRmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDY0LDIwICs0 NjQsNiBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19y ZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVw KExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0 aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICph bGxfZnJvemVuLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hp ZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3Rh dGljIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJ CQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRv ZmZzZXRzLAotCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJh bnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9p bmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2Fs bGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhM VlJlbFN0YXRlICp2YWNyZWwsCkBAIC0xOTY2LDcgKzE5NTIsOSBAQCBsYXp5X3NjYW5fcHJ1bmUo TFZSZWxTdGF0ZSAqdmFjcmVsLAogCVJlbGF0aW9uCXJlbCA9IHZhY3JlbC0+cmVsOwogCVBydW5l RnJlZXplUmVzdWx0IHByZXN1bHQ7CiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zID0gey5yZWxh dGlvbiA9IHJlbCwuYnVmZmVyID0gYnVmLAotCQkucmVhc29uID0gUFJVTkVfVkFDVVVNX1NDQU4s Lm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCQkudm1idWZmZXIgPSB2bWJ1ZmZl ciwuYmxrX2tub3duX2F2ID0gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkucmVhc29u ID0gUFJVTkVfVkFDVVVNX1NDQU4sCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVa RSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTLAogCQkudmlzdGVzdCA9IHZhY3JlbC0+dmlz dGVzdCwuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMKIAl9OwogCkBAIC0yMDA5LDMzICsxOTk3 LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJdmFjcmVsLT5uZXdf ZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0gd2lsbCBjYWxsIGhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3ZlcgotCSAq IHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3IgdGhl IHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9naWMg ZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVuaW5n IGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKLQkgKiBhZ3JlZW1l bnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCi0J ICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0LmFsbF92aXNpYmxl KQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJCWRlYnVnX2FsbF9m cm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwotCi0JCWlmICgh aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkgIHZh Y3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSAg JmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKLQkJCUFzc2VydChmYWxzZSk7Ci0KLQkJ QXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3Nl cnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1 dG9mZiA9PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoK IAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2Ug aW4gdmFjcmVsCiAJICovCkBAIC0yMDY5LDE2OCArMjAzMCwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUo TFZSZWxTdGF0ZSAqdmFjcmVsLAogCS8qIERpZCB3ZSBmaW5kIExQX0RFQUQgaXRlbXM/ICovCiAJ Kmhhc19scGRlYWRfaXRlbXMgPSAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwKTsKIAotCUFzc2Vy dCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0JQXNzZXJ0 KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwgcHJlc3VsdC5hbGxfdmlzaWJsZSk7Ci0KIAkvKgotCSAq IEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBm cm9tIHRoZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNh bGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcwor CSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhl IHBhZ2Ugd2FzIG5ld2x5CisJICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFs bC1mcm96ZW4uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJl c3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUpID09IDAgJiYKKwkJKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQkJdWlu dDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQlpZiAocHJlc3VsdC5h bGxfZnJvemVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQu dm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJP WkVOOwotCQl9Ci0KLQkJLyoKLQkJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQg dGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0Ci0JCSAqIHdoaWxlIHRoZSBwYWdlLWxldmVs IGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmCi0JCSAqIGNoZWNr c3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0 IHdlCi0JCSAqIGdldCBiYWNrIGluIHN5bmMuCi0JCSAqCi0JCSAqIE5COiBJZiB0aGUgaGVhcCBw YWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCSAqIGRv bid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBh cmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBw YWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9z ZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0IHRoaXMgc2l0 dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEKLQkJICogY3Jh c2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgotCQkgKi8KLQkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJp bGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlk WExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24sCi0JCQkJCQkJCQkgICBmbGFncyk7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fz bid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkg KiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0IGZvciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikK LQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2 bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0JCX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMg JiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJv emVuKQorCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5u ZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNy ZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJv emVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCQl9CiAJfQotCi0JLyoK LQkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQg bmV2ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZl ciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFw X3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkg KiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1 cHQuCi0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdl SXNBbGxWaXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3Jl bC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAot CQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2Ug aXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBp biByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25v KSkpOwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZl ciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQn cyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAq IHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxl IHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNl dC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBi dXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0 aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNt YWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0 aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVy eW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBp cyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMg b24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0J ZWxzZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NP UlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMg bWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJ CXZhY3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdl KTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVs LT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp OwotCX0KLQotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBi dXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4uCi0J ICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxs X2Zyb3plbiAmJgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVm ZmVyKSkKKwllbHNlIGlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSA9PSAwICYmCisJCQkgKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTikgIT0gMCkKIAl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAq IEF2b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkg Zm9yIHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNp bmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlz aWJsZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewot CQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJ fQotCi0JCS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUp IGluIHRoZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQg YXMgb3VyIGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24g c3VmZmljaWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9n Z2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlv bGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0J CQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZh bGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBU aGUgcGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93 ZXZlciwKLQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQg c29tZXRpbWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192 bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNr IHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRo ZSB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4K LQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09 IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVl OwotCQl9Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2Fz IG5vdCBzZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5l ZWQgdG8gdGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewot CQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0 cnVlOwotCQl9CisJCUFzc2VydCgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCk7CisJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkq dm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCX0KIAogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwpA QCAtMjk1Miw2ICsyNzcxLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFn cywKIAkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFu dXAgbG9jayByZXF1aXJlZCAqLworCQkJCQkJCQkgICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKSAhPSAwLAogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJ CQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0 ZWQgKi8KQEAgLTM2MzIsMzAgKzM0NTIsNiBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogCXZhY3JlbC0+cHZzID0gTlVMTDsKIH0KIAotI2lmZGVmIFVTRV9BU1NFUlRf Q0hFQ0tJTkcKLQotLyoKLSAqIFdyYXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZSgpIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjYWxsZXJzCi0gKiB0aGF0IGV4cGVjdCBubyBM UF9ERUFEIG9uIHRoZSBwYWdlLiBDdXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBu bwotICogcmVhc29uIG5vdCB0byB1c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgotICovCi1zdGF0 aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkgYm9vbCAqYWxsX2Zy b3plbiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJ CQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKLXsKLQotCXJldHVybiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsCi0JCQkJCQkJCQkJICBPbGRlc3RYbWluLAot CQkJCQkJCQkJCSAgTlVMTCwgMCwKLQkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJ ICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7Ci19 Ci0jZW5kaWYKLQogLyoKICAqIENoZWNrIHdoZXRoZXIgdGhlIGhlYXAgcGFnZSBpbiBidWYgaXMg YWxsLXZpc2libGUgZXhjZXB0IGZvciB0aGUgZGVhZAogICogdHVwbGVzIHJlZmVyZW5jZWQgaW4g dGhlIGRlYWRvZmZzZXRzIGFycmF5LgpAQCAtMzY3OCwxNSArMzQ3NCwxMiBAQCBoZWFwX3BhZ2Vf aXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICogIC0gKmxvZ2dpbmdf b2ZmbnVtOiBPZmZzZXROdW1iZXIgb2YgY3VycmVudCB0dXBsZSBiZWluZyBwcm9jZXNzZWQ7CiAg KiAgICAgdXNlZCBieSB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCiAgKgotICogQ2Fs bGVycyBsb29raW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlzIGFscmVhZHkgYWxsLXZpc2li bGUgY2FuIGNhbGwKLSAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpLgotICoKICAqIFRoaXMg bG9naWMgaXMgY2xvc2VseSByZWxhdGVkIHRvIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwoKS4KICAqIElmIHlvdSBtb2RpZnkgdGhpcyBmdW5jdGlvbiwgZW5zdXJlIGNvbnNp c3RlbmN5IHdpdGggdGhhdCBjb2RlLiBBbgogICogYXNzZXJ0aW9uIGNyb3NzLWNoZWNrcyB0aGF0 IGJvdGggcmVtYWluIGluIGFncmVlbWVudC4gRG8gbm90IGludHJvZHVjZSBuZXcKICAqIHNpZGUt ZWZmZWN0cy4KICAqLwotc3RhdGljIGJvb2wKK2Jvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluLAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKaW5kZXggNjMyYzQzMzJhOGMuLjkzN2I0NmE3N2RiIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o CkBAIC00Miw2ICs0Miw3IEBACiAvKiAib3B0aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSAqLwogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURf Tk9XCQkoMSA8PCAwKQogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEp CisjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTCQkJKDEgPDwgMikKIAogdHlwZWRl ZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogdHlwZWRlZiBz dHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBAIC0yMzgsNiArMjM5LDE2IEBA IHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVsYXRpb24JcmVsYXRpb247CQkv KiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAlCdWZmZXIJCWJ1 ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkvKgorCSAqCisJICogdm1idWZm ZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG11c3QgYWxyZWFkeSBjb250YWluIGNvbnRhaW4gdGhlIHJl cXVpcmVkCisJICogYmxvY2sgb2YgdGhlIHZpc2liaWxpdHkgbWFwIGlmIHdlIGFyZSB0byB1cGRh dGUgaXQuIGJsa19rbm93bl9hdiBpcyB0aGUKKwkgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBhcyBvZiB0aGUgbGFzdCBjYWxsIHRvCisJICogZmluZF9uZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrKCkuCisJICovCisJQnVmZmVyCQl2bWJ1ZmZlcjsKKwlib29sCQlibGtfa25vd25f YXY7CisKIAkvKgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMg dXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3Ig ZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1MCw4ICsyNjEsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldAogCSAqIExQX1VO VVNFRCBkdXJpbmcgcHJ1bmluZy4KIAkgKgotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgaW5k aWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAotCSAqIHdpbGwgcmV0 dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVyLgorCSAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6 ZSB0dXBsZXMKKwkgKgorCSAqIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGluZGljYXRlcyB0 aGF0IHdlIHdpbGwgc2V0IHRoZSBwYWdlJ3Mgc3RhdHVzCisJICogaW4gdGhlIFZNLgogCSAqLwog CWludAkJCW9wdGlvbnM7CiAKQEAgLTI4NSwxOSArMjk4LDE1IEBAIHR5cGVkZWYgc3RydWN0IFBy dW5lRnJlZXplUmVzdWx0CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAq IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBh bmQgYWxsLWZyb3plbgotCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQg Zm9yIHRoaXMgcGFnZSwgYWZ0ZXIgcHJ1bmluZy4KLQkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6 b24gaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0J ICogY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5n IHRoZSBWTSBiaXRzLiAgSXQKLQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVw bGVzIChuZnJvemVuID4gMCksIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiBvbGRf dm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGJp dHMgaW4gdGhlCisJICogdmlzaWJpbGl0eSBtYXAgYmVmb3JlIHVwZGF0aW5nIGl0IGR1cmluZyBw aGFzZSBJIG9mIHZhY3V1bWluZy4KKwkgKiBuZXdfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhv c2UgYml0cyBhZnRlciBwaGFzZSBJIG9mIHZhY3V1bWluZy4KIAkgKgotCSAqIFRoZXNlIGFyZSBv bmx5IHNldCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KKwkgKiBUaGVz ZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIG9wdGlvbiBp cyBzZXQgYW5kCisJICogd2UgaGF2ZSBhdHRlbXB0ZWQgdG8gdXBkYXRlIHRoZSBWTS4KIAkgKi8K LQlib29sCQlhbGxfdmlzaWJsZTsKLQlib29sCQlhbGxfZnJvemVuOwotCVRyYW5zYWN0aW9uSWQg dm1fY29uZmxpY3RfaG9yaXpvbjsKKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3Zt Yml0czsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5j YXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KQEAgLTQyNCw2ICs0MzMsNyBAQCBleHRlcm4g dm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICBib29sIGNsZWFu dXBfbG9jaywKKwkJCQkJCQkJCSAgYm9vbCBzZXRfcGRfYWxsX3ZpcywKIAkJCQkJCQkJCSAgUHJ1 bmVSZWFzb24gcmVhc29uLAogCQkJCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwgaW50 IG5mcm96ZW4sCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRp cmVjdGVkLApAQCAtNDMzLDYgKzQ0MywxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92 YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws CiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5KTsKK2V4dGVybiBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAorCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJ CQkJICAgaW50IG5kZWFkb2Zmc2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAor CQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJ CQkJCQkgICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jICovCiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmls aXR5KEhlYXBUdXBsZSBodHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0003-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v22-0003-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p42yk2 RnJvbSAzNGYwMDA5NTcwZTExN2Q3ZDQ4YjU2MGNkMDk3ZWUyNWM2Y2RjYzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMy85XSBFbGltaW5hdGUgWExPR19IRUFQMl9WSVNJQkxFIGZyb20gZW1wdHktcGFn ZSB2YWN1dW0KCkFzIHBhcnQgb2YgcmVtb3ZpbmcgWExPR19IRUFQMl9WSVNJQkxFIHJlY29yZHMs IHBoYXNlIEkgb2YgVkFDVVVNIG5vdwptYXJrcyBlbXB0eSBwYWdlcyBhbGwtdmlzaWJsZSBpbiBh IFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4gcmVjb3JkLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhh YXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggZWY3M2VhZmI0ZjYuLjZhODdmYzM3MWEwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xODcyLDkgKzE4NzIsMTIgQEAgbGF6eV9zY2Fu X25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkgKi8KIAkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkv KiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlM b2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9D UklUX1NFQ1RJT04oKTsKIAotCQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcg YSBXQUwgcmVjb3JkICovCisJCQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBh bnkgV0FMIHJlY29yZHMgKi8KIAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAt MTg5MSwxMyArMTg5NCwzNCBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZh Y3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVm ZmVyKGJ1ZiwgdHJ1ZSk7CiAKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJp bGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExv Z1JlY1B0ciwKLQkJCQkJCQkgIHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJ CQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJ CSB2bWJ1ZmZlciwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJk X2xvY2F0b3IpOworCisJCQkvKgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJ U0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICov CisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJ CQkJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAv KiBjb25mbGljdCB4aWQgKi8KKwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8K KwkJCQkJCQkJCQkgIHRydWUsIC8qIHNldF9wZF9hbGxfdmlzICovCisJCQkJCQkJCQkJICBQUlVO RV9WQUNVVU1fU0NBTiwJLyogcmVhc29uICovCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJ CQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAw KTsKKwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBC VUZGRVJfTE9DS19VTkxPQ0spOworCiAJCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxsLWZyb3plbiBw YWdlcyBmb3IgbG9nZ2luZyAqLwogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwog CQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLS0gCjIuNDMuMAoK --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0004-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v22-0004-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p46eo3 RnJvbSAwZDZhMDZkNDUzM2NmZTE1MzQ0MGQzMDFjM2QyMDkxNWJhMDc4OTJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNC85XSBSZW1vdmUgWExPR19IRUFQMl9WSVNJQkxFIGVudGlyZWx5CgpBcyBubyBy ZW1haW5pbmcgdXNlcnMgZW1pdCBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KVGhpcyBpbmNs dWRlcyBkZWxldGluZyB0aGUgeGxfaGVhcF92aXNpYmxlIHN0cnVjdCBhbmQgYWxsIGZ1bmN0aW9u cwpyZXNwb25zaWJsZSBmb3IgZW1pdHRpbmcgb3IgcmVwbGF5aW5nIFhMT0dfSEVBUDJfVklTSUJM RSByZWNvcmRzLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAg fCAgMTggKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgIHwgIDE2 ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICB8IDExMiArLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgIHwg IDEwIC0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIHwgICAxIC0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAgMjggKy0tLQogc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICB8ICAgOSAtLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgICB8ICAgMSAtCiAxMyBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRp b25zKCspLCAzNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2NvbW1vbi9idWZtYXNrLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpp bmRleCBiYjI2MGNmZmE2OC4uNWYwN2YxNzk0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vYnVmbWFzay5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVm bWFzay5jCkBAIC01Niw4ICs1Niw4IEBAIG1hc2tfcGFnZV9oaW50X2JpdHMoUGFnZSBwYWdlKQog CiAJLyoKIAkgKiBEdXJpbmcgcmVwbGF5LCBpZiB0aGUgcGFnZSBMU04gaGFzIGFkdmFuY2VkIHBh c3Qgb3VyIFhMT0cgcmVjb3JkJ3MgTFNOLAotCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2UgYWxs LXZpc2libGUuIFNlZSBoZWFwX3hsb2dfdmlzaWJsZSgpIGZvcgotCSAqIGRldGFpbHMuCisJICog d2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ19wcnVuZV9h bmRfZnJlZXplKCkKKwkgKiBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDRiMGM0OWY0YmIw Li4yYmZmMzdlMDNiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTI1MjQsMTEgKzI1 MjQsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVT bG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQllbHNlIGlmIChhbGxfZnJvemVuX3NldCkKIAkJ ewogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJp dHMoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJ CQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgcmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJdmlz aWJpbGl0eW1hcF9zZXQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKKwkJCQkJCQkgIHZt YnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICByZWxhdGlvbi0+cmRfbG9jYXRvcik7 CiAJCX0KIAogCQkvKgpAQCAtODc5Nyw1MCArODc5Nyw2IEBAIGJvdHRvbXVwX3NvcnRfYW5kX3No cmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAlyZXR1cm4gbmJsb2Nrc2Zhdm9yYWJs ZTsKIH0KIAotLyoKLSAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXZpc2libGUgb3Bl cmF0aW9uLiAgJ2Jsb2NrJyBpcyB0aGUgYmxvY2sKLSAqIGJlaW5nIG1hcmtlZCBhbGwtdmlzaWJs ZSwgYW5kIHZtX2J1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlCi0gKiBjb3JyZXNw b25kaW5nIHZpc2liaWxpdHkgbWFwIGJsb2NrLiAgQm90aCBzaG91bGQgaGF2ZSBhbHJlYWR5IGJl ZW4gbW9kaWZpZWQKLSAqIGFuZCBkaXJ0aWVkLgotICoKLSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uIGNvbWVzIGZyb20gdGhlIGxhcmdlc3QgeG1pbiBvbiB0aGUgcGFnZSBiZWluZwotICogbWFy a2VkIGFsbC12aXNpYmxlLiAgUkVETyByb3V0aW5lIHVzZXMgaXQgdG8gZ2VuZXJhdGUgcmVjb3Zl cnkgY29uZmxpY3RzLgotICoKLSAqIElmIGNoZWNrc3VtcyBvciB3YWxfbG9nX2hpbnRzIGFyZSBl bmFibGVkLCB3ZSBtYXkgYWxzbyBnZW5lcmF0ZSBhIGZ1bGwtcGFnZQotICogaW1hZ2Ugb2YgaGVh cF9idWZmZXIuIE90aGVyd2lzZSwgd2Ugb3B0aW1pemUgYXdheSB0aGUgRlBJIChieSBzcGVjaWZ5 aW5nCi0gKiBSRUdCVUZfTk9fSU1BR0UgZm9yIHRoZSBoZWFwIGJ1ZmZlciksIGluIHdoaWNoIGNh c2UgdGhlIGNhbGxlciBzaG91bGQgKm5vdCoKLSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNO LgotICovCi1YTG9nUmVjUHRyCi1sb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAotCQkJCSBUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQotewotCXhsX2hlYXBfdmlzaWJsZSB4 bHJlYzsKLQlYTG9nUmVjUHRyCXJlY3B0cjsKLQl1aW50OAkJZmxhZ3M7Ci0KLQlBc3NlcnQoQnVm ZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwotCUFzc2VydChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZl cikpOwotCi0JeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjsKLQl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7Ci0JaWYgKFJlbGF0aW9uSXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKSkKLQkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1B UF9YTE9HX0NBVEFMT0dfUkVMOwotCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckRh dGEoJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJsZSk7Ci0KLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwg dm1fYnVmZmVyLCAwKTsKLQotCWZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOwotCWlmICghWExvZ0hp bnRCaXRJc05lZWRlZCgpKQotCQlmbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7Ci0JWExvZ1JlZ2lz dGVyQnVmZmVyKDEsIGhlYXBfYnVmZmVyLCBmbGFncyk7Ci0KLQlyZWNwdHIgPSBYTG9nSW5zZXJ0 KFJNX0hFQVAyX0lELCBYTE9HX0hFQVAyX1ZJU0lCTEUpOwotCi0JcmV0dXJuIHJlY3B0cjsKLX0K LQogLyoKICAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXVwZGF0ZSBvcGVyYXRpb24u ICBDYWxsZXIgbXVzdCBhbHJlYWR5CiAgKiBoYXZlIG1vZGlmaWVkIHRoZSBidWZmZXIocykgYW5k IG1hcmtlZCB0aGVtIGRpcnR5LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5k ZXggMmFmNzI0NDUxYzMuLjVhYjQ2ZThiZjhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV94bG9nLmMKQEAgLTI1MSw3ICsyNTEsNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCiAJCQlQYWdlSW5p dCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CiAKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25v LCB2bWJ1ZmZlciwgdm1mbGFncywgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFwX3NldChibGtu bywgdm1idWZmZXIsIHZtZmxhZ3MsIHJsb2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0 eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTI2NCwxNDIgKzI2 NCw2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFjZSk7 CiB9CiAKLS8qCi0gKiBSZXBsYXkgWExPR19IRUFQMl9WSVNJQkxFIHJlY29yZHMuCi0gKgotICog VGhlIGNyaXRpY2FsIGludGVncml0eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBu ZXZlciBlbmQgdXAgd2l0aAotICogYSBzaXR1YXRpb24gd2hlcmUgdGhlIHZpc2liaWxpdHkgbWFw IGJpdCBpcyBzZXQsIGFuZCB0aGUgcGFnZS1sZXZlbAotICogUERfQUxMX1ZJU0lCTEUgYml0IGlz IGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCB0aGVuIGEgc3Vic2VxdWVudAotICogcGFn ZSBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 LgotICovCi1zdGF0aWMgdm9pZAotaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCi17Ci0JWExvZ1JlY1B0cglsc24gPSByZWNvcmQtPkVuZFJlY1B0cjsKLQl4bF9oZWFw X3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNv cmQpOwotCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlcgkJYnVmZmVy OwotCVBhZ2UJCXBhZ2U7Ci0JUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7Ci0JQmxvY2tOdW1iZXIg Ymxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwotCi0JQXNzZXJ0KCh4bHJlYy0+ZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUykgPT0geGxyZWMtPmZsYWdzKTsKLQotCVhM b2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDEsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKLQot CS8qCi0JICogSWYgdGhlcmUgYXJlIGFueSBIb3QgU3RhbmRieSB0cmFuc2FjdGlvbnMgcnVubmlu ZyB0aGF0IGhhdmUgYW4geG1pbgotCSAqIGhvcml6b24gb2xkIGVub3VnaCB0aGF0IHRoaXMgcGFn ZSBpc24ndCBhbGwtdmlzaWJsZSBmb3IgdGhlbSwgdGhleQotCSAqIG1pZ2h0IGluY29ycmVjdGx5 IGRlY2lkZSB0aGF0IGFuIGluZGV4LW9ubHkgc2NhbiBjYW4gc2tpcCBhIGhlYXAgZmV0Y2guCi0J ICoKLQkgKiBOQjogSXQgbWlnaHQgYmUgYmV0dGVyIHRvIHRocm93IHNvbWUga2luZCBvZiAic29m dCIgY29uZmxpY3QgaGVyZSB0aGF0Ci0JICogZm9yY2VzIGFueSBpbmRleC1vbmx5IHNjYW4gdGhh dCBpcyBpbiBmbGlnaHQgdG8gcGVyZm9ybSBoZWFwIGZldGNoZXMsCi0JICogcmF0aGVyIHRoYW4g a2lsbGluZyB0aGUgdHJhbnNhY3Rpb24gb3V0cmlnaHQuCi0JICovCi0JaWYgKEluSG90U3RhbmRi eSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkJCQl4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1hMT0dfQ0FUQUxPR19SRUwsCi0JCQkJCQkJCQkJCXJsb2NhdG9yKTsKLQotCS8qCi0JICogUmVh ZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBoZWFwIGZpbGUgaGFz IGRyb3BwZWQgb3IKLQkgKiB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIHdlIGRvbid0IG5l ZWQgdG8gdXBkYXRlIHRoZSBwYWdlLCBidXQgd2UnZAotCSAqIGJldHRlciBzdGlsbCB1cGRhdGUg dGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVk byhyZWNvcmQsIDEsICZidWZmZXIpOwotCWlmIChhY3Rpb24gPT0gQkxLX05FRURTX1JFRE8pCi0J ewotCQkvKgotCQkgKiBXZSBkb24ndCBidW1wIHRoZSBMU04gb2YgdGhlIGhlYXAgcGFnZSB3aGVu IHNldHRpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogbWFwIGJpdCAodW5sZXNzIGNoZWNrc3VtcyBv ciB3YWxfaGludF9iaXRzIGlzIGVuYWJsZWQsIGluIHdoaWNoCi0JCSAqIGNhc2Ugd2UgbXVzdCku IFRoaXMgZXhwb3NlcyB1cyB0byB0b3JuIHBhZ2UgaGF6YXJkcywgYnV0IHNpbmNlCi0JCSAqIHdl J3JlIG5vdCBpbnNwZWN0aW5nIHRoZSBleGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFueSB3YXks IHdlCi0JCSAqIGRvbid0IGNhcmUuCi0JCSAqLwotCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOwotCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCi0JCWlmIChYTG9nSGludEJpdElz TmVlZGVkKCkpCi0JCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0KLQkJTWFya0J1ZmZlckRpcnR5 KGJ1ZmZlcik7Ci0JfQotCWVsc2UgaWYgKGFjdGlvbiA9PSBCTEtfUkVTVE9SRUQpCi0JewotCQkv KgotCQkgKiBJZiBoZWFwIGJsb2NrIHdhcyBiYWNrZWQgdXAsIHdlIGFscmVhZHkgcmVzdG9yZWQg aXQgYW5kIHRoZXJlJ3MKLQkJICogbm90aGluZyBtb3JlIHRvIGRvLiAoVGhpcyBjYW4gb25seSBo YXBwZW4gd2l0aCBjaGVja3N1bXMgb3IKLQkJICogd2FsX2xvZ19oaW50cyBlbmFibGVkLikKLQkJ ICovCi0JfQotCi0JaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKLQl7Ci0JCVNpemUJCXNwYWNl ID0gUGFnZUdldEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwotCi0JCVVubG9ja1Jl bGVhc2VCdWZmZXIoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBTaW5jZSBGU00gaXMgbm90IFdBTC1s b2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBpdAotCQkgKiBlYXNpbHkgYmVj b21lcyBzdGFsZSBpbiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVk Ci0JCSAqIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbCBza2lwIHVwZGF0aW5nIGluZGl2aWR1YWwg ZnJlZSBzcGFjZQotCQkgKiBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2FtZSBhbGwtdmlzaWJs ZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nCi0JCSAqIG9uIHRoZSB2YWN1dW0gbW9kZSwpIHdo aWNoIGlzIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtCi0JCSAqIHByb3BhZ2F0 ZXMgdG9vIG9wdGltaXN0aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxheWVyczsK LQkJICogbGF0ZXIgaW5zZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcyBvbmx5IHRvIGZpbmQg b3V0IHRoYXQgdGhleQotCQkgKiBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBsb25nIHN0 YWxscyB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2gKLQkJICogcGFnZXMuCi0JCSAqCi0JCSAqIEZv cmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0IGEgcGFn ZSB0aGF0Ci0JCSAqIGlzIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCi0JCSAq Ci0JCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWluZyBhcHBs aWVkLCBzaW5jZSB0aGUKLQkJICogRlNNIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4K LQkJICovCi0JCWlmICh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0J CQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBzcGFjZSk7Ci0J fQotCi0JLyoKLQkgKiBFdmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRhdGUgZHVl IHRvIHRoZSBMU04gaW50ZXJsb2NrLCBpdCdzCi0JICogc3RpbGwgc2FmZSB0byB1cGRhdGUgdGhl IHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKLQkgKiB0aGUgdmlz aWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwgc28g YW55Ci0JICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNsZWFy ZWQuCi0JICovCi0JaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwg UkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLAotCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19O RUVEU19SRURPKQotCXsKLQkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlcik7 Ci0JCVJlbGF0aW9uCXJlbG47Ci0JCXVpbnQ4CQl2bWJpdHM7Ci0KLQkJLyogaW5pdGlhbGl6ZSB0 aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLwotCQlpZiAoUGFnZUlzTmV3KHZtcGFn ZSkpCi0JCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7Ci0KLQkJLyogcmVtb3ZlIFZJU0lC SUxJVFlNQVBfWExPR18qICovCi0JCXZtYml0cyA9IHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUzsKLQotCQkvKgotCQkgKiBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZCBsb2NrZWQgdGhlIGJ1ZmZlci4gQnV0Ci0JCSAqIHZpc2liaWxpdHltYXBfc2V0IHdpbGwgaGFu ZGxlIGxvY2tpbmcgaXRzZWxmLgotCQkgKi8KLQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVS X0xPQ0tfVU5MT0NLKTsKLQotCQlyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0 b3IpOwotCi0JCXZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVmZmVyLCBs c24sIHZtYnVmZmVyLAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHZt Yml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVsY2FjaGVF bnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVVu bG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2ZW4gYW4gImluZm9i aXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0cyBpbiB0 aGUKICAqIGdpdmVuIGluZm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBsZSB0b3VjaGVk IGJ5IHRoZSByZWNvcmQuCkBAIC03NzcsOCArNjQxLDggQEAgaGVhcF94bG9nX211bHRpX2luc2Vy dChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKgogCSAqIER1cmluZyByZWNvdmVyeSwgaG93 ZXZlciwgbm8gY29uY3VycmVudCB3cml0ZXJzIGV4aXN0LiBUaGVyZWZvcmUsCiAJICogdXBkYXRp bmcgdGhlIFZNIHdpdGhvdXQgaG9sZGluZyB0aGUgaGVhcCBwYWdlIGxvY2sgaXMgc2FmZSBlbm91 Z2guIFRoaXMKLQkgKiBzYW1lIGFwcHJvYWNoIGlzIHRha2VuIHdoZW4gcmVwbGF5aW5nIHhsX2hl YXBfdmlzaWJsZSByZWNvcmRzIChzZWUKLQkgKiBoZWFwX3hsb2dfdmlzaWJsZSgpKS4KKwkgKiBz YW1lIGFwcHJvYWNoIGlzIHRha2VuIHdoZW4gcmVwbGF5aW5nIFhMT0dfSEVBUDJfUFJVTkUqIHJl Y29yZHMgKHNlZQorCSAqIGhlYXBfeGxvZ19wcnVuZV9hbmRfZnJlZXplKCkpLgogCSAqLwogCWlm ICgoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkgJiYKIAkJWExvZ1Jl YWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAxLCBSQk1fWkVST19PTl9FUlJPUiwgZmFs c2UsCkBAIC03OTAsMTEgKzY1NCwxMSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCiAJCQlQYWdlSW5pdCh2 bXBhZ2UsIEJMQ0tTWiwgMCk7CiAKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAot CQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwK LQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJIHJsb2NhdG9yKTsK KwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJICBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOLAorCQkJCQkJICBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZm ZXIpKTsKIAkJUGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0xMzc1LDkgKzEyMzksNiBAQCBo ZWFwMl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQljYXNlIFhMT0dfSEVBUDJfUFJV TkVfVkFDVVVNX0NMRUFOVVA6CiAJCQloZWFwX3hsb2dfcHJ1bmVfZnJlZXplKHJlY29yZCk7CiAJ CQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0JCQloZWFwX3hsb2dfdmlzaWJs ZShyZWNvcmQpOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJ CQloZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KHJlY29yZCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYmE1NzhjMWNlMGYuLjgwMDM3ZDY5MGUzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTExMiw5ICsxMTEyLDkgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJewogCQkJQXNz ZXJ0KFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwogCi0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1i aXRzLAotCQkJCQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCW9s ZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVm ZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJCSAgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0 b3IpOwogCQkJaWYgKG9sZF92bWJpdHMgPT0gbmV3X3ZtYml0cykKIAkJCXsKIAkJCQlMb2NrQnVm ZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwpAQCAtMjM5NiwxNCArMjM5NiwxOCBA QCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRv X3NldF92bSwKICAqCiAgKiBUaGlzIGlzIHVzZWQgZm9yIHNldmVyYWwgZGlmZmVyZW50IHBhZ2Ug bWFpbnRlbmFuY2Ugb3BlcmF0aW9uczoKICAqCi0gKiAtIFBhZ2UgcHJ1bmluZywgaW4gVkFDVVVN J3MgMXN0IHBhc3Mgb3Igb24gYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQorICogLSBQYWdlIHBydW5p bmcsIGluIHZhY3V1bSBwaGFzZSBJIG9yIG9uLWFjY2VzczogU29tZSBpdGVtcyBhcmUKICAqICAg cmVkaXJlY3RlZCwgc29tZSBtYXJrZWQgZGVhZCwgYW5kIHNvbWUgcmVtb3ZlZCBhbHRvZ2V0aGVy LgogICoKLSAqIC0gRnJlZXppbmc6IEl0ZW1zIGFyZSBtYXJrZWQgYXMgJ2Zyb3plbicuCisgKiAt IEZyZWV6aW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIEksIGl0ZW1zIGFyZSBtYXJrZWQgYXMgJ2Zy b3plbicKICAqCi0gKiAtIFZhY3V1bSwgMm5kIHBhc3M6IEl0ZW1zIHRoYXQgYXJlIGFscmVhZHkg TFBfREVBRCBhcmUgbWFya2VkIGFzIHVudXNlZC4KKyAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1 bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUKKyAqICAgbWFy a2VkIGFzIHVudXNlZC4KICAqCi0gKiBUaGV5IGhhdmUgZW5vdWdoIGNvbW1vbmFsaXRpZXMgdGhh dCB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3IgdGhlbQorICogLSBWTSB1cGRhdGVzOiBB ZnRlciB2YWN1dW0gcGhhc2VzIEkgYW5kIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkgYmUgbWFya2Vk CisgKiAgIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgorICoKKyAqIFRoZXNlIGNoYW5nZXMg YWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRo ZW0KICAqIGFsbC4KICAqCiAgKiBJZiByZXBsYXlpbmcgdGhlIHJlY29yZCByZXF1aXJlcyBhIGNs ZWFudXAgbG9jaywgcGFzcyBjbGVhbnVwX2xvY2sgPSB0cnVlLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDZhODdmYzM3MWEwLi41YmViNDEwYWFjYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg5NCwxMSArMTg5NCwxMSBAQCBsYXp5X3NjYW5f bmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAKIAkJCVBhZ2VTZXRB bGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAotCQkJ CQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAot CQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSB2YWNyZWwtPnJl bC0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCQkgIHZt YnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRv cik7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBv biB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc3Niw5ICsyNzc2LDkgQEAgbGF6eV92YWN1dW1faGVh cF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZm ZXIsCiAJCSAqIHNldCBQRF9BTExfVklTSUJMRS4KIAkJICovCiAJCVBhZ2VTZXRBbGxWaXNpYmxl KHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1 ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKKwkJdmlz aWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAorCQkJCQkJ ICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlf Y3V0b2ZmX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zp c2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpp bmRleCBkMTQ1ODhlOTJhZS4uNzk5N2U5MjY4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmlsaXR5bWFwX2NsZWFy ICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcAogICoJCXZp c2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5nIGEgYml0CiAgKgkJ dmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3QgbWFwIHBhZ2UgaXMg YWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGluIGEg cHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFwX2Nv dW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJCXZp c2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTA5ICsyMTksNiBAQCB2aXNp YmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpCiAJcmV0 dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtYnVmKSA9 PSBtYXBCbG9jazsKIH0KIAotLyoKLSAqCXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJpdChzKSBv biBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKLSAqCi0gKiByZWNwdHIgaXMgdGhlIExTTiBvZiB0 aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVyeSwKLSAq IG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBhZ2UgTFNO IGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVubmluZywg d2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2UgTFNOIHRv IHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBiZSB1cGRh dGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1pbiBvbiB0 aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQgZm9yIEhv dCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0aGUgcGFn ZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxpZFRyYW5z YWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBpcyBi ZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCi0gKiBDYWxsZXIgaXMgZXhwZWN0ZWQgdG8gc2V0 IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcKLSAqIHRo aXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNvIHBhc3Mg dGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5kIHdlJ3Jl IG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0byB0aGUg V0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgotICoKLSAqIFlvdSBtdXN0 IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlzIGZ1 bmN0aW9uLgotICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJpZ2h0 IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCi0gKiBhbnkgSS9PLgotICoKLSAqIFJldHVy bnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFncy4K LSAqLwotdWludDgKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVmZmVy IHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFncykKLXsK LQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7Ci0J dWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVpbnQ4CQlt YXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdlOwotCXVp bnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlN QVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKLQkJIGZs YWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRpZgotCi0J QXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpOwotCUFzc2Vy dChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVmKSkp OwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdzKTsK LQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5n IGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2UgcGlu bmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVmZmVy R2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndyb25n IGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0KCFC dWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZSho ZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2 ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYp IHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhFUlJP UiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQotCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENvbnRl bnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0K LQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VDVElP TigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFya0J1 ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7Ci0J CQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJblJl Y292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1C dWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVja3N1 bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQgdG8g cHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAqIElm IG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJbgot CQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRlZCBm cm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxkIGJl IGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJCSAq LwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQloZWFw UGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFwUGFn ZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7Ci0J CX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgogICogU2V0IFZNICh2 aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoKQEAgLTM0 NCw5ICsyNDAsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBk ZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJpdHMo QmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAot CQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1hcF9zZXQo QmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJ CQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJlciBtYXBC bG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRlID0g SEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVh cGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQotCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNpYmxl ICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJCQkJ CSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQogCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFwX211 bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAtNDYx LDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19IRUFQ Ml9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQIjsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lCTEUi OwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9ICJN VUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCBjYzAzZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2RlY29k ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ Y2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERBVEVE OgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXgg NDIyMmJkYWIwNzguLmM2MTk2NDNlMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBA IC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChU cmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdldCBwYXNz ZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25mbGljdCku CiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1hcHBsaWVk IFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdo ZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0IG1hcmtz IGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJdCdzCi0J ICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgg ZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVh c29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9y IHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAqIHJlcGxh eSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFzaCBvciBy ZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJICogZnJv emVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZp c2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBn ZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1dGlvbiBv ZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25mbGljdCB3 aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBw bGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgog CSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhvcml6b24p KQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUzYzljLi5l OWU3N2JkNjc4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYwLDYgQEAK ICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFD VVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAKICNkZWZp bmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAyX0xPQ0tf VVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAtMjk0LDcg KzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUgU2l6ZU9m SGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2 KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBpZiB0aGUg dGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1hcGRlZnMu aAorICogVklTSUJMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwgaXMgYWxzbyBkZWZpbmVkIGFzICgx IDw8IDIpLiB4bF9oZWFwX3BydW5lCisgKiByZWNvcmRzIHNob3VsZCB1c2UgWExIUF9JU19DQVRB TE9HX1JFTCwgbm90IFZJU0lCSUxJWVRNQVBfWExPR19DQVRBTE9HX1JFTCAtLQorICogZXZlbiBp ZiB0aGV5IG9ubHkgY29udGFpbiB1cGRhdGVzIHRvIHRoZSBWTS4KKyAqLwogI2RlZmluZQkJWExI UF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCiAKIC8qCkBAIC00NDMsMjAgKzQ0OCw2IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBs YWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0v KgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIK LSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1 aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlz aWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQot CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0OTEs NiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5m byk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywK IAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBjNmZhMzdiZTk2OC4uMDViYTY3ODZiNDcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmlu ZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxv Y2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg aGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIg dm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVp bnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tO dW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJ CQkJCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHVpbnQ4IHZp c2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJICAgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkgICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRv cik7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmls aXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9j a051bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9w cmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHlt YXBkZWZzLmgKaW5kZXggNWFkNWMwMjA4NzcuLmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT CTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxh Z3MgYml0cyAqLwotLyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxv Z2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFi bGUgaXMgYSB1c2VyIGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFs Ci0gKiBiaXQgaW50byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBh Ym92ZS4KLSAqCi0gKiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0df Q0FUQUxPR19SRUwJMHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwko VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM KQogCiAjZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCBjNzUxYzI1YTA0ZC4uMmE5OTUxYjcxODggMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC00MjkyLDcgKzQyOTIsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFw X3Jld3JpdGVfbWFwcGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hl YXBfdmlzaWJsZQogeGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZh bGlkYXRpb25zCi0tIAoyLjQzLjAKCg== --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0005-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v22-0005-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p49754 RnJvbSBmZDA0NTUyMzA5NjhmZDkxOTk5OWE1YzAzNWYzODMwZDMxMGYwZTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNS85XSBSZW5hbWUgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8KIEds b2JhbFZpc1hpZFZpc2libGVUb0FsbCgpCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0 CgpUaGUgZnVuY3Rpb24gaXMgY3VycmVudGx5IG9ubHkgdXNlZCB0byBjaGVjayB3aGV0aGVyIGEg dHVwbGXigJlzIHhtYXggaXMKdmlzaWJsZSB0byBhbGwgdHJhbnNhY3Rpb25zIChhbmQgdGh1cyBy ZW1vdmFibGUpLiBVcGNvbWluZyBjaGFuZ2VzIHdpbGwKYWxzbyB1c2UgaXQgdG8gdGVzdCB3aGV0 aGVyIGEgdHVwbGXigJlzIHhtaW4gaXMgdmlzaWJsZSB0byBhbGwgdG8KZGVjaWRlIGlmIGEgcGFn ZSBjYW4gYmUgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4KClRoZSBu ZXcgbmFtZSwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCksIGJldHRlciByZWZsZWN0cyB0aGlz IGJyb2FkZXIKcHVycG9zZS4KClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJp bGxAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmls aXR5LmMgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAg ICAgICAgfCAxMiArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFj dXVtLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMg ICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdy LmggICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRp b25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3Zpc2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcg QEAgSGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNo b3Qgc25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRl cikpOwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rl c3QsIGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90 LT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAll bHNlCkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxl IGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBE ZWxldGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91 Z2guICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJ CQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdl dFJhd1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK aW5kZXggODAwMzdkNjkwZTMuLjk4OWFmNzY1NzAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwpAQCAtMjUwLDcgKzI1MCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RG b3IocmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVz dCwgcHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBw cnVuZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNDc2LDcgKzQ3Niw3IEBAIHBydW5lX2Zy ZWV6ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUs CiAJICogRGV0ZXJtaW5pbmcgSFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWly ZWQgZm9yIGNvcnJlY3RuZXNzLAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5n IEhUU1YgdHdpY2UgY291bGQgcmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3Ig ZXhhbXBsZSwgUkVDRU5UTFlfREVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBj aGVja2VkIGl0ZW0gY2F1c2VzIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1 cGRhdGUgdGhlCisJICogY2hlY2tlZCBpdGVtIGNhdXNlcyBHbG9iYWxWaXNGdWxsWGlkVmlzaWJs ZVRvQWxsKCkgdG8gdXBkYXRlIHRoZQogCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVT UyBjYW4gY2hhbmdlIHRvIERFQUQgaWYgdGhlIGluc2VydGluZwogCSAqIHRyYW5zYWN0aW9uIGFi b3J0cy4KIAkgKgpAQCAtMTIzOCwxMSArMTIzOCwxMSBAQCBoZWFwX3BydW5lX3NhdGlzZmllc192 YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1ZmZlcikK IAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVyZWQgZGVh ZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3RhdGUuIE9u LWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZzLiBBbmQg Zm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgotCSAqIHRo YW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQgZmluZCB0 aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBz aW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xv YmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYKKwkgKiB0 aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9m IHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlzVGVzdElz UmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChHbG9iYWxW aXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJCXJldHVy biBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CkBAIC0xNzAxLDcgKzE3MDEsNyBAQCBo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJCS8qCiAJCQkJICogRm9yIG5vdyBhbHdheXMgdXNl IHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQogCQkJCSAqIHdlIG9ubHkg dXBkYXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJ ICogaXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlk CisJCQkJICogaXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkKIAkJCQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRv IHNldCB0aGUgVk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDcxZWYyZTUwMzZmLi4xYzBl YjQyNWVlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyAr NTM2LDcgQEAgdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVs YXRpb24gaGVhcHJlbCwgQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUg PT0gU1BHSVNUX1JFRElSRUNUICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQp IHx8Ci0JCQkgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkK KwkJCSBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJ CQlkdC0+dHVwc3RhdGUgPSBTUEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5u UmVkaXJlY3Rpb24gPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAw ZjcyYzZlMjUuLjIzNWMzYjU4NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpA QCAtNDE4MSw4ICs0MTgxLDcgQEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVu dCBmb3IgR2xvYmFsVmlzU3RhdGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxs VHJhbnNhY3Rpb25JZCBmeGlkKQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBm eGlkIGlzIG9sZGVyIHRoYW4gbWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZp c2libGUgdG8KQEAgLTQyMTYsMTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxl RnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3Vu ZCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBX cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhp ZHMuCiAgKgogICogSXQgaXMgY3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3Ig eGlkcyBmcm9tIGEgc291cmNlIHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91 bmRzIChlLmcuIGZyb20gYSB0YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3pl bnhpZCkuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxs KEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5z YWN0aW9uSWQgZnhpZDsKIApAQCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkg Ki8KIAlmeGlkID0gRnVsbFhpZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4 aWQpOwogCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4 aWQpOworCXJldHVybiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsK IH0KIAogLyoKICAqIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3Io KSBhbmQKLSAqIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNv bW1lbnRzLgorICogR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29t bWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlv biByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEds b2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlv bklkIGZ4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBH bG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xv YmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252 ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlz VGVzdElzVmlzaWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2Jh bFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBA IC00MjY1LDcgKzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiBy ZWwsIFRyYW5zYWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7 CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJl dHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmgKaW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5o CkBAIC0xMDAsOCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90 IHNuYXBzaG90KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlz U3RhdGU7CiBleHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24g cmVsKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZp c0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0 aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tS ZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAK LS0gCjIuNDMuMAoK --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0006-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v22-0006-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p4c9n5 RnJvbSA1NjUwMTRlMzFhYTExN2ZiNDM5OTNlZTJlNjRkYTM4ZmZiNzRmMzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNi85XSBVc2UgR2xvYmFsVmlzU3RhdGUgaW4gdmFjdXVtIHRvIGRldGVybWluZSBw YWdlIGxldmVsCiB2aXNpYmlsaXR5Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpE dXJpbmcgdmFjdXVtJ3MgZmlyc3QgYW5kIHRoaXJkIHBoYXNlcywgd2UgZXhhbWluZSB0dXBsZXMn IHZpc2liaWxpdHkKdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2li bGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKUHJldmlvdXNseSwgdGhpcyBjaGVjayBjb21wYXJl ZCB0dXBsZSB4bWlucyBhZ2FpbnN0IGEgc2luZ2xlIFhJRCBjaG9zZW4gYXQKdGhlIHN0YXJ0IG9m IHZhY3V1bSAoT2xkZXN0WG1pbikuIFdlIG5vdyB1c2UgR2xvYmFsVmlzU3RhdGUsIHdoaWNoIGFs c28KZW5hYmxlcyBmdXR1cmUgd29yayB0byBzZXQgdGhlIFZNIGR1cmluZyBvbi1hY2Nlc3MgcHJ1 bmluZywgc2luY2Ugb3JkaW5hcnkKcXVlcmllcyBoYXZlIGFjY2VzcyB0byBHbG9iYWxWaXNTdGF0 ZSBidXQgbm90IE9sZGVzdFhtaW4uCgpUaGlzIGFsc28gYmVuZWZpdHMgdmFjdXVtIGRpcmVjdGx5 OiBpbiBzb21lIGNhc2VzLCBHbG9iYWxWaXNTdGF0ZSBtYXkKYWR2YW5jZSBkdXJpbmcgYSB2YWN1 dW0sIGFsbG93aW5nIG1vcmUgcGFnZXMgdG8gYmVjb21lIGNvbnNpZGVyZWQKYWxsLXZpc2libGUu IEFuZCwgaW4gdGhlIGZ1dHVyZSwgd2UgY291bGQgZWFzaWx5IGFkZCBhIGhldXJpc3RpYyB0bwp1 cGRhdGUgR2xvYmFsVmlzU3RhdGUgbW9yZSBmcmVxdWVudGx5IGR1cmluZyB2YWN1dW1zIG9mIGxh cmdlIHRhYmxlcy4gSW4KdGhlIHJhcmUgY2FzZSB0aGF0IHRoZSBHbG9iYWxWaXNTdGF0ZSBtb3Zl cyBiYWNrd2FyZCwgdmFjdXVtIGZhbGxzIGJhY2sKdG8gT2xkZXN0WG1pbiB0byBlbnN1cmUgd2Ug ZG9u4oCZdCBhdHRlbXB0IHRvIGZyZWV6ZSBhIGRlYWQgdHVwbGUgdGhhdAp3YXNu4oCZdCB5ZXQg cHJ1bmFibGUgYWNjb3JkaW5nIHRvIHRoZSBHbG9iYWxWaXNTdGF0ZS4KCkJlY2F1c2UgY29tcGFy aW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBHbG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVu c2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEgc2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBj aGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwgdHVwbGVzIG9uIHRoZSBwYWdlLiBJZiB2aXNp YmlsaXR5X2N1dG9mZl94aWQgd2FzCm1haW50YWluZWQsIHdlIHBlcmZvcm0gdGhlIEdsb2JhbFZp c1N0YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFnZS4KVGhpcyBpcyBzYWZlIGJlY2F1c2Ugdmlz aWJpbGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhlIG5ld2VzdCB4bWluIG9uCnRoZSBwYWdlOyBp ZiBpdCBpcyBnbG9iYWxseSB2aXNpYmxlLCB0aGVuIHRoZSBlbnRpcmUgcGFnZSBpcyBhbGwtdmlz aWJsZS4KClRoaXMgYXBwcm9hY2ggbWF5IHJlc3VsdCBpbiBleGFtaW5pbmcgbW9yZSB0dXBsZSB4 bWlucyB0aGFuIGJlZm9yZSwKc2luY2Ugd2l0aCBPbGRlc3RYbWluIHdlIGNvdWxkIHNvbWV0aW1l cyBydWxlIG91dCB0aGUgcGFnZSBiZWluZwphbGwtdmlzaWJsZSBlYXJsaWVyLiBIb3dldmVyLCBw cm9maWxpbmcgc2hvd3MgdGhlIGFkZGl0aW9uYWwgY29zdCBpcyBub3QKc2lnbmlmaWNhbnQuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyB8IDI4ICsrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAgIHwg NDMgKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgICAgICAgIHwgMTAgKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAg ICAgICAgICAgICAgfCAxMSArKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygr KSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNp YmlsaXR5LmMKaW5kZXggNGViYzhhYmRiZWIuLmVkZDUyOWRjM2MwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTExODksNiArMTE4OSwzNCBAQCBI ZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xk ZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogTmVhcmx5IHRoZSBzYW1lIGFzIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSwgYnV0IHVzZXMgYSBHbG9iYWxWaXNTdGF0ZSB0bworICog ZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdHVwbGUgaXMgSEVBUFRVUExFX0RFQUQgT3IKKyAq IEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFELiBJdCBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZSBidXQg Y2FuIGJlIHVzZWQgYnkKKyAqIGNhbGxlcnMgdGhhdCBoYXZlIG5vdCBjYWxjdWxhdGVkIGEgc2lu Z2xlIE9sZGVzdFhtaW4gdmFsdWUuCisgKi8KK0hUU1ZfUmVzdWx0CitIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW1HbG9iYWxWaXMoSGVhcFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0 LAorCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIpCit7CisJVHJhbnNhY3Rpb25JZCBkZWFkX2FmdGVy ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJSFRTVl9SZXN1bHQgcmVzOworCisJcmVzID0gSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihodHVwLCBidWZmZXIsICZkZWFkX2FmdGVyKTsK KworCWlmIChyZXMgPT0gSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQpCisJeworCQlBc3NlcnQoVHJh bnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOworCisJCWlmIChHbG9iYWxWaXNYaWRWaXNp YmxlVG9BbGwodmlzdGVzdCwgZGVhZF9hZnRlcikpCisJCQlyZXMgPSBIRUFQVFVQTEVfREVBRDsK Kwl9CisJZWxzZQorCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsK KworCXJldHVybiByZXM7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZvciBIZWFwVHVwbGVTYXRp c2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA5ODlhZjc2NTcwMi4uMDQwZWZlODBmMmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC00MzksMTEgKzQzOSwxMiBAQCBwcnVuZV9mcmVlemVfc2V0 dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICogVGhlIHZpc2liaWxpdHkg Y3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcwot CSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5 IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29u IGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5vdCB2aXNpYmxlIHRvIGFs bCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKLQkgKiBtYWlu dGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xkZXIgdGhhbiB0aGUgdmlz aWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEdsb2JhbFZpc1N0YXRlLiBU aGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBwYWdlIGlzCisJICogYWxs LXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlzIG5vdCB2 aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBh cyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUg c25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRoZSBWTQorCSAqIGFuZC9v ciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0YXRlLT52 aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KQEAgLTg4Niwx NCArODg3LDEzIEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCiAg Ki8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBHbG9i YWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXROdW1iZXIg KmxvZ2dpbmdfb2ZmbnVtKQogewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5V TEwsIDAsCiAJCQkJCQkJCQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9j dXRvZmZfeGlkLApAQCAtOTk0LDYgKzk5NCwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0YXRlLm5kZWFkID4gMCB8fAogCQlw cnN0YXRlLm51bnVzZWQgPiAwOwogCisJLyoKKwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUg bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3Qg dGhlbSBpcyBub3QgdmlzaWJsZSB0byBldmVyeW9uZSwgdGhlIHBhZ2UgY2Fubm90IGJlCisJICog YWxsLXZpc2libGUuCisJICovCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNh Y3Rpb25JZElzTm9ybWFsKHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQkhR2xv YmFsVmlzWGlkVmlzaWJsZVRvQWxsKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQpKQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVu ID0gZmFsc2U7CisKIAkvKgogCSAqIEV2ZW4gaWYgd2UgZG9uJ3QgcHJ1bmUgYW55dGhpbmcsIGlm IHdlIGZvdW5kIGEgbmV3IHZhbHVlIGZvciB0aGUKIAkgKiBwZF9wcnVuZV94aWQgZmllbGQgb3Ig dGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgaGludApAQCAtMTE2 NSwxMCArMTE3NSw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3Rh dGUubHBkZWFkX2l0ZW1zID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlp ZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0J CQkJCQkJCQkgIHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgcHJzdGF0 ZS52aXN0ZXN0LAogCQkJCQkJCQkJICAmZGVidWdfYWxsX2Zyb3plbiwKIAkJCQkJCQkJCSAgJmRl YnVnX2N1dG9mZiwgb2ZmX2xvYykpCiAJCQlBc3NlcnQoZmFsc2UpOwpAQCAtMTY5OCwyMCArMTcw Nyw2IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJICovCiAJCQkJeG1pbiA9IEhlYXBU dXBsZUhlYWRlckdldFhtaW4oaHR1cCk7CiAKLQkJCQkvKgotCQkJCSAqIEZvciBub3cgYWx3YXlz IHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0aGlzIHRlc3QsIGJlY2F1c2UKLQkJCQkgKiB3ZSBv bmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zyb3plbicgd2hlbiBmcmVlemluZwot CQkJCSAqIGlzIHJlcXVlc3RlZC4gV2UgY291bGQgdXNlIEdsb2JhbFZpc1hpZFZpc2libGVUb0Fs bCgpCi0JCQkJICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBz ZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0J CQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xk ZXN0WG1pbikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJ CQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQogCQkJ CS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRyYW5zYWN0aW9uSWRG b2xsb3dzKHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJCQkJVHJh bnNhY3Rpb25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CmluZGV4IDViZWI0MTBhYWNjLi43YzNiYjI1Y2MwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwpAQCAtMjczMCw3ICsyNzMwLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExW UmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICog ZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZh Y3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAog CQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9m cm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZu dW0pKQpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUg KnZhY3JlbCkKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhl ciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4K ICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2 aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBh cmFtZXRlcnM6CiAgKgpAQCAtMzUwNSw3ICszNTA1LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExW UmVsU3RhdGUgKnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9s ZGVzdFhtaW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAg T2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAog CQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNTc5LDcgKzM1NzksNyBAQCBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCS8q IFZpc2liaWxpdHkgY2hlY2tzIG1heSBkbyBJTyBvciBhbGxvY2F0ZSBtZW1vcnkgKi8KIAkJQXNz ZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7Ci0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtKCZ0dXBsZSwgT2xkZXN0WG1pbiwgYnVmKSkKKwkJc3dpdGNoIChIZWFwVHVwbGVTYXRp c2ZpZXNWYWN1dW1HbG9iYWxWaXMoJnR1cGxlLCB2aXN0ZXN0LCBidWYpKQogCQl7CiAJCQljYXNl IEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKQEAgLTM1OTgsNyArMzU5OCw3IEBAIGhlYXBfcGFnZV93 b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCSAqIHRo YXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CiAJCQkJCSAqLwogCQkJCQl4bWluID0g SGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlpZiAoIVRyYW5zYWN0 aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKKwkJCQkJaWYgKCFHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwodmlzdGVzdCwgeG1pbikpCiAJCQkJCXsKIAkJCQkJCWFsbF92aXNpYmxlID0g ZmFsc2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDkz N2I0NmE3N2RiLi4yYjZhNTIxZTRlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjc2LDEwICsyNzYs OSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCiAJLyoKIAkgKiBDb250YWlu cyB0aGUgY3V0b2ZmcyB1c2VkIGZvciBmcmVlemluZy4gVGhleSBhcmUgcmVxdWlyZWQgaWYgdGhl Ci0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiBjdXRvZmZzLT5PbGRl c3RYbWluIGlzIGFsc28gdXNlZAotCSAqIHRvIGRldGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUg SEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IKLQkgKiBIRUFQVFVQTEVfREVBRC4gQ3VycmVudGx5 IG9ubHkgdmFjdXVtIHBhc3NlcyBpbiBjdXRvZmZzLiBWYWN1dW0KLQkgKiBjYWxjdWxhdGVzIHRo ZW0gb25jZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLgorCSAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4gQ3VycmVudGx5IG9ubHkgdmFj dXVtIHBhc3NlcyBpbgorCSAqIGN1dG9mZnMuIFZhY3V1bSBjYWxjdWxhdGVzIHRoZW0gb25jZSwg YXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlCisJICogcmVsYXRpb24uCiAJICovCiAJ c3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9IFBydW5lRnJlZXplUGFyYW1zOwpAQCAt NDQ0LDcgKzQ0Myw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9y ZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiBleHRlcm4gYm9vbCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlz dGVzdCwKIAkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJ CSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAg LTQ1OCw2ICs0NTcsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0 ZShIZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJCQkJCQkgIEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFw VHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCQlCdWZmZXIg YnVmZmVyKTsKK2V4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9i YWxWaXMoSGVhcFR1cGxlIGh0dXAsCisJCQkJCQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0 ZXN0LCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4gdm9pZCBIZWFwVHVwbGVT ZXRIaW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBidWZmZXIsCi0tIAoyLjQz LjAKCg== --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0007-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v22-0007-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p4g1g6 RnJvbSA0NGJhNTM4NDBkNTJjYTI1NWRkYjA5YWNiNmZkMGNkYTg1NTlhNGRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNy85XSBVbnNldCBhbGxfdmlzaWJsZSBzb29uZXIgaWYgbm90IGZyZWV6aW5nCk1J TUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpJbiB0aGUgcHJ1bmUvZnJlZXplIHBhdGgs IHdlIGN1cnJlbnRseSBkZWxheSBjbGVhcmluZyBhbGxfdmlzaWJsZSBhbmQKYWxsX2Zyb3plbiBp biB0aGUgcHJlc2VuY2Ugb2YgZGVhZCBpdGVtcyB0byBhbGxvdyBvcHBvcnR1bmlzdGljCmZyZWV6 aW5nLgoKSG93ZXZlciwgaWYgbm8gZnJlZXppbmcgd2lsbCBiZSBhdHRlbXB0ZWQsIHRoZXJl4oCZ cyBubyBuZWVkIHRvIGRlbGF5LgpDbGVhcmluZyB0aGUgZmxhZ3MgZWFybGllciBhdm9pZHMgZXh0 cmEgYm9va2tlZXBpbmcgaW4KaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgp LiBUaGlzIGN1cnJlbnRseSBoYXMgbm8gcnVudGltZQplZmZlY3QgYmVjYXVzZSBhbGwgY2FsbGVy cyB0aGF0IGNvbnNpZGVyIHNldHRpbmcgdGhlIFZNIGFsc28gcHJlcGFyZQpmcmVlemUgcGxhbnMs IGJ1dCB1cGNvbWluZyBjaGFuZ2VzIHdpbGwgYWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0 CnRoZSBWTSB3aXRob3V0IGZyZWV6aW5nLiBUaGUgZXh0cmEgYm9va2tlZXBpbmcgd2FzIG5vdGlj ZWFibGUgaW4gYQpwcm9maWxlIG9mIG9uLWFjY2VzcyBWTSBzZXR0aW5nLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMTUgKysrKysrKysrKysrKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IDA0MGVmZTgwZjJlLi45MDI3MDA4MWFjZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE1NjQsOCArMTU2NCwxMyBAQCBoZWFwX3BydW5l X3JlY29yZF9kZWFkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0sCiAJ LyoKIAkgKiBEZWxpYmVyYXRlbHkgZGVsYXkgdW5zZXR0aW5nIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIHVudGlsIGxhdGVyCiAJICogZHVyaW5nIHBydW5pbmcuIFJlbW92YWJsZSBkZWFkIHR1 cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlCi0JICogcGFnZS4KKwkgKiBwYWdl LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxlIG5v dywgdGhvdWdoLgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFs c2U7CisJfQogCiAJLyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJz dGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwpAQCAt MTgyNCw4ICsxODI5LDE0IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBh Z2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyCiAJICogU2ltaWxhcmx5 LCBkb24ndCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1bnRpbCBsYXRlciwgYXQg dGhlCiAJICogZW5kIG9mIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuICBUaGlzIHdpbGwg YWxsb3cgdXMgdG8gYXR0ZW1wdCB0bwogCSAqIGZyZWV6ZSB0aGUgcGFnZSBhZnRlciBwcnVuaW5n LiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdCBiZWZvcmUgdXBkYXRpbmcKLQkgKiB0aGUgdmlzaWJp bGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3JyZWN0LgorCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCwg dGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsCisJICog dGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxlIG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUt PmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAogCS8qIFJlY29yZCB0aGUgZGVhZCBv ZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVh ZF9pdGVtcysrXSA9IG9mZm51bTsKLS0gCjIuNDMuMAoK --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0008-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v22-0008-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p4jam7 RnJvbSBiY2VkODFmNmRmM2QzMDM2NzlmYWMyYTE0MTRkNDJmMGRiNDAxMjMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgOC85XSBBbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBzZXQgcGFnZXMgYWxsLXZp c2libGUKCk1hbnkgcXVlcmllcyBkbyBub3QgbW9kaWZ5IHRoZSB1bmRlcmx5aW5nIHJlbGF0aW9u LiBGb3Igc3VjaCBxdWVyaWVzLCBpZgpvbi1hY2Nlc3MgcHJ1bmluZyBvY2N1cnMgZHVyaW5nIHRo ZSBzY2FuLCB3ZSBjYW4gY2hlY2sgd2hldGhlciB0aGUgcGFnZQpoYXMgYmVjb21lIGFsbC12aXNp YmxlIGFuZCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFjY29yZGluZ2x5LgpQcmV2aW91c2x5 LCBvbmx5IHZhY3V1bSBhbmQgQ09QWSBGUkVFWkUgbWFya2VkIHBhZ2VzIGFzIGFsbC12aXNpYmxl IG9yCmFsbC1mcm96ZW4uCgpTdXBwb3J0aW5nIHRoaXMgcmVxdWlyZXMgcGFzc2luZyBpbmZvcm1h dGlvbiBhYm91dCB3aGV0aGVyIHRoZSByZWxhdGlvbgppcyBtb2RpZmllZCBmcm9tIHRoZSBleGVj dXRvciBkb3duIHRvIHRoZSBzY2FuIGRlc2NyaXB0b3IuCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRz IG9uLWFjY2VzcyBWTSBzZXR0aW5nIGZvciBzZXF1ZW50aWFsIHNjYW5zIGFzIHdlbGwKYXMgZm9y IHRoZSB1bmRlcmx5aW5nIGhlYXAgcmVsYXRpb24gaW4gaW5kZXggc2NhbnMgYW5kIGJpdG1hcCBo ZWFwCnNjYW5zLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNv bT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3Ft MktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0t CiBjb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jICAgICAgICAgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAzICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAxNSArKystCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAyMiArKysrLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDY5ICsrKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAgICAg ICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICAgICAg fCAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8ICA4 ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAgIHwgIDggKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgMiArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgOSArKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgICAgfCAxMSArKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8IDI2ICsrKysrKy0KIHNyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKystCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAxOSArKy0tLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi90LzAzNV9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICstCiAyOSBmaWxlcyBjaGFuZ2Vk LCAyMTAgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyBiL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMKaW5kZXggZjg4MjY5MzMyYjYuLjI3ZjAxZDgwNTVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bn cm93bG9ja3MvcGdyb3dsb2Nrcy5jCisrKyBiL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMKQEAgLTExNCw3ICsxMTQsNyBAQCBwZ3Jvd2xvY2tzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwogCiAJLyogU2NhbiB0aGUgcmVsYXRp b24gKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwg MCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90 KCksIDAsIE5VTEwsIDApOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCWF0dGlu bWV0YSA9IFR1cGxlRGVzY0dldEF0dEluTWV0YWRhdGEocnNpbmZvLT5zZXREZXNjKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwppbmRleCBjYjMzMzE5MjFjYi4uYjk2MTM3ODdiODUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTI4NDIsNyArMjg0Miw4IEBAIF9icmluX3BhcmFsbGVsX3NjYW5fYW5k X2J1aWxkKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQg PSBicmluc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKGhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJy aW5zaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJp bnNoYXJlZCksCisJCQkJCQkJCQkwKTsKIAogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxk X3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1ZSwgdHJ1ZSwKIAkJCQkJCQkJCSAgIGJy aW5idWlsZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRlLCBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bmluc2VydC5jCmluZGV4IGMyYjg3OWIyYmY2Li4xNDc4NDQ2OTBhMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmluc2VydC5jCkBAIC0yMDU4LDcgKzIwNTgsOCBAQCBfZ2luX3BhcmFsbGVsX3NjYW5f YW5kX2J1aWxkKEdpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCA9IGdpbnNoYXJlZC0+aXNjb25jdXJyZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9w YXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFy ZWQoZ2luc2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNo YXJlZChnaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRl eF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIHRydWUsIHByb2dyZXNzLAogCQkJ CQkJCQkJICAgZ2luQnVpbGRDYWxsYmFja1BhcmFsbGVsLCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCmluZGV4IDJiZmYzN2UwM2I1Li5hZTUzZTMxMWNlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTU1NSw2ICs1NTUsNyBAQCBoZWFwX3ByZXBhcmVfcGFnZXNj YW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlCdWZmZXIJCWJ1ZmZlciA9IHNjYW4tPnJzX2NidWY7 CiAJQmxvY2tOdW1iZXIgYmxvY2sgPSBzY2FuLT5yc19jYmxvY2s7CiAJU25hcHNob3QJc25hcHNo b3Q7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAJUGFnZQkJcGFnZTsKIAlpbnQJCQls aW5lczsKIAlib29sCQlhbGxfdmlzaWJsZTsKQEAgLTU2OSw3ICs1NzAsOSBAQCBoZWFwX3ByZXBh cmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAkvKgogCSAqIFBydW5lIGFuZCByZXBh aXIgZnJhZ21lbnRhdGlvbiBmb3IgdGhlIHdob2xlIHBhZ2UsIGlmIHBvc3NpYmxlLgogCSAqLwot CWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyKTsKKwlpZiAo c3NjYW4tPnJzX2ZsYWdzICYgU09fSElOVF9SRUxfUkVBRF9PTkxZKQorCQl2bWJ1ZmZlciA9ICZz Y2FuLT5yc192bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNf cmQsIGJ1ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9j ayBvbiB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCkBAIC0xMjQ2LDYg KzEyNDksNyBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25h cHNob3QsCiAJCQkJCQkJCQkJCQkJCSAgc2l6ZW9mKFRCTUl0ZXJhdGVSZXN1bHQpKTsKIAl9CiAK KwlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gKFRhYmxlU2Nh bkRlc2MpIHNjYW47CiB9CkBAIC0xMjg0LDYgKzEyODgsMTIgQEAgaGVhcF9yZXNjYW4oVGFibGVT Y2FuRGVzYyBzc2NhbiwgU2NhbktleSBrZXksIGJvb2wgc2V0X3BhcmFtcywKIAkJc2Nhbi0+cnNf Y2J1ZiA9IEludmFsaWRCdWZmZXI7CiAJfQogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNf dm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisJCXNj YW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CisKIAkvKgogCSAqIFNPX1RZUEVf QklUTUFQU0NBTiB3b3VsZCBiZSBjbGVhbmVkIHVwIGhlcmUsIGJ1dCBpdCBkb2VzIG5vdCBob2xk IGFueQogCSAqIGFkZGl0aW9uYWwgZGF0YSB2cyBhIG5vcm1hbCBIZWFwU2NhbgpAQCAtMTMxNiw2 ICsxMzI2LDkgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKEJ1ZmZl cklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCiAJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfY2J1Zik7 CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZm ZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCiAJLyoKIAkgKiBNdXN0IGZyZWUgdGhlIHJlYWQgc3Ry ZWFtIGJlZm9yZSBmcmVlaW5nIHRoZSBCdWZmZXJBY2Nlc3NTdHJhdGVneS4KIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGJjYmFjODQ0YmI2Li4yN2Uz NDk4ZjVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC03 OSwxMiArNzksMTQgQEAgaGVhcGFtX3Nsb3RfY2FsbGJhY2tzKFJlbGF0aW9uIHJlbGF0aW9uKQog ICovCiAKIHN0YXRpYyBJbmRleEZldGNoVGFibGVEYXRhICoKLWhlYXBhbV9pbmRleF9mZXRjaF9i ZWdpbihSZWxhdGlvbiByZWwpCitoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVs LCB1aW50MzIgZmxhZ3MpCiB7CiAJSW5kZXhGZXRjaEhlYXBEYXRhICpoc2NhbiA9IHBhbGxvYzAo c2l6ZW9mKEluZGV4RmV0Y2hIZWFwRGF0YSkpOwogCiAJaHNjYW4tPnhzX2Jhc2UucmVsID0gcmVs OwogCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNfdm1idWZmZXIg PSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA9ICEoZmxhZ3MgJiBT T19ISU5UX1JFTF9SRUFEX09OTFkpOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAg LTk5LDYgKzEwMSwxMiBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxl RGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54 c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+ eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwor CQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZv aWQKQEAgLTEzOCw3ICsxNDYsOCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IElu ZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdl IHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBo c2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVs LCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNl LnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJCQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/ IE5VTEwgOiAmaHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9j ayBvbiB0aGUgYnVmZmVyIHNvIHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTc1Myw3 ICs3NjIsNyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRI ZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCiAJCXRhYmxlU2NhbiA9IE5VTEw7CiAJCWhlYXBTY2Fu ID0gTlVMTDsKLQkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZEluZGV4 LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCk7CisJCWluZGV4U2NhbiA9IGluZGV4X2JlZ2luc2Nh bihPbGRIZWFwLCBPbGRJbmRleCwgU25hcHNob3RBbnksIE5VTEwsIDAsIDAsIDApOwogCQlpbmRl eF9yZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxMLCAwKTsKIAl9CiAJZWxzZQpAQCAtNzYy LDcgKzc3MSw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9s ZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0o UFJPR1JFU1NfQ0xVU1RFUl9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BIQVNF X1NFUV9TQ0FOX0hFQVApOwogCi0JCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2luc2NhbihPbGRIZWFw LCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwpOworCQl0YWJsZVNjYW4gPSB0YWJsZV9i ZWdpbnNjYW4oT2xkSGVhcCwgU25hcHNob3RBbnksIDAsIChTY2FuS2V5KSBOVUxMLCAwKTsKIAkJ aGVhcFNjYW4gPSAoSGVhcFNjYW5EZXNjKSB0YWJsZVNjYW47CiAJCWluZGV4U2NhbiA9IE5VTEw7 CiAKQEAgLTI0NzEsNiArMjQ4MCw3IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2Nh bkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9m ZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0VdOwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJ QnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAKIAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBT T19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydChoc2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAt MjUxNyw3ICsyNTI3LDkgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hv bGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5y c19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNfZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09O TFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVf b3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBo b2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBs ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA5MDI3MDA4MWFjZC4uMTI0NzIy ZjE3NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDMsNyArMjAzLDkg QEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CiAJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkJCQkgICBjb25zdCBQcnVuZVN0 YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCQkJCSAg IGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJCQkgICBQcnVuZVN0YXRlICpw cnN0YXRlLAogCQkJCQkJCQkgICB1aW50OCAqdm1mbGFncywKIAkJCQkJCQkJICAgYm9vbCAqZG9f c2V0X3BkX3Zpcyk7CiAKQEAgLTIxOCw5ICsyMjAsMTMgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdl X3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKICAqIGlmIHRoZXJlJ3Mgbm90IGFueSB1 c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBvbiB0aGUgYnVmZmVy LCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4KKyAqCisgKiBJZiB2bWJ1ZmZlciBp cyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmluZyB0byBzZXQgdGhlIHZpc2liaWxpdHkg bWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gV2Ugd2lsbCB0YWtlIGNhcmUgb2Yg cGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRpbmcgaW4gdGhlIHBhZ2Ugb2YgdGhlIHZp c2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIHsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQgcHJ1bmVfeGlkOwpAQCAtMjk3 LDYgKzMwMywxMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogCQkJCS52aXN0ZXN0ID0gdmlzdGVzdCwuY3V0b2ZmcyA9IE5VTEwKIAkJCX07 CiAKKwkJCWlmICh2bWJ1ZmZlcikKKwkJCXsKKwkJCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlv biwgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpOworCQkJCXBhcmFtcy5v cHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVM7CisJCQkJcGFyYW1zLnZtYnVmZmVy ID0gKnZtYnVmZmVyOworCQkJfQorCiAJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFy YW1zLCAmcHJlc3VsdCwgJmR1bW15X29mZl9sb2MsCiAJCQkJCQkJCQkgICBOVUxMLCBOVUxMKTsK IApAQCAtNzg1LDYgKzc5OCw5IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGhhdmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBi aXRzIChlLmcuLCBWQUNVVU0gaW4gdGhlIHByZXZpb3VzCiAgKiBoZWFwX3ZhY19zY2FuX25leHRf YmxvY2soKSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhhdCBhbG9uZy4KICAqCisgKiBUaGlzIHNob3Vs ZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRv X3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlz dGljLWJhc2VkIGRlY2lzaW9uLgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBW TSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25nIHdpdGggdGhlIGRlc2lyZWQKICAqIGZsYWdzIGlu ICp2bWZsYWdzLiBBbHNvIGluZGljYXRlcyB2aWEgZG9fc2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FM TF9WSVNJQkxFCiAgKiBzaG91bGQgYmUgc2V0IG9uIHRoZSBoZWFwIHBhZ2UuCkBAIC03OTUsNyAr ODExLDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJ ICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJv b2wgYmxrX2tub3duX2F2LAotCQkJCQkgICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJ CQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9f ZnJlZXplLAorCQkJCQkgICBQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkgICB1aW50OCAqdm1m bGFncywKIAkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3ZpcykKIHsKQEAgLTgxMSw2ICs4MjksMjMg QEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJcmV0dXJuIGZh bHNlOwogCX0KIAorCS8qCisJICogSWYgdGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2Un cmUgbm90IGFjdHVhbGx5IHBydW5pbmcsIGF2b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0 eSBtYXAgaWYgaXQgd291bGQgbmV3bHkgZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0 aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1 ZGluZyBhCisJICogZnVsbC1wYWdlIGltYWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhl IFdBTC4gVGhpcyBzaXR1YXRpb24KKwkgKiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBy dW5pbmcgaXMgb25seSBhdHRlbXB0ZWQgd2hlbgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4K KwkgKi8KKwlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5hbGxf dmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGly dHkoaGVhcF9idWYpIHx8IFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGhlYXBfYnVmKSkpCisJ eworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhUGFn ZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQogCQkqZG9fc2V0X3BkX3ZpcyA9IHRydWU7CiAKQEAg LTgzNCw2ICs4NjksMTEgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlv biwKIAkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUg dGhhdCBpbiB2YWN1dW0gdGhlIGJpdAogCSAqIGdvdCBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3Nj YW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QKIAkgKiByZWNoZWNrIHdpdGgg YnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkg KgorCSAqIFRoaXMgd2lsbCBuZXZlciB0cmlnZ2VyIGZvciBvbi1hY2Nlc3MgcHJ1bmluZyBiZWNh dXNlIGl0IGNvdWxkbid0IGhhdmUKKwkgKiBkb25lIGEgcHJldmlvdXMgdmlzaWJpbGl0eSBtYXAg bG9va3VwIGFuZCB0aHVzIHdpbGwgYWx3YXlzIHBhc3MKKwkgKiBibGtfa25vd25fYXYgYXMgZmFs c2UuIEEgZnV0dXJlIHZhY3V1bSB3aWxsIGhhdmUgdG8gdGFrZSBjYXJlIG9mIGZpeGluZworCSAq IHRoZSBjb3JydXB0aW9uLgogCSAqLwogCWVsc2UgaWYgKGJsa19rbm93bl9hdiAmJiAhUGFnZUlz QWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCiAJCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJl bGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQpAQCAtOTk0LDYgKzEwMzQsMTQgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ cHJzdGF0ZS5uZGVhZCA+IDAgfHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsKIAorCS8qCisJICog RXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUg Zm9yIHRoZQorCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1 bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CisJICogYml0LgorCSAqLworCWRvX2hpbnRfcHJ1 bmUgPSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1 bmVfeGlkIHx8CisJCVBhZ2VJc0Z1bGwocGFnZSk7CisKIAkvKgogCSAqIEFmdGVyIHByb2Nlc3Np bmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJ ICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5u b3QgYmUKQEAgLTEwMDQsMTQgKzEwNTIsNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkhR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHBy c3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQogCQlwcnN0YXRl LmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKLQkvKgotCSAqIEV2 ZW4gaWYgd2UgZG9uJ3QgcHJ1bmUgYW55dGhpbmcsIGlmIHdlIGZvdW5kIGEgbmV3IHZhbHVlIGZv ciB0aGUKLQkgKiBwZF9wcnVuZV94aWQgZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxs LCB3ZSB3aWxsIHVwZGF0ZSB0aGUgaGludAotCSAqIGJpdC4KLQkgKi8KLQlkb19oaW50X3BydW5l ID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1bmVfeGlkICE9IHByc3RhdGUubmV3X3BydW5l X3hpZCB8fAotCQlQYWdlSXNGdWxsKHBhZ2UpOwotCiAJLyoKIAkgKiBEZWNpZGUgaWYgd2Ugd2Fu dCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplCiAJICog cGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KQEAgLTEwNTQsNiArMTA5NCw3IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICovCiAJZG9f c2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0aW9uLAogCQkJCQkJ CQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJ CQkJCQkJCQkgICBwYXJhbXMtPnJlYXNvbiwgZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwKIAkJCQkJCQkJ CSAgICZwcnN0YXRlLCAmbmV3X3ZtYml0cywgJmRvX3NldF9wZF92aXMpOwogCiAJLyogV2Ugc2hv dWxkIG9ubHkgc2V0IHRoZSBWTSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAq LwpAQCAtMjM0MCw3ICsyMzgxLDcgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJl ZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogCiAvKgogICogQ2FsY3VsYXRlIHRoZSBjb25mbGlj dCBob3Jpem9uIGZvciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgotICog cmVjb3JkLgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgogICovCiBz dGF0aWMgVHJhbnNhY3Rpb25JZAogZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29s IGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCkBAIC0yNDEwLDggKzI0NTEsOCBAQCBnZXRfY29u ZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwK ICAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFs cmVhZHkgTFBfREVBRCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVw ZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBi ZSBtYXJrZWQKLSAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZNIHVwZGF0 ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRoZSBoZWFw IHBhZ2UKKyAqICAgbWF5IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KICAq CiAgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmds ZSBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCmlu ZGV4IDBjYjI3YWYxMzEwLi4xZTc5OTJkYmViMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK QEAgLTQ0Nyw3ICs0NDcsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQl9CiAKIAkJc3lzc2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0 aW9uLCBpcmVsLAotCQkJCQkJCQkJCSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDApOworCQkJCQkJ CQkJCSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDAsIDApOwogCQlpbmRleF9yZXNjYW4oc3lzc2Nh bi0+aXNjYW4sIGlkeGtleSwgbmtleXMsIE5VTEwsIDApOwogCQlzeXNzY2FuLT5zY2FuID0gTlVM TDsKIApAQCAtNzA4LDcgKzcwOCw3IEBAIHN5c3RhYmxlX2JlZ2luc2Nhbl9vcmRlcmVkKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAl9CiAKIAlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihoZWFwUmVsYXRpb24sIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJCQkgc25hcHNob3QsIE5VTEws IG5rZXlzLCAwKTsKKwkJCQkJCQkJCSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDAsIDApOwogCWlu ZGV4X3Jlc2NhbihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJc3lz c2Nhbi0+c2NhbiA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9pbmRleGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDA0 OTJkOTJkMjNiLi5iNTUyM2NmMmFiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBA IC0yNTcsNyArMjU3LDcgQEAgaW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCQlSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJ CUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKLQkJCQlpbnQgbmtleXMsIGlu dCBub3JkZXJieXMpCisJCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCB1aW50MzIgZmxhZ3Mp CiB7CiAJSW5kZXhTY2FuRGVzYyBzY2FuOwogCkBAIC0yODQsNyArMjg0LDcgQEAgaW5kZXhfYmVn aW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlzY2FuLT5pbnN0cnVtZW50ID0gaW5zdHJ1 bWVudDsKIAogCS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9tIHRhYmxlICov Ci0Jc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0 aW9uKTsKKwlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFw UmVsYXRpb24sIGZsYWdzKTsKIAogCXJldHVybiBzY2FuOwogfQpAQCAtNjE1LDcgKzYxNSw3IEBA IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRl eHJlbCwKIAlzY2FuLT5pbnN0cnVtZW50ID0gaW5zdHJ1bWVudDsKIAogCS8qIHByZXBhcmUgdG8g ZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9tIHRhYmxlICovCi0Jc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcHJlbCk7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcHJlbCwgMCk7CiAKIAlyZXR1cm4gc2NhbjsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNDU0YWRhZWU3ZGMuLjAyYWIwMjMz ZTU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtMTkyNSw3ICsxOTI1LDcg QEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIsCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgpOwog CWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAJc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJUGFy YWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVs VGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSwgMCk7CiAJcmVsdHVwbGVzID0gdGFibGVf aW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZv LAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jlc3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJ CQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmlu ZGV4IDVlNDE0MDQ5MzdlLi41NThjNDQ5Nzk5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVh bS5jCkBAIC01MCw2ICs1MCw3IEBAIGNoYXIJICAgKmRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhv ZCA9IERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRDsKIGJvb2wJCXN5bmNocm9uaXplX3NlcXNj YW5zID0gdHJ1ZTsKIAogCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFNsb3QgZnVuY3Rp b25zLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYzLDEwICsxNjQsMTEgQEAgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChS ZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8CiAJ CVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJ QXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+ cGhzX2xvY2F0b3IpKTsKQEAgLTIxNyw3ICsyMTksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90dXBs ZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVfc2xv dF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVs KTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxsX2Fn YWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2FuKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUzNmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlxdWVf a2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3RpZDsK IAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2FuID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJYm9v bAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUo c2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCBjZWY0NTI1ODRlNS4uMjJiNDUzZGM2MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0xMTU2 LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1hcCA9 IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVzYyA9 IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNj YW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVM TCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAyM2ViYWEzZjIzMC4uNjZjNDE4MDU5ZmUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02MzQ1LDcgKzYzNDUsNyBAQCBBVFJld3JpdGVUYWJs ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2luZyBh bGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwgc25h cHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzczMCw3ICsxMzcz MCw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkgKi8K IAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJc2xv dCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWduS2V5 Q29uc3RyYWludCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCA1OTc5NTgwMTM5Zi4uMzU1 NjBhYzYwZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMzE1NCw3ICszMTU0LDcgQEAg dmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3RyYWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNj YW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0 ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVz dHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUo dGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAkJewpAQCAtMzIzNSw3ICszMjM1LDcgQEAgdmFs aWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQoT2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2Ni aW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkvKiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxh dGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3Qo KSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwp OworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAw KTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAo dGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkp CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggNDAxNjA2Zjg0MGEuLjRl MzlhYzAwZjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtODE1LDcgKzgx NSw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5OgogCWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2Vs ZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZE aXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4 X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRz LCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5kZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRz LCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5nX3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK aW5kZXggMjdjOWVlYzY5N2IuLjA2MzBhNWFmNzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK QEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0 aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRz ID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJ CQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVnYWwgdGFy Z2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxpZFJvd01h cmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCmluZGV4IGRlZjMyNzc0YzkwLi40NzNkMjM2ZTU1MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIwNCw3ICsyMDQsNyBAQCBSZWxhdGlvbkZpbmRS ZXBsVHVwbGVCeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAlza2V5X2F0dG9mZiA9 IGJ1aWxkX3JlcGxpbmRleF9zY2FuX2tleShza2V5LCByZWwsIGlkeHJlbCwgc2VhcmNoc2xvdCk7 CiAKIAkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4o cmVsLCBpZHhyZWwsICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2NhbiA9IGluZGV4 X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAwLCAwKTsK IAogcmV0cnk6CiAJZm91bmQgPSBmYWxzZTsKQEAgLTM4Miw3ICszODIsNyBAQCBSZWxhdGlvbkZp bmRSZXBsVHVwbGVTZXEoUmVsYXRpb24gcmVsLCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAogCiAJ LyogU3RhcnQgYSBoZWFwIHNjYW4uICovCiAJSW5pdERpcnR5U25hcHNob3Qoc25hcCk7Ci0Jc2Nh biA9IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwsIDApOwogCXNjYW5zbG90ID0gdGFibGVfc2xv dF9jcmVhdGUocmVsLCBOVUxMKTsKIAogcmV0cnk6CkBAIC02MDEsNyArNjAxLDcgQEAgUmVsYXRp b25GaW5kRGVsZXRlZFR1cGxlSW5mb1NlcShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpz ZWFyY2hzbG90LAogCSAqIG5vdCB5ZXQgY29tbWl0dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVk IHByaW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2Vu dF9kZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNu YXBzaG90QW55LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgU25hcHNo b3RBbnksIDAsIE5VTEwsIDApOwogCXNjYW5zbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBO VUxMKTsKIAogCXRhYmxlX3Jlc2NhbihzY2FuLCBOVUxMKTsKQEAgLTY2NSw3ICs2NjUsNyBAQCBS ZWxhdGlvbkZpbmREZWxldGVkVHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhv aWQsCiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhvc2UganVzdCBjb21taXR0ZWQgcHJpb3Ig dG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4gdXBkYXRlX21vc3RfcmVjZW50X2RlbGV0 aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBT bmFwc2hvdEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNj YW4ocmVsLCBpZHhyZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAK IAlpbmRleF9yZXNjYW4oc2Nhbiwgc2tleSwgc2tleV9hdHRvZmYsIE5VTEwsIDApOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJl bGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQll c3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxv YzAoZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikp OwogCWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87 CisJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVz X21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBp biB0aGUgbGlzdCBhbGxvd3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9s ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNk N2ZlMC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBI ZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgo U2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3Mu cHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JF QURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVn aW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5z cy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsK KwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZsYWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCBmNDY0Y2NhOTUwNy4uODdiMDRi MWI4OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQs NyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJ CQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1 bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9k ZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJC eUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IGYzNjkyOWRlZWMzLi45MGY5MjljZTc0MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJ bmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkK IAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4g Kikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9k aWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8q CiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBv ciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdh cyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAtMTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJ bmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVt U2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJ CSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5v ZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhO ZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2RlLT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJ ICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJC eUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5v ZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwppbmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRlZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNlcU5leHQoU2VxU2NhblN0YXRlICpub2RlKQog CiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlp ZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQs CisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJ TlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2Fu IGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEg c2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2Mg PSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkg ICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAg MCwgTlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5k ZXNjOwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNN KFNlcVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBz LnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0g MDsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xl bik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJl bGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3Qp OwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2Rl X2lkLCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5w bGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJ CWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJCQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2Nh blN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJ UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYg KCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAor CQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3Mg PSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0 LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5z cy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkg ZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggOGJhMDM4 YzVlZjQuLmQzYjM0MGVlMmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK QEAgLTMzNzAsNyArMzM3MCw3IEBAIGNoZWNrX2RlZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJl bGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVy VHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo R2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0 X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4o cGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbihw YXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBw ZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDU0MGFhOTYyOGQ3Li4yODQzNDE0NmViYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAsNyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFy aWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJlbCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9i ZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJCQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1h YmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJCQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQg aXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9 IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYuLjJmOWU5ZWE2MzE4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlv biwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0 cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVy YnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7 CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCkBAIC0yMDQsNiArMjA0LDcgQEAg ZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhl YXByZWwsCiAJCQkJCQkJCQkJCSAgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 LAogCQkJCQkJCQkJCQkgIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywKIAkJCQkJCQkJCQkJICBQ YXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4pOworCiBleHRlcm4gSXRlbVBvaW50ZXIgaW5kZXhf Z2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uKTsKIGV4dGVybiBib29sIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBz Y2FuLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMmI2YTUyMWU0 ZWEuLjFlM2RmNTQ2MjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2ICs5NSwxMyBAQCB0eXBl ZGVmIHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2Nh bldvcmtlckRhdGEgKnJzX3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVl bnRpYWwgc2NhbnMgYW5kIGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUgcmVsYXRpb24gaXMgbm90 CisJICogYmVpbmcgbW9kaWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBj dXJyZW50IGhlYXAgcGFnZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBibG9jayB0byB0aGlzIGJ1 ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyogdGhlc2UgZmllbGRzIG9u bHkgdXNlZCBpbiBwYWdlLWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0bWFwIHNjYW5zICovCiAJ dWludDMyCQlyc19jaW5kZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5kZXggaW4gdmlzdHVwbGVz ICovCiAJdWludDMyCQlyc19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZpc2libGUgdHVwbGVzIG9u IHBhZ2UgKi8KQEAgLTExNyw4ICsxMjQsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaEhl YXBEYXRhCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkvKiBBTSBpbmRlcGVuZGVu dCBwYXJ0IG9mIHRoZSBkZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhzX2NidWY7CQkvKiBjdXJy ZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5COiBpZiB4c19jYnVmIGlz IG5vdCBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCisJLyoK KwkgKiBDdXJyZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4gTkI6IGlmIHhzX2NidWYg aXMgbm90CisJICogSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlci4K KwkgKi8KKwlCdWZmZXIJCXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBpbmRleCBzY2FucyB0aGF0 IGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICog cHJ1bmluZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncyBjb3JyZXNwb25kaW5n IFZNIGJsb2NrIHRvCisJICogdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c192bWJ1ZmZl cjsKKworCS8qCisJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBp ZiB0aGUgcXVlcnkgZG9lcyBub3QgbW9kaWZ5CisJICogdGhlIHVuZGVybHlpbmcgcmVsYXRpb24u IFRyYWNrIHRoYXQgaGVyZS4KKwkgKi8KKwlib29sCQltb2RpZmllc19iYXNlX3JlbDsKIH0gSW5k ZXhGZXRjaEhlYXBEYXRhOwogCiAvKiBSZXN1bHQgY29kZXMgZm9yIEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bSAqLwpAQCAtNDE3LDcgKzQ0MCw4IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBf aW5kZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhE ZWxldGVPcCAqZGVsc3RhdGUpOwogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5jICovCi1leHRlcm4g dm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy KTsKK2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCisJCQkJCQkJCUJ1ZmZlciAqdm1idWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJ CQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpvZmZfbG9jLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZTE2YmYwMjU2OTIuLjAwNDI2MzY0 NjNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlwZWRlZiBlbnVtIFNj YW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNP X1RFTVBfU05BUFNIT1QgPSAxIDw8IDksCisJLyogc2V0IGlmIHRoZSBxdWVyeSBkb2Vzbid0IG1v ZGlmeSB0aGUgcmVsICovCisJU09fSElOVF9SRUxfUkVBRF9PTkxZID0gMSA8PCAxMCwKIH0JCQlT Y2FuT3B0aW9uczsKIAogLyoKQEAgLTQyMCw3ICs0MjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJs ZUFtUm91dGluZQogCSAqCiAJICogVHVwbGVzIGZvciBhbiBpbmRleCBzY2FuIGNhbiB0aGVuIGJl IGZldGNoZWQgdmlhIGluZGV4X2ZldGNoX3R1cGxlLgogCSAqLwotCXN0cnVjdCBJbmRleEZldGNo VGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsKTsKKwlzdHJ1Y3Qg SW5kZXhGZXRjaFRhYmxlRGF0YSAqKCppbmRleF9mZXRjaF9iZWdpbikgKFJlbGF0aW9uIHJlbCwg dWludDMyIGZsYWdzKTsKIAogCS8qCiAJICogUmVzZXQgaW5kZXggZmV0Y2guIFR5cGljYWxseSB0 aGlzIHdpbGwgcmVsZWFzZSBjcm9zcyBpbmRleCBmZXRjaApAQCAtODc0LDkgKzg3Niw5IEBAIGV4 dGVybiBUdXBsZVRhYmxlU2xvdCAqdGFibGVfc2xvdF9jcmVhdGUoUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKipyZWdsaXN0KTsKICAqLwogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJs ZV9iZWdpbnNjYW4oUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQlpbnQgbmtl eXMsIFNjYW5LZXlEYXRhICprZXkpCisJCQkJaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LCB1 aW50MzIgZmxhZ3MpCiB7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJZmxh Z3MgfD0gU09fVFlQRV9TRVFTQ0FOIHwKIAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5D IHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKQEAgLTkxOSw5ICs5 MjEsOSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFw c2hvdCwKICAqLwogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5f Ym0oUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkgICBpbnQgbmtleXMsIFNj YW5LZXlEYXRhICprZXkpCisJCQkJICAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LCB1aW50 MzIgZmxhZ3MpCiB7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX0FM TE9XX1BBR0VNT0RFOworCWZsYWdzIHw9IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX0FMTE9XX1BB R0VNT0RFOwogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBz aG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVMTCwgZmxhZ3MpOwpAQCAtMTEyOCw3ICsx MTMwLDggQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRp b24gcmVsLAogICogQ2FsbGVyIG11c3QgaG9sZCBhIHN1aXRhYmxlIGxvY2sgb24gdGhlIHJlbGF0 aW9uLgogICovCiBleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo UmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBz Y2FuKTsKKwkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJ CQkJCSAgdWludDMyIGZsYWdzKTsKIAogLyoKICAqIFJlc3RhcnQgYSBwYXJhbGxlbCBzY2FuLiAg Q2FsbCB0aGlzIGluIHRoZSBsZWFkZXIgcHJvY2Vzcy4gIENhbGxlciBpcwpAQCAtMTE1NCw5ICsx MTU3LDkgQEAgdGFibGVfcGFyYWxsZWxzY2FuX3JlaW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBh cmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKICAqIFR1cGxlcyBmb3IgYW4gaW5kZXggc2NhbiBj YW4gdGhlbiBiZSBmZXRjaGVkIHZpYSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZSgpLgogICovCiBz dGF0aWMgaW5saW5lIEluZGV4RmV0Y2hUYWJsZURhdGEgKgotdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4oUmVsYXRpb24gcmVsKQordGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpCiB7Ci0JcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVn aW4ocmVsKTsKKwlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5pbmRleF9mZXRjaF9iZWdpbihyZWws IGZsYWdzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMThhZThmMGQ0YmIuLjBj M2IwZDYwMTY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUg cXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJHRSBvciBT RUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3JlbGlkczsK KwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwg aWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMsIHRoZSBj b21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKaW5kZXggZWJlMmZhZTE3ODkuLmJk ZDlmMGE2MmNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xv Z2ljYWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9s b2dpY2FsX2RlY29kaW5nLnBsCkBAIC0yOTYsNiArMjk2LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2lj YWwnCiBtYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CiBtYXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRv dmFjdXVtID0gb2ZmCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCiB9KTsKICRub2RlX3ByaW1h cnktPmR1bXBfaW5mbzsKICRub2RlX3ByaW1hcnktPnN0YXJ0OwpAQCAtNzQ4LDcgKzc0OSw3IEBA IGNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5v ZGVfc3RhbmRieS0+bG9nZmlsZTsKIAogcmVhY3RpdmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2Fp dF9mb3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLAotCSdub19jb25mbGljdF8nLCAwLCAx KTsKKwknbm9fY29uZmxpY3RfJywgMSwgMCk7CiAKICMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIg YSBjb25mbGljdAogd2FpdF91bnRpbF92YWN1dW1fY2FuX3JlbW92ZSgKLS0gCjIuNDMuMAoK --000000000000cf08db064409e86d Content-Type: text/x-patch; charset="UTF-8"; name="v22-0009-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v22-0009-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi7p4njy8 RnJvbSA3NmNiNTEwOTEzN2ZjMWNjZWI2MmI0ZTUwOTExMTVlZWUyM2ZjNmU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgOS85XSBTZXQgcGRfcHJ1bmVfeGlkIG9uIGluc2VydApNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogOGJpdAoKTm93IHRoYXQgdmlzaWJpbGl0eSBtYXAgKFZNKSB1cGRhdGVzIGNh biBvY2N1ciBkdXJpbmcgcmVhZC1vbmx5IHF1ZXJpZXMsCml0IG1ha2VzIHNlbnNlIHRvIGFsc28g c2V0IHRoZSBwYWdl4oCZcyBwZF9wcnVuZV94aWQgaGludCBkdXJpbmcgaW5zZXJ0cy4KVGhpcyBl bmFibGVzIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8gcnVuIGFmdGVyIGEgcGFnZSBp cwpmaWxsZWQgd2l0aCBuZXdseSBpbnNlcnRlZCB0dXBsZXMgdGhlIGZpcnN0IHRpbWUgaXQgaXMg cmVhZC4KClRoaXMgY2hhbmdlIGFsc28gYWRkcmVzc2VzIGEgbG9uZy1zdGFuZGluZyBub3RlIGlu IGhlYXBfaW5zZXJ0KCkgYW5kCmhlYXBfbXVsdGlfaW5zZXJ0KCksIHdoaWNoIG9ic2VydmVkIHRo YXQgc2V0dGluZyBwZF9wcnVuZV94aWQgd291bGQKaGVscCBjbGVhbiB1cCBhYm9ydGVkIGluc2Vy dGlvbnMgc29vbmVyLiBXaXRob3V0IGl0LCBzdWNoIHR1cGxlcyBtaWdodApsaW5nZXIgdW50aWwg VkFDVVVNLCB3aGVyZWFzIG5vdyB0aGV5IGNhbiBiZSBwcnVuZWQgZWFybGllci4KClNldHRpbmcg cGRfcHJ1bmVfeGlkIG9uIGluc2VydCBjYW4gY2F1c2UgYSBwYWdlIHRvIGJlIGRpcnRpZWQgYW5k CndyaXR0ZW4gb3V0IHdoZW4gaXQgcHJldmlvdXNseSB3b3VsZCBub3QgaGF2ZSBiZWVuLCBhZmZl dGN0aW5nIHRoZQpyZXBvcnRlZCBudW1iZXIgb2YgaGl0cyBpbiB0aGUgaW5kZXgta2lsbHR1cGxl cyBpc29sYXRpb24gdGVzdC4gSXQgaXMKdW5jbGVhciBpZiB0aGlzIGlzIGEgYnVnIGluIHRoZSB3 YXkgaGl0cyBhcmUgdHJhY2tlZCwgYSBmYXVsdHkgdGVzdApleHBlY3RhdGlvbiwgb3IgaWYgc2lt cGx5IHVwZGF0aW5nIHRoZSB0ZXN0J3MgZXhwZWN0ZWQgb3V0cHV0IGlzCnN1ZmZpY2llbnQgcmVt ZWRpYXRpb24uCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAg ICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIC4uLi9pc29sYXRpb24vZXhwZWN0 ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgICB8ICA2ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0 IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK aW5kZXggYWU1M2UzMTFjZTEuLmYzMjlmNDk3NDgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwpAQCAtMjEwNCw2ICsyMTA0LDcgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhl YXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBsZQloZWFwdHVwOwogCUJ1ZmZlcgkJYnVmZmVy OworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJYm9v bAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCkBAIC0yMTYzLDE1ICsyMTY0LDE5IEBA IGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQg Y2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9u IHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5lX3hpZCB0byB0cmlnZ2VyIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFnZQorCSAqIGlzIGZ1bGwgc28gdGhhdCB3ZSBj YW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KIAkgKgotCSAqIFRoZSBpbnNl cnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFsbHkgYWJvcnQgdGh1cyBtYWtpbmcgdGhpcyB0 dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IgcHJ1bmluZy4gVGhvdWdoIHdl IGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBmb3IgYWJvcnRzLCBpZiBubyBvdGhlciB0dXBs ZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUKLQkgKiBhYm9ydGVkIHR1cGxl IHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KKwkg KiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNvIGhhbmR5IGlmIHRoZSBpbnNlcnRpbmcgdHJh bnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0cyBtYWtpbmcgdGhpcyB0dXBsZSBERUFEIGFu ZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1bmluZy4gSWYgbm8gb3RoZXIgdHVwbGUgaW4g dGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlIGFib3J0ZWQKKwkgKiB0dXBsZSB3b3Vs ZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJl ZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFnZVNldFBydW5hYmxlIGhlcmUsIGFkZCBpdCBp biBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBEb24ndCBzZXQgaXQgaWYgd2UgYXJlIGluIGJv b3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJCVBhZ2VTZXRQcnVuYWJsZShw YWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKQEAgLTIxODEsNyArMjE4 Niw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21t YW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxo ZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0dfSEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZs YWdzID0gMDsKIApAQCAtMjU0NSw4ICsyNTQ5LDEzIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0 aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQog CiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBh Z2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBTZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9p bnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0 dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBz ZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGlu CisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBU cmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQp OwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwppbmRleCA1YWI0NmU4YmY4Zi4uZGFjNjQwZjVjOWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDYyLDYgKzQ2MiwxMiBAQCBoZWFwX3hsb2dfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFw RnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8gdXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8q CisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5n IGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZN LgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7 CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBAIC02MTEsOSArNjE3LDE2IEBAIGhlYXBfeGxv Z19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+Zmxh Z3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNp YmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0 IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJLyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJP WkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2Ug YXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVu YWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJpZ2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRl ciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJ ICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQkJ UGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVsc2UKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdl LCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwog CX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVw bGVzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91 dAppbmRleCBiZTdkZGQ3NTZlZi4uYjI5ZjI0MzRiMDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dAorKysgYi9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3Rl cCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJl c3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVh cF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19h bGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9h Y2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAg ICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFw X2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBw Z19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsK QEAgLTEzMCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFw X2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZS T00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3By aW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAg ICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTog VVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFk ICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUg PSAna2lsbF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNF TEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVD VCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMg QVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBX SEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0t LS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgx IHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9 IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2Fs bF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAK Cg== --000000000000cf08db064409e86d--