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 1w6RZJ-004J9J-2R for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 11:11:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6RZH-00E4Fb-0j for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 11:11:03 +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 <3danissimo@gmail.com>) id 1w6RZG-00E4FS-1G for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 11:11:03 +0000 Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1w6RZB-00000001TvB-1Urn for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 11:11:01 +0000 Received: by mail-yx1-xb12d.google.com with SMTP id 956f58d0204a3-64c9a6d7f81so3195515d50.3 for ; Sat, 28 Mar 2026 04:10:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774696256; cv=none; d=google.com; s=arc-20240605; b=X5rrs/fkUW/UsLBfUM+IivvnJQ5yJJVmvZZ3GcGMpezU/iw/Qx8PNjRGz1StjAinjk TMTlnEM5A/vEM4Wq2rBbGCSEG7tYqax1LzwqwdRnuwkv2zxiol4CtjwSI4euQ/R2FN8c NJ7op6WsBCXRc61NxZOZQ3SUvU5WdPS7qH/0EQCA7+8e2tXaV57scOydhIMWNwEchsCL XMbKzEv3rAPK38JiS8VIz07USmZrP89d6y94XVLBc2r2pe9PNIiA0434veMGtKNa5CJr E+/mCofaZx6YbNWmcZiiduqhrZuv9gekEglYCalMBihDY/EiVAJc5lEQkeKyGhK7kKeC Okag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=BYX3Zdz648v1WEdVEmgSPe7IfOVC4THBD695u90NFOM=; fh=bkgR6pknyZHOOX7SA2Mb/58vy2uY+z1vS+LEl3e7LEQ=; b=ShCFouu32TPUvAJsBhM+doj9aFwHejjeW6wBFjsYO9BMX9xnLv0icbCSCWgm3SmNiM +yHnMOip897StYUKicM00vX5bp2ZeAUnBO946fuwhsYzyeY3jbwRRnBwg/SniY0oPT5l 6A/YCnKaT6uEm/uKn4TvUkgmRmIuaePs5+XLXd6ukb1MVSf7ODN7ZF8A5U5PcVTeHpzp RISxDLkhzjSuQyhdv9ODpionVkdbU35/SqUrkreM+dOISd7F1vuqdWCLjOWYCJc0cnRp IOzPvVBS6p5TXprCj3XumTE6EXvERGiFNYVDG7Qk9buDy9sj9bMALegsOuBScuV/sSUU CE1g==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774696256; x=1775301056; 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=BYX3Zdz648v1WEdVEmgSPe7IfOVC4THBD695u90NFOM=; b=ZDNRnK5mdZHCu3uMwosGlK9/n7ljSILBdrj369gJ+duMwqy34lhM1h9WkW2RUMa+GC tPQKCrO2DuIHKoUOwnWzNjpxoNU9qUduSQN579GM0r0cszVFGMGHdWq3Conv/jSlCcQ4 JppCVhlCuHegkVBzVOz5lKVwoTkjEX4bAqnx8SKYzKfq2HIepXbMxNh1Ik3VtdRZEK/q uPo4ZZLmpPZ3UZUfikg3cxxwBhJ2nmL8ZLcwj0eTTTdT81z75Vjxz4lo4Ay0R5wKXlBX FJMiUs5aA2mxzmFo4irJf4VblX8oGmwpbZm/FEB5B3HcvRUK//8eyNdMF12LUNTF7GDU Xx7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774696256; x=1775301056; 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=BYX3Zdz648v1WEdVEmgSPe7IfOVC4THBD695u90NFOM=; b=nHyLJVhg2khKQDD2ftNmEC36/3arC4uad+5UWn6dtB3fmz4fsBF2OSqvZu9xvxkdVH 1FHdLxfhZ5b26HS0kq7ZSnotFsNZ2Htp5/JgLWefknr9lwpbxJcqOrdnoYRx5oks/vMl S/H7nrvLzLR0HdUBRzaqJM8mCU5O7Zr/IxkiLkF+NOYls9Hy4n384wDsQNz5fVk+lzbt JQMKe28amoTOHuoLV0kbSKCDtibdiJwghxNdxVpxq38qC4s5mjw198vQJj/3f+0L+Jcu 3YA2s+cZk1vslgTGUXgNm2M2r79HcIXky4uJl0gO0doaKiwgGY7qVQtTORb13jgd8KfH Q/7Q== X-Forwarded-Encrypted: i=1; AJvYcCUt5M7KDMLTlbjvTAkXdHJ6SMRialsNKKYw7OtRP/Lh3kAH6Pctk++DhoWYOKp4jQb2IMRCYWMInLUYBypf@lists.postgresql.org X-Gm-Message-State: AOJu0Yyg9YXW9H+Wgw21bmlA6kBCjaCbHoVaOGOf6pn2Uc/AgT2a44Ur f5boACsRnOzD27K79IRyxVOs6aD1d0+wnyAlQoyDjgrvKNejIdvP+AL+aLVQdiWydWAE+Az2iPd fZvzA2WQfomSkuprN57TeRcPTgZoA6lw= X-Gm-Gg: ATEYQzxYoynFDKTVwfWHcjTEaAoHhui1T3Ds+U+821d/Ax8QTCjPnufBQhqgvreD+oK 2jyupD0Nq9dlbiqoLrCvtC9qZnj00OQ1Fu59tid7feT71twDPfY1jG5FFFxiQsnRA/ldBBs6NZn qwyBGepazjJvmT5qXR87IEBTzIi9fUsZ4teQGZKQwa/PMOd1I8Rq0CJXFSoLBtrIhLWh6oMzA11 bCpbqnJMHmUzHcUmt9k+NJXjzGbNP5HZ8eJr4lN3CP7uSElSf8hbCRbdt+AhJi7zokip2qE0C0N dC4M0Zk= X-Received: by 2002:a05:690c:86:b0:79a:6fa2:8129 with SMTP id 00721157ae682-79bddd79e28mr57622147b3.6.1774696256424; Sat, 28 Mar 2026 04:10:56 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Sat, 28 Mar 2026 18:10:44 +0700 X-Gm-Features: AQROBzCLLur_aiXtMI3_EHCVu07mowWBS00zuZ8cmzZ7OUN0VQ-0jAvyLn77dE8 Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Bharath Rupireddy Cc: Masahiko Sawada , Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000f33323064e13abe8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f33323064e13abe8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Thu, Mar 26, 2026 at 5:43=E2=80=AFAM Masahiko Sawada wrote: > > On Wed, Mar 25, 2026 at 12:45=E2=80=AFAM Daniil Davydov <3danissimo@gmail= .com> wrote: > > > > Searching for arguments in > > favor of opt-in style, I asked for help from another person who has bee= n > > managing the setup of highload systems for decades. He promised to shar= e his > > opinion next week. > > Given that we have one and half weeks before the feature freeze, I > think it's better to complete the project first before waiting for > his/her comments next week. Even if we finish this feature with the > opt-out style, we can hear more opinions on it and change the default > behavior as the change would be privial. What do you think? > Sure, if we can change the default value after the feature freeze, I don't mind leaving our parameter in opt-out style by now. > I've squashed all patches except for the documentation patch as I > assume you're working on it. The attached fixup patch contains several > changes: using opt-out style, comment improvements, and fixing typos > etc. > Thank you very much for the proposed fixes! I like the way you have changed nparallel_workers calculation (autovacuum.c= ). Forcing parallel workers to always read shared cost params at the first tim= e is a good decision. All comments changes are also LGTM. The only place that I have changed is reloptions.c : As you have explained, it is not appropriate to use the "overrides" wording in the reloption's description, so I decided to return an old one. On Fri, Mar 27, 2026 at 10:54=E2=80=AFAM Bharath Rupireddy wrote: > > Hi, > > On Wed, Mar 25, 2026 at 3:43=E2=80=AFPM Masahiko Sawada wrote: > > > > Given that we have one and half weeks before the feature freeze, I > > think it's better to complete the project first before waiting for > > his/her comments next week. Even if we finish this feature with the > > opt-out style, we can hear more opinions on it and change the default > > behavior as the change would be privial. What do you think? > > > > I've squashed all patches except for the documentation patch as I > > assume you're working on it. The attached fixup patch contains several > > changes: using opt-out style, comment improvements, and fixing typos > > etc. > > +1 for enabling this feature by default. When enough CPU is available, > vacuuming multiple indexes of a table in parallel in autovacuum > definitely speeds things up. Yes, for sure. But I have concerns that enabling parallel a/v for everyone will cause the parallel workers shortage during processing of the most huge tables. > Thank you for sending the latest patches. I quickly reviewed the v31 > patches. Here are some comments. > > 1/ + {"autovacuum_parallel_workers", RELOPT_TYPE_INT, > > I haven't looked at the whole thread, but do we all think we need this > as a relopt? IMHO, we can wait for field experience and introduce this > later. I think that we should leave both reloption and the config parameter. Getting rid from the reloption will greatly reduce the ability of users to tune this feature. I'm afraid that this may lead to people not using parall= el autovacuum. > I'm having a hard time finding a use-case where one wants to > disable the indexes at the table level. If there was already an > agreement, I agree to commit to that decision. You can read discussion from [1] to the current message in order to dive in= to the question. To make the long story short, I think that the most common use case for thi= s feature is allowing parallel a/v for 2-3 tables, each of which has ~100 indexes. The rest of the tables do not require parallel processing (at leas= t it's a much lower priority for them). At the same time, Masahiko-san thinks that only the system should decide wh= ich tables will be processed in parallel. System's decision should be based on = the number of indexes and a few other config parameters (e.g. min_parallel_index_scan_size). Thus, possibly many tables will be able to b= e processed in parallel. (Both opinions are pretty simplified). > > 2/ + /* > + * If 'true' then we are running parallel autovacuum. Otherwise, we a= re > + * running parallel maintenence VACUUM. > + */ > + bool is_autovacuum; > + > > The variable name looks a bit confusing. How about we rely on > AmAutoVacuumWorkerProcess() and avoid the bool in shared memory? This variable is needed for parallel workers, which are taken from the bgworkers pool. I.e. AmAutovacuumWorker() will return 'false' for them. We need the "is_autovacuum" variable in order to understand exactly what th= is process was started for (VACUUM PARALLEL or parallel autovacuum). Thanks everyone for the review! Please, see an updated set of patches : As I promised, I created a dedicated chapter for Parallel Vacuum descriptio= n. Both maintenance VACUUM and autovacuum now refer to this chapter. I am pretty inexperienced in the documentation writing, so forgive me if something is out of code style. [1] https://www.postgresql.org/message-id/CAJDiXggH1bW%3D4n%2B55CGLvs_sRU4S= YNXwYLZ37wvJ5H_3yURSPw%40mail.gmail.com -- Best regards, Daniil Davydov --000000000000f33323064e13abe8 Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0002-Documantation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v32-0002-Documantation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mna8aln00 RnJvbSBkMTNjY2FhNTU4NjJlZmFhZDJhYmRhNzNjZjY4NzBkZGU4Y2EyNGQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTYXQsIDI4IE1hciAyMDI2IDE3OjM3OjA3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzIgMi8yXSBEb2N1bWFudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxOSArKysrKysrKysrKysrKysKIGRv Yy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAgfCAzOCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgfCAxOCArKysr KysrKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbCAgICAgICB8IDI0ICsrKyst LS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMjAgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDIyOWY0MTM1M2ViLi5jYmU3MzE3MmIyZSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbApAQCAtMjkxOCw2ICsyOTE4LDcgQEAgaW5jbHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgICAg PHBhcmE+CiAgICAgICAgICBXaGVuIGNoYW5naW5nIHRoaXMgdmFsdWUsIGNvbnNpZGVyIGFsc28g YWRqdXN0aW5nCiAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtl cnMiLz4sCisgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxs ZWwtd29ya2VycyIvPiwKICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwt bWFpbnRlbmFuY2Utd29ya2VycyIvPiwgYW5kCiAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMt bWF4LXBhcmFsbGVsLXdvcmtlcnMtcGVyLWdhdGhlciIvPi4KICAgICAgICAgPC9wYXJhPgpAQCAt OTQ4NSw2ICs5NDg2LDI0IEBAIENPUFkgcG9zdGdyZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8v bG9nZmlsZS5jc3YnIFdJVEggY3N2OwogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBh cmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy cyI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPmF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtl cnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgICAgPGluZGV4dGVybT4K KyAgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtl cnM8L3Zhcm5hbWU+PC9wcmltYXJ5PgorICAgICAgICAgPHNlY29uZGFyeT5jb25maWd1cmF0aW9u IHBhcmFtZXRlcjwvc2Vjb25kYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPC90 ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTZXRz IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdAor ICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciB0aGUgPHhyZWYgbGlua2VuZD0icGFyYWxsZWwtdmFj dXVtIi8+CisgICAgICAgICAgYnkgYSBzaW5nbGUgYXV0b3ZhY3V1bSB3b3JrZXIuIElzIGNhcHBl ZCBieSA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4uCisgICAgICAg ICAgVGhlIGRlZmF1bHQgaXMgMCwgd2hpY2ggbWVhbnMgbm8gcGFyYWxsZWwgaW5kZXggdmFjdXVt aW5nIGZvciB0aGlzCisgICAgICAgICAgdGFibGUuCisgICAgICAgICA8L3BhcmE+CisgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0 PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5z Z21sIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKaW5kZXggMGQyYTI4MjA3ZWQuLmEx Yjg1MWVhNThmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbApAQCAtOTI3LDYgKzkyNywxMyBAQCBISU5U OiAgRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGluIHRoYXQgZGF0YWJhc2UuCiAgICAg YXV0b3ZhY3V1bSB3b3JrZXJzJyBhY3Rpdml0eS4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+Cisg ICAgSWYgYW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2VzcyBjb21lcyBhY3Jvc3MgYSB0YWJsZSB3 aXRoIHRoZSBlbmFibGVkCisgICAgPHhyZWYgbGlua2VuZD0icmVsb3B0aW9uLWF1dG92YWN1dW0t cGFyYWxsZWwtd29ya2VycyIvPiBzdG9yYWdlIHBhcmFtZXRlciwKKyAgICBpdCB3aWxsIGxhdW5j aCBwYXJhbGxlbCB3b3JrZXJzIGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlCisgICAgPHhyZWYgbGlu a2VuZD0icGFyYWxsZWwtdmFjdXVtIi8+LgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBJ ZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1pbmcg aW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJzIG1p Z2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCkBAIC0xMTY2LDYgKzExNzMsMzcgQEAgYW5hbHl6ZSB0 aHJlc2hvbGQgPSBhbmFseXplIGJhc2UgdGhyZXNob2xkICsgYW5hbHl6ZSBzY2FsZSBmYWN0b3Ig KiBudW1iZXIgb2YgdHUKICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgogICA8L3NlY3QyPgorCisg IDxzZWN0MiBpZD0icGFyYWxsZWwtdmFjdXVtIiB4cmVmbGFiZWw9IlBhcmFsbGVsIFZhY3V1bSI+ CisgICA8dGl0bGU+UGFyYWxsZWwgVmFjdXVtPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgQm90 aCA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IGNvbW1hbmQgYW5kIGF1dG92YWN1dW0gZGFlbW9u IGNhbiBwZXJmb3JtCisgICAgaW5kZXggdmFjdXVtIGFuZCBpbmRleCBjbGVhbnVwIHBoYXNlcyBp biBwYXJhbGxlbCB1c2luZworICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRl Z2VyPC9yZXBsYWNlYWJsZT4gYmFja2dyb3VuZCB3b3JrZXJzCisgICAgKGZvciB0aGUgZGV0YWls cyBvZiBlYWNoIHZhY3V1bSBwaGFzZSwgcGxlYXNlIHJlZmVyIHRvCisgICAgPHhyZWYgbGlua2Vu ZD0idmFjdXVtLXBoYXNlcyIvPikuIFRoZSBudW1iZXIgb2Ygd29ya2VycyB1c2VkIHRvIHBlcmZv cm0KKyAgICB0aGUgb3BlcmF0aW9uIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaW5kZXhlcyBv biB0aGUgcmVsYXRpb24gdGhhdAorICAgIHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIHdoaWNoIG1h eSBiZSBmdXJ0aGVyIGxpbWl0ZWQgYnkgdGhlIHZhbHVlIHNwZWNpZmljCisgICAgdG8gPGNvbW1h bmQ+VkFDVVVNPC9jb21tYW5kPiBvciBhdXRvdmFjdXVtIChzZWUgPGxpdGVyYWw+UEFSQUxMRUw8 L2xpdGVyYWw+CisgICAgb3B0aW9uIGZvciA8eHJlZiBsaW5rZW5kPSJzcWwtdmFjdXVtIi8+IG9y CisgICAgPHhyZWYgbGlua2VuZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2Vy cyIvPiwgcmVzcGVjdGl2ZWx5KS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQW4gaW5k ZXggY2FuIHBhcnRpY2lwYXRlIGluIHBhcmFsbGVsIHZhY3V1bSBpZiBhbmQgb25seSBpZiB0aGUg c2l6ZSBvZiB0aGUKKyAgICBpbmRleCBpcyBtb3JlIHRoYW4gPHhyZWYgbGlua2VuZD0iZ3VjLW1p bi1wYXJhbGxlbC1pbmRleC1zY2FuLXNpemUiLz4uCisgICAgUGxlYXNlIG5vdGUgdGhhdCBpdCBp cyBub3QgZ3VhcmFudGVlZCB0aGF0IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycworICAg IHNwZWNpZmllZCBpbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVw bGFjZWFibGU+IHdpbGwgYmUKKyAgICB1c2VkIGR1cmluZyBleGVjdXRpb24uICBJdCBpcyBwb3Nz aWJsZSBmb3IgYSB2YWN1dW0gdG8gcnVuIHdpdGggZmV3ZXIKKyAgICB3b3JrZXJzIHRoYW4gc3Bl Y2lmaWVkLCBvciBldmVuIHdpdGggbm8gd29ya2VycyBhdCBhbGwuICBPbmx5IG9uZSB3b3JrZXIK KyAgICBjYW4gYmUgdXNlZCBwZXIgaW5kZXguICBTbyBwYXJhbGxlbCB3b3JrZXJzIGFyZSBsYXVu Y2hlZCBvbmx5IHdoZW4gdGhlcmUKKyAgICBhcmUgYXQgbGVhc3QgPGxpdGVyYWw+MjwvbGl0ZXJh bD4gaW5kZXhlcyBpbiB0aGUgdGFibGUuICBXb3JrZXJzIGZvcgorICAgIHZhY3V1bSBhcmUgbGF1 bmNoZWQgYmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIHBoYXNlIGFuZCBleGl0IGF0IHRoZSBlbmQg b2YKKyAgICB0aGUgcGhhc2UuICBUaGVzZSBiZWhhdmlvcnMgbWlnaHQgY2hhbmdlIGluIGEgZnV0 dXJlIHJlbGVhc2UuCisgICA8L3BhcmE+CisKKyAgPC9zZWN0Mj4KICA8L3NlY3QxPgogCiAKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDgwODI5YjIzOTQ1Li44ZjViMjU0MTFjZCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0xNzM4LDYgKzE3MzgsMjQgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJh bDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29y a2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiPgorICAgIDx0ZXJt PjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvbGl0ZXJhbD4gKDx0eXBlPmlu dGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1 dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gc3RvcmFnZSBwYXJhbWV0ZXI8L3By aW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZAorICAgICAgZm9yIHRoZSA8eHJlZiBsaW5r ZW5kPSJwYXJhbGxlbC12YWN1dW0iLz4uCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLCB3 aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisgICAgICB0aGlzIHRh YmxlLiBJZiB2YWx1ZSBpcyAtMSB0aGVuIHBhcmFsbGVsIGRlZ3JlZSB3aWxsIGNvbXB1dGVkIGJh c2VkIG9uCisgICAgICBudW1iZXIgb2YgaW5kZXhlcyBhbmQgbGltaXRlZCBieSB0aGUgPHhyZWYg bGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4KKyAgICAgIGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJyZWxvcHRpb24tYXV0b3Zh Y3V1bS12YWN1dW0tdGhyZXNob2xkIiB4cmVmbGFiZWw9ImF1dG92YWN1dW1fdmFjdXVtX3RocmVz aG9sZCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+YXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPC9s aXRlcmFsPiwgPGxpdGVyYWw+dG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPC9saXRl cmFsPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5z Z21sCmluZGV4IGFjNWQwODNkNDY4Li5kM2YzMjg1MTM4NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi92YWN1dW0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sCkBA IC04MSw3ICs4MSw3IEBAIFZBQ1VVTSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIFsgPHJlCiAgICBpcyBub3Qgb2J0YWlu ZWQuICBIb3dldmVyLCBleHRyYSBzcGFjZSBpcyBub3QgcmV0dXJuZWQgdG8gdGhlIG9wZXJhdGlu ZwogICAgc3lzdGVtIChpbiBtb3N0IGNhc2VzKTsgaXQncyBqdXN0IGtlcHQgYXZhaWxhYmxlIGZv ciByZS11c2Ugd2l0aGluIHRoZQogICAgc2FtZSB0YWJsZS4gIEl0IGFsc28gYWxsb3dzIHVzIHRv IGxldmVyYWdlIG11bHRpcGxlIENQVXMgaW4gb3JkZXIgdG8gcHJvY2VzcwotICAgaW5kZXhlcy4g IFRoaXMgZmVhdHVyZSBpcyBrbm93biBhcyA8Zmlyc3R0ZXJtPnBhcmFsbGVsIHZhY3V1bTwvZmly c3R0ZXJtPi4KKyAgIGluZGV4ZXMuICBUaGlzIGZlYXR1cmUgaXMga25vd24gYXMgPHhyZWYgbGlu a2VuZD0icGFyYWxsZWwtdmFjdXVtIi8+LgogICAgVG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUsIG9u ZSBjYW4gdXNlIDxsaXRlcmFsPlBBUkFMTEVMPC9saXRlcmFsPiBvcHRpb24gYW5kCiAgICBzcGVj aWZ5IHBhcmFsbGVsIHdvcmtlcnMgYXMgemVyby4gIDxjb21tYW5kPlZBQ1VVTSBGVUxMPC9jb21t YW5kPiByZXdyaXRlcwogICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaW50byBh IG5ldyBkaXNrIGZpbGUgd2l0aCBubyBleHRyYSBzcGFjZSwKQEAgLTI2NiwyNSArMjY2LDkgQEAg VkFDVVVNIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNl YWJsZT4gWywgLi4uXSApIF0gWyA8cmUKICAgICA8dGVybT48bGl0ZXJhbD5QQVJBTExFTDwvbGl0 ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFBlcmZvcm0g aW5kZXggdmFjdXVtIGFuZCBpbmRleCBjbGVhbnVwIHBoYXNlcyBvZiA8Y29tbWFuZD5WQUNVVU08 L2NvbW1hbmQ+Ci0gICAgICBpbiBwYXJhbGxlbCB1c2luZyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+Ci0gICAgICBiYWNrZ3JvdW5kIHdvcmtlcnMg KGZvciB0aGUgZGV0YWlscyBvZiBlYWNoIHZhY3V1bSBwaGFzZSwgcGxlYXNlCi0gICAgICByZWZl ciB0byA8eHJlZiBsaW5rZW5kPSJ2YWN1dW0tcGhhc2VzIi8+KS4gIFRoZSBudW1iZXIgb2Ygd29y a2VycyB1c2VkCi0gICAgICB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24gaXMgZXF1YWwgdG8gdGhl IG51bWJlciBvZiBpbmRleGVzIG9uIHRoZQotICAgICAgcmVsYXRpb24gdGhhdCBzdXBwb3J0IHBh cmFsbGVsIHZhY3V1bSB3aGljaCBpcyBsaW1pdGVkIGJ5IHRoZSBudW1iZXIgb2YKLSAgICAgIHdv cmtlcnMgc3BlY2lmaWVkIHdpdGggPGxpdGVyYWw+UEFSQUxMRUw8L2xpdGVyYWw+IG9wdGlvbiBp ZiBhbnkgd2hpY2ggaXMKLSAgICAgIGZ1cnRoZXIgbGltaXRlZCBieSA8eHJlZiBsaW5rZW5kPSJn dWMtbWF4LXBhcmFsbGVsLW1haW50ZW5hbmNlLXdvcmtlcnMiLz4uCi0gICAgICBBbiBpbmRleCBj YW4gcGFydGljaXBhdGUgaW4gcGFyYWxsZWwgdmFjdXVtIGlmIGFuZCBvbmx5IGlmIHRoZSBzaXpl IG9mIHRoZQotICAgICAgaW5kZXggaXMgbW9yZSB0aGFuIDx4cmVmIGxpbmtlbmQ9Imd1Yy1taW4t cGFyYWxsZWwtaW5kZXgtc2Nhbi1zaXplIi8+LgotICAgICAgUGxlYXNlIG5vdGUgdGhhdCBpdCBp cyBub3QgZ3VhcmFudGVlZCB0aGF0IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycwotICAg ICAgc3BlY2lmaWVkIGluIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9y ZXBsYWNlYWJsZT4gd2lsbCBiZQotICAgICAgdXNlZCBkdXJpbmcgZXhlY3V0aW9uLiAgSXQgaXMg cG9zc2libGUgZm9yIGEgdmFjdXVtIHRvIHJ1biB3aXRoIGZld2VyCi0gICAgICB3b3JrZXJzIHRo YW4gc3BlY2lmaWVkLCBvciBldmVuIHdpdGggbm8gd29ya2VycyBhdCBhbGwuICBPbmx5IG9uZSB3 b3JrZXIKLSAgICAgIGNhbiBiZSB1c2VkIHBlciBpbmRleC4gIFNvIHBhcmFsbGVsIHdvcmtlcnMg YXJlIGxhdW5jaGVkIG9ubHkgd2hlbiB0aGVyZQotICAgICAgYXJlIGF0IGxlYXN0IDxsaXRlcmFs PjI8L2xpdGVyYWw+IGluZGV4ZXMgaW4gdGhlIHRhYmxlLiAgV29ya2VycyBmb3IKLSAgICAgIHZh Y3V1bSBhcmUgbGF1bmNoZWQgYmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIHBoYXNlIGFuZCBleGl0 IGF0IHRoZSBlbmQgb2YKLSAgICAgIHRoZSBwaGFzZS4gIFRoZXNlIGJlaGF2aW9ycyBtaWdodCBj aGFuZ2UgaW4gYSBmdXR1cmUgcmVsZWFzZS4gIFRoaXMKLSAgICAgIG9wdGlvbiBjYW4ndCBiZSB1 c2VkIHdpdGggdGhlIDxsaXRlcmFsPkZVTEw8L2xpdGVyYWw+IG9wdGlvbi4KKyAgICAgIExpbWl0 cyB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgdXNlZCB0byBwZXJmb3JtIHRoZQorICAg ICAgPHhyZWYgbGlua2VuZD0icGFyYWxsZWwtdmFjdXVtIi8+LCB3aGljaCBpcyBmdXJ0aGVyIGxp bWl0ZWQgYnkKKyAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFu Y2Utd29ya2VycyIvPi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KLS0gCjIuNDMuMAoK --000000000000f33323064e13abe8 Content-Type: text/x-patch; charset="US-ASCII"; name="v32-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v32-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mna8alne1 RnJvbSA1ZGNkNmI0MmEwZDFhYWU4ZjNmNzcyYjU3ZjU1Njg1NDVlMzg2YWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDAyOjE4OjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzIgMS8yXSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMgICAgICAgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jICAgICAgICAgfCAyMjMgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRz L3ZhY3V1bS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4u aCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L01ha2VmaWxlICAgICB8ICAyMCArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v bWVzb24uYnVpbGQgIHwgIDE1ICsrCiAuLi4vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAg ICAgICAgICAgICAgfCAxOTUgKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEgKwogMjAgZmlsZXMgY2hhbmdlZCwgNTM5IGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxs ZWxfYXV0b3ZhY3V1bS5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5k ZXggYTYwMDJhZTliMDcuLjU2ZGM5OWJkYmUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3Jl bG9wdGlvbnMuYwpAQCAtMjM2LDYgKzIzNiwxNSBAQCBzdGF0aWMgcmVsb3B0X2ludCBpbnRSZWxP cHRzW10gPQogCQl9LAogCQlTUEdJU1RfREVGQVVMVF9GSUxMRkFDVE9SLCBTUEdJU1RfTUlOX0ZJ TExGQUNUT1IsIDEwMAogCX0sCisJeworCQl7CisJCQkiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzIiwKKwkJCSJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMg dGhhdCBjYW4gYmUgdXNlZCBmb3IgcHJvY2Vzc2luZyB0aGlzIHRhYmxlLiIsCisJCQlSRUxPUFRf S0lORF9IRUFQLAorCQkJU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrCisJCX0sCisJCS0xLCAtMSwg MTAyNAorCX0sCiAJewogCQl7CiAJCQkiYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIiwKQEAg LTE5NjksNiArMTk3OCw4IEBAIGRlZmF1bHRfcmVsb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBi b29sIHZhbGlkYXRlLCByZWxvcHRfa2luZCBraW5kKQogCQl7ImZpbGxmYWN0b3IiLCBSRUxPUFRf VFlQRV9JTlQsIG9mZnNldG9mKFN0ZFJkT3B0aW9ucywgZmlsbGZhY3Rvcil9LAogCQl7ImF1dG92 YWN1dW1fZW5hYmxlZCIsIFJFTE9QVF9UWVBFX0JPT0wsCiAJCW9mZnNldG9mKFN0ZFJkT3B0aW9u cywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihBdXRvVmFjT3B0cywgZW5hYmxlZCl9LAorCQl7ImF1 dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyIsIFJFTE9QVF9UWVBFX0lOVCwKKwkJb2Zmc2V0b2Yo U3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMpfSwKIAkJeyJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQi LCBSRUxPUFRfVFlQRV9JTlQsCiAJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkg KyBvZmZzZXRvZihBdXRvVmFjT3B0cywgdmFjdXVtX3RocmVzaG9sZCl9LAogCQl7ImF1dG92YWN1 dW1fdmFjdXVtX21heF90aHJlc2hvbGQiLCBSRUxPUFRfVFlQRV9JTlQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZjY5OGMyZDg5OWIuLjlmZDRmNmZlYmJlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xNTIsNiArMTUyLDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9yZWFkX3N0cmVhbS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BnX3J1c2Fn ZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgpAQCAtODYyLDYgKzg2MywxNyBAQCBo ZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAog CWxhenlfY2hlY2tfd3JhcGFyb3VuZF9mYWlsc2FmZSh2YWNyZWwpOwogCWRlYWRfaXRlbXNfYWxs b2ModmFjcmVsLCBwYXJhbXMubndvcmtlcnMpOwogCisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lO VFMKKworCS8qCisJICogVXNlZCBieSB0ZXN0cyB0byBwYXVzZSBiZWZvcmUgcGFyYWxsZWwgdmFj dXVtIGlzIGxhdW5jaGVkLCBhbGxvd2luZworCSAqIHRlc3QgY29kZSB0byBtb2RpZnkgY29uZmln dXJhdGlvbiB0aGF0IHRoZSBsZWFkZXIgdGhlbiBwcm9wYWdhdGVzIHRvCisJICogd29ya2Vycy4K KwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIFBhcmFsbGVsVmFjdXVt SXNBY3RpdmUodmFjcmVsKSkKKwkJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLXN0YXJ0LXBh cmFsbGVsLXZhY3V1bSIsIE5VTEwpOworI2VuZGlmCisKIAkvKgogCSAqIENhbGwgbGF6eV9zY2Fu X2hlYXAgdG8gcGVyZm9ybSBhbGwgcmVxdWlyZWQgaGVhcCBwcnVuaW5nLCBpbmRleAogCSAqIHZh Y3V1bWluZywgYW5kIGhlYXAgdmFjdXVtaW5nIChwbHVzIHJlbGF0ZWQgcHJvY2Vzc2luZykKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKaW5kZXggYmNlM2EyZGFhMjQuLjFiNWJhM2NlMWVmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwpAQCAtMjQzNSw4ICsyNDM1LDE5IEBAIHZhY3V1bV9kZWxheV9wb2ludChib29s IGlzX2FuYWx5emUpCiAJLyogQWx3YXlzIGNoZWNrIGZvciBpbnRlcnJ1cHRzICovCiAJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAotCWlmIChJbnRlcnJ1cHRQZW5kaW5nIHx8Ci0JCSghVmFjdXVt Q29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykpCisJaWYgKEludGVycnVwdFBlbmRp bmcpCisJCXJldHVybjsKKworCWlmIChJc1BhcmFsbGVsV29ya2VyKCkpCisJeworCQkvKgorCQkg KiBVcGRhdGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBmb3IgYSBwYXJhbGxl bCBhdXRvdmFjdXVtCisJCSAqIHdvcmtlciBpZiBhbnkgY2hhbmdlcyBhcmUgZGV0ZWN0ZWQuCisJ CSAqLworCQlwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKTsKKwl9 CisKKwlpZiAoIVZhY3V1bUNvc3RBY3RpdmUgJiYgIUNvbmZpZ1JlbG9hZFBlbmRpbmcpCiAJCXJl dHVybjsKIAogCS8qCkBAIC0yNDUwLDYgKzI0NjEsMTIgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJv b2wgaXNfYW5hbHl6ZSkKIAkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQlQcm9jZXNz Q29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKKworCQkvKgor CQkgKiBQcm9wYWdhdGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyB0byBzaGFy ZWQgbWVtb3J5IGlmCisJCSAqIGFueSBvZiB0aGVtIGhhdmUgY2hhbmdlZCBkdXJpbmcgdGhlIGNv bmZpZyByZWxvYWQuCisJCSAqLworCQlwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9k ZWxheV9wYXJhbXMoKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKaW5kZXggNzc4MzRiOTZhMjEuLjEzNTQ0ZGU1YjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTEsNyArMSw5IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAg KiB2YWN1dW1wYXJhbGxlbC5jCi0gKgkgIFN1cHBvcnQgcm91dGluZXMgZm9yIHBhcmFsbGVsIHZh Y3V1bSBleGVjdXRpb24uCisgKgkgIFN1cHBvcnQgcm91dGluZXMgZm9yIHBhcmFsbGVsIHZhY3V1 bSBhbmQgYXV0b3ZhY3V1bSBleGVjdXRpb24uIEluIHRoZQorICoJICBjb21tZW50cyBiZWxvdywg dGhlIHdvcmQgInZhY3V1bSIgd2lsbCByZWZlciB0byBib3RoIHZhY3V1bSBhbmQKKyAqCSAgYXV0 b3ZhY3V1bS4KICAqCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50 ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywKICAqIGFuZCB0ZWFyaW5nIGRvd24g YSBQYXJhbGxlbFZhY3V1bVN0YXRlLgpAQCAtMTYsNiArMTgsMTMgQEAKICAqIHRoZSBwYXJhbGxl bCBjb250ZXh0IGlzIHJlLWluaXRpYWxpemVkIHNvIHRoYXQgdGhlIHNhbWUgRFNNIGNhbiBiZSB1 c2VkIGZvcgogICogbXVsdGlwbGUgcGFzc2VzIG9mIGluZGV4IGJ1bGstZGVsZXRpb24gYW5kIGlu ZGV4IGNsZWFudXAuCiAgKgorICogRm9yIHBhcmFsbGVsIGF1dG92YWN1dW0sIHdlIG5lZWQgdG8g cHJvcGFnYXRlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5CisgKiBwYXJhbWV0ZXJzIGZyb20gdGhl IGxlYWRlciB0byBpdHMgd29ya2VycywgYXMgdGhlIGxlYWRlcidzIHBhcmFtZXRlcnMgY2FuCisg KiBjaGFuZ2UgZXZlbiB3aGlsZSBwcm9jZXNzaW5nIGEgdGFibGUgKGUuZy4sIGR1ZSB0byBhIGNv bmZpZyByZWxvYWQpLgorICogVGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3QgbWFuYWdlcyB0 aGVzZSBwYXJhbWV0ZXJzIHVzaW5nIGEKKyAqIGdlbmVyYXRpb24gY291bnRlci4gRWFjaCBwYXJh bGxlbCB3b3JrZXIgcG9sbHMgdGhpcyBzaGFyZWQgc3RhdGUgYW5kCisgKiByZWZyZXNoZXMgaXRz IGxvY2FsIGRlbGF5IHBhcmFtZXRlcnMgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisg KgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKQEAgLTM3LDYgKzQ2LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIApAQCAtNTEsNiArNjEsMzMgQEAKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxf VVNBR0UJCTQKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTkRFWF9TVEFUUwkJNQogCisv KgorICogU3RydWN0IGZvciBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSByZWxhdGVkIHBhcmFtZXRl cnMgdG8gc2hhcmUgYW1vbmcgYW4KKyAqIGF1dG92YWN1dW0gd29ya2VyIGFuZCBpdHMgcGFyYWxs ZWwgdmFjdXVtIHdvcmtlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBWU2hhcmVkQ29zdFBhcmFt cworeworCS8qCisJICogVGhlIGdlbmVyYXRpb24gY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSB0 aGUgbGVhZGVyIHByb2Nlc3MgZWFjaCB0aW1lCisJICogaXQgdXBkYXRlcyB0aGUgc2hhcmVkIGNv c3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMuIFBhcmFsbGVsCisJICogdmFjdXVtIHdv cmtlcnMgY29tcGFyZXMgaXQgd2l0aCB0aGVpciBsb2NhbCBnZW5lcmF0aW9uLAorCSAqIHNoYXJl ZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCwgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSBuZWVkIHRv IHJlZnJlc2gKKwkgKiB0aGVpciBsb2NhbCBwYXJhbWV0ZXJzLiBUaGUgZ2VuZXJhdGlvbiBzdGFy dHMgZnJvbSAxIHNvIHRoYXQgYSBmcmVzaGx5CisJICogc3RhcnRlZCB3b3JrZXIgKHdob3NlIGxv Y2FsIGNvcHkgaXMgMCkgd2lsbCBhbHdheXMgbG9hZCB0aGUgaW5pdGlhbAorCSAqIHBhcmFtZXRl cnMgb24gaXRzIGZpcnN0IGNoZWNrLgorCSAqLworCXBnX2F0b21pY191aW50MzIgZ2VuZXJhdGlv bjsKKworCXNsb2NrX3QJCW11dGV4OwkJCS8qIHByb3RlY3RzIGFsbCBmaWVsZHMgYmVsb3cgKi8K KworCS8qIFBhcmFtZXRlcnMgdG8gc2hhcmUgd2l0aCBwYXJhbGxlbCB3b3JrZXJzICovCisJZG91 YmxlCQljb3N0X2RlbGF5OworCWludAkJCWNvc3RfbGltaXQ7CisJaW50CQkJY29zdF9wYWdlX2Rp cnR5OworCWludAkJCWNvc3RfcGFnZV9oaXQ7CisJaW50CQkJY29zdF9wYWdlX21pc3M7Cit9IFBW U2hhcmVkQ29zdFBhcmFtczsKKwogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJh bGxlbCB3b3JrZXJzLiAgU28gdGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQogICogc2VnbWVu dC4KQEAgLTEyMCw2ICsxNTcsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUFZTaGFyZWQKIAogCS8qIFN0 YXRpc3RpY3Mgb2Ygc2hhcmVkIGRlYWQgaXRlbXMgKi8KIAlWYWNEZWFkSXRlbXNJbmZvIGRlYWRf aXRlbXNfaW5mbzsKKworCS8qCisJICogSWYgJ3RydWUnIHRoZW4gd2UgYXJlIHJ1bm5pbmcgcGFy YWxsZWwgYXV0b3ZhY3V1bS4gT3RoZXJ3aXNlLCB3ZSBhcmUKKwkgKiBydW5uaW5nIHBhcmFsbGVs IG1haW50ZW5hbmNlIFZBQ1VVTS4KKwkgKi8KKwlib29sCQlpc19hdXRvdmFjdXVtOworCisJLyoK KwkgKiBDb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHNoYXJlZCBiZXR3ZWVuIHRo ZSBhdXRvdmFjdXVtIGxlYWRlcgorCSAqIGFuZCBpdHMgcGFyYWxsZWwgd29ya2Vycy4KKwkgKi8K KwlQVlNoYXJlZENvc3RQYXJhbXMgY29zdF9wYXJhbXM7CiB9IFBWU2hhcmVkOwogCiAvKiBTdGF0 dXMgdXNlZCBkdXJpbmcgcGFyYWxsZWwgaW5kZXggdmFjdXVtIG9yIGNsZWFudXAgKi8KQEAgLTIy Miw2ICsyNzEsMTcgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAlQVkluZFZhY1N0YXR1 cyBzdGF0dXM7CiB9OwogCitzdGF0aWMgUFZTaGFyZWRDb3N0UGFyYW1zICpwdl9zaGFyZWRfY29z dF9wYXJhbXMgPSBOVUxMOworCisvKgorICogV29ya2VyLWxvY2FsIGNvcHkgb2YgdGhlIGxhc3Qg Y29zdC1wYXJhbWV0ZXIgZ2VuZXJhdGlvbiB0aGlzIHdvcmtlciBoYXMKKyAqIGFwcGxpZWQuICBJ bml0aWFsaXplZCB0byAwOyBzaW5jZSB0aGUgbGVhZGVyIGluaXRpYWxpemVzIHRoZSBzaGFyZWQK KyAqIGdlbmVyYXRpb24gY291bnRlciB0byAxLCB0aGUgZmlyc3QgY2FsbCB0bworICogcGFyYWxs ZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkgd2lsbCBhbHdheXMgZGV0ZWN0 IGEKKyAqIG1pc21hdGNoIGFuZCByZWFkIHRoZSBpbml0aWFsIHBhcmFtZXRlcnMgZnJvbSBzaGFy ZWQgbWVtb3J5LgorICovCitzdGF0aWMgdWludDMyIHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9s b2NhbCA9IDA7CisKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhS ZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAkJCQkJCQkJ CQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFj dXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVt X2luZGV4X3NjYW5zLApAQCAtMjMzLDYgKzI5Myw3IEBAIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3Zh Y3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9u CiBzdGF0aWMgYm9vbCBwYXJhbGxlbF92YWN1dW1faW5kZXhfaXNfcGFyYWxsZWxfc2FmZShSZWxh dGlvbiBpbmRyZWwsIGludCBudW1faW5kZXhfc2NhbnMsCiAJCQkJCQkJCQkJCQkgICBib29sIHZh Y3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1l dGVycyhQVlNoYXJlZENvc3RQYXJhbXMgKnBhcmFtcyk7CiAKIC8qCiAgKiBUcnkgdG8gZW50ZXIg cGFyYWxsZWwgbW9kZSBhbmQgY3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gIFRoZW4gaW5pdGlh bGl6ZQpAQCAtMzc0LDggKzQzNSw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlzaGFyZWQtPnF1ZXJ5aWQgPSBw Z3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CiAJc2hhcmVkLT5tYWludGVuYW5jZV93b3JrX21lbV93 b3JrZXIgPQogCQkobmluZGV4ZXNfbXdtID4gMCkgPwotCQltYWludGVuYW5jZV93b3JrX21lbSAv IE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19td20pIDoKLQkJbWFpbnRlbmFuY2Vfd29y a19tZW07CisJCXZhY193b3JrX21lbSAvIE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19t d20pIDoKKwkJdmFjX3dvcmtfbWVtOworCiAJc2hhcmVkLT5kZWFkX2l0ZW1zX2luZm8ubWF4X2J5 dGVzID0gdmFjX3dvcmtfbWVtICogKHNpemVfdCkgMTAyNDsKIAogCS8qIFByZXBhcmUgRFNBIHNw YWNlIGZvciBkZWFkIGl0ZW1zICovCkBAIC0zOTIsNiArNDU0LDIxIEBAIHBhcmFsbGVsX3ZhY3V1 bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlw Z19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0 b21pY19pbml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CiAKKwlzaGFyZWQtPmlzX2F1dG92YWN1 dW0gPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUg c2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgaWYgaXQncyBmb3IKKwkg KiBhdXRvdmFjdXVtLgorCSAqLworCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJeworCQlw YXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygmc2hhcmVkLT5jb3N0X3BhcmFtcyk7 CisJCXBnX2F0b21pY19pbml0X3UzMigmc2hhcmVkLT5jb3N0X3BhcmFtcy5nZW5lcmF0aW9uLCAx KTsKKwkJU3BpbkxvY2tJbml0KCZzaGFyZWQtPmNvc3RfcGFyYW1zLm11dGV4KTsKKworCQlwdl9z aGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOworCX0KKwogCXNobV90 b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9TSEFSRUQsIHNoYXJlZCk7 CiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKQEAgLTQ1Nyw2ICs1MzQsOSBAQCBwYXJhbGxlbF92 YWN1dW1fZW5kKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICoqaXN0YXRzKQogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocHZzLT5wY3h0KTsKIAlFeGl0UGFy YWxsZWxNb2RlKCk7CiAKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQlwdl9z aGFyZWRfY29zdF9wYXJhbXMgPSBOVUxMOworCiAJcGZyZWUocHZzLT53aWxsX3BhcmFsbGVsX3Zh Y3V1bSk7CiAJcGZyZWUocHZzKTsKIH0KQEAgLTUzNCw2ICs2MTQsMTAzIEBAIHBhcmFsbGVsX3Zh Y3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBu dW1fdGFibGVfdHVwCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBu dW1faW5kZXhfc2NhbnMsIGZhbHNlLCB3c3RhdHMpOwogfQogCisvKgorICogRmlsbCBpbiB0aGUg Z2l2ZW4gc3RydWN0dXJlIHdpdGggY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVyIHZh bHVlcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3Rf cGFyYW1ldGVycyhQVlNoYXJlZENvc3RQYXJhbXMgKnBhcmFtcykKK3sKKwlwYXJhbXMtPmNvc3Rf ZGVsYXkgPSB2YWN1dW1fY29zdF9kZWxheTsKKwlwYXJhbXMtPmNvc3RfbGltaXQgPSB2YWN1dW1f Y29zdF9saW1pdDsKKwlwYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSA9IFZhY3V1bUNvc3RQYWdlRGly dHk7CisJcGFyYW1zLT5jb3N0X3BhZ2VfaGl0ID0gVmFjdXVtQ29zdFBhZ2VIaXQ7CisJcGFyYW1z LT5jb3N0X3BhZ2VfbWlzcyA9IFZhY3V1bUNvc3RQYWdlTWlzczsKK30KKworLyoKKyAqIFVwZGF0 ZXMgdGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgZm9yIHBhcmFsbGVsIGF1 dG92YWN1dW0KKyAqIHdvcmtlcnMuCisgKgorICogRm9yIG5vbi1hdXRvdmFjdXVtIHBhcmFsbGVs IHdvcmtlcnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIG5vIGVmZmVjdC4KKyAqLwordm9pZAor cGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpCit7CisJdWlu dDMyCQlwYXJhbXNfZ2VuZXJhdGlvbjsKKworCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOwor CisJLyogUXVpY2sgcmV0dXJuIGlmIHRoZSB3b3JrZXIgaXMgbm90IHJ1bm5pbmcgZm9yIHRoZSBh dXRvdmFjdXVtICovCisJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9PSBOVUxMKQorCQlyZXR1 cm47CisKKwlwYXJhbXNfZ2VuZXJhdGlvbiA9IHBnX2F0b21pY19yZWFkX3UzMigmcHZfc2hhcmVk X2Nvc3RfcGFyYW1zLT5nZW5lcmF0aW9uKTsKKwlBc3NlcnQoc2hhcmVkX3BhcmFtc19nZW5lcmF0 aW9uX2xvY2FsIDw9IHBhcmFtc19nZW5lcmF0aW9uKTsKKworCS8qIFJldHVybiBpZiBwYXJhbWV0 ZXJzIGhhZCBub3QgY2hhbmdlZCBpbiB0aGUgbGVhZGVyICovCisJaWYgKHBhcmFtc19nZW5lcmF0 aW9uID09IHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCkKKwkJcmV0dXJuOworCisJU3Bp bkxvY2tBY3F1aXJlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKwlWYWN1dW1Db3N0 RGVsYXkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfZGVsYXk7CisJVmFjdXVtQ29zdExp bWl0ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2xpbWl0OworCVZhY3V1bUNvc3RQYWdl RGlydHkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eTsKKwlWYWN1dW1D b3N0UGFnZUhpdCA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX2hpdDsKKwlWYWN1 dW1Db3N0UGFnZU1pc3MgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9taXNzOwor CVNwaW5Mb2NrUmVsZWFzZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRleCk7CisKKwlWYWN1 dW1VcGRhdGVDb3N0cygpOworCisJc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsID0gcGFy YW1zX2dlbmVyYXRpb247CisKKwllbG9nKERFQlVHMiwKKwkJICJwYXJhbGxlbCBhdXRvdmFjdXVt IHdvcmtlciB1cGRhdGVkIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PSVkLCBjb3N0X2RlbGF5PSVn LCBjb3N0X3BhZ2VfbWlzcz0lZCwgY29zdF9wYWdlX2RpcnR5PSVkLCBjb3N0X3BhZ2VfaGl0PSVk IiwKKwkJIHZhY3V1bV9jb3N0X2xpbWl0LAorCQkgdmFjdXVtX2Nvc3RfZGVsYXksCisJCSBWYWN1 dW1Db3N0UGFnZU1pc3MsCisJCSBWYWN1dW1Db3N0UGFnZURpcnR5LAorCQkgVmFjdXVtQ29zdFBh Z2VIaXQpOworfQorCisvKgorICogU3RvcmUgdGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBh cmFtZXRlcnMgaW4gdGhlIHNoYXJlZCBtZW1vcnkgc28gdGhhdAorICogcGFyYWxsZWwgdmFjdXVt IHdvcmtlcnMgY2FuIGNvbnN1bWUgdGhlbSAoc2VlCisgKiBwYXJhbGxlbF92YWN1dW1fdXBkYXRl X3NoYXJlZF9kZWxheV9wYXJhbXMoKSkuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV9wcm9w YWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2b2lkKQoreworCUFzc2VydChBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkpOworCisJLyoKKwkgKiBRdWljayByZXR1cm4gaWYgdGhlIGxlYWRlciBw cm9jZXNzIGlzIG5vdCBzaGFyaW5nIHRoZSBkZWxheSBwYXJhbWV0ZXJzLgorCSAqLworCWlmIChw dl9zaGFyZWRfY29zdF9wYXJhbXMgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDaGVj ayBpZiBhbnkgZGVsYXkgcGFyYW1ldGVycyBoYXZlIGNoYW5nZWQuIFdlIGNhbiByZWFkIHRoZW0g d2l0aG91dAorCSAqIGxvY2tzIGFzIG9ubHkgdGhlIGxlYWRlciBjYW4gbW9kaWZ5IHRoZW0uCisJ ICovCisJaWYgKHZhY3V1bV9jb3N0X2RlbGF5ID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29z dF9kZWxheSAmJgorCQl2YWN1dW1fY29zdF9saW1pdCA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PmNvc3RfbGltaXQgJiYKKwkJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9PSBwdl9zaGFyZWRfY29zdF9w YXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFnZUhpdCA9PSBwdl9zaGFy ZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQgJiYKKwkJVmFjdXVtQ29zdFBhZ2VNaXNzID09 IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21pc3MpCisJCXJldHVybjsKKworCS8q IFVwZGF0ZSB0aGUgc2hhcmVkIGRlbGF5IHBhcmFtZXRlcnMgKi8KKwlTcGluTG9ja0FjcXVpcmUo JnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCXBhcmFsbGVsX3ZhY3V1bV9zZXRfY29z dF9wYXJhbWV0ZXJzKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyk7CisJU3BpbkxvY2tSZWxlYXNlKCZw dl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCS8qCisJICogSW5jcmVtZW50IHRoZSBn ZW5lcmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJhbGxlbCB3b3JrZXJzCisJ ICoga25vdyB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNvc3QgcGFyYW1zLgorCSAq LworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmdlbmVy YXRpb24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdv cmtlciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAqIHZhY3V1bSBhbmQgaW5k ZXggY2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3b3JrZXJzLgpAQCAtNTU1 LDEyICs3MzIsMTcgQEAgcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAq aW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAlpbnQJCQluaW5kZXhlc19w YXJhbGxlbF9idWxrZGVsID0gMDsKIAlpbnQJCQluaW5kZXhlc19wYXJhbGxlbF9jbGVhbnVwID0g MDsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOworCWludAkJCW1heF93b3JrZXJzOworCisJbWF4 X3dvcmtlcnMgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPworCQlhdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzIDoKKwkJbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnM7 CiAKIAkvKgogCSAqIFdlIGRvbid0IGFsbG93IHBlcmZvcm1pbmcgcGFyYWxsZWwgb3BlcmF0aW9u IGluIHN0YW5kYWxvbmUgYmFja2VuZCBvcgogCSAqIHdoZW4gcGFyYWxsZWxpc20gaXMgZGlzYWJs ZWQuCiAJICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBtYXhfcGFyYWxsZWxfbWFpbnRl bmFuY2Vfd29ya2VycyA9PSAwKQorCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwgbWF4X3dvcmtl cnMgPT0gMCkKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAtNTk5LDggKzc4MSw4IEBAIHBhcmFsbGVs X3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywg aW50IG5yZXF1ZXN0ZWQsCiAJcGFyYWxsZWxfd29ya2VycyA9IChucmVxdWVzdGVkID4gMCkgPwog CQlNaW4obnJlcXVlc3RlZCwgbmluZGV4ZXNfcGFyYWxsZWwpIDogbmluZGV4ZXNfcGFyYWxsZWw7 CiAKLQkvKiBDYXAgYnkgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgKi8KLQlwYXJh bGxlbF93b3JrZXJzID0gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzKTsKKwkvKiBDYXAgYnkgR1VDIHZhcmlhYmxlICovCisJcGFyYWxsZWxfd29y a2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBtYXhfd29ya2Vycyk7CiAKIAlyZXR1cm4gcGFy YWxsZWxfd29ya2VyczsKIH0KQEAgLTczMCw2ICs5MTIsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3By b2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4 X3NjYW4KIAkJCQkJCQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkLCBud29ya2VycykpKTsK IAl9CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCisJLyoKKwkgKiBVc2VkIGJ5IHRl c3RzIHRvIHBhdXNlIGFmdGVyIHdvcmtlcnMgYXJlIGxhdW5jaGVkIGJ1dCBiZWZvcmUgaW5kZXgK KwkgKiB2YWN1dW1pbmcgYmVnaW5zLgorCSAqLworCWlmIChud29ya2VycyA+IDApCisJCUlOSkVD VElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZyIs IE5VTEwpOworI2VuZGlmCisKIAkvKiBWYWN1dW0gdGhlIGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJv Y2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vz c191bnNhZmVfaW5kZXhlcyhwdnMpOwogCkBAIC0xMDY0LDcgKzEyNTYsMjEgQEAgcGFyYWxsZWxf dmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQlzaGFy ZWQtPmRlYWRfaXRlbXNfaGFuZGxlKTsKIAogCS8qIFNldCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxh eSAqLwotCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkK Kwl7CisJCS8qCisJCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpbml0aWFsaXplIGNv c3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVycworCQkgKiBmcm9tIHRoZSBsZWFkZXIncyBzaGFyZWQg c3RhdGUgcmF0aGVyIHRoYW4gR1VDIGRlZmF1bHRzLCBiZWNhdXNlCisJCSAqIHRoZSBsZWFkZXIg bWF5IGhhdmUgYXBwbGllZCBwZXItdGFibGUgb3IgYXV0b3ZhY3V1bS1zcGVjaWZpYworCQkgKiBv dmVycmlkZXMuICBwdl9zaGFyZWRfY29zdF9wYXJhbXMgbXVzdCBiZSBzZXQgYmVmb3JlIGNhbGxp bmcKKwkJICogcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkuCisJ CSAqLworCQlwdl9zaGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOwor CQlwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKTsKKwl9CisJZWxz ZQorCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCiAJVmFjdXVtQ29zdEJhbGFuY2UgPSAwOwogCVZh Y3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihz aGFyZWQtPmNvc3RfYmFsYW5jZSk7CkBAIC0xMTE5LDYgKzEzMjUsOSBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJdmFjX2Nsb3NlX2luZGV4 ZXMobmluZGV4ZXMsIGluZHJlbHMsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCXRhYmxlX2Nsb3NlKHJl bCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAlGcmVlQWNjZXNzU3RyYXRlZ3kocHZzLmJz dHJhdGVneSk7CisKKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCQlwdl9zaGFyZWRfY29z dF9wYXJhbXMgPSBOVUxMOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpp bmRleCBkNjk1ZjFkZTRiZC4uY2VkNDk3MGEzYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCkBAIC0xNjg4LDcgKzE2ODgsNyBAQCBWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQogCX0K IAllbHNlCiAJewotCQkvKiBNdXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFICovCisJ CS8qIE11c3QgYmUgZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgb3IgcGFyYWxsZWwgYXV0b3Zh Y3V1bSB3b3JrZXIgKi8KIAkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJ CXZhY3V1bV9jb3N0X2xpbWl0ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KQEAgLTI5MjgsOCArMjky OCw3IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0 X21hcCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFudXAgPSBWQUNPUFRWQUxV RV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9V TlNQRUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24ndCBzdXBwb3J0IHBhcmFsbGVsIHZh Y3V1bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IC0xOwor CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9taW5fYWdlID0gZnJlZXplX21pbl9hZ2U7CiAJCXRh Yi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSBmcmVlemVfdGFibGVfYWdlOwogCQl0YWIt PmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2UgPSBtdWx0aXhhY3RfZnJlZXplX21p bl9hZ2U7CkBAIC0yOTM5LDYgKzI5MzgsMjcgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCBy ZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQl0YWItPmF0X3BhcmFtcy5sb2dfYW5hbHl6 ZV9taW5fZHVyYXRpb24gPSBsb2dfYW5hbHl6ZV9taW5fZHVyYXRpb247CiAJCXRhYi0+YXRfcGFy YW1zLnRvYXN0X3BhcmVudCA9IEludmFsaWRPaWQ7CiAKKwkJLyogRGV0ZXJtaW5lIHRoZSBudW1i ZXIgb2YgcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMgdG8gdXNlICovCisJCXRhYi0+YXRfcGFyYW1z Lm53b3JrZXJzID0gMDsKKwkJaWYgKGF2b3B0cykKKwkJeworCQkJaWYgKGF2b3B0cy0+YXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzID09IDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBEaXNhYmxl IHBhcmFsbGVsIHZhY3V1bSwgaWYgdGhlIHJlbG9wdGlvbiBzZXRzIHRoZSBwYXJhbGxlbAorCQkJ CSAqIGRlZ3JlZSBhcyB6ZXJvLgorCQkJCSAqLworCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJz ID0gLTE7CisJCQl9CisJCQllbHNlIGlmIChhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29y a2VycyA+IDApCisJCQkJdGFiLT5hdF9wYXJhbXMubndvcmtlcnMgPSBhdm9wdHMtPmF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VyczsKKworCQkJLyoKKwkJCSAqIGF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VycyA9PSAtMSBmYWxscyB0aHJvdWdoLCBrZWVwCisJCQkgKiBud29ya2Vycz0wCisJCQkg Ki8KKwkJfQorCiAJCS8qCiAJCSAqIExhdGVyLCBpbiB2YWN1dW1fcmVsKCksIHdlIGNoZWNrIHJl bG9wdGlvbnMgZm9yIGFueQogCQkgKiB2YWN1dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3Jh dGUgb3ZlcnJpZGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDM2YWQ3MDhiMzYwLi4y NGRkYjI3NmYwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBA QCBpbnQJCQlOQnVmZmVycyA9IDE2Mzg0OwogaW50CQkJTWF4Q29ubmVjdGlvbnMgPSAxMDA7CiBp bnQJCQltYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDg7CiBpbnQJCQltYXhfcGFyYWxsZWxfd29ya2Vy cyA9IDg7CitpbnQJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMDsKIGludAkJ CU1heEJhY2tlbmRzID0gMDsKIAogLyogR1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjLmMKaW5kZXggZTE1NDZkOWM5N2EuLjFhYzhlOGZjM2JlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKQEAgLTMzNTgsOSArMzM1OCwxNCBAQCBzZXRfY29uZmlnX3dpdGhfaGFuZGxlKGNvbnN0 IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5kbGUgKmhhbmRsZSwKIAkgKgogCSAqIEFsc28gYWxsb3cg bm9ybWFsIHNldHRpbmcgaWYgdGhlIEdVQyBpcyBtYXJrZWQgR1VDX0FMTE9XX0lOX1BBUkFMTEVM LgogCSAqCi0JICogT3RoZXIgY2hhbmdlcyBtaWdodCBuZWVkIHRvIGFmZmVjdCBvdGhlciB3b3Jr ZXJzLCBzbyBmb3JiaWQgdGhlbS4KKwkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZm ZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLiBOb3RlLAorCSAqIHRoYXQgcGFyYWxs ZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb25seSBjb3N0LWJh c2VkCisJICogZGVsYXlzIG5lZWQgdG8gYmUgYWZmZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlcnMuIFRoZXNlCisJICogcGFyYW1ldGVycyBhcmUgcHJvcGFnYXRlZCB0byBp dHMgd29ya2VycyBkdXJpbmcgcGFyYWxsZWwgdmFjdXVtIChzZWUKKwkgKiB2YWN1dW1wYXJhbGxl bC5jIGZvciBkZXRhaWxzKS4KIAkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmIGNoYW5n ZVZhbCAmJiBhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCisJaWYgKElzSW5QYXJhbGxlbE1v ZGUoKSAmJiAhQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIGNoYW5nZVZhbCAmJgorCQlh Y3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCiAJCShyZWNvcmQtPmZsYWdzICYgR1VDX0FMTE9X X0lOX1BBUkFMTEVMKSA9PSAwKQogCXsKIAkJZXJlcG9ydChlbGV2ZWwsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDBhODYyNjkzZmNkLi42ZWY0NmQ4ODE1 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTE3MCw2 ICsxNzAsMTQgQEAKICAgbWF4ID0+ICcxMC4wJywKIH0sCiAKK3sgbmFtZSA9PiAnYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19T SUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAorICBzaG9ydF9kZXNjID0+ICdN YXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgYnkgYSBz aW5nbGUgYXV0b3ZhY3V1bSB3b3JrZXIuJywKKyAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnMnLAorICBib290X3ZhbCA9PiAnMCcsCisgIG1pbiA9PiAnMCcsCisg IG1heCA9PiAnTUFYX1BBUkFMTEVMX1dPUktFUl9MSU1JVCcsCit9LAorCiB7IG5hbWUgPT4gJ2F1 dG92YWN1dW1fbWF4X3dvcmtlcnMnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU0lH SFVQJywgZ3JvdXAgPT4gJ1ZBQ1VVTV9BVVRPVkFDVVVNJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0 cyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzbHkgcnVubmluZyBhdXRvdmFjdXVt IHdvcmtlciBwcm9jZXNzZXMuJywKICAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3dvcmtl cnMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmlu ZGV4IGNmMTU1OTczODViLi43M2M0OWYwOWFlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNzEzLDYgKzcxMyw3IEBACiAjYXV0b3ZhY3V1 bV93b3JrZXJfc2xvdHMgPSAxNiAgICAgICAgICAgIyBhdXRvdmFjdXVtIHdvcmtlciBzbG90cyB0 byBhbGxvY2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKGNo YW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAzICAgICAg ICAgICAgICMgbWF4IG51bWJlciBvZiBhdXRvdmFjdXVtIHN1YnByb2Nlc3NlcworI2F1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAwICAgICMgbGltaXRlZCBieSBtYXhfcGFyYWxsZWxf d29ya2VycwogI2F1dG92YWN1dW1fbmFwdGltZSA9IDFtaW4gICAgICAgICAgICAgICMgdGltZSBi ZXR3ZWVuIGF1dG92YWN1dW0gcnVucwogI2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUw ICAgICAgICMgbWluIG51bWJlciBvZiByb3cgdXBkYXRlcyBiZWZvcmUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhY3V1bQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDUyM2QzZjM5ZmM1Li5mNmJmMDcyYmFiNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MTQzMiw2ICsxNDMyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRhYmxlX3N0b3JhZ2Vf cGFyYW1ldGVyc1tdID0gewogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSIs CiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlIiwKIAkiYXV0b3ZhY3V1bV9t dWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSIsCisJImF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy cyIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLAogCSJhdXRvdmFjdXVtX3ZhY3V1 bV9jb3N0X2xpbWl0IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0X3NjYWxlX2ZhY3RvciIs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IDFmNDViY2EwMTVjLi44YjQyODA4ZTcwYiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvdmFjdXVtLmgKQEAgLTQyMiw2ICs0MjIsOCBAQCBleHRlcm4gdm9pZCBwYXJhbGxlbF92 YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiAJCQkJ CQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLAogCQkJCQkJCQkJCQkJYm9vbCBlc3RpbWF0ZWRf Y291bnQsCiAJCQkJCQkJCQkJCQlQVldvcmtlclN0YXRzICp3c3RhdHMpOworZXh0ZXJuIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOworZXh0ZXJu IHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQp OwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGYx NmYzNTY1OWI5Li4wMDE5MGM2N2VjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCBleHRl cm4gUEdETExJTVBPUlQgaW50IE1heEJhY2tlbmRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBN YXhDb25uZWN0aW9uczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3dvcmtlcl9wcm9jZXNz ZXM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF93b3JrZXJzOworZXh0ZXJu IFBHRExMSU1QT1JUIGludCBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRl cm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAyMzY4MzBm NmI5My4uY2QxZTkyZjIzMDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0zMTEsNiArMzExLDggQEAgdHlwZWRlZiBz dHJ1Y3QgRm9yZWlnbktleUNhY2hlSW5mbwogdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY09wdHMKIHsK IAlib29sCQllbmFibGVkOworCisJaW50CQkJYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzOwog CWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hvbGQ7CiAJ aW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCAyOGNlM2IzNWVkYS4u MzM2YTIxMmZhZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBTVUJESVJTID0gXAog CQkgIHBsc2FtcGxlIFwKIAkJICBzcGdpc3RfbmFtZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKKwkJ ICB0ZXN0X2F1dG92YWN1dW0gXAogCQkgIHRlc3RfYmluYXJ5aGVhcCBcCiAJCSAgdGVzdF9iaXRt YXBzZXQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggM2Fj MjkxNjU2YzEuLjkyOTY1OTk1NmNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTE2LDYgKzE2LDcg QEAgc3ViZGlyKCdwbHNhbXBsZScpCiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIo J3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9haW8nKQorc3ViZGlyKCd0 ZXN0X2F1dG92YWN1dW0nKQogc3ViZGlyKCd0ZXN0X2JpbmFyeWhlYXAnKQogc3ViZGlyKCd0ZXN0 X2JpdG1hcHNldCcpCiBzdWJkaXIoJ3Rlc3RfYmxvb21maWx0ZXInKQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjcxNmUxN2Y1YTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJh dGVkIHN1YmRpcmVjdG9yaWVzCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MTg4ZWM5Zjk2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9NYWtlZmlsZQpAQCAtMCwwICsxLDIwIEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlCisKK1BHRklMRURFU0MgPSAidGVzdF9hdXRvdmFjdXVtIC0g dGVzdCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtIgorCitUQVBfVEVTVFMgPSAxCisKK0VY VFJBX0lOU1RBTEwgPSBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMKKworZXhwb3J0 IGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBw Z19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAk KFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bQor dG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9N YWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xv YmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5i dWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODZlMzkyYmMwZGUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNv bi5idWlsZApAQCAtMCwwICsxLDE1IEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0cyArPSB7CisgICduYW1lJzog J3Rlc3RfYXV0b3ZhY3V1bScsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAor ICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICdlbnYn OiB7CisgICAgICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0 aW9uX3BvaW50cycpID8gJ3llcycgOiAnbm8nLAorICAgIH0sCisgICAgJ3Rlc3RzJzogWworICAg ICAgJ3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9h dXRvdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFy YWxsZWxfYXV0b3ZhY3V1bS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMmFjYTMyMzc0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0wLDAgKzEsMTk1IEBA CisjIFRlc3QgcGFyYWxsZWwgYXV0b3ZhY3V1bSBiZWhhdmlvcgorCit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5q ZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9u IHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJlZm9yZSBlYWNo IHRlc3Qgd2Ugc2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFi bGUgYW5kCisjIGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuIFJldHVybnMgdGhlIGN1 cnJlbnQgYXV0b3ZhY3V1bV9jb3VudCBvZgorIyB0aGUgdGFibGUgdGVzdF9hdXRvdmFjLgorc3Vi IHByZXBhcmVfZm9yX25leHRfdGVzdAoreworCW15ICgkbm9kZSwgJHRlc3RfbnVtYmVyKSA9IEBf OworCisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxF IHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwkJVVBEQVRF IHRlc3RfYXV0b3ZhYyBTRVQgY29sXzEgPSAkdGVzdF9udW1iZXI7CisJfSk7CisKKwlteSAkY291 bnQgPSAkbm9kZS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92 YWN1dW1fY291bnQgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndGVz dF9hdXRvdmFjJworCX0pOworCisJcmV0dXJuICRjb3VudDsKK30KKworIyBXYWl0IGZvciB0aGUg dGFibGUgdG8gYmUgdmFjdXVtZWQgYnkgYW4gYXV0b3ZhY3V1bSB3b3JrZXIuCitzdWIgd2FpdF9m b3JfYXV0b3ZhY3V1bV9jb21wbGV0ZQoreworCW15ICgkbm9kZSwgJG9sZF9jb3VudCkgPSBAXzsK KworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNU IGF1dG92YWN1dW1fY291bnQgPiAkb2xkX2NvdW50IEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lID0gJ3Rlc3RfYXV0b3ZhYycKKwl9KTsKK30KKworbXkgJHBzcWxfb3V0Owor CitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbWFpbicpOworJG5v ZGUtPmluaXQ7CisKKyMgTGltaXQgdG8gb25lIGF1dG92YWN1dW0gd29ya2VyIGFuZCBkaXNhYmxl IGF1dG92YWN1dW0gbG9nZ2luZyBnbG9iYWxseQorIyAoZW5hYmxlZCBvbmx5IG9uIHRoZSB0ZXN0 IHRhYmxlKSBzbyB0aGF0IGxvZyBjaGVja3MgYmVsb3cgbWF0Y2ggb25seQorIyBhY3Rpdml0eSBv biB0aGUgZXhwZWN0ZWQgdGFibGUuCiskbm9kZS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwu Y29uZicsIHFxeworYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDEKK2F1dG92YWN1dW1fd29ya2Vy X3Nsb3RzID0gMQorYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIKK21heF93b3Jr ZXJfcHJvY2Vzc2VzID0gMTAKK21heF9wYXJhbGxlbF93b3JrZXJzID0gMTAKK2xvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzIKK2F1dG92YWN1dW1fbmFwdGltZSA9ICcxcycKK21pbl9wYXJhbGxlbF9p bmRleF9zY2FuX3NpemUgPSAwCitsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAtMQorfSk7 Ciskbm9kZS0+c3RhcnQ7CisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9p bnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3Jp cHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5v dCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5vZGUtPmNoZWNrX2V4dGVuc2lvbign aW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmpl Y3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0ZSBhbGwgZnVuY3Rpb25z IG5lZWRlZCBmb3IgdGVzdGluZworJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK KwlDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Cit9KTsKKworbXkgJGluZGV4ZXNf bnVtID0gMzsKK215ICRpbml0aWFsX3Jvd3NfbnVtID0gMTBfMDAwOworbXkgJGF1dG92YWN1dW1f cGFyYWxsZWxfd29ya2VycyA9IDI7CisKKyMgQ3JlYXRlIHRhYmxlIGFuZCBmaWxsIGl0IHdpdGgg c29tZSBkYXRhCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBU QUJMRSB0ZXN0X2F1dG92YWMgKAorCQlpZCBTRVJJQUwgUFJJTUFSWSBLRVksCisJCWNvbF8xIElO VEVHRVIsICBjb2xfMiBJTlRFR0VSLCAgY29sXzMgSU5URUdFUiwgIGNvbF80IElOVEVHRVIKKwkp IFdJVEggKGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9ICRhdXRvdmFjdXVtX3BhcmFsbGVs X3dvcmtlcnMsCisJCQlsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAwKTsKKworCUlOU0VS VCBJTlRPIHRlc3RfYXV0b3ZhYworCVNFTEVDVAorCQlnIEFTIGNvbDEsCisJCWcgKyAxIEFTIGNv bDIsCisJCWcgKyAyIEFTIGNvbDMsCisJCWcgKyAzIEFTIGNvbDQKKwlGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkaW5pdGlhbF9yb3dzX251bSkgQVMgZzsKK30pOworCisjIENyZWF0ZSBzcGVjaWZp ZWQgbnVtYmVyIG9mIGItdHJlZSBpbmRleGVzIG9uIHRoZSB0YWJsZQorJG5vZGUtPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKKwlETyBcJFwkCisJREVDTEFSRQorCQlpIElOVEVHRVI7CisJ QkVHSU4KKwkJRk9SIGkgSU4gMS4uJGluZGV4ZXNfbnVtIExPT1AKKwkJCUVYRUNVVEUgZm9ybWF0 KCdDUkVBVEUgSU5ERVggaWR4X2NvbF9cJXMgT04gdGVzdF9hdXRvdmFjIChjb2xfXCVzKTsnLCBp LCBpKTsKKwkJRU5EIExPT1A7CisJRU5EIFwkXCQ7Cit9KTsKKworIyBUZXN0IDEgOgorIyBPdXIg dGFibGUgaGFzIGVub3VnaCBpbmRleGVzIGFuZCBhcHByb3ByaWF0ZSByZWxvcHRpb25zLCBzbyBh dXRvdmFjdXVtIG11c3QKKyMgYmUgYWJsZSB0byBwcm9jZXNzIGl0IGluIHBhcmFsbGVsIG1vZGUu IEp1c3QgY2hlY2sgaWYgaXQgY2FuIGRvIGl0LgorCitteSAkYXZfY291bnQgPSBwcmVwYXJlX2Zv cl9uZXh0X3Rlc3QoJG5vZGUsIDEpOworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmls ZTsKKworJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBUQUJMRSB0 ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdh aXQgdW50aWwgdGhlIHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29tcGxldGVkLiBB dCB0aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBudW1iZXIgb2Yg cGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiBzdGFydGVkLgord2FpdF9mb3JfYXV0b3ZhY3V1bV9j b21wbGV0ZSgkbm9kZSwgJGF2X2NvdW50KTsKK29rKCAkbm9kZS0+bG9nX2NvbnRhaW5zKAorCQlx ci9wYXJhbGxlbCB3b3JrZXJzOiBpbmRleCB2YWN1dW06IDIgcGxhbm5lZCwgMiBsYXVuY2hlZCBp biB0b3RhbC8sCisJCSRsb2dfb2Zmc2V0KSk7CisKKyMgVGVzdCAyOgorIyBDaGVjayB3aGV0aGVy IHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGNhbiBwcm9wYWdhdGUgY29zdC1iYXNlZCBwYXJh bWV0ZXJzCisjIHRvIHRoZSBwYXJhbGxlbCB3b3JrZXJzLgorCiskYXZfY291bnQgPSBwcmVwYXJl X2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDIpOworJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmls ZTsKKworJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJywgJ3dh aXQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2F1dG92YWN1dW0tbGVhZGVy LWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnLCAnd2FpdCcpOworCisJQUxURVIgVEFCTEUgdGVz dF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMSwgYXV0b3ZhY3V1 bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworIyBXYWl0IHVudGlsIHBhcmFsbGVsIGF1dG92YWN1 dW0gaXMgaW5pdGVkCiskbm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2F1dG92YWN1dW0gd29ya2VyJywK KwknYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nKTsKKworIyBVcGRhdGUgdGhlIHNo YXJlZCBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxeworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfbGltaXQgPSA1MDA7 CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29zdF9wYWdlX21pc3MgPSAxMDsKKwlBTFRFUiBT WVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfZGlydHkgPSAxMDsKKwlBTFRFUiBTWVNURU0gU0VU IHZhY3V1bV9jb3N0X3BhZ2VfaGl0ID0gMTA7CisJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9 KTsKKworIyBSZXN1bWUgdGhlIGxlYWRlciBwcm9jZXNzIHRvIHVwZGF0ZSB0aGUgc2hhcmVkIHBh cmFtZXRlcnMgZHVyaW5nIGhlYXAgc2NhbiAoaS5lLgorIyB2YWN1dW1fZGVsYXlfcG9pbnQoKSBp cyBjYWxsZWQpIGFuZCBsYXVuY2ggYSBwYXJhbGxlbCB2YWN1dW0gd29ya2VyLCBidXQgaXQgc3Rv cHMKKyMgYmVmb3JlIHZhY3V1bWluZyBpbmRleGVzIGR1ZSB0byB0aGUgaW5qZWN0aW9uIHBvaW50 LgorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c193YWtldXAoJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7Cit9KTsK KyRub2RlLT53YWl0X2Zvcl9ldmVudCgnYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisKKyMgQ2hlY2sgd2hldGhlciBw YXJhbGxlbCB3b3JrZXIgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgYWxsIHBhcmFtZXRlcnMgZHVyaW5n CisjIGluZGV4IHByb2Nlc3NpbmcKKyRub2RlLT53YWl0X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwg YXV0b3ZhY3V1bSB3b3JrZXIgdXBkYXRlZCBjb3N0IHBhcmFtczogY29zdF9saW1pdD01MDAsIGNv c3RfZGVsYXk9MiwgY29zdF9wYWdlX21pc3M9MTAsIGNvc3RfcGFnZV9kaXJ0eT0xMCwgY29zdF9w YWdlX2hpdD0xMC8sCisJJGxvZ19vZmZzZXQpOworCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1s ZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycpOworfSk7CisKK3dhaXRfZm9yX2F1dG92 YWN1dW1fY29tcGxldGUoJG5vZGUsICRhdl9jb3VudCk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNz aW5nJyk7Cit9KTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggZTNjMTAwN2FiZGYuLmFlYWY5MzA3NTU4IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMjA5Nyw2ICsyMDk3LDcgQEAgUFZJbmRTdGF0cwogUFZJbmRWYWNT dGF0dXMKIFBWT0lECiBQVlNoYXJlZAorUFZTaGFyZWRDb3N0UGFyYW1zCiBQVldvcmtlclVzYWdl CiBQVldvcmtlclN0YXRzCiBQWF9BbGlhcwotLSAKMi40My4wCgo= --000000000000f33323064e13abe8 Content-Type: text/x-patch; charset="US-ASCII"; name="v31--v32-dif-for-0001.patch" Content-Disposition: attachment; filename="v31--v32-dif-for-0001.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mna8aqsf2 RnJvbSAzOTU0ZTQ0NWEzZTc5NGVmMTlkYmNjYjY5OWEwZTYxZDM2YTMzNzMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTYXQsIDI4IE1hciAyMDI2IDE1OjMyOjAxICswNzAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIGZpeGVzIGZvciAwMDAxIHBhdGNoCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vcmVsb3B0aW9ucy5jICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgICAgICAgICAgfCAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYyAgICAgICAgIHwgNTIgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMzYgKysrKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICA3ICstLQogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAyICstCiAuLi4vdC8wMDFf cGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAgICAgICAgICAgICAgfCAyMiArKysrLS0tLQogOSBmaWxl cyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCmluZGV4IGNlNDFiMDE1YjMyLi41NmRjOTliZGJlMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTIzOSwxMSArMjM5LDEx IEBAIHN0YXRpYyByZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJewogCQl7CiAJCQkiYXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzIiwKLQkJCSJPdmVycmlkZXMgdmFsdWUgb2YgdGhlIGF1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgcGFyYW1ldGVyIGZvciB0aGlzIHRhYmxlLCBpZiA+ IC0xLiIsCisJCQkiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHByb2Nlc3NpbmcgdGhpcyB0YWJsZS4iLAogCQkJUkVMT1BU X0tJTkRfSEVBUCwKIAkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jawogCQl9LAotCQkwLCAtMSwg MTAyNAorCQktMSwgLTEsIDEwMjQKIAl9LAogCXsKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IDhjN2RlNjU3OTc2Li45ZmQ0ZjZmZWJiZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtODY0LDggKzg2NCwxMSBAQCBoZWFwX3ZhY3V1bV9yZWwo UmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCWRlYWRfaXRlbXNfYWxs b2ModmFjcmVsLCBwYXJhbXMubndvcmtlcnMpOwogCiAjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lO VFMKKwogCS8qCi0JICogVHJpZ2dlciBpbmplY3Rpb24gcG9pbnQsIGlmIHBhcmFsbGVsIGF1dG92 YWN1dW0gaXMgYWJvdXQgdG8gYmUgc3RhcnRlZC4KKwkgKiBVc2VkIGJ5IHRlc3RzIHRvIHBhdXNl IGJlZm9yZSBwYXJhbGxlbCB2YWN1dW0gaXMgbGF1bmNoZWQsIGFsbG93aW5nCisJICogdGVzdCBj b2RlIHRvIG1vZGlmeSBjb25maWd1cmF0aW9uIHRoYXQgdGhlIGxlYWRlciB0aGVuIHByb3BhZ2F0 ZXMgdG8KKwkgKiB3b3JrZXJzLgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0FjdGl2ZSh2YWNyZWwpKQogCQlJTkpFQ1RJT05fUE9JTlQo ImF1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtIiwgTlVMTCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA2MmI2ZjUwYjUzOC4uMTM1NDRkZTViOTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtNjksMTAgKzY5LDEyIEBAIHR5cGVk ZWYgc3RydWN0IFBWU2hhcmVkQ29zdFBhcmFtcwogewogCS8qCiAJICogVGhlIGdlbmVyYXRpb24g Y291bnRlciBpcyBpbmNyZW1lbnRlZCBieSB0aGUgbGVhZGVyIHByb2Nlc3MgZWFjaCB0aW1lCi0J ICogaXQgdXBkYXRlcyB0aGUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRl cnMuIFBhcmFsZWxsCisJICogaXQgdXBkYXRlcyB0aGUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVt IGRlbGF5IHBhcmFtZXRlcnMuIFBhcmFsbGVsCiAJICogdmFjdXVtIHdvcmtlcnMgY29tcGFyZXMg aXQgd2l0aCB0aGVpciBsb2NhbCBnZW5lcmF0aW9uLAogCSAqIHNoYXJlZF9wYXJhbXNfZ2VuZXJh dGlvbl9sb2NhbCwgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSBuZWVkIHRvIHJlZnJlc2gKLQkgKiB0 aGVpciBsb2NhbCBwYXJhbWV0ZXJzLgorCSAqIHRoZWlyIGxvY2FsIHBhcmFtZXRlcnMuIFRoZSBn ZW5lcmF0aW9uIHN0YXJ0cyBmcm9tIDEgc28gdGhhdCBhIGZyZXNobHkKKwkgKiBzdGFydGVkIHdv cmtlciAod2hvc2UgbG9jYWwgY29weSBpcyAwKSB3aWxsIGFsd2F5cyBsb2FkIHRoZSBpbml0aWFs CisJICogcGFyYW1ldGVycyBvbiBpdHMgZmlyc3QgY2hlY2suCiAJICovCiAJcGdfYXRvbWljX3Vp bnQzMiBnZW5lcmF0aW9uOwogCkBAIC0xNTgsMTMgKzE2MCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQ VlNoYXJlZAogCiAJLyoKIAkgKiBJZiAndHJ1ZScgdGhlbiB3ZSBhcmUgcnVubmluZyBwYXJhbGxl bCBhdXRvdmFjdXVtLiBPdGhlcndpc2UsIHdlIGFyZQotCSAqIHJ1bm5pbmcgcGFyYWxsZWwgbWFp bnRlbmVuY2UgVkFDVVVNLgorCSAqIHJ1bm5pbmcgcGFyYWxsZWwgbWFpbnRlbmFuY2UgVkFDVVVN LgogCSAqLwogCWJvb2wJCWlzX2F1dG92YWN1dW07CiAKIAkvKgotCSAqIFN0cnVjdCBmb3Igc3lu Y2luZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGJldHdlZW4KLQkgKiBzdXBw b3J0aXZlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyB3aXRoIGxlYWRlciB3b3JrZXIuCisJ ICogQ29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBzaGFyZWQgYmV0d2VlbiB0aGUg YXV0b3ZhY3V1bSBsZWFkZXIKKwkgKiBhbmQgaXRzIHBhcmFsbGVsIHdvcmtlcnMuCiAJICovCiAJ UFZTaGFyZWRDb3N0UGFyYW1zIGNvc3RfcGFyYW1zOwogfSBQVlNoYXJlZDsKQEAgLTI3MSw3ICsy NzMsMTMgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAogc3RhdGljIFBWU2hhcmVkQ29z dFBhcmFtcyAqcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVMTDsKIAotLyogU2VlIGNvbW1lbnRz IGluIHRoZSBQVlNoYXJlZENvc3RQYXJhbXMgZm9yIHRoZSBkZXRhaWxzICovCisvKgorICogV29y a2VyLWxvY2FsIGNvcHkgb2YgdGhlIGxhc3QgY29zdC1wYXJhbWV0ZXIgZ2VuZXJhdGlvbiB0aGlz IHdvcmtlciBoYXMKKyAqIGFwcGxpZWQuICBJbml0aWFsaXplZCB0byAwOyBzaW5jZSB0aGUgbGVh ZGVyIGluaXRpYWxpemVzIHRoZSBzaGFyZWQKKyAqIGdlbmVyYXRpb24gY291bnRlciB0byAxLCB0 aGUgZmlyc3QgY2FsbCB0bworICogcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlf cGFyYW1zKCkgd2lsbCBhbHdheXMgZGV0ZWN0IGEKKyAqIG1pc21hdGNoIGFuZCByZWFkIHRoZSBp bml0aWFsIHBhcmFtZXRlcnMgZnJvbSBzaGFyZWQgbWVtb3J5LgorICovCiBzdGF0aWMgdWludDMy IHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IDA7CiAKIHN0YXRpYyBpbnQJcGFyYWxs ZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVz LCBpbnQgbnJlcXVlc3RlZCwKQEAgLTQ1NSw3ICs0NjMsNyBAQCBwYXJhbGxlbF92YWN1dW1faW5p dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJaWYgKHNo YXJlZC0+aXNfYXV0b3ZhY3V1bSkKIAl7CiAJCXBhcmFsbGVsX3ZhY3V1bV9zZXRfY29zdF9wYXJh bWV0ZXJzKCZzaGFyZWQtPmNvc3RfcGFyYW1zKTsKLQkJcGdfYXRvbWljX2luaXRfdTMyKCZzaGFy ZWQtPmNvc3RfcGFyYW1zLmdlbmVyYXRpb24sIDApOworCQlwZ19hdG9taWNfaW5pdF91MzIoJnNo YXJlZC0+Y29zdF9wYXJhbXMuZ2VuZXJhdGlvbiwgMSk7CiAJCVNwaW5Mb2NrSW5pdCgmc2hhcmVk LT5jb3N0X3BhcmFtcy5tdXRleCk7CiAKIAkJcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gJihzaGFy ZWQtPmNvc3RfcGFyYW1zKTsKQEAgLTYyMyw3ICs2MzEsNyBAQCBwYXJhbGxlbF92YWN1dW1fc2V0 X2Nvc3RfcGFyYW1ldGVycyhQVlNoYXJlZENvc3RQYXJhbXMgKnBhcmFtcykKICAqIFVwZGF0ZXMg dGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgZm9yIHBhcmFsbGVsIGF1dG92 YWN1dW0KICAqIHdvcmtlcnMuCiAgKgotICogRm9yIG5vbi1hdXRvdmFjdXVtIHBhcmFsbGVsIHdv cmtlciB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisgKiBGb3Igbm9uLWF1dG92 YWN1dW0gcGFyYWxsZWwgd29ya2VycywgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0 LgogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMo dm9pZCkKQEAgLTYzMiw3ICs2NDAsNyBAQCBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9k ZWxheV9wYXJhbXModm9pZCkKIAogCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOwogCi0JLyog UXVpY2sgcmV0dXJuIGlmIHRoZSB3b2tyZXIgaXMgbm90IHJ1bm5pbmcgZm9yIHRoZSBhdXRvdmFj dXVtICovCisJLyogUXVpY2sgcmV0dXJuIGlmIHRoZSB3b3JrZXIgaXMgbm90IHJ1bm5pbmcgZm9y IHRoZSBhdXRvdmFjdXVtICovCiAJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9PSBOVUxMKQog CQlyZXR1cm47CiAKQEAgLTY4MSw3ICs2ODksNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRl X3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKIAkJcmV0dXJuOwogCiAJLyoKLQkgKiBDaGVjayBp ZiBhbnkgZGVsYXkgcGFyYW1ldGVycyBoYXMgY2hhbmdlZC4gV2UgY2FuIHJlYWQgdGhlbSB3aXRo b3V0CisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGF2ZSBjaGFuZ2VkLiBXZSBj YW4gcmVhZCB0aGVtIHdpdGhvdXQKIAkgKiBsb2NrcyBhcyBvbmx5IHRoZSBsZWFkZXIgY2FuIG1v ZGlmeSB0aGVtLgogCSAqLwogCWlmICh2YWN1dW1fY29zdF9kZWxheSA9PSBwdl9zaGFyZWRfY29z dF9wYXJhbXMtPmNvc3RfZGVsYXkgJiYKQEAgLTkwNSw5ICs5MTMsMTAgQEAgcGFyYWxsZWxfdmFj dXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVt X2luZGV4X3NjYW4KIAl9CiAKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCiAJLyoKLQkg KiBUaGlzIGluamVjdGlvbiBwb2ludCBpcyB1c2VkIHRvIHdhaXQgdW50aWwgcGFyYWxsZWwgYXV0 b3ZhY3V1bSB3b3JrZXJzCi0JICogZmluaXNoZXMgdGhlaXIgcGFydCBvZiBpbmRleCBwcm9jZXNz aW5nLgorCSAqIFVzZWQgYnkgdGVzdHMgdG8gcGF1c2UgYWZ0ZXIgd29ya2VycyBhcmUgbGF1bmNo ZWQgYnV0IGJlZm9yZSBpbmRleAorCSAqIHZhY3V1bWluZyBiZWdpbnMuCiAJICovCiAJaWYgKG53 b3JrZXJzID4gMCkKIAkJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUt aW5kZXhlcy1wcm9jZXNzaW5nIiwgTlVMTCk7CkBAIC0xMjQ3LDE1ICsxMjU2LDI2IEBAIHBhcmFs bGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkJ c2hhcmVkLT5kZWFkX2l0ZW1zX2hhbmRsZSk7CiAKIAkvKiBTZXQgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgKi8KLQlWYWN1dW1VcGRhdGVDb3N0cygpOworCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1 dW0pCisJeworCQkvKgorCQkgKiBQYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgaW5pdGlhbGl6 ZSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMKKwkJICogZnJvbSB0aGUgbGVhZGVyJ3Mgc2hh cmVkIHN0YXRlIHJhdGhlciB0aGFuIEdVQyBkZWZhdWx0cywgYmVjYXVzZQorCQkgKiB0aGUgbGVh ZGVyIG1heSBoYXZlIGFwcGxpZWQgcGVyLXRhYmxlIG9yIGF1dG92YWN1dW0tc3BlY2lmaWMKKwkJ ICogb3ZlcnJpZGVzLiAgcHZfc2hhcmVkX2Nvc3RfcGFyYW1zIG11c3QgYmUgc2V0IGJlZm9yZSBj YWxsaW5nCisJCSAqIHBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygp LgorCQkgKi8KKwkJcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gJihzaGFyZWQtPmNvc3RfcGFyYW1z KTsKKwkJcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCk7CisJfQor CWVsc2UKKwkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKKwogCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsK IAlWYWN1dW1Db3N0QmFsYW5jZUxvY2FsID0gMDsKIAlWYWN1dW1TaGFyZWRDb3N0QmFsYW5jZSA9 ICYoc2hhcmVkLT5jb3N0X2JhbGFuY2UpOwogCVZhY3V1bUFjdGl2ZU5Xb3JrZXJzID0gJihzaGFy ZWQtPmFjdGl2ZV9ud29ya2Vycyk7CiAKLQlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQotCQlw dl9zaGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOwotCiAJLyogU2V0 IHBhcmFsbGVsIHZhY3V1bSBzdGF0ZSAqLwogCXB2cy5pbmRyZWxzID0gaW5kcmVsczsKIAlwdnMu bmluZGV4ZXMgPSBuaW5kZXhlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXgg MzEyNDM0MTcyMWMuLmNlZDQ5NzBhM2E4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YwpAQCAtMjg2OSw3ICsyODY5LDYgQEAgdGFibGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwg SFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQlpbnQJCQltdWx0aXhhY3RfZnJlZXplX3RhYmxlX2Fn ZTsKIAkJaW50CQkJbG9nX3ZhY3V1bV9taW5fZHVyYXRpb247CiAJCWludAkJCWxvZ19hbmFseXpl X21pbl9kdXJhdGlvbjsKLQkJaW50CQkJbnBhcmFsbGVsX3dvcmtlcnMgPSAtMTsgLyogZGlzYWJs ZWQgYnkgZGVmYXVsdCAqLwogCiAJCS8qCiAJCSAqIENhbGN1bGF0ZSB0aGUgdmFjdXVtIGNvc3Qg cGFyYW1ldGVycyBhbmQgdGhlIGZyZWV6ZSBhZ2VzLiAgSWYgdGhlcmUKQEAgLTI5MzAsMTkgKzI5 MjksNiBAQCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2Fz dF9tYXAsCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFudXAgPSBWQUNPUFRWQUxVRV9VTlNQ RUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9VTlNQRUNJ RklFRDsKIAotCQkvKiBEZWNpZGUgd2hldGhlciB3ZSBuZWVkIHRvIHByb2Nlc3MgaW5kZXhlcyBv ZiB0YWJsZSBpbiBwYXJhbGxlbC4gKi8KLQkJaWYgKGF2b3B0cykKLQkJewotCQkJaWYgKGF2b3B0 cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID4gMCkKLQkJCQlucGFyYWxsZWxfd29ya2Vy cyA9IGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzOwotCQkJZWxzZSBpZiAoYXZv cHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPT0gLTEpCi0JCQl7Ci0JCQkJbnBhcmFs bGVsX3dvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID4gMAotCQkJCQk/ IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMKLQkJCQkJOiAtMTsgLyogZGlzYWJsZSBw YXJhbGxlbGlzbSBpZiBwYXJhbWV0ZXIncyB2YWx1ZSBpcyAwICovCi0JCQl9Ci0JCX0KLQogCQl0 YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9taW5fYWdlOwogCQl0YWItPmF0 X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxlX2FnZTsKIAkJdGFiLT5hdF9w YXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdl OwpAQCAtMjk1MSw3ICsyOTM3LDI3IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQs IEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJdGFiLT5hdF9wYXJhbXMubG9nX3ZhY3V1bV9taW5f ZHVyYXRpb24gPSBsb2dfdmFjdXVtX21pbl9kdXJhdGlvbjsKIAkJdGFiLT5hdF9wYXJhbXMubG9n X2FuYWx5emVfbWluX2R1cmF0aW9uID0gbG9nX2FuYWx5emVfbWluX2R1cmF0aW9uOwogCQl0YWIt PmF0X3BhcmFtcy50b2FzdF9wYXJlbnQgPSBJbnZhbGlkT2lkOwotCQl0YWItPmF0X3BhcmFtcy5u d29ya2VycyA9IG5wYXJhbGxlbF93b3JrZXJzOworCisJCS8qIERldGVybWluZSB0aGUgbnVtYmVy IG9mIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIHRvIHVzZSAqLworCQl0YWItPmF0X3BhcmFtcy5u d29ya2VycyA9IDA7CisJCWlmIChhdm9wdHMpCisJCXsKKwkJCWlmIChhdm9wdHMtPmF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VycyA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogRGlzYWJsZSBw YXJhbGxlbCB2YWN1dW0sIGlmIHRoZSByZWxvcHRpb24gc2V0cyB0aGUgcGFyYWxsZWwKKwkJCQkg KiBkZWdyZWUgYXMgemVyby4KKwkJCQkgKi8KKwkJCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9 IC0xOworCQkJfQorCQkJZWxzZSBpZiAoYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtl cnMgPiAwKQorCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gYXZvcHRzLT5hdXRvdmFjdXVt X3BhcmFsbGVsX3dvcmtlcnM7CisKKwkJCS8qCisJCQkgKiBhdXRvdmFjdXVtX3BhcmFsbGVsX3dv cmtlcnMgPT0gLTEgZmFsbHMgdGhyb3VnaCwga2VlcAorCQkJICogbndvcmtlcnM9MAorCQkJICov CisJCX0KIAogCQkvKgogCQkgKiBMYXRlciwgaW4gdmFjdXVtX3JlbCgpLCB3ZSBjaGVjayByZWxv cHRpb25zIGZvciBhbnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFs cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggODI2NWE4MmI2Mzku LjI0ZGRiMjc2ZjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTQzLDcgKzE0Myw3 IEBAIGludAkJCU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJCQlNYXhDb25uZWN0aW9ucyA9IDEwMDsK IGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsKIGludAkJCW1heF9wYXJhbGxlbF93b3Jr ZXJzID0gODsKLWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyOworaW50 CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDA7CiBpbnQJCQlNYXhCYWNrZW5k cyA9IDA7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzIGZvciB2YWN1dW0gKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CmluZGV4IDQ1YjM5YjdjNDdmLi4xYWM4ZThmYzNiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0z MzU5LDkgKzMzNTksMTAgQEAgc2V0X2NvbmZpZ193aXRoX2hhbmRsZShjb25zdCBjaGFyICpuYW1l LCBjb25maWdfaGFuZGxlICpoYW5kbGUsCiAJICogQWxzbyBhbGxvdyBub3JtYWwgc2V0dGluZyBp ZiB0aGUgR1VDIGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJICoKIAkgKiBPdGhl ciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0 aGVtLiBOb3RlLAotCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMgYW4gZXhj ZXB0aW9uLCBiZWNhdXNlIG9ubHkKLQkgKiBjb3N0LWJhc2VkIGRlbGF5cyBuZWVkIHRvIGJlIGFm ZmVjdGVkIGFsc28gdG8gcGFyYWxsZWwgYXV0b3ZhY3V1bQotCSAqIHdvcmtlcnMsIGFuZCB3ZSB3 aWxsIGhhbmRsZSBpdCBlbHNld2hlcmUgaWYgYXBwcm9wcmlhdGUuCisJICogdGhhdCBwYXJhbGxl bCBhdXRvdmFjdXVtIGxlYWRlciBpcyBhbiBleGNlcHRpb24gYmVjYXVzZSBvbmx5IGNvc3QtYmFz ZWQKKwkgKiBkZWxheXMgbmVlZCB0byBiZSBhZmZlY3RlZCBhbHNvIHRvIHBhcmFsbGVsIGF1dG92 YWN1dW0gd29ya2Vycy4gVGhlc2UKKwkgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wYWdhdGVkIHRvIGl0 cyB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0gKHNlZQorCSAqIHZhY3V1bXBhcmFsbGVs LmMgZm9yIGRldGFpbHMpLgogCSAqLwogCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYgIUFtQXV0 b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBjaGFuZ2VWYWwgJiYKIAkJYWN0aW9uICE9IEdVQ19B Q1RJT05fU0FWRSAmJgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApp bmRleCBlMTZjNzU2ZTJjYy4uNmVmNDZkODgxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0xNzMsNyArMTczLDcgQEAKIHsgbmFtZSA9PiAnYXV0b3Zh Y3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BH Q19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAogICBzaG9ydF9kZXNjID0+ ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgYnkg YSBzaW5nbGUgYXV0b3ZhY3V1bSB3b3JrZXIuJywKICAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMnLAotICBib290X3ZhbCA9PiAnMicsCisgIGJvb3RfdmFsID0+ ICcwJywKICAgbWluID0+ICcwJywKICAgbWF4ID0+ICdNQVhfUEFSQUxMRUxfV09SS0VSX0xJTUlU JywKIH0sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK aW5kZXggNjA5N2Q5NjdlYzEuLjczYzQ5ZjA5YWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03MTMsNyArNzEzLDcgQEAKICNhdXRvdmFj dXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1dG92YWN1dW0gd29ya2VyIHNsb3Rz IHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAo Y2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMgICAg ICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0gc3VicHJvY2Vzc2VzCi0jYXV0b3Zh Y3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIgICAgIyBsaW1pdGVkIGJ5IG1heF9wYXJhbGxl bF93b3JrZXJzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDAgICAgIyBsaW1p dGVkIGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCiAjYXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1pbiAg ICAgICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0b3ZhY3V1bSBydW5zCiAjYXV0b3ZhY3V1bV92 YWN1dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBtaW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVzIGJl Zm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFjdXVtCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxl bF9hdXRvdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFf cGFyYWxsZWxfYXV0b3ZhY3V1bS5wbAppbmRleCAwMzY0MDE5ZDVmMC4uMmFjYTMyMzc0YTIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVs X2F1dG92YWN1dW0ucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8w MDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbApAQCAtMTIsNyArMTIsNyBAQCBpZiAoJEVOVntlbmFi bGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCiAKICMgQmVmb3JlIGVhY2ggdGVzdCB3ZSBz aG91bGQgZGlzYWJsZSBhdXRvdmFjdXVtIGZvciAndGVzdF9hdXRvdmFjJyB0YWJsZSBhbmQKICMg Z2VuZXJhdGUgc29tZSBkZWFkIHR1cGxlcyBpbiBpdC4gUmV0dXJucyB0aGUgY3VycmVudCBhdXRv dmFjdXVtX2NvdW50IG9mCi0jIHRoZSB0YWJsZSB0c2V0X2F1dG92YWMuCisjIHRoZSB0YWJsZSB0 ZXN0X2F1dG92YWMuCiBzdWIgcHJlcGFyZV9mb3JfbmV4dF90ZXN0CiB7CiAJbXkgKCRub2RlLCAk dGVzdF9udW1iZXIpID0gQF87CkBAIC00NywxNiArNDcsMjAgQEAgbXkgJHBzcWxfb3V0OwogbXkg JG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ21haW4nKTsKICRub2RlLT5p bml0OwogCi0jIENvbmZpZ3VyZSBwb3N0Z3Jlcywgc28gaXQgY2FuIGxhdW5jaCBwYXJhbGxlbCBh dXRvdmFjdXVtIHdvcmtlcnMsIGxvZyBhbGwKLSMgaW5mb3JtYXRpb24gd2UgYXJlIGludGVyZXN0 ZWQgaW4gYW5kIGF1dG92YWN1dW0gd29ya3MgZnJlcXVlbnRseQorIyBMaW1pdCB0byBvbmUgYXV0 b3ZhY3V1bSB3b3JrZXIgYW5kIGRpc2FibGUgYXV0b3ZhY3V1bSBsb2dnaW5nIGdsb2JhbGx5Cisj IChlbmFibGVkIG9ubHkgb24gdGhlIHRlc3QgdGFibGUpIHNvIHRoYXQgbG9nIGNoZWNrcyBiZWxv dyBtYXRjaCBvbmx5CisjIGFjdGl2aXR5IG9uIHRoZSBleHBlY3RlZCB0YWJsZS4KICRub2RlLT5h cHBlbmRfY29uZigKIAkncG9zdGdyZXNxbC5jb25mJywgcXF7Ci0JbWF4X3dvcmtlcl9wcm9jZXNz ZXMgPSAyMAotCW1heF9wYXJhbGxlbF93b3JrZXJzID0gMjAKLQlhdXRvdmFjdXVtX21heF9wYXJh bGxlbF93b3JrZXJzID0gNAotCWxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIKLQlhdXRvdmFjdXVt X25hcHRpbWUgPSAnMXMnCi0JbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDAKK2F1dG92 YWN1dW1fbWF4X3dvcmtlcnMgPSAxCithdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDEKK2F1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyCittYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDEw CittYXhfcGFyYWxsZWxfd29ya2VycyA9IDEwCitsb2dfbWluX21lc3NhZ2VzID0gZGVidWcyCith dXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCittaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0g MAorbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gLTEKIH0pOwogJG5vZGUtPnN0YXJ0Owog Ci0tIAoyLjQzLjAKCg== --000000000000f33323064e13abe8--