<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>52126</bug_id>
          
          <creation_ts>2011-01-08 21:04:01 -0800</creation_ts>
          <short_desc>CSS 2.1 failure: content-*</short_desc>
          <delta_ts>2022-12-16 02:47:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WPTImpact</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>6503</dependson>
    
    <dependson>53024</dependson>
    
    <dependson>53037</dependson>
          <blocked>47141</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>bfulgham</cc>
    
    <cc>carol</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>peter</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>331370</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-08 21:04:01 -0800</bug_when>
    <thetext>The following CSS 2.1 tests fail:

html4/content-021
html4/content-022
html4/content-023
html4/content-024
html4/content-025
html4/content-026
html4/content-027
html4/content-028
html4/content-029
html4/content-030
html4/content-031
html4/content-032
html4/content-033
html4/content-034
html4/content-035
html4/content-056
html4/content-072
html4/content-151
html4/content-156
html4/content-157
html4/content-158
html4/content-159

Many are related to counters in content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334535</commentid>
    <comment_count>1</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-14 12:58:23 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The following CSS 2.1 tests fail:
&gt; 
&gt; html4/content-021
&gt; html4/content-022
&gt; html4/content-023
&gt; html4/content-024
&gt; html4/content-025
&gt; html4/content-026
&gt; html4/content-027
&gt; html4/content-028
&gt; html4/content-029
&gt; html4/content-030
&gt; html4/content-031
&gt; html4/content-032
&gt; html4/content-033
&gt; html4/content-034
&gt; html4/content-035
&gt; html4/content-056
&gt; html4/content-072
&gt; html4/content-151
&gt; html4/content-156
&gt; html4/content-157
&gt; html4/content-158
&gt; html4/content-159
&gt; 
&gt; Many are related to counters in content.

Can you provide URL for these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334562</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-14 13:37:57 -0800</bug_when>
    <thetext>Prefix them with http://test.csswg.org/suites/css2.1/20110111/ and append &quot;.htm&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336873</commentid>
    <comment_count>3</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-19 15:29:31 -0800</bug_when>
    <thetext>I have looked at the first failed test and found the root cause:
Currently the counters are based on the renderer hierarchy and not the DOM node hierarchy as the CSS spec requires. These hierarchies are pretty close, so most of the time we get the right result, but when they are not we don&apos;t.
In the case of content-021 what happens is that an anonymous block is created inside the renderer of the outer div and the renderer for the before pseudo element of this block is placed inside that anonymous block. This way the counter attached to that node (pseudo node) is out of scope for the before pseudo element of the inner div.
Shall think about whether to change counter behavior to use the DOM tree instead of the render tree or whether to just handle anonymous blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337404</commentid>
    <comment_count>4</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-20 09:54:45 -0800</bug_when>
    <thetext>I have reviewed the documentation and I feel that the right thing to do is to walk the DOM tree instead of the render tree. It does not appear to be too difficult either. I just need to be careful to check for pseudo elements and for display: none and visibility: hidden styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344249</commentid>
    <comment_count>5</comment_count>
      <attachid>80970</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-02 14:22:09 -0800</bug_when>
    <thetext>Created attachment 80970
Proposed Patch

This patch fixes counter problems other problems are related to WebKit not supporting quotes. There is a separate patch to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345525</commentid>
    <comment_count>6</comment_count>
      <attachid>80970</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-04 09:19:19 -0800</bug_when>
    <thetext>Comment on attachment 80970
Proposed Patch

This looks fine... let&apos;s just remove the asserts when generatingNode() points you to a non-before/after pseudo, since that&apos;s something that we expect will happen as we patch generatingNode() to handle more cases besides before/after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345578</commentid>
    <comment_count>7</comment_count>
      <attachid>81241</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-04 10:14:23 -0800</bug_when>
    <thetext>Created attachment 81241
Proposed Patch. Ensured only the legal elements and pseudoElements (according to CSS2.1) get counters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345603</commentid>
    <comment_count>8</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-04 10:36:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 80970 [details])
&gt; This looks fine... let&apos;s just remove the asserts when generatingNode() points you to a non-before/after pseudo, since that&apos;s something that we expect will happen as we patch generatingNode() to handle more cases besides before/after.

Dave,
The fact that in the general case generatingNode() can return non-null values for renderers attached to other types of pseudoElements than :before and :after is irrelevant here (at least if I understand your comment correctly).

Counters (which this code is all about - notice that the special tree navigation functions are marked static so they are available only withing the RenderCounter.cpp code) are valid only on elements and :before and :after pseudo elements. This is enforced in the planCounter function (in my latest patch version).
Because of the above stated facts, the default branch of the switch statements should never be reached regardless of the fact that generatingNode() can be called on any node and could return a non-null value for all types of real DOM nodes and pseudoElements. The reason is that we start navigation always from a renderer containing a counter (which is either the renderer of an element or of a before or after pseudo element - see planCounter) and we navigate only elements and before and after pseudoElements.
This is why I believe that the ASSERTS should stay (to force errors if suddenly counters become valid on other types of elements and planCounter is changed to allow that without the proper changes to the navigation algorithm).
On the other hand RenderObject::generatingNode() is not a function tied to counters or content in any obvious way. It allows retrieval of a DOM node generating a renderer potentially for all pseudoElements as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345787</commentid>
    <comment_count>9</comment_count>
      <attachid>81241</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-04 14:09:34 -0800</bug_when>
    <thetext>Comment on attachment 81241
Proposed Patch. Ensured only the legal elements and pseudoElements (according to CSS2.1) get counters.

r=me

Maybe rename the debugging function to showCounterRendererTree instead of just showRendererTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345788</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-04 14:10:21 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 80970 [details] [details])
&gt; &gt; This looks fine... let&apos;s just remove the asserts when generatingNode() points you to a non-before/after pseudo, since that&apos;s something that we expect will happen as we patch generatingNode() to handle more cases besides before/after.
&gt; 
&gt; Dave,
&gt; The fact that in the general case generatingNode() can return non-null values for renderers attached to other types of pseudoElements than :before and :after is irrelevant here (at least if I understand your comment correctly).
&gt; 

And good, that&apos;s all I was checking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345816</commentid>
    <comment_count>11</comment_count>
      <attachid>81291</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-04 14:50:52 -0800</bug_when>
    <thetext>Created attachment 81291
Patch. Made the change suggested by David Dyatt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345837</commentid>
    <comment_count>12</comment_count>
      <attachid>81291</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 15:08:36 -0800</bug_when>
    <thetext>Comment on attachment 81291
Patch. Made the change suggested by David Dyatt

Rejecting attachment 81291 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;build&apos;...&quot; exit_code: 2

Last 500 characters of output:
ebCore:
	CompileC /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/CounterNode.o /mnt/git/webkit-commit-queue/Source/WebCore/rendering/CounterNode.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
	CompileC /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/RenderCounter.o /mnt/git/webkit-commit-queue/Source/WebCore/rendering/RenderCounter.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(2 failures)


Full output: http://queues.webkit.org/results/7704005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345851</commentid>
    <comment_count>13</comment_count>
      <attachid>81305</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-04 15:29:19 -0800</bug_when>
    <thetext>Created attachment 81305
Patch. Fixed MacWarnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345897</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 16:26:25 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 81305:

media/invalid-media-url-crash.html bug 51138 (author: inferno@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345900</commentid>
    <comment_count>15</comment_count>
      <attachid>81305</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 16:29:12 -0800</bug_when>
    <thetext>Comment on attachment 81305
Patch. Fixed MacWarnings.

Clearing flags on attachment: 81305

Committed r77702: &lt;http://trac.webkit.org/changeset/77702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345901</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 16:29:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346722</commentid>
    <comment_count>17</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-02-07 12:39:18 -0800</bug_when>
    <thetext>Not all tests were fixed, only the counters related ones. Patch to follow for the quotes related issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346733</commentid>
    <comment_count>18</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2011-02-07 12:51:32 -0800</bug_when>
    <thetext>Bug 3234 and specifically bug 6503 specifically talk about the support for quotes in CSS. It may be better to use bug 6503 for follow-up patches, as this one addressed the counter issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346766</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-07 13:23:22 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Bug 3234 and specifically bug 6503 specifically talk about the support for quotes in CSS. It may be better to use bug 6503 for follow-up patches, as this one addressed the counter issue.

I agree. When I filed this bug I didn&apos;t rigorously check the offending tests; feel free to spin off different bugs for remaining issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380611</commentid>
    <comment_count>20</comment_count>
      <attachid>81241</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:47:19 -0700</bug_when>
    <thetext>Comment on attachment 81241
Proposed Patch. Ensured only the legal elements and pseudoElements (according to CSS2.1) get counters.

Cleared David Hyatt&apos;s review+ from obsolete attachment 81241 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886337</commentid>
    <comment_count>21</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-07-24 07:04:25 -0700</bug_when>
    <thetext>These tests are also now on WPT - https://wpt.fyi/results/css/CSS2/generated-content?label=master&amp;label=experimental&amp;aligned&amp;q=content-

I noticed that Safari 15.6 do fail on few content-* tests but still doing better than other browsers. Just wanted to share updated status. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886341</commentid>
    <comment_count>22</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-07-24 07:09:17 -0700</bug_when>
    <thetext>(In reply to Ahmad Saleem from comment #21)
&gt; These tests are also now on WPT -
&gt; https://wpt.fyi/results/css/CSS2/generated-
&gt; content?label=master&amp;label=experimental&amp;aligned&amp;q=content-
&gt; 
&gt; I noticed that Safari 15.6 do fail on few content-* tests but still doing
&gt; better than other browsers. Just wanted to share updated status. Thanks!
Thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80970</attachid>
            <date>2011-02-02 14:22:09 -0800</date>
            <delta_ts>2011-02-04 10:14:23 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor52126.patch</filename>
            <type>text/plain</type>
            <size>21106</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YjY4ODAwLi4xNDhiODliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDIt
MDIgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgQ2hhbmdlcy4KKworICAgICAg
ICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJz
L2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291
bnRlcnMvY29udGVudC0wMjEuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgaXMgYSBjb3B5IG9m
IHRoZSB0ZXN0IHdpdGggdGhlIHNhbWUgbmFtZSBmcm9tIHRoZQorICAgICAgICBvZmZpY2lhbCBj
c3MgdGVzdCBzdWl0ZSwgYWRhcHRlZCBmb3IgRHVtcFJlbmRlclRyZWUuCisKIDIwMTEtMDItMDEg
IE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODZmMGQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Ro
aXMgaXMgdGhlIFdlYktpdCB2ZXJzaW9uIG9mIENTUyBUZXN0OiBDb250ZW50IHVzaW5nIGEgJ2Nv
dW50ZXJzKCknIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgdmFsdWUuCisKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjEnKSBpcyAnMCcKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjIn
KSBpcyAnMC4wJworCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjIxYzRhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRp
dGxlPldlYktpdCdzIGFkYXB0YXRpb24gb2YgaHR0cDovL3Rlc3QuY3Nzd2cub3JnL3N1aXRlcy9j
c3MyLjEvMjAxMTAxMTEvaHRtbDQvY29udGVudC0wMjEuaHRtPC90aXRsZT4KKyAgPGxpbmsgcmVs
PSJvcmlnaW5hbEF1dGhvciIgdGl0bGU9Ik1pY3Jvc29mdCIgaHJlZj0iaHR0cDovL3d3dy5taWNy
b3NvZnQuY29tLyI+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvQ1NTMjEvZ2VuZXJhdGUuaHRtbCNwcm9wZGVmLWNvbnRlbnQiPgorICA8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwjY29udGVu
dCI+CisgIDxtZXRhIG5hbWU9ImZsYWdzIiBjb250ZW50PSIiPgorICA8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvcGVybHkgaGFuZGxlcworICAg
Y291bnRlciBhdXRvbmVzdGluZyB3aGVuIGFub255bW91cyByZW5kZXJlcnMgaW50ZXJ2ZW5lIGJl
dHdlZW4gdGhlCisgICBlbGVtZW50IGFuZCBpdHMgOmJlZm9yZSBkZXNjZW5kYW50LiI+CisgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAjdGVzdFZpZXcgZGl2OmJlZm9yZSB7CisgICAgY29u
dGVudDogY291bnRlcnModGVzdCwgIi4iKTsKKyAgICBjb3VudGVyLXJlc2V0OiB0ZXN0OworICAg
fQorICAgI2RpdjEgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgfQorICA8L3N0
eWxlPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgZnVuY3Rpb24gcnVuKCkKKyAgeworICAgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgcmV0dXJuOworICAgICAgc2hvdWxkQmUoImxh
eW91dFRlc3RDb250cm9sbGVyLmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKCdkaXYxJykiLCAi
JzAnIik7CisgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVl
Rm9yRWxlbWVudEJ5SWQoJ2RpdjInKSIsICInMC4wJyIpOworCisgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICBkZWJ1ZygnVEVTVCBDT01QTEVURScpOworICAgICAgLy8gRWxpbWluYXRlIGNvbmZ1c2lu
ZyBtZXNzYWdlcyAoY291bnRlciB2YWx1ZXMgd29uJ3QgYmUgZHVtcGVkIGJ5IGR1bXBBc1RleHQp
LgorICAgICAgdmFyIHZpZXdFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RW
aWV3Iik7CisgICAgICB2aWV3RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHZpZXdFbGVt
ZW50KTsKKyAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisKKyA8Ym9keSBvbmxvYWQ9InJ1bigp
OyI+CisKKyA8cD5UaGlzIGlzIHRoZSBXZWJLaXQgdmVyc2lvbiBvZiA8YSBocmVmPSJodHRwOi8v
dGVzdC5jc3N3Zy5vcmcvc3VpdGVzL2NzczIuMS8yMDExMDExMS9odG1sNC9jb250ZW50LTAyMS5o
dG0iPkNTUworIFRlc3Q6IENvbnRlbnQgdXNpbmcgYSAnY291bnRlcnMoKScgZnVuY3Rpb24gd2l0
aCBhIHN0cmluZyB2YWx1ZTwvYT4uPC9wPgorIDxkaXYgaWQ9InRlc3RWaWV3Ij4KKyAgPHA+VGVz
dCBwYXNzZXMgaWYgdGhlcmUgYXJlIHRoZSBudW1iZXJzICIwIiBhbmQgIjAuMCIgaW4gdGhlIGJv
eCBiZWxvdy48L3A+CisgIDxkaXYgaWQ9ImRpdjEiPgorICAgPGRpdiBpZD0iZGl2MiI+PC9kaXY+
CisgIDwvZGl2PgorIDwvZGl2PgorIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDE4YjNiLi45NjVhZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDItMDIgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
ZGUgQ2hhbmdlcy4KKworICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAg
ICBUZXN0OiBmYXN0L2Nzcy9jb3VudGVycy9jb250ZW50LTAyMS5odG1sCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwOgorICAgICAgICAoc2hvd0NvdW50ZXJUcmVlKToKKyAg
ICAgICAgTWFkZSBwYXJhbWV0ZXIgY29uc3QgYmVjYXVzZSBpdCBpcyBzdXBwb3NlZCB0byBiZSBz
by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcmV2aW91c0luUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNTaWJs
aW5nT3JQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjphcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6Om5leHRJblByZU9yZGVyKToKKyAgICAgICAgQWRkZWQgdGhlc2UgbG9jYWwgaGVscGVyIGZ1
bmN0aW9ucyB0byBoZWxwIG5hdmlnYXRlIHRoZSBET00gdHJlZQorICAgICAgICBlbnJpY2hlZCB3
aXRoIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgIChXZWJDb3Jl
OjpwbGFuQ291bnRlcik6CisgICAgICAgIEZpeGVkIGJ1ZyB0aGF0IHdvdWxkIGNyZWF0ZSBhIHJl
cGVhdCBjb3VudGVyIGZvciBzZWNvbmQgYW5kCisgICAgICAgIHN1YnNlcXVlbnQgcmVuZGVyZXJz
IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBET00gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRQbGFjZUZvckNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2Rl
KToKKyAgICAgICAgQ2hhbmdlZCB0byB1c2UgdGhlIG5ldyB0cmVlIG5hdmlnYXRpb24gZnVuY3Rp
b25zIGRlc2NyaWJlZCBhYm92ZQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBSZW5kZXJlciBUcmVl
IG5hdmlnYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6
cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRl
cjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQpOgorICAgICAgICBPcHRpbWl6ZWQgdG8gbm90IGJvdGhl
ciBhYm91dCBjb3VudGVycyB1bnRpbCB0aGUgcmVuZGVyZXJzIGFyZQorICAgICAgICBmaW5hbGx5
IGF0dGFjaGVkLgorICAgICAgICAoc2hvd1JlbmRlcmVyVHJlZSk6CisgICAgICAgIChzaG93Tm9k
ZVRyZWUpOgorICAgICAgICBEZWJ1ZyBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gZGVidWcgQ291
bnRlciBidWdzLgorCiAyMDExLTAyLTAxICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggZmUyMTQ4YS4uZWFkZDM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yNjMsNyArMjYzLDcg
QEAgc3RhdGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IENvdW50ZXJOb2RlKiBub2RlKQog
CiAjaWZuZGVmIE5ERUJVRwogCi12b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OkNvdW50ZXJO
b2RlKiBjb3VudGVyKQordm9pZCBzaG93Q291bnRlclRyZWUoY29uc3QgV2ViQ29yZTo6Q291bnRl
ck5vZGUqIGNvdW50ZXIpCiB7CiAgICAgaWYgKGNvdW50ZXIpCiAgICAgICAgIHNob3dUcmVlQW5k
TWFyayhjb3VudGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAppbmRleCA3ZTEwNDQwLi5jMjk3MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDb3VudGVyTm9k
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtNDYsMTEgKzQ3LDE1NyBAQCBzdGF0aWMgQ291bnRlck1h
cHMmIGNvdW50ZXJNYXBzKCkKICAgICByZXR1cm4gc3RhdGljQ291bnRlck1hcHM7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChSZW5kZXJP
YmplY3QqIG9iamVjdCkKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0
cmVlIGluIHRoZSBvcmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxl
bWVudHMgYXMgZGVmaW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUg
c2tpcHBlZCBleGNlcHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitz
dGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c0luUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogc2libGluZyA9IG9iamVjdC0+cHJl
dmlvdXNTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBzaWJsaW5nOwotICAgIHJldHVybiBvYmpl
Y3QtPnBhcmVudCgpOworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJsaW5n
OworICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2Ug
Tk9QU0VVRE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAg
ICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGluZyA9
IHBhcmVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBwYXJl
bnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6Cisg
ICAgICAgIHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8vIEl0
IGlzIGFsd2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFGVEVS
OgorICAgICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsK
KyAgICAgICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogYWZ0ZXIgPSByZW5kZXJlci0+YWZ0ZXJQc2V1ZG9FbGVtZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWZ0ZXI7CisgICAgICAgICAgICBw
YXJlbnQgPSBzaWJsaW5nOworICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPmxhc3RFbGVt
ZW50Q2hpbGQoKTsKKyAgICAgICAgICAgIGlmICghc2libGluZykgeworICAgICAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIGJlZm9yZSA9IHJlbmRlcmVyLT5iZWZvcmVQc2V1ZG9FbGVtZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsK
KyAgICB9CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7IC8vIFNob3VsZCBuZXZlciBiZSBu
dWxsCisgICAgaWYgKFJlbmRlck9iamVjdCogYmVmb3JlID0gcmVuZGVyZXItPmJlZm9yZVBzZXVk
b0VsZW1lbnRSZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gYmVmb3JlOworICAgIHJldHVybiBy
ZW5kZXJlcjsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJlbmRlcmVyIHRy
ZWUgaW4gdGhlIG9yZGVyIG9mIHRoZSBET00gdHJlZQorLy8gaW5jbHVkaW5nIHBzZXVkbyBlbGVt
ZW50cyBhcyBkZWZpbmVkIGluIENTUyAyLjEuCisvLyBBbm9ueW1vdXMgcmVuZGVyZXJzIGFyZSBz
a2lwcGVkIGV4Y2VwdCBmb3IgdGhvc2UgcmVwcmVzZW50aW5nIHBzZXVkbyBlbGVtZW50cy4KK3N0
YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ09yUGFyZW50KGNvbnN0IFJlbmRlck9i
amVjdCogb2JqZWN0KQoreworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJs
aW5nOworICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNh
c2UgTk9QU0VVRE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAg
ICAgICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGlu
ZyA9IHBhcmVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6
CisgICAgICAgIHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8v
IEl0IGlzIGFsd2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFG
VEVSOgorICAgICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgp
KTsKKyAgICAgICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgLy8gVGhpcyBz
a2lwcyBpbnZpc2libGUgbm9kZXMKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAg
ICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICB9Cisg
ICAgaWYgKHBhcmVudCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50
LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBiZWZvcmUgPSByZW5kZXJl
ci0+dmlydHVhbENoaWxkcmVuKCktPmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihyZW5kZXJl
cikpCisgICAgICAgICAgICByZXR1cm4gYmVmb3JlOworICAgICAgICByZXR1cm4gcmVuZGVyZXI7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWxlbWVudCogcGFyZW50RWxlbWVu
dChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS0+
c3R5bGVUeXBlKCkpIHsKKyAgICBjYXNlIE5PUFNFVURPOgorICAgICAgICBBU1NFUlQoIW9iamVj
dC0+aXNBbm9ueW1vdXMoKSk7CisgICAgICAgIHJldHVybiB0b0VsZW1lbnQob2JqZWN0LT5ub2Rl
KCkpLT5wYXJlbnRFbGVtZW50KCk7CisgICAgY2FzZSBCRUZPUkU6CisgICAgY2FzZSBBRlRFUjoK
KyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZW5kZXJlcnNFbGVtZW50c1Np
YmxpbmdzKFJlbmRlck9iamVjdCogZmlyc3QsIFJlbmRlck9iamVjdCogc2Vjb25kKQoreworICAg
IHJldHVybiBwYXJlbnRFbGVtZW50KGZpcnN0KSA9PSBwYXJlbnRFbGVtZW50KHNlY29uZCk7Cit9
CisKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGluIHRoZSBv
cmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMgYXMgZGVm
aW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUgc2tpcHBlZCBleGNl
cHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitzdGF0aWMgUmVuZGVy
T2JqZWN0KiBuZXh0SW5QcmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
RWxlbWVudCogc3RheVdpdGhpbiwgYm9vbCBza2lwRGVzY2VuZGFudHMgPSBmYWxzZSkKK3sKKyAg
ICBFbGVtZW50KiBzZWxmOworICAgIEVsZW1lbnQqIGNoaWxkOworICAgIFJlbmRlck9iamVjdCog
cmVzdWx0OworICAgIHNlbGYgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsK
KyAgICBpZiAoc2tpcERlc2NlbmRhbnRzKQorICAgICAgICBnb3RvIG5leHRzaWJsaW5nOworICAg
IHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9QU0VV
RE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAgICAgcmVz
dWx0ID0gb2JqZWN0LT5iZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQkVGT1JFOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBn
b3RvIG5leHRzaWJsaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY2hpbGQgPSBzZWxmLT5maXJzdEVs
ZW1lbnRDaGlsZCgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChjaGlsZCkg
eworICAgICAgICAgICAgcmVzdWx0ID0gY2hpbGQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBj
aGlsZCA9IGNoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQgPSBzZWxmLT5yZW5kZXJlcigpLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcigpOwor
ICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKK25leHRzaWJs
aW5nOgorICAgICAgICBpZiAoc2VsZiA9PSBzdGF5V2l0aGluKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGNoaWxkID0gc2VsZi0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAg
IHNlbGYgPSBzZWxmLT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIGlmICghc2VsZikgeworICAg
ICAgICAgICAgQVNTRVJUKCFjaGlsZCk7IC8vIFdlIGNhbiBvbmx5IHJlYWNoIHRoaXMgaWYgd2Ug
YXJlIHNlYXJjaGluZyBiZXlvbmQgdGhlIHJvb3QgZWxlbWVudAorICAgICAgICAgICAgcmV0dXJu
IDA7IC8vICB3aGljaCBjYW5ub3QgaGF2ZSBzaWJsaW5ncworICAgICAgICB9CisgICAgfQogfQog
CiBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQpAQCAtNjEs
MTAgKzIwOCwxOCBAQCBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVj
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBibwogICAgIC8vIFdlIGNhbid0IGV2
ZW4gbG9vayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2VlIGV4dHJhIHJlc2V0cyBhbmQgaW5j
cmVtZW50cyEKICAgICBpZiAob2JqZWN0LT5pc1RleHQoKSAmJiAhb2JqZWN0LT5pc0JSKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlID0gb2JqZWN0
LT5nZW5lcmF0aW5nTm9kZSgpOworICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9k
ZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KKyAgICBpZiAoIWdlbmVyYXRpbmdO
b2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2Jq
ZWN0LT5zdHlsZSgpOwogICAgIEFTU0VSVChzdHlsZSk7CiAKKyAgICAvLyBTb21ldGltZXMgbm9k
ZXMgaGF2ZSBtb3JlIHRoZW4gb25lIHJlbmRlcmVyLiBPbmx5IHRoZSBmaXJzdCBvbmUgZ2V0cyB0
aGUgY291bnRlcgorICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2NvdW50ZXItY3Jh
c2guaHRtbAorICAgIGlmICgoc3R5bGUtPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKSAmJiAoZ2Vu
ZXJhdGluZ05vZGUtPnJlbmRlcmVyKCkgIT0gb2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgaWYgKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIGRpcmVjdGl2ZXNNYXAgPSBz
dHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKSkgewogICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyBk
aXJlY3RpdmVzID0gZGlyZWN0aXZlc01hcC0+Z2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKICAgICAg
ICAgaWYgKGRpcmVjdGl2ZXMubV9yZXNldCkgewpAQCAtMTMzLDcgKzI4OCw3IEBAIHN0YXRpYyBi
b29sIGZpbmRQbGFjZUZvckNvdW50ZXIoUmVuZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0
IEF0b21pY1N0cmluZyYKICAgICAvLyBXZSBjaGVjayByZW5kZXJlcnMgaW4gcHJlT3JkZXIgZnJv
bSB0aGUgcmVuZGVyZXIgdGhhdCBvdXIgY291bnRlciBpcyBhdHRhY2hlZCB0bwogICAgIC8vIHRv
d2FyZHMgdGhlIGJlZ2luaW5nIG9mIHRoZSBkb2N1bWVudCBmb3IgY291bnRlcnMgd2l0aCB0aGUg
c2FtZSBpZGVudGlmaWVyIGFzIHRoZSBvbmUKICAgICAvLyB3ZSBhcmUgdHJ5aW5nIHRvIGZpbmQg
YSBwbGFjZSBmb3IuIFRoaXMgaXMgdGhlIG5leHQgcmVuZGVyZXIgdG8gYmUgY2hlY2tlZC4KLSAg
ICBSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IGNvdW50ZXJPd25lci0+cHJldmlvdXNJ
blByZU9yZGVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIgPSBwcmV2aW91
c0luUHJlT3JkZXIoY291bnRlck93bmVyKTsKICAgICBwcmV2aW91c1NpYmxpbmcgPSAwOwogICAg
IHdoaWxlIChjdXJyZW50UmVuZGVyZXIpIHsKICAgICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRD
b3VudGVyID0gbWFrZUNvdW50ZXJOb2RlKGN1cnJlbnRSZW5kZXJlciwgaWRlbnRpZmllciwgZmFs
c2UpOwpAQCAtMTQ0LDcgKzI5OSw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50ZXIo
UmVuZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAg
ICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nKSB7IC8vIEJ1dCB3ZSBhbHJlYWR5IGZvdW5kIGFu
b3RoZXIgY291bnRlciB0aGF0IHdlIGNvbWUgYWZ0ZXIuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50Q291bnRlci0+YWN0c0FzUmVzZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgZm91bmQgYSByZXNldCBjb3VudGVyIHRoYXQgaXMgb24gYSByZW5kZXJlciB0aGF0
IGlzIGEgc2libGluZyBvZiBvdXJzIG9yIGEgcGFyZW50LgotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzUmVzZXQgJiYgY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBjb3VudGVyT3du
ZXItPnBhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAmJiBh
cmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKGN1cnJlbnRSZW5kZXJlciwgY291bnRlck93bmVy
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhbHNvIGEgcmVzZXQg
Y291bnRlciBhbmQgdGhlIHByZXZpb3VzIHJlc2V0IHdhcyBvbiBhIHNpYmxpbmcgcmVuZGVyZXIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZW5jZSB3ZSBhcmUgdGhlIG5leHQgc2li
bGluZyBvZiB0aGF0IGNvdW50ZXIgaWYgdGhhdCByZXNldCBpcyBub3QgYSByb290IG9yCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGEgcm9vdCBub2RlIGlmIHRoYXQgcmVz
ZXQgaXMgYSByb290LgpAQCAtMTU5LDcgKzMxNCw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZv
ckNvdW50ZXIoUmVuZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRDb3VudGVyLCB0aGUgY291bnRlciBh
dCB0aGUgRW5kU2VhcmNoUmVuZGVyZXIsIGlzIG5vdCByZXNldC4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpc1Jlc2V0IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93
bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXQgfHwgIWFy
ZVJlbmRlcmVyc0VsZW1lbnRzU2libGluZ3MoY3VycmVudFJlbmRlcmVyLCBjb3VudGVyT3duZXIp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSB3ZSBhcmUgcGxhY2lu
ZyBpcyBub3QgcmVzZXQgb3Igd2UgaGF2ZSBmb3VuZCBhIGNvdW50ZXIgdGhhdCBpcyBhdHRhY2hl
ZAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYW4gYW5jZXN0b3Igb2YgdGhlIHBsYWNl
ZCBjb3VudGVyJ3MgcmVuZGVyZXIgd2Uga25vdyB3ZSBhcmUgYSBzaWJsaW5nIG9mIHRoYXQgbm9k
ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50Q291bnRlci0+cGFyZW50
KCkgPT0gcHJldmlvdXNTaWJsaW5nLT5wYXJlbnQoKSk7CkBAIC0xNzIsNyArMzI3LDcgQEAgc3Rh
dGljIGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIGNvdW50ZXJPd25lciwg
Y29uc3QgQXRvbWljU3RyaW5nJgogICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1NpYmxp
bmcsIGFuZCB3aGVuIHdlIGFyZSBhIHNpYmxpbmcgb2YgdGhlIGVuZCBjb3VudGVyIHdlIG11c3Qg
c2V0IHByZXZpb3VzU2libGluZwogICAgICAgICAgICAgICAgICAgICAvLyB0byBjdXJyZW50Q291
bnRlci4KICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb3VudGVyLT5hY3RzQXNSZXNl
dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAmJiBjdXJyZW50UmVu
ZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc1Jlc2V0ICYmIGFyZVJlbmRlcmVyc0VsZW1lbnRzU2libGluZ3Mo
Y3VycmVudFJlbmRlcmVyLCBjb3VudGVyT3duZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXItPnBhcmVudCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CkBAIC0xODAsNyArMzM1LDcgQEAgc3Rh
dGljIGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIGNvdW50ZXJPd25lciwg
Y29uc3QgQXRvbWljU3RyaW5nJgogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3Vy
cmVudENvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXQgfHwgY3Vy
cmVudFJlbmRlcmVyLT5wYXJlbnQoKSAhPSBjb3VudGVyT3duZXItPnBhcmVudCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNSZXNldCB8fCAhYXJlUmVuZGVyZXJzRWxlbWVudHNTaWJs
aW5ncyhjdXJyZW50UmVuZGVyZXIsIGNvdW50ZXJPd25lcikpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyLT5wYXJlbnQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDUsNyArMzYwLDcgQEAgc3RhdGljIGJvb2wg
ZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIGNvdW50ZXJPd25lciwgY29uc3QgQXRv
bWljU3RyaW5nJgogICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3Vy
cmVudENvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbm8gbG9uZ2Vy
IGludGVyZXN0ZWQgaW4gcHJldmlvdXMgc2libGluZ3Mgb2YgdGhlIGN1cnJlbnRSZW5kZXJlciBv
ciB0aGVpciBjaGlsZHJlbgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgY291bnRlcnMg
dGhleSBtYXkgaGF2ZSBhdHRhY2hlZCBjYW5ub3QgYmUgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2Yg
dGhlIGNvdW50ZXIgd2UgYXJlIHBsYWNpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gcGFyZW50RWxlbWVudChjdXJyZW50UmVuZGVyZXIp
LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTI1NiwyOCArNDExLDI4
IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogb2Jq
ZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgICAgIG9iamVjdC0+bV9oYXNDb3VudGVy
Tm9kZU1hcCA9IHRydWU7CiAgICAgfQogICAgIG5vZGVNYXAtPnNldChpZGVudGlmaWVyLmltcGwo
KSwgbmV3Tm9kZSk7Ci0gICAgaWYgKG5ld05vZGUtPnBhcmVudCgpIHx8ICFvYmplY3QtPm5leHRJ
blByZU9yZGVyKG9iamVjdC0+cGFyZW50KCkpKQorICAgIGlmIChuZXdOb2RlLT5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuIG5ld05vZGUuZ2V0KCk7CiAgICAgLy8gQ2hlY2tpbmcgaWYgc29tZSBu
b2RlcyB0aGF0IHdlcmUgcHJldmlvdXNseSBjb3VudGVyIHRyZWUgcm9vdCBub2RlcwogICAgIC8v
IHNob3VsZCBiZWNvbWUgY2hpbGRyZW4gb2YgdGhpcyBub2RlIG5vdy4KICAgICBDb3VudGVyTWFw
cyYgbWFwcyA9IGNvdW50ZXJNYXBzKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluID0g
b2JqZWN0LT5wYXJlbnQoKTsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudFJlbmRlcmVy
ID0gb2JqZWN0LT5uZXh0SW5QcmVPcmRlcihzdGF5V2l0aGluKTsgY3VycmVudFJlbmRlcmVyOyBj
dXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPm5leHRJblByZU9yZGVyKHN0YXlXaXRo
aW4pKSB7CisgICAgRWxlbWVudCogc3RheVdpdGhpbiA9IHBhcmVudEVsZW1lbnQob2JqZWN0KTsK
KyAgICBib29sIHNraXBEZXNjZW5kYW50czsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVu
dFJlbmRlcmVyID0gbmV4dEluUHJlT3JkZXIob2JqZWN0LCBzdGF5V2l0aGluKTsgY3VycmVudFJl
bmRlcmVyOyBjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5QcmVPcmRlcihjdXJyZW50UmVuZGVyZXIs
IHN0YXlXaXRoaW4sIHNraXBEZXNjZW5kYW50cykpIHsKKyAgICAgICAgc2tpcERlc2NlbmRhbnRz
ID0gZmFsc2U7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5tX2hhc0NvdW50ZXJOb2Rl
TWFwKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50
Q291bnRlciA9IG1hcHMuZ2V0KGN1cnJlbnRSZW5kZXJlciktPmdldChpZGVudGlmaWVyLmltcGwo
KSkuZ2V0KCk7CiAgICAgICAgIGlmICghY3VycmVudENvdW50ZXIpCiAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgc2tpcERlc2NlbmRhbnRzID0gdHJ1ZTsKICAgICAgICAgaWYgKGN1cnJl
bnRDb3VudGVyLT5wYXJlbnQoKSkgewogICAgICAgICAgICAgQVNTRVJUKG5ld05vZGUtPmZpcnN0
Q2hpbGQoKSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyLT5sYXN0Q2hpbGQoKSkK
LSAgICAgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPmxhc3RD
aGlsZCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0
YXlXaXRoaW4gIT0gY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKSB8fCAhY3VycmVudENvdW50ZXIt
Pmhhc1Jlc2V0VHlwZSgpKQotICAgICAgICAgICAgbmV3Tm9kZS0+aW5zZXJ0QWZ0ZXIoY3VycmVu
dENvdW50ZXIsIG5ld05vZGUtPmxhc3RDaGlsZCgpLCBpZGVudGlmaWVyKTsKLSAgICAgICAgaWYg
KGN1cnJlbnRSZW5kZXJlci0+bGFzdENoaWxkKCkpCi0gICAgICAgICAgICBjdXJyZW50UmVuZGVy
ZXIgPSBjdXJyZW50UmVuZGVyZXItPmxhc3RDaGlsZCgpOworICAgICAgICBpZiAoc3RheVdpdGhp
biA9PSBwYXJlbnRFbGVtZW50KGN1cnJlbnRSZW5kZXJlcikgJiYgY3VycmVudENvdW50ZXItPmhh
c1Jlc2V0VHlwZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5ld05vZGUtPmluc2Vy
dEFmdGVyKGN1cnJlbnRDb3VudGVyLCBuZXdOb2RlLT5sYXN0Q2hpbGQoKSwgaWRlbnRpZmllcik7
CiAgICAgfQogICAgIHJldHVybiBuZXdOb2RlLmdldCgpOwogfQpAQCAtNDQ0LDEyICs1OTksMjIg
QEAgc3RhdGljIHZvaWQgdXBkYXRlQ291bnRlcnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAog
dm9pZCBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN1YnRyZWVBdHRhY2hlZChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogeworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgIGlm
IChub2RlKQorICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGVsc2UKKyAg
ICAgICAgbm9kZSA9IHJlbmRlcmVyLT5nZW5lcmF0aW5nTm9kZSgpOworICAgIGlmIChub2RlICYm
ICFub2RlLT5hdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47IC8vIE5vIG5lZWQgdG8gdXBkYXRl
IGlmIHRoZSBwYXJlbnQgaXMgbm90IGF0dGFjaGVkIHlldAogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBkZXNjZW5kYW50ID0gcmVuZGVyZXI7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5k
YW50LT5uZXh0SW5QcmVPcmRlcihyZW5kZXJlcikpCiAgICAgICAgIHVwZGF0ZUNvdW50ZXJzKGRl
c2NlbmRhbnQpOwogfQogCiB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2Vk
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQogeworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+
Z2VuZXJhdGluZ05vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmF0dGFjaGVkKCkpCisg
ICAgICAgIHJldHVybjsgLy8gY2Fubm90IGhhdmUgZ2VuZXJhdGVkIGNvbnRlbnQgb3IgaWYgaXQg
Y2FuIGhhdmUsIGl0IHdpbGwgYmUgaGFuZGxlZCBkdXJpbmcgYXR0YWNoaW5nCiAgICAgY29uc3Qg
Q291bnRlckRpcmVjdGl2ZU1hcCogbmV3Q291bnRlckRpcmVjdGl2ZXM7CiAgICAgY29uc3QgQ291
bnRlckRpcmVjdGl2ZU1hcCogb2xkQ291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKG9sZFN0eWxl
ICYmIChvbGRDb3VudGVyRGlyZWN0aXZlcyA9IG9sZFN0eWxlLT5jb3VudGVyRGlyZWN0aXZlcygp
KSkgewpAQCAtNDg5LDMgKzY1NCwzMyBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5
bGVDaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eQogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNpZm5kZWYgTkRFQlVHCisKK3ZvaWQgc2hvd1JlbmRl
cmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFy
KiBjb3VudGVyTmFtZSA9IDApCit7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
OworICAgIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcm9vdCA9IHJlbmRlcmVyOworICAg
IHdoaWxlIChyb290LT5wYXJlbnQoKSkKKyAgICAgICAgcm9vdCA9IHJvb3QtPnBhcmVudCgpOwor
CisgICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIoY291bnRlck5hbWUpOworICAgIGZvciAoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRJblByZU9yZGVyKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIlYyIsIChjdXJyZW50ID09IHJlbmRlcmVyKSA/ICcqJyA6ICcgJyk7CisgICAgICAgIGZvciAo
Y29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBjdXJyZW50OyBwYXJlbnQgJiYg
cGFyZW50ICE9IHJvb3Q7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCkpCisgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgICAiKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcCBOOiVw
IFA6JXAgUFM6JXAgTlM6JXAgQzolcFxuIiwKKyAgICAgICAgICAgIGN1cnJlbnQsIGN1cnJlbnQt
Pm5vZGUoKSwgY3VycmVudC0+cGFyZW50KCksIGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpLAor
ICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmcoKSwgY3VycmVudC0+bV9oYXNDb3VudGVy
Tm9kZU1hcD8KKyAgICAgICAgICAgIGNvdW50ZXJOYW1lID8gV2ViQ29yZTo6Y291bnRlck1hcHMo
KS5nZXQoY3VycmVudCktPmdldChpZGVudGlmaWVyLmltcGwoKSkuZ2V0KCkgOiAoV2ViQ29yZTo6
Q291bnRlck5vZGUqKTEgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTApOworICAgIH0KK30KKwor
dm9pZCBzaG93VHJlZShjb25zdCBXZWJDb3JlOjpOb2RlKik7Cit2b2lkIHNob3dOb2RlVHJlZShj
b25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQoreworICAgIHNob3dUcmVlKG5vZGUpOworfQorCisj
ZW5kaWYgLy8gTkRFQlVHCg==
</data>
<flag name="review"
          id="72493"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="72494"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81241</attachid>
            <date>2011-02-04 10:14:23 -0800</date>
            <delta_ts>2011-04-06 10:47:19 -0700</delta_ts>
            <desc>Proposed Patch. Ensured only the legal elements and pseudoElements (according to CSS2.1) get counters.</desc>
            <filename>patchFor52126-2.patch</filename>
            <type>text/plain</type>
            <size>21308</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YjY4ODAwLi4xNDhiODliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDIt
MDIgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgQ2hhbmdlcy4KKworICAgICAg
ICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJz
L2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291
bnRlcnMvY29udGVudC0wMjEuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgaXMgYSBjb3B5IG9m
IHRoZSB0ZXN0IHdpdGggdGhlIHNhbWUgbmFtZSBmcm9tIHRoZQorICAgICAgICBvZmZpY2lhbCBj
c3MgdGVzdCBzdWl0ZSwgYWRhcHRlZCBmb3IgRHVtcFJlbmRlclRyZWUuCisKIDIwMTEtMDItMDEg
IE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODZmMGQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Ro
aXMgaXMgdGhlIFdlYktpdCB2ZXJzaW9uIG9mIENTUyBUZXN0OiBDb250ZW50IHVzaW5nIGEgJ2Nv
dW50ZXJzKCknIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgdmFsdWUuCisKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjEnKSBpcyAnMCcKK1BB
U1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjIn
KSBpcyAnMC4wJworCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9jb250ZW50LTAyMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjIxYzRhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRp
dGxlPldlYktpdCdzIGFkYXB0YXRpb24gb2YgaHR0cDovL3Rlc3QuY3Nzd2cub3JnL3N1aXRlcy9j
c3MyLjEvMjAxMTAxMTEvaHRtbDQvY29udGVudC0wMjEuaHRtPC90aXRsZT4KKyAgPGxpbmsgcmVs
PSJvcmlnaW5hbEF1dGhvciIgdGl0bGU9Ik1pY3Jvc29mdCIgaHJlZj0iaHR0cDovL3d3dy5taWNy
b3NvZnQuY29tLyI+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvQ1NTMjEvZ2VuZXJhdGUuaHRtbCNwcm9wZGVmLWNvbnRlbnQiPgorICA8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwjY29udGVu
dCI+CisgIDxtZXRhIG5hbWU9ImZsYWdzIiBjb250ZW50PSIiPgorICA8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvcGVybHkgaGFuZGxlcworICAg
Y291bnRlciBhdXRvbmVzdGluZyB3aGVuIGFub255bW91cyByZW5kZXJlcnMgaW50ZXJ2ZW5lIGJl
dHdlZW4gdGhlCisgICBlbGVtZW50IGFuZCBpdHMgOmJlZm9yZSBkZXNjZW5kYW50LiI+CisgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAjdGVzdFZpZXcgZGl2OmJlZm9yZSB7CisgICAgY29u
dGVudDogY291bnRlcnModGVzdCwgIi4iKTsKKyAgICBjb3VudGVyLXJlc2V0OiB0ZXN0OworICAg
fQorICAgI2RpdjEgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgfQorICA8L3N0
eWxlPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgZnVuY3Rpb24gcnVuKCkKKyAgeworICAgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgcmV0dXJuOworICAgICAgc2hvdWxkQmUoImxh
eW91dFRlc3RDb250cm9sbGVyLmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKCdkaXYxJykiLCAi
JzAnIik7CisgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVl
Rm9yRWxlbWVudEJ5SWQoJ2RpdjInKSIsICInMC4wJyIpOworCisgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICBkZWJ1ZygnVEVTVCBDT01QTEVURScpOworICAgICAgLy8gRWxpbWluYXRlIGNvbmZ1c2lu
ZyBtZXNzYWdlcyAoY291bnRlciB2YWx1ZXMgd29uJ3QgYmUgZHVtcGVkIGJ5IGR1bXBBc1RleHQp
LgorICAgICAgdmFyIHZpZXdFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RW
aWV3Iik7CisgICAgICB2aWV3RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHZpZXdFbGVt
ZW50KTsKKyAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisKKyA8Ym9keSBvbmxvYWQ9InJ1bigp
OyI+CisKKyA8cD5UaGlzIGlzIHRoZSBXZWJLaXQgdmVyc2lvbiBvZiA8YSBocmVmPSJodHRwOi8v
dGVzdC5jc3N3Zy5vcmcvc3VpdGVzL2NzczIuMS8yMDExMDExMS9odG1sNC9jb250ZW50LTAyMS5o
dG0iPkNTUworIFRlc3Q6IENvbnRlbnQgdXNpbmcgYSAnY291bnRlcnMoKScgZnVuY3Rpb24gd2l0
aCBhIHN0cmluZyB2YWx1ZTwvYT4uPC9wPgorIDxkaXYgaWQ9InRlc3RWaWV3Ij4KKyAgPHA+VGVz
dCBwYXNzZXMgaWYgdGhlcmUgYXJlIHRoZSBudW1iZXJzICIwIiBhbmQgIjAuMCIgaW4gdGhlIGJv
eCBiZWxvdy48L3A+CisgIDxkaXYgaWQ9ImRpdjEiPgorICAgPGRpdiBpZD0iZGl2MiI+PC9kaXY+
CisgIDwvZGl2PgorIDwvZGl2PgorIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDE4YjNiLi45NjVhZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDItMDIgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
ZGUgQ2hhbmdlcy4KKworICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAg
ICBUZXN0OiBmYXN0L2Nzcy9jb3VudGVycy9jb250ZW50LTAyMS5odG1sCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwOgorICAgICAgICAoc2hvd0NvdW50ZXJUcmVlKToKKyAg
ICAgICAgTWFkZSBwYXJhbWV0ZXIgY29uc3QgYmVjYXVzZSBpdCBpcyBzdXBwb3NlZCB0byBiZSBz
by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcmV2aW91c0luUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNTaWJs
aW5nT3JQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjphcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6Om5leHRJblByZU9yZGVyKToKKyAgICAgICAgQWRkZWQgdGhlc2UgbG9jYWwgaGVscGVyIGZ1
bmN0aW9ucyB0byBoZWxwIG5hdmlnYXRlIHRoZSBET00gdHJlZQorICAgICAgICBlbnJpY2hlZCB3
aXRoIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgIChXZWJDb3Jl
OjpwbGFuQ291bnRlcik6CisgICAgICAgIEZpeGVkIGJ1ZyB0aGF0IHdvdWxkIGNyZWF0ZSBhIHJl
cGVhdCBjb3VudGVyIGZvciBzZWNvbmQgYW5kCisgICAgICAgIHN1YnNlcXVlbnQgcmVuZGVyZXJz
IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBET00gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRQbGFjZUZvckNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2Rl
KToKKyAgICAgICAgQ2hhbmdlZCB0byB1c2UgdGhlIG5ldyB0cmVlIG5hdmlnYXRpb24gZnVuY3Rp
b25zIGRlc2NyaWJlZCBhYm92ZQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBSZW5kZXJlciBUcmVl
IG5hdmlnYXRpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6
cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRl
cjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQpOgorICAgICAgICBPcHRpbWl6ZWQgdG8gbm90IGJvdGhl
ciBhYm91dCBjb3VudGVycyB1bnRpbCB0aGUgcmVuZGVyZXJzIGFyZQorICAgICAgICBmaW5hbGx5
IGF0dGFjaGVkLgorICAgICAgICAoc2hvd1JlbmRlcmVyVHJlZSk6CisgICAgICAgIChzaG93Tm9k
ZVRyZWUpOgorICAgICAgICBEZWJ1ZyBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gZGVidWcgQ291
bnRlciBidWdzLgorCiAyMDExLTAyLTAxICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggZmUyMTQ4YS4uZWFkZDM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yNjMsNyArMjYzLDcg
QEAgc3RhdGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IENvdW50ZXJOb2RlKiBub2RlKQog
CiAjaWZuZGVmIE5ERUJVRwogCi12b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OkNvdW50ZXJO
b2RlKiBjb3VudGVyKQordm9pZCBzaG93Q291bnRlclRyZWUoY29uc3QgV2ViQ29yZTo6Q291bnRl
ck5vZGUqIGNvdW50ZXIpCiB7CiAgICAgaWYgKGNvdW50ZXIpCiAgICAgICAgIHNob3dUcmVlQW5k
TWFyayhjb3VudGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAppbmRleCA3ZTEwNDQwLi44ZWFmNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDb3VudGVyTm9k
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtNDYsMTEgKzQ3LDE1NyBAQCBzdGF0aWMgQ291bnRlck1h
cHMmIGNvdW50ZXJNYXBzKCkKICAgICByZXR1cm4gc3RhdGljQ291bnRlck1hcHM7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChSZW5kZXJP
YmplY3QqIG9iamVjdCkKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0
cmVlIGluIHRoZSBvcmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxl
bWVudHMgYXMgZGVmaW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUg
c2tpcHBlZCBleGNlcHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitz
dGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c0luUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogc2libGluZyA9IG9iamVjdC0+cHJl
dmlvdXNTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBzaWJsaW5nOwotICAgIHJldHVybiBvYmpl
Y3QtPnBhcmVudCgpOworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJsaW5n
OworICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2Ug
Tk9QU0VVRE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAg
ICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGluZyA9
IHBhcmVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBwYXJl
bnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6Cisg
ICAgICAgIHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8vIEl0
IGlzIGFsd2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFGVEVS
OgorICAgICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsK
KyAgICAgICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogYWZ0ZXIgPSByZW5kZXJlci0+YWZ0ZXJQc2V1ZG9FbGVtZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWZ0ZXI7CisgICAgICAgICAgICBw
YXJlbnQgPSBzaWJsaW5nOworICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPmxhc3RFbGVt
ZW50Q2hpbGQoKTsKKyAgICAgICAgICAgIGlmICghc2libGluZykgeworICAgICAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIGJlZm9yZSA9IHJlbmRlcmVyLT5iZWZvcmVQc2V1ZG9FbGVtZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsK
KyAgICB9CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7IC8vIFNob3VsZCBuZXZlciBiZSBu
dWxsCisgICAgaWYgKFJlbmRlck9iamVjdCogYmVmb3JlID0gcmVuZGVyZXItPmJlZm9yZVBzZXVk
b0VsZW1lbnRSZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gYmVmb3JlOworICAgIHJldHVybiBy
ZW5kZXJlcjsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJlbmRlcmVyIHRy
ZWUgaW4gdGhlIG9yZGVyIG9mIHRoZSBET00gdHJlZQorLy8gaW5jbHVkaW5nIHBzZXVkbyBlbGVt
ZW50cyBhcyBkZWZpbmVkIGluIENTUyAyLjEuCisvLyBBbm9ueW1vdXMgcmVuZGVyZXJzIGFyZSBz
a2lwcGVkIGV4Y2VwdCBmb3IgdGhvc2UgcmVwcmVzZW50aW5nIHBzZXVkbyBlbGVtZW50cy4KK3N0
YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ09yUGFyZW50KGNvbnN0IFJlbmRlck9i
amVjdCogb2JqZWN0KQoreworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJs
aW5nOworICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNh
c2UgTk9QU0VVRE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAg
ICAgICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGlu
ZyA9IHBhcmVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6
CisgICAgICAgIHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8v
IEl0IGlzIGFsd2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFG
VEVSOgorICAgICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgp
KTsKKyAgICAgICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgLy8gVGhpcyBz
a2lwcyBpbnZpc2libGUgbm9kZXMKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAg
ICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICB9Cisg
ICAgaWYgKHBhcmVudCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50
LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBiZWZvcmUgPSByZW5kZXJl
ci0+dmlydHVhbENoaWxkcmVuKCktPmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihyZW5kZXJl
cikpCisgICAgICAgICAgICByZXR1cm4gYmVmb3JlOworICAgICAgICByZXR1cm4gcmVuZGVyZXI7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWxlbWVudCogcGFyZW50RWxlbWVu
dChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS0+
c3R5bGVUeXBlKCkpIHsKKyAgICBjYXNlIE5PUFNFVURPOgorICAgICAgICBBU1NFUlQoIW9iamVj
dC0+aXNBbm9ueW1vdXMoKSk7CisgICAgICAgIHJldHVybiB0b0VsZW1lbnQob2JqZWN0LT5ub2Rl
KCkpLT5wYXJlbnRFbGVtZW50KCk7CisgICAgY2FzZSBCRUZPUkU6CisgICAgY2FzZSBBRlRFUjoK
KyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZW5kZXJlcnNFbGVtZW50c1Np
YmxpbmdzKFJlbmRlck9iamVjdCogZmlyc3QsIFJlbmRlck9iamVjdCogc2Vjb25kKQoreworICAg
IHJldHVybiBwYXJlbnRFbGVtZW50KGZpcnN0KSA9PSBwYXJlbnRFbGVtZW50KHNlY29uZCk7Cit9
CisKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGluIHRoZSBv
cmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMgYXMgZGVm
aW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUgc2tpcHBlZCBleGNl
cHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitzdGF0aWMgUmVuZGVy
T2JqZWN0KiBuZXh0SW5QcmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
RWxlbWVudCogc3RheVdpdGhpbiwgYm9vbCBza2lwRGVzY2VuZGFudHMgPSBmYWxzZSkKK3sKKyAg
ICBFbGVtZW50KiBzZWxmOworICAgIEVsZW1lbnQqIGNoaWxkOworICAgIFJlbmRlck9iamVjdCog
cmVzdWx0OworICAgIHNlbGYgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsK
KyAgICBpZiAoc2tpcERlc2NlbmRhbnRzKQorICAgICAgICBnb3RvIG5leHRzaWJsaW5nOworICAg
IHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9QU0VV
RE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAgICAgcmVz
dWx0ID0gb2JqZWN0LT5iZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQkVGT1JFOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBn
b3RvIG5leHRzaWJsaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY2hpbGQgPSBzZWxmLT5maXJzdEVs
ZW1lbnRDaGlsZCgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChjaGlsZCkg
eworICAgICAgICAgICAgcmVzdWx0ID0gY2hpbGQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBj
aGlsZCA9IGNoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQgPSBzZWxmLT5yZW5kZXJlcigpLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcigpOwor
ICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKK25leHRzaWJs
aW5nOgorICAgICAgICBpZiAoc2VsZiA9PSBzdGF5V2l0aGluKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGNoaWxkID0gc2VsZi0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAg
IHNlbGYgPSBzZWxmLT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIGlmICghc2VsZikgeworICAg
ICAgICAgICAgQVNTRVJUKCFjaGlsZCk7IC8vIFdlIGNhbiBvbmx5IHJlYWNoIHRoaXMgaWYgd2Ug
YXJlIHNlYXJjaGluZyBiZXlvbmQgdGhlIHJvb3QgZWxlbWVudAorICAgICAgICAgICAgcmV0dXJu
IDA7IC8vICB3aGljaCBjYW5ub3QgaGF2ZSBzaWJsaW5ncworICAgICAgICB9CisgICAgfQogfQog
CiBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQpAQCAtNjEs
MTAgKzIwOCwyNyBAQCBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVj
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBibwogICAgIC8vIFdlIGNhbid0IGV2
ZW4gbG9vayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2VlIGV4dHJhIHJlc2V0cyBhbmQgaW5j
cmVtZW50cyEKICAgICBpZiAob2JqZWN0LT5pc1RleHQoKSAmJiAhb2JqZWN0LT5pc0JSKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlID0gb2JqZWN0
LT5nZW5lcmF0aW5nTm9kZSgpOworICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9k
ZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KKyAgICBpZiAoIWdlbmVyYXRpbmdO
b2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2Jq
ZWN0LT5zdHlsZSgpOwogICAgIEFTU0VSVChzdHlsZSk7CiAKKyAgICBzd2l0Y2ggKHN0eWxlLT5z
dHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9QU0VVRE86CisgICAgICAgIC8vIFNvbWV0aW1lcyBu
b2RlcyBoYXZlIG1vcmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkgdGhlIGZpcnN0IG9uZSBnZXRz
IHRoZSBjb3VudGVyCisgICAgICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2NvdW50
ZXItY3Jhc2guaHRtbAorICAgICAgICBpZiAoZ2VuZXJhdGluZ05vZGUtPnJlbmRlcmVyKCkgIT0g
b2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEJFRk9SRToKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4gZnJvbSBh
bGwgb3RoZXIgcHNldWRvIGVsZW1lbnRzLgorICAgIH0KKwogICAgIGlmIChjb25zdCBDb3VudGVy
RGlyZWN0aXZlTWFwKiBkaXJlY3RpdmVzTWFwID0gc3R5bGUtPmNvdW50ZXJEaXJlY3RpdmVzKCkp
IHsKICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNNYXAt
PmdldChpZGVudGlmaWVyLmltcGwoKSk7CiAgICAgICAgIGlmIChkaXJlY3RpdmVzLm1fcmVzZXQp
IHsKQEAgLTEzMyw3ICsyOTcsNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJl
bmRlck9iamVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgLy8gV2Ug
Y2hlY2sgcmVuZGVyZXJzIGluIHByZU9yZGVyIGZyb20gdGhlIHJlbmRlcmVyIHRoYXQgb3VyIGNv
dW50ZXIgaXMgYXR0YWNoZWQgdG8KICAgICAvLyB0b3dhcmRzIHRoZSBiZWdpbmluZyBvZiB0aGUg
ZG9jdW1lbnQgZm9yIGNvdW50ZXJzIHdpdGggdGhlIHNhbWUgaWRlbnRpZmllciBhcyB0aGUgb25l
CiAgICAgLy8gd2UgYXJlIHRyeWluZyB0byBmaW5kIGEgcGxhY2UgZm9yLiBUaGlzIGlzIHRoZSBu
ZXh0IHJlbmRlcmVyIHRvIGJlIGNoZWNrZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UmVu
ZGVyZXIgPSBjb3VudGVyT3duZXItPnByZXZpb3VzSW5QcmVPcmRlcigpOworICAgIFJlbmRlck9i
amVjdCogY3VycmVudFJlbmRlcmVyID0gcHJldmlvdXNJblByZU9yZGVyKGNvdW50ZXJPd25lcik7
CiAgICAgcHJldmlvdXNTaWJsaW5nID0gMDsKICAgICB3aGlsZSAoY3VycmVudFJlbmRlcmVyKSB7
CiAgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9IG1ha2VDb3VudGVyTm9kZShj
dXJyZW50UmVuZGVyZXIsIGlkZW50aWZpZXIsIGZhbHNlKTsKQEAgLTE0NCw3ICszMDgsNyBAQCBz
dGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9iamVjdCogY291bnRlck93bmVy
LCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU2libGlu
ZykgeyAvLyBCdXQgd2UgYWxyZWFkeSBmb3VuZCBhbm90aGVyIGNvdW50ZXIgdGhhdCB3ZSBjb21l
IGFmdGVyLgogICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvdW50ZXItPmFjdHNBc1Jl
c2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgcmVzZXQgY291
bnRlciB0aGF0IGlzIG9uIGEgcmVuZGVyZXIgdGhhdCBpcyBhIHNpYmxpbmcgb2Ygb3VycyBvciBh
IHBhcmVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc2V0ICYmIGN1cnJlbnRS
ZW5kZXJlci0+cGFyZW50KCkgPT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzUmVzZXQgJiYgYXJlUmVuZGVyZXJzRWxlbWVudHNTaWJsaW5n
cyhjdXJyZW50UmVuZGVyZXIsIGNvdW50ZXJPd25lcikpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgYWxzbyBhIHJlc2V0IGNvdW50ZXIgYW5kIHRoZSBwcmV2aW91cyBy
ZXNldCB3YXMgb24gYSBzaWJsaW5nIHJlbmRlcmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaGVuY2Ugd2UgYXJlIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhhdCBjb3VudGVyIGlmIHRo
YXQgcmVzZXQgaXMgbm90IGEgcm9vdCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHdlIGFyZSBhIHJvb3Qgbm9kZSBpZiB0aGF0IHJlc2V0IGlzIGEgcm9vdC4KQEAgLTE1OSw3ICsz
MjMsNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9iamVjdCogY291
bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAv
LyBDdXJyZW50Q291bnRlciwgdGhlIGNvdW50ZXIgYXQgdGhlIEVuZFNlYXJjaFJlbmRlcmVyLCBp
cyBub3QgcmVzZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNldCB8fCBjdXJyZW50
UmVuZGVyZXItPnBhcmVudCgpICE9IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc1Jlc2V0IHx8ICFhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdz
KGN1cnJlbnRSZW5kZXJlciwgY291bnRlck93bmVyKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIG5vZGUgd2UgYXJlIHBsYWNpbmcgaXMgbm90IHJlc2V0IG9yIHdlIGhhdmUg
Zm91bmQgYSBjb3VudGVyIHRoYXQgaXMgYXR0YWNoZWQKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoZSBwbGFjZWQgY291bnRlcidzIHJlbmRlcmVyIHdlIGtu
b3cgd2UgYXJlIGEgc2libGluZyBvZiB0aGF0IG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudENvdW50ZXItPnBhcmVudCgpID09IHByZXZpb3VzU2libGluZy0+cGFy
ZW50KCkpOwpAQCAtMTcyLDcgKzMzNiw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50
ZXIoUmVuZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAg
ICAgICAgICAgICAgICAgLy8gcHJldmlvdXNTaWJsaW5nLCBhbmQgd2hlbiB3ZSBhcmUgYSBzaWJs
aW5nIG9mIHRoZSBlbmQgY291bnRlciB3ZSBtdXN0IHNldCBwcmV2aW91c1NpYmxpbmcKICAgICAg
ICAgICAgICAgICAgICAgLy8gdG8gY3VycmVudENvdW50ZXIuCiAgICAgICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50Q291bnRlci0+YWN0c0FzUmVzZXQoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzUmVzZXQgJiYgY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBjb3VudGVy
T3duZXItPnBhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAm
JiBhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKGN1cnJlbnRSZW5kZXJlciwgY291bnRlck93
bmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3Vu
dGVyLT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxp
bmcgPSBjdXJyZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cGFyZW50OwpAQCAtMTgwLDcgKzM0NCw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50
ZXIoUmVuZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc1Jlc2V0IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0g
Y291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVz
ZXQgfHwgIWFyZVJlbmRlcmVyc0VsZW1lbnRzU2libGluZ3MoY3VycmVudFJlbmRlcmVyLCBjb3Vu
dGVyT3duZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291
bnRlci0+cGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcg
PSBjdXJyZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjA1LDcgKzM2OSw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50ZXIoUmVuZGVy
T2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgYXJlIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHByZXZpb3VzIHNp
YmxpbmdzIG9mIHRoZSBjdXJyZW50UmVuZGVyZXIgb3IgdGhlaXIgY2hpbGRyZW4KICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFzIGNvdW50ZXJzIHRoZXkgbWF5IGhhdmUgYXR0YWNoZWQgY2Fu
bm90IGJlIHRoZSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSBjb3VudGVyIHdlIGFyZSBwbGFjaW5n
LgotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRl
cmVyLT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9
IHBhcmVudEVsZW1lbnQoY3VycmVudFJlbmRlcmVyKS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlCkBAIC0yNTYsMjggKzQyMCwyOCBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1h
a2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBp
ZAogICAgICAgICBvYmplY3QtPm1faGFzQ291bnRlck5vZGVNYXAgPSB0cnVlOwogICAgIH0KICAg
ICBub2RlTWFwLT5zZXQoaWRlbnRpZmllci5pbXBsKCksIG5ld05vZGUpOwotICAgIGlmIChuZXdO
b2RlLT5wYXJlbnQoKSB8fCAhb2JqZWN0LT5uZXh0SW5QcmVPcmRlcihvYmplY3QtPnBhcmVudCgp
KSkKKyAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBuZXdOb2RlLmdl
dCgpOwogICAgIC8vIENoZWNraW5nIGlmIHNvbWUgbm9kZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkg
Y291bnRlciB0cmVlIHJvb3Qgbm9kZXMKICAgICAvLyBzaG91bGQgYmVjb21lIGNoaWxkcmVuIG9m
IHRoaXMgbm9kZSBub3cuCiAgICAgQ291bnRlck1hcHMmIG1hcHMgPSBjb3VudGVyTWFwcygpOwot
ICAgIFJlbmRlck9iamVjdCogc3RheVdpdGhpbiA9IG9iamVjdC0+cGFyZW50KCk7Ci0gICAgZm9y
IChSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IG9iamVjdC0+bmV4dEluUHJlT3JkZXIo
c3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJl
bmRlcmVyLT5uZXh0SW5QcmVPcmRlcihzdGF5V2l0aGluKSkgeworICAgIEVsZW1lbnQqIHN0YXlX
aXRoaW4gPSBwYXJlbnRFbGVtZW50KG9iamVjdCk7CisgICAgYm9vbCBza2lwRGVzY2VuZGFudHM7
CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IG5leHRJblByZU9yZGVy
KG9iamVjdCwgc3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0g
bmV4dEluUHJlT3JkZXIoY3VycmVudFJlbmRlcmVyLCBzdGF5V2l0aGluLCBza2lwRGVzY2VuZGFu
dHMpKSB7CisgICAgICAgIHNraXBEZXNjZW5kYW50cyA9IGZhbHNlOwogICAgICAgICBpZiAoIWN1
cnJlbnRSZW5kZXJlci0+bV9oYXNDb3VudGVyTm9kZU1hcCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBDb3VudGVyTm9kZSogY3VycmVudENvdW50ZXIgPSBtYXBzLmdldChjdXJyZW50
UmVuZGVyZXIpLT5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmdldCgpOwogICAgICAgICBpZiAoIWN1
cnJlbnRDb3VudGVyKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNraXBEZXNjZW5k
YW50cyA9IHRydWU7CiAgICAgICAgIGlmIChjdXJyZW50Q291bnRlci0+cGFyZW50KCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChuZXdOb2RlLT5maXJzdENoaWxkKCkpOwotICAgICAgICAgICAgaWYg
KGN1cnJlbnRSZW5kZXJlci0+bGFzdENoaWxkKCkpCi0gICAgICAgICAgICAgICAgY3VycmVudFJl
bmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5sYXN0Q2hpbGQoKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdGF5V2l0aGluICE9IGN1cnJlbnRSZW5kZXJl
ci0+cGFyZW50KCkgfHwgIWN1cnJlbnRDb3VudGVyLT5oYXNSZXNldFR5cGUoKSkKLSAgICAgICAg
ICAgIG5ld05vZGUtPmluc2VydEFmdGVyKGN1cnJlbnRDb3VudGVyLCBuZXdOb2RlLT5sYXN0Q2hp
bGQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChjdXJyZW50UmVuZGVyZXItPmxhc3RDaGls
ZCgpKQotICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5sYXN0
Q2hpbGQoKTsKKyAgICAgICAgaWYgKHN0YXlXaXRoaW4gPT0gcGFyZW50RWxlbWVudChjdXJyZW50
UmVuZGVyZXIpICYmIGN1cnJlbnRDb3VudGVyLT5oYXNSZXNldFR5cGUoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBuZXdOb2RlLT5pbnNlcnRBZnRlcihjdXJyZW50Q291bnRlciwgbmV3
Tm9kZS0+bGFzdENoaWxkKCksIGlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4gbmV3Tm9k
ZS5nZXQoKTsKIH0KQEAgLTQ0NCwxMiArNjA4LDIyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNvdW50
ZXJzKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKIHZvaWQgUmVuZGVyQ291bnRlcjo6cmVuZGVy
ZXJTdWJ0cmVlQXR0YWNoZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKKyAgICBOb2RlKiBu
b2RlID0gcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUgPSByZW5kZXJlci0+Z2Vu
ZXJhdGluZ05vZGUoKTsKKyAgICBpZiAobm9kZSAmJiAhbm9kZS0+YXR0YWNoZWQoKSkKKyAgICAg
ICAgcmV0dXJuOyAvLyBObyBuZWVkIHRvIHVwZGF0ZSBpZiB0aGUgcGFyZW50IGlzIG5vdCBhdHRh
Y2hlZCB5ZXQKICAgICBmb3IgKFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9IHJlbmRlcmVyOyBk
ZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIocmVuZGVy
ZXIpKQogICAgICAgICB1cGRhdGVDb3VudGVycyhkZXNjZW5kYW50KTsKIH0KIAogdm9pZCBSZW5k
ZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkK
IHsKKyAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CisgICAgaWYg
KCFub2RlIHx8ICFub2RlLT5hdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47IC8vIGNhbm5vdCBo
YXZlIGdlbmVyYXRlZCBjb250ZW50IG9yIGlmIGl0IGNhbiBoYXZlLCBpdCB3aWxsIGJlIGhhbmRs
ZWQgZHVyaW5nIGF0dGFjaGluZwogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG5ld0Nv
dW50ZXJEaXJlY3RpdmVzOwogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG9sZENvdW50
ZXJEaXJlY3RpdmVzOwogICAgIGlmIChvbGRTdHlsZSAmJiAob2xkQ291bnRlckRpcmVjdGl2ZXMg
PSBvbGRTdHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKSkpIHsKQEAgLTQ4OSwzICs2NjMsMzMgQEAg
dm9pZCBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjb25zdCBSZW5kZXJTdHkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
aWZuZGVmIE5ERUJVRworCit2b2lkIHNob3dSZW5kZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhciogY291bnRlck5hbWUgPSAwKQoreworICAg
IGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqIHJvb3QgPSByZW5kZXJlcjsKKyAgICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCisg
ICAgICAgIHJvb3QgPSByb290LT5wYXJlbnQoKTsKKworICAgIEF0b21pY1N0cmluZyBpZGVudGlm
aWVyKGNvdW50ZXJOYW1lKTsKKyAgICBmb3IgKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCog
Y3VycmVudCA9IHJvb3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0SW5QcmVPcmRl
cigpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMiLCAoY3VycmVudCA9PSByZW5kZXJl
cikgPyAnKicgOiAnICcpOworICAgICAgICBmb3IgKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVj
dCogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVudCAhPSByb290OyBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudCgpKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgIik7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjolcCBQOiVwIFBTOiVwIE5TOiVwIEM6JXBcbiIs
CisgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5ub2RlKCksIGN1cnJlbnQtPnBhcmVudCgp
LCBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwKKyAgICAgICAgICAgIGN1cnJlbnQtPm5leHRT
aWJsaW5nKCksIGN1cnJlbnQtPm1faGFzQ291bnRlck5vZGVNYXA/CisgICAgICAgICAgICBjb3Vu
dGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGN1cnJlbnQpLT5nZXQoaWRlbnRp
Zmllci5pbXBsKCkpLmdldCgpIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikxIDogKFdlYkNvcmU6
OkNvdW50ZXJOb2RlKikwKTsKKyAgICB9Cit9CisKK3ZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSopOwordm9pZCBzaG93Tm9kZVRyZWUoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkK
K3sKKyAgICBzaG93VHJlZShub2RlKTsKK30KKworI2VuZGlmIC8vIE5ERUJVRwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81291</attachid>
            <date>2011-02-04 14:50:52 -0800</date>
            <delta_ts>2011-02-04 15:29:19 -0800</delta_ts>
            <desc>Patch. Made the change suggested by David Dyatt</desc>
            <filename>patchFor52126-3.patch</filename>
            <type>text/plain</type>
            <size>21309</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YjY4ODAwLi42Mjg0ZWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDIt
MDQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIENvZGUgQ2hhbmdlcy4KKworICAgICAgICBD
U1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJzL2Nv
bnRlbnQtMDIxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291bnRl
cnMvY29udGVudC0wMjEuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgaXMgYSBjb3B5IG9mIHRo
ZSB0ZXN0IHdpdGggdGhlIHNhbWUgbmFtZSBmcm9tIHRoZQorICAgICAgICBvZmZpY2lhbCBjc3Mg
dGVzdCBzdWl0ZSwgYWRhcHRlZCBmb3IgRHVtcFJlbmRlclRyZWUuCisKIDIwMTEtMDItMDEgIE1p
aGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODZmMGQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvdW50ZXJzL2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoaXMg
aXMgdGhlIFdlYktpdCB2ZXJzaW9uIG9mIENTUyBUZXN0OiBDb250ZW50IHVzaW5nIGEgJ2NvdW50
ZXJzKCknIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgdmFsdWUuCisKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjEnKSBpcyAnMCcKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjInKSBp
cyAnMC4wJworCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjIxYzRhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9jb250ZW50LTAyMS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxl
PldlYktpdCdzIGFkYXB0YXRpb24gb2YgaHR0cDovL3Rlc3QuY3Nzd2cub3JnL3N1aXRlcy9jc3My
LjEvMjAxMTAxMTEvaHRtbDQvY29udGVudC0wMjEuaHRtPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJv
cmlnaW5hbEF1dGhvciIgdGl0bGU9Ik1pY3Jvc29mdCIgaHJlZj0iaHR0cDovL3d3dy5taWNyb3Nv
ZnQuY29tLyI+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Q1NTMjEvZ2VuZXJhdGUuaHRtbCNwcm9wZGVmLWNvbnRlbnQiPgorICA8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwjY29udGVudCI+
CisgIDxtZXRhIG5hbWU9ImZsYWdzIiBjb250ZW50PSIiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9IlRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvcGVybHkgaGFuZGxlcworICAgY291
bnRlciBhdXRvbmVzdGluZyB3aGVuIGFub255bW91cyByZW5kZXJlcnMgaW50ZXJ2ZW5lIGJldHdl
ZW4gdGhlCisgICBlbGVtZW50IGFuZCBpdHMgOmJlZm9yZSBkZXNjZW5kYW50LiI+CisgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAjdGVzdFZpZXcgZGl2OmJlZm9yZSB7CisgICAgY29udGVu
dDogY291bnRlcnModGVzdCwgIi4iKTsKKyAgICBjb3VudGVyLXJlc2V0OiB0ZXN0OworICAgfQor
ICAgI2RpdjEgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgfQorICA8L3N0eWxl
PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgZnVuY3Rpb24gcnVuKCkKKyAgeworICAgICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgcmV0dXJuOworICAgICAgc2hvdWxkQmUoImxheW91
dFRlc3RDb250cm9sbGVyLmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKCdkaXYxJykiLCAiJzAn
Iik7CisgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQoJ2RpdjInKSIsICInMC4wJyIpOworCisgICAgICBkZWJ1ZygnJyk7CisgICAg
ICBkZWJ1ZygnVEVTVCBDT01QTEVURScpOworICAgICAgLy8gRWxpbWluYXRlIGNvbmZ1c2luZyBt
ZXNzYWdlcyAoY291bnRlciB2YWx1ZXMgd29uJ3QgYmUgZHVtcGVkIGJ5IGR1bXBBc1RleHQpLgor
ICAgICAgdmFyIHZpZXdFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RWaWV3
Iik7CisgICAgICB2aWV3RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHZpZXdFbGVtZW50
KTsKKyAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisKKyA8Ym9keSBvbmxvYWQ9InJ1bigpOyI+
CisKKyA8cD5UaGlzIGlzIHRoZSBXZWJLaXQgdmVyc2lvbiBvZiA8YSBocmVmPSJodHRwOi8vdGVz
dC5jc3N3Zy5vcmcvc3VpdGVzL2NzczIuMS8yMDExMDExMS9odG1sNC9jb250ZW50LTAyMS5odG0i
PkNTUworIFRlc3Q6IENvbnRlbnQgdXNpbmcgYSAnY291bnRlcnMoKScgZnVuY3Rpb24gd2l0aCBh
IHN0cmluZyB2YWx1ZTwvYT4uPC9wPgorIDxkaXYgaWQ9InRlc3RWaWV3Ij4KKyAgPHA+VGVzdCBw
YXNzZXMgaWYgdGhlcmUgYXJlIHRoZSBudW1iZXJzICIwIiBhbmQgIjAuMCIgaW4gdGhlIGJveCBi
ZWxvdy48L3A+CisgIDxkaXYgaWQ9ImRpdjEiPgorICAgPGRpdiBpZD0iZGl2MiI+PC9kaXY+Cisg
IDwvZGl2PgorIDwvZGl2PgorIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwMDE4YjNiLi41ZWIzOThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDAgQEAKKzIwMTEtMDItMDQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIENvZGUgQ2hh
bmdlcy4KKworICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICBUZXN0
OiBmYXN0L2Nzcy9jb3VudGVycy9jb250ZW50LTAyMS5odG1sCisKKyAgICAgICAgKiByZW5kZXJp
bmcvQ291bnRlck5vZGUuY3BwOgorICAgICAgICAoc2hvd0NvdW50ZXJUcmVlKToKKyAgICAgICAg
TWFkZSBwYXJhbWV0ZXIgY29uc3QgYmVjYXVzZSBpdCBpcyBzdXBwb3NlZCB0byBiZSBzby4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cmV2aW91c0luUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNTaWJsaW5nT3JQ
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjphcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRJblByZU9yZGVyKToKKyAgICAgICAgQWRkZWQgdGhlc2UgbG9jYWwgaGVscGVyIGZ1bmN0aW9u
cyB0byBoZWxwIG5hdmlnYXRlIHRoZSBET00gdHJlZQorICAgICAgICBlbnJpY2hlZCB3aXRoIDpi
ZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgIChXZWJDb3JlOjpwbGFu
Q291bnRlcik6CisgICAgICAgIEZpeGVkIGJ1ZyB0aGF0IHdvdWxkIGNyZWF0ZSBhIHJlcGVhdCBj
b3VudGVyIGZvciBzZWNvbmQgYW5kCisgICAgICAgIHN1YnNlcXVlbnQgcmVuZGVyZXJzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgc2FtZSBET00gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRQ
bGFjZUZvckNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAg
ICAgICAgQ2hhbmdlZCB0byB1c2UgdGhlIG5ldyB0cmVlIG5hdmlnYXRpb24gZnVuY3Rpb25zIGRl
c2NyaWJlZCBhYm92ZQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBSZW5kZXJlciBUcmVlIG5hdmln
YXRpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6cmVuZGVy
ZXJTdWJ0cmVlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6cmVu
ZGVyZXJTdHlsZUNoYW5nZWQpOgorICAgICAgICBPcHRpbWl6ZWQgdG8gbm90IGJvdGhlciBhYm91
dCBjb3VudGVycyB1bnRpbCB0aGUgcmVuZGVyZXJzIGFyZQorICAgICAgICBmaW5hbGx5IGF0dGFj
aGVkLgorICAgICAgICAoc2hvd1JlbmRlcmVyVHJlZSk6CisgICAgICAgIChzaG93Tm9kZVRyZWUp
OgorICAgICAgICBEZWJ1ZyBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gZGVidWcgQ291bnRlciBi
dWdzLgorCiAyMDExLTAyLTAxICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggZmUyMTQ4YS4uZWFkZDM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3Rh
dGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IENvdW50ZXJOb2RlKiBub2RlKQogCiAjaWZu
ZGVmIE5ERUJVRwogCi12b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OkNvdW50ZXJOb2RlKiBj
b3VudGVyKQordm9pZCBzaG93Q291bnRlclRyZWUoY29uc3QgV2ViQ29yZTo6Q291bnRlck5vZGUq
IGNvdW50ZXIpCiB7CiAgICAgaWYgKGNvdW50ZXIpCiAgICAgICAgIHNob3dUcmVlQW5kTWFyayhj
b3VudGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRl
eCA3ZTEwNDQwLi4wZTdhMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDb3VudGVyTm9kZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJMaXN0SXRlbS5oIgpAQCAtNDYsMTEgKzQ3LDE1NyBAQCBzdGF0aWMgQ291bnRlck1hcHMmIGNv
dW50ZXJNYXBzKCkKICAgICByZXR1cm4gc3RhdGljQ291bnRlck1hcHM7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGlu
IHRoZSBvcmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMg
YXMgZGVmaW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUgc2tpcHBl
ZCBleGNlcHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitzdGF0aWMg
UmVuZGVyT2JqZWN0KiBwcmV2aW91c0luUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogc2libGluZyA9IG9iamVjdC0+cHJldmlvdXNT
aWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBzaWJsaW5nOwotICAgIHJldHVybiBvYmplY3QtPnBh
cmVudCgpOworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJsaW5nOworICAg
IHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9QU0VV
RE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAgICAgcGFy
ZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGluZyA9IHBhcmVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6CisgICAgICAg
IHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8vIEl0IGlzIGFs
d2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFGVEVSOgorICAg
ICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKKyAgICAg
ICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogYWZ0ZXIgPSByZW5kZXJlci0+YWZ0ZXJQc2V1ZG9FbGVtZW50UmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWZ0ZXI7CisgICAgICAgICAgICBwYXJlbnQg
PSBzaWJsaW5nOworICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPmxhc3RFbGVtZW50Q2hp
bGQoKTsKKyAgICAgICAgICAgIGlmICghc2libGluZykgeworICAgICAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJlZm9yZSA9IHJlbmRlcmVyLT5iZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICB9
CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7IC8vIFNob3VsZCBuZXZlciBiZSBudWxsCisg
ICAgaWYgKFJlbmRlck9iamVjdCogYmVmb3JlID0gcmVuZGVyZXItPmJlZm9yZVBzZXVkb0VsZW1l
bnRSZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gYmVmb3JlOworICAgIHJldHVybiByZW5kZXJl
cjsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJlbmRlcmVyIHRyZWUgaW4g
dGhlIG9yZGVyIG9mIHRoZSBET00gdHJlZQorLy8gaW5jbHVkaW5nIHBzZXVkbyBlbGVtZW50cyBh
cyBkZWZpbmVkIGluIENTUyAyLjEuCisvLyBBbm9ueW1vdXMgcmVuZGVyZXJzIGFyZSBza2lwcGVk
IGV4Y2VwdCBmb3IgdGhvc2UgcmVwcmVzZW50aW5nIHBzZXVkbyBlbGVtZW50cy4KK3N0YXRpYyBS
ZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ09yUGFyZW50KGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0KQoreworICAgIEVsZW1lbnQqIHBhcmVudDsKKyAgICBFbGVtZW50KiBzaWJsaW5nOwor
ICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9Q
U0VVRE86CisgICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAgICAg
cGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2libGluZyA9IHBh
cmVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworICAgICAgICBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCRUZPUkU6CisgICAg
ICAgIHJldHVybiBvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCktPnJlbmRlcmVyKCk7IC8vIEl0IGlz
IGFsd2F5cyB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgcmVuZGVyZXIKKyAgICBjYXNlIEFGVEVSOgor
ICAgICAgICBwYXJlbnQgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKKyAg
ICAgICAgc2libGluZyA9IHBhcmVudC0+bGFzdEVsZW1lbnRDaGlsZCgpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHdoaWxlIChzaWJsaW5nKSB7CisgICAgICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgLy8gVGhpcyBza2lwcyBp
bnZpc2libGUgbm9kZXMKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgc2li
bGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICB9CisgICAgaWYg
KHBhcmVudCkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBiZWZvcmUgPSByZW5kZXJlci0+dmly
dHVhbENoaWxkcmVuKCktPmJlZm9yZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihyZW5kZXJlcikpCisg
ICAgICAgICAgICByZXR1cm4gYmVmb3JlOworICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAg
fQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWxlbWVudCogcGFyZW50RWxlbWVudChSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS0+c3R5bGVU
eXBlKCkpIHsKKyAgICBjYXNlIE5PUFNFVURPOgorICAgICAgICBBU1NFUlQoIW9iamVjdC0+aXNB
bm9ueW1vdXMoKSk7CisgICAgICAgIHJldHVybiB0b0VsZW1lbnQob2JqZWN0LT5ub2RlKCkpLT5w
YXJlbnRFbGVtZW50KCk7CisgICAgY2FzZSBCRUZPUkU6CisgICAgY2FzZSBBRlRFUjoKKyAgICAg
ICAgcmV0dXJuIHRvRWxlbWVudChvYmplY3QtPmdlbmVyYXRpbmdOb2RlKCkpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdz
KFJlbmRlck9iamVjdCogZmlyc3QsIFJlbmRlck9iamVjdCogc2Vjb25kKQoreworICAgIHJldHVy
biBwYXJlbnRFbGVtZW50KGZpcnN0KSA9PSBwYXJlbnRFbGVtZW50KHNlY29uZCk7Cit9CisKKy8v
IFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGluIHRoZSBvcmRlciBv
ZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMgYXMgZGVmaW5lZCBp
biBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUgc2tpcHBlZCBleGNlcHQgZm9y
IHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitzdGF0aWMgUmVuZGVyT2JqZWN0
KiBuZXh0SW5QcmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgRWxlbWVu
dCogc3RheVdpdGhpbiwgYm9vbCBza2lwRGVzY2VuZGFudHMgPSBmYWxzZSkKK3sKKyAgICBFbGVt
ZW50KiBzZWxmOworICAgIEVsZW1lbnQqIGNoaWxkOworICAgIFJlbmRlck9iamVjdCogcmVzdWx0
OworICAgIHNlbGYgPSB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKKyAgICBp
ZiAoc2tpcERlc2NlbmRhbnRzKQorICAgICAgICBnb3RvIG5leHRzaWJsaW5nOworICAgIHN3aXRj
aCAob2JqZWN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSkgeworICAgIGNhc2UgTk9QU0VVRE86Cisg
ICAgICAgIEFTU0VSVCghb2JqZWN0LT5pc0Fub255bW91cygpKTsKKyAgICAgICAgcmVzdWx0ID0g
b2JqZWN0LT5iZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QkVGT1JFOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBnb3RvIG5l
eHRzaWJsaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY2hpbGQgPSBzZWxmLT5maXJzdEVsZW1lbnRD
aGlsZCgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChjaGlsZCkgeworICAg
ICAgICAgICAgcmVzdWx0ID0gY2hpbGQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAocmVz
dWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjaGlsZCA9
IGNoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQg
PSBzZWxmLT5yZW5kZXJlcigpLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcigpOworICAgICAg
ICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKK25leHRzaWJsaW5nOgor
ICAgICAgICBpZiAoc2VsZiA9PSBzdGF5V2l0aGluKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNoaWxkID0gc2VsZi0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgIHNlbGYg
PSBzZWxmLT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIGlmICghc2VsZikgeworICAgICAgICAg
ICAgQVNTRVJUKCFjaGlsZCk7IC8vIFdlIGNhbiBvbmx5IHJlYWNoIHRoaXMgaWYgd2UgYXJlIHNl
YXJjaGluZyBiZXlvbmQgdGhlIHJvb3QgZWxlbWVudAorICAgICAgICAgICAgcmV0dXJuIDA7IC8v
ICB3aGljaCBjYW5ub3QgaGF2ZSBzaWJsaW5ncworICAgICAgICB9CisgICAgfQogfQogCiBzdGF0
aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQpAQCAtNjEsMTAgKzIw
OCwyNyBAQCBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBibwogICAgIC8vIFdlIGNhbid0IGV2ZW4gbG9v
ayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2VlIGV4dHJhIHJlc2V0cyBhbmQgaW5jcmVtZW50
cyEKICAgICBpZiAob2JqZWN0LT5pc1RleHQoKSAmJiAhb2JqZWN0LT5pc0JSKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlID0gb2JqZWN0LT5nZW5l
cmF0aW5nTm9kZSgpOworICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9kZSBvciBl
bHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KKyAgICBpZiAoIWdlbmVyYXRpbmdOb2RlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5z
dHlsZSgpOwogICAgIEFTU0VSVChzdHlsZSk7CiAKKyAgICBzd2l0Y2ggKHN0eWxlLT5zdHlsZVR5
cGUoKSkgeworICAgIGNhc2UgTk9QU0VVRE86CisgICAgICAgIC8vIFNvbWV0aW1lcyBub2RlcyBo
YXZlIG1vcmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkgdGhlIGZpcnN0IG9uZSBnZXRzIHRoZSBj
b3VudGVyCisgICAgICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2NvdW50ZXItY3Jh
c2guaHRtbAorICAgICAgICBpZiAoZ2VuZXJhdGluZ05vZGUtPnJlbmRlcmVyKCkgIT0gb2JqZWN0
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJF
Rk9SRToKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4gZnJvbSBhbGwgb3Ro
ZXIgcHNldWRvIGVsZW1lbnRzLgorICAgIH0KKwogICAgIGlmIChjb25zdCBDb3VudGVyRGlyZWN0
aXZlTWFwKiBkaXJlY3RpdmVzTWFwID0gc3R5bGUtPmNvdW50ZXJEaXJlY3RpdmVzKCkpIHsKICAg
ICAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNNYXAtPmdldChp
ZGVudGlmaWVyLmltcGwoKSk7CiAgICAgICAgIGlmIChkaXJlY3RpdmVzLm1fcmVzZXQpIHsKQEAg
LTEzMyw3ICsyOTcsNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9i
amVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgLy8gV2UgY2hlY2sg
cmVuZGVyZXJzIGluIHByZU9yZGVyIGZyb20gdGhlIHJlbmRlcmVyIHRoYXQgb3VyIGNvdW50ZXIg
aXMgYXR0YWNoZWQgdG8KICAgICAvLyB0b3dhcmRzIHRoZSBiZWdpbmluZyBvZiB0aGUgZG9jdW1l
bnQgZm9yIGNvdW50ZXJzIHdpdGggdGhlIHNhbWUgaWRlbnRpZmllciBhcyB0aGUgb25lCiAgICAg
Ly8gd2UgYXJlIHRyeWluZyB0byBmaW5kIGEgcGxhY2UgZm9yLiBUaGlzIGlzIHRoZSBuZXh0IHJl
bmRlcmVyIHRvIGJlIGNoZWNrZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIg
PSBjb3VudGVyT3duZXItPnByZXZpb3VzSW5QcmVPcmRlcigpOworICAgIFJlbmRlck9iamVjdCog
Y3VycmVudFJlbmRlcmVyID0gcHJldmlvdXNJblByZU9yZGVyKGNvdW50ZXJPd25lcik7CiAgICAg
cHJldmlvdXNTaWJsaW5nID0gMDsKICAgICB3aGlsZSAoY3VycmVudFJlbmRlcmVyKSB7CiAgICAg
ICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9IG1ha2VDb3VudGVyTm9kZShjdXJyZW50
UmVuZGVyZXIsIGlkZW50aWZpZXIsIGZhbHNlKTsKQEAgLTE0NCw3ICszMDgsNyBAQCBzdGF0aWMg
Ym9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9iamVjdCogY291bnRlck93bmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU2libGluZykgeyAv
LyBCdXQgd2UgYWxyZWFkeSBmb3VuZCBhbm90aGVyIGNvdW50ZXIgdGhhdCB3ZSBjb21lIGFmdGVy
LgogICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvdW50ZXItPmFjdHNBc1Jlc2V0KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgcmVzZXQgY291bnRlciB0
aGF0IGlzIG9uIGEgcmVuZGVyZXIgdGhhdCBpcyBhIHNpYmxpbmcgb2Ygb3VycyBvciBhIHBhcmVu
dC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc2V0ICYmIGN1cnJlbnRSZW5kZXJl
ci0+cGFyZW50KCkgPT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzUmVzZXQgJiYgYXJlUmVuZGVyZXJzRWxlbWVudHNTaWJsaW5ncyhjdXJy
ZW50UmVuZGVyZXIsIGNvdW50ZXJPd25lcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgYWxzbyBhIHJlc2V0IGNvdW50ZXIgYW5kIHRoZSBwcmV2aW91cyByZXNldCB3
YXMgb24gYSBzaWJsaW5nIHJlbmRlcmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aGVuY2Ugd2UgYXJlIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhhdCBjb3VudGVyIGlmIHRoYXQgcmVz
ZXQgaXMgbm90IGEgcm9vdCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFy
ZSBhIHJvb3Qgbm9kZSBpZiB0aGF0IHJlc2V0IGlzIGEgcm9vdC4KQEAgLTE1OSw3ICszMjMsNyBA
QCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9iamVjdCogY291bnRlck93
bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBDdXJy
ZW50Q291bnRlciwgdGhlIGNvdW50ZXIgYXQgdGhlIEVuZFNlYXJjaFJlbmRlcmVyLCBpcyBub3Qg
cmVzZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNldCB8fCBjdXJyZW50UmVuZGVy
ZXItPnBhcmVudCgpICE9IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpc1Jlc2V0IHx8ICFhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKGN1cnJl
bnRSZW5kZXJlciwgY291bnRlck93bmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlIG5vZGUgd2UgYXJlIHBsYWNpbmcgaXMgbm90IHJlc2V0IG9yIHdlIGhhdmUgZm91bmQg
YSBjb3VudGVyIHRoYXQgaXMgYXR0YWNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRv
IGFuIGFuY2VzdG9yIG9mIHRoZSBwbGFjZWQgY291bnRlcidzIHJlbmRlcmVyIHdlIGtub3cgd2Ug
YXJlIGEgc2libGluZyBvZiB0aGF0IG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoY3VycmVudENvdW50ZXItPnBhcmVudCgpID09IHByZXZpb3VzU2libGluZy0+cGFyZW50KCkp
OwpAQCAtMTcyLDcgKzMzNiw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50ZXIoUmVu
ZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAg
ICAgICAgICAgLy8gcHJldmlvdXNTaWJsaW5nLCBhbmQgd2hlbiB3ZSBhcmUgYSBzaWJsaW5nIG9m
IHRoZSBlbmQgY291bnRlciB3ZSBtdXN0IHNldCBwcmV2aW91c1NpYmxpbmcKICAgICAgICAgICAg
ICAgICAgICAgLy8gdG8gY3VycmVudENvdW50ZXIuCiAgICAgICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50Q291bnRlci0+YWN0c0FzUmVzZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzUmVzZXQgJiYgY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBjb3VudGVyT3duZXIt
PnBhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAmJiBhcmVS
ZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKGN1cnJlbnRSZW5kZXJlciwgY291bnRlck93bmVyKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyLT5w
YXJlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBj
dXJyZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50
OwpAQCAtMTgwLDcgKzM0NCw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50ZXIoUmVu
ZGVyT2JqZWN0KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpc1Jlc2V0IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRl
ck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXQgfHwg
IWFyZVJlbmRlcmVyc0VsZW1lbnRzU2libGluZ3MoY3VycmVudFJlbmRlcmVyLCBjb3VudGVyT3du
ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+
cGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJy
ZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA1
LDcgKzM2OSw3IEBAIHN0YXRpYyBib29sIGZpbmRQbGFjZUZvckNvdW50ZXIoUmVuZGVyT2JqZWN0
KiBjb3VudGVyT3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHByZXZpb3VzIHNpYmxpbmdz
IG9mIHRoZSBjdXJyZW50UmVuZGVyZXIgb3IgdGhlaXIgY2hpbGRyZW4KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFzIGNvdW50ZXJzIHRoZXkgbWF5IGhhdmUgYXR0YWNoZWQgY2Fubm90IGJl
IHRoZSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSBjb3VudGVyIHdlIGFyZSBwbGFjaW5nLgotICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5w
YXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IHBhcmVu
dEVsZW1lbnQoY3VycmVudFJlbmRlcmVyKS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSBlbHNlCkBAIC0yNTYsMjggKzQyMCwyOCBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3Vu
dGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZAogICAg
ICAgICBvYmplY3QtPm1faGFzQ291bnRlck5vZGVNYXAgPSB0cnVlOwogICAgIH0KICAgICBub2Rl
TWFwLT5zZXQoaWRlbnRpZmllci5pbXBsKCksIG5ld05vZGUpOwotICAgIGlmIChuZXdOb2RlLT5w
YXJlbnQoKSB8fCAhb2JqZWN0LT5uZXh0SW5QcmVPcmRlcihvYmplY3QtPnBhcmVudCgpKSkKKyAg
ICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBuZXdOb2RlLmdldCgpOwog
ICAgIC8vIENoZWNraW5nIGlmIHNvbWUgbm9kZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgY291bnRl
ciB0cmVlIHJvb3Qgbm9kZXMKICAgICAvLyBzaG91bGQgYmVjb21lIGNoaWxkcmVuIG9mIHRoaXMg
bm9kZSBub3cuCiAgICAgQ291bnRlck1hcHMmIG1hcHMgPSBjb3VudGVyTWFwcygpOwotICAgIFJl
bmRlck9iamVjdCogc3RheVdpdGhpbiA9IG9iamVjdC0+cGFyZW50KCk7Ci0gICAgZm9yIChSZW5k
ZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IG9iamVjdC0+bmV4dEluUHJlT3JkZXIoc3RheVdp
dGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVy
LT5uZXh0SW5QcmVPcmRlcihzdGF5V2l0aGluKSkgeworICAgIEVsZW1lbnQqIHN0YXlXaXRoaW4g
PSBwYXJlbnRFbGVtZW50KG9iamVjdCk7CisgICAgYm9vbCBza2lwRGVzY2VuZGFudHM7CisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IG5leHRJblByZU9yZGVyKG9iamVj
dCwgc3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0gbmV4dElu
UHJlT3JkZXIoY3VycmVudFJlbmRlcmVyLCBzdGF5V2l0aGluLCBza2lwRGVzY2VuZGFudHMpKSB7
CisgICAgICAgIHNraXBEZXNjZW5kYW50cyA9IGZhbHNlOwogICAgICAgICBpZiAoIWN1cnJlbnRS
ZW5kZXJlci0+bV9oYXNDb3VudGVyTm9kZU1hcCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBDb3VudGVyTm9kZSogY3VycmVudENvdW50ZXIgPSBtYXBzLmdldChjdXJyZW50UmVuZGVy
ZXIpLT5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmdldCgpOwogICAgICAgICBpZiAoIWN1cnJlbnRD
b3VudGVyKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHNraXBEZXNjZW5kYW50cyA9
IHRydWU7CiAgICAgICAgIGlmIChjdXJyZW50Q291bnRlci0+cGFyZW50KCkpIHsKICAgICAgICAg
ICAgIEFTU0VSVChuZXdOb2RlLT5maXJzdENoaWxkKCkpOwotICAgICAgICAgICAgaWYgKGN1cnJl
bnRSZW5kZXJlci0+bGFzdENoaWxkKCkpCi0gICAgICAgICAgICAgICAgY3VycmVudFJlbmRlcmVy
ID0gY3VycmVudFJlbmRlcmVyLT5sYXN0Q2hpbGQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChzdGF5V2l0aGluICE9IGN1cnJlbnRSZW5kZXJlci0+cGFy
ZW50KCkgfHwgIWN1cnJlbnRDb3VudGVyLT5oYXNSZXNldFR5cGUoKSkKLSAgICAgICAgICAgIG5l
d05vZGUtPmluc2VydEFmdGVyKGN1cnJlbnRDb3VudGVyLCBuZXdOb2RlLT5sYXN0Q2hpbGQoKSwg
aWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChjdXJyZW50UmVuZGVyZXItPmxhc3RDaGlsZCgpKQot
ICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5sYXN0Q2hpbGQo
KTsKKyAgICAgICAgaWYgKHN0YXlXaXRoaW4gPT0gcGFyZW50RWxlbWVudChjdXJyZW50UmVuZGVy
ZXIpICYmIGN1cnJlbnRDb3VudGVyLT5oYXNSZXNldFR5cGUoKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBuZXdOb2RlLT5pbnNlcnRBZnRlcihjdXJyZW50Q291bnRlciwgbmV3Tm9kZS0+
bGFzdENoaWxkKCksIGlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4gbmV3Tm9kZS5nZXQo
KTsKIH0KQEAgLTQ0NCwxMiArNjA4LDIyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNvdW50ZXJzKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAKIHZvaWQgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0
cmVlQXR0YWNoZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKKyAgICBOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE5vZGUoKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUgPSByZW5kZXJlci0+Z2VuZXJhdGlu
Z05vZGUoKTsKKyAgICBpZiAobm9kZSAmJiAhbm9kZS0+YXR0YWNoZWQoKSkKKyAgICAgICAgcmV0
dXJuOyAvLyBObyBuZWVkIHRvIHVwZGF0ZSBpZiB0aGUgcGFyZW50IGlzIG5vdCBhdHRhY2hlZCB5
ZXQKICAgICBmb3IgKFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9IHJlbmRlcmVyOyBkZXNjZW5k
YW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIocmVuZGVyZXIpKQog
ICAgICAgICB1cGRhdGVDb3VudGVycyhkZXNjZW5kYW50KTsKIH0KIAogdm9pZCBSZW5kZXJDb3Vu
dGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKIHsKKyAg
ICBOb2RlKiBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CisgICAgaWYgKCFub2Rl
IHx8ICFub2RlLT5hdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47IC8vIGNhbm5vdCBoYXZlIGdl
bmVyYXRlZCBjb250ZW50IG9yIGlmIGl0IGNhbiBoYXZlLCBpdCB3aWxsIGJlIGhhbmRsZWQgZHVy
aW5nIGF0dGFjaGluZwogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG5ld0NvdW50ZXJE
aXJlY3RpdmVzOwogICAgIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAqIG9sZENvdW50ZXJEaXJl
Y3RpdmVzOwogICAgIGlmIChvbGRTdHlsZSAmJiAob2xkQ291bnRlckRpcmVjdGl2ZXMgPSBvbGRT
dHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKSkpIHsKQEAgLTQ4OSwzICs2NjMsMzMgQEAgdm9pZCBS
ZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjaWZuZGVm
IE5ERUJVRworCit2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqIGNvdW50ZXJOYW1lID0gMCkKK3sKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByb290ID0gcmVuZGVyZXI7CisgICAgd2hpbGUgKHJvb3QtPnBhcmVudCgpKQor
ICAgICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWRlbnRp
Zmllcihjb3VudGVyTmFtZSk7CisgICAgZm9yIChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
IGN1cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dEluUHJlT3Jk
ZXIoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwgKGN1cnJlbnQgPT0gcmVuZGVy
ZXIpID8gJyonIDogJyAnKTsKKyAgICAgICAgZm9yIChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHBhcmVudCA9IGN1cnJlbnQ7IHBhcmVudCAmJiBwYXJlbnQgIT0gcm9vdDsgcGFyZW50ID0g
cGFyZW50LT5wYXJlbnQoKSkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICIpOwor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwIE46JXAgUDolcCBQUzolcCBOUzolcCBDOiVwXG4i
LAorICAgICAgICAgICAgY3VycmVudCwgY3VycmVudC0+bm9kZSgpLCBjdXJyZW50LT5wYXJlbnQo
KSwgY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCksCisgICAgICAgICAgICBjdXJyZW50LT5uZXh0
U2libGluZygpLCBjdXJyZW50LT5tX2hhc0NvdW50ZXJOb2RlTWFwPworICAgICAgICAgICAgY291
bnRlck5hbWUgPyBXZWJDb3JlOjpjb3VudGVyTWFwcygpLmdldChjdXJyZW50KS0+Z2V0KGlkZW50
aWZpZXIuaW1wbCgpKS5nZXQoKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3Jl
OjpDb3VudGVyTm9kZSopMCk7CisgICAgfQorfQorCit2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUqKTsKK3ZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUp
Cit7CisgICAgc2hvd1RyZWUobm9kZSk7Cit9CisKKyNlbmRpZiAvLyBOREVCVUcK
</data>
<flag name="commit-queue"
          id="72857"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81305</attachid>
            <date>2011-02-04 15:29:19 -0800</date>
            <delta_ts>2011-02-04 16:29:12 -0800</delta_ts>
            <desc>Patch. Fixed MacWarnings.</desc>
            <filename>patchFor52126-4.patch</filename>
            <type>text/plain</type>
            <size>22170</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YjY4ODAwLi42Mjg0ZWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDIt
MDQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIENvZGUgQ2hhbmdlcy4KKworICAgICAgICBD
U1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJzL2Nv
bnRlbnQtMDIxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291bnRl
cnMvY29udGVudC0wMjEuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgaXMgYSBjb3B5IG9mIHRo
ZSB0ZXN0IHdpdGggdGhlIHNhbWUgbmFtZSBmcm9tIHRoZQorICAgICAgICBvZmZpY2lhbCBjc3Mg
dGVzdCBzdWl0ZSwgYWRhcHRlZCBmb3IgRHVtcFJlbmRlclRyZWUuCisKIDIwMTEtMDItMDEgIE1p
aGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODZmMGQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvdW50ZXJzL2NvbnRlbnQtMDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoaXMg
aXMgdGhlIFdlYktpdCB2ZXJzaW9uIG9mIENTUyBUZXN0OiBDb250ZW50IHVzaW5nIGEgJ2NvdW50
ZXJzKCknIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgdmFsdWUuCisKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjEnKSBpcyAnMCcKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoJ2RpdjInKSBp
cyAnMC4wJworCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvbnRlbnQtMDIxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb250ZW50LTAyMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjIxYzRhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9jb250ZW50LTAyMS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxl
PldlYktpdCdzIGFkYXB0YXRpb24gb2YgaHR0cDovL3Rlc3QuY3Nzd2cub3JnL3N1aXRlcy9jc3My
LjEvMjAxMTAxMTEvaHRtbDQvY29udGVudC0wMjEuaHRtPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJv
cmlnaW5hbEF1dGhvciIgdGl0bGU9Ik1pY3Jvc29mdCIgaHJlZj0iaHR0cDovL3d3dy5taWNyb3Nv
ZnQuY29tLyI+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Q1NTMjEvZ2VuZXJhdGUuaHRtbCNwcm9wZGVmLWNvbnRlbnQiPgorICA8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwjY29udGVudCI+
CisgIDxtZXRhIG5hbWU9ImZsYWdzIiBjb250ZW50PSIiPgorICA8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9IlRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvcGVybHkgaGFuZGxlcworICAgY291
bnRlciBhdXRvbmVzdGluZyB3aGVuIGFub255bW91cyByZW5kZXJlcnMgaW50ZXJ2ZW5lIGJldHdl
ZW4gdGhlCisgICBlbGVtZW50IGFuZCBpdHMgOmJlZm9yZSBkZXNjZW5kYW50LiI+CisgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAjdGVzdFZpZXcgZGl2OmJlZm9yZSB7CisgICAgY29udGVu
dDogY291bnRlcnModGVzdCwgIi4iKTsKKyAgICBjb3VudGVyLXJlc2V0OiB0ZXN0OworICAgfQor
ICAgI2RpdjEgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworICAgfQorICA8L3N0eWxl
PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgZnVuY3Rpb24gcnVuKCkKKyAgeworICAgICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgcmV0dXJuOworICAgICAgc2hvdWxkQmUoImxheW91
dFRlc3RDb250cm9sbGVyLmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKCdkaXYxJykiLCAiJzAn
Iik7CisgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQoJ2RpdjInKSIsICInMC4wJyIpOworCisgICAgICBkZWJ1ZygnJyk7CisgICAg
ICBkZWJ1ZygnVEVTVCBDT01QTEVURScpOworICAgICAgLy8gRWxpbWluYXRlIGNvbmZ1c2luZyBt
ZXNzYWdlcyAoY291bnRlciB2YWx1ZXMgd29uJ3QgYmUgZHVtcGVkIGJ5IGR1bXBBc1RleHQpLgor
ICAgICAgdmFyIHZpZXdFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RWaWV3
Iik7CisgICAgICB2aWV3RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHZpZXdFbGVtZW50
KTsKKyAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisKKyA8Ym9keSBvbmxvYWQ9InJ1bigpOyI+
CisKKyA8cD5UaGlzIGlzIHRoZSBXZWJLaXQgdmVyc2lvbiBvZiA8YSBocmVmPSJodHRwOi8vdGVz
dC5jc3N3Zy5vcmcvc3VpdGVzL2NzczIuMS8yMDExMDExMS9odG1sNC9jb250ZW50LTAyMS5odG0i
PkNTUworIFRlc3Q6IENvbnRlbnQgdXNpbmcgYSAnY291bnRlcnMoKScgZnVuY3Rpb24gd2l0aCBh
IHN0cmluZyB2YWx1ZTwvYT4uPC9wPgorIDxkaXYgaWQ9InRlc3RWaWV3Ij4KKyAgPHA+VGVzdCBw
YXNzZXMgaWYgdGhlcmUgYXJlIHRoZSBudW1iZXJzICIwIiBhbmQgIjAuMCIgaW4gdGhlIGJveCBi
ZWxvdy48L3A+CisgIDxkaXYgaWQ9ImRpdjEiPgorICAgPGRpdiBpZD0iZGl2MiI+PC9kaXY+Cisg
IDwvZGl2PgorIDwvZGl2PgorIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwMDE4YjNiLi41ZWIzOThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDAgQEAKKzIwMTEtMDItMDQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIENvZGUgQ2hh
bmdlcy4KKworICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IGNvbnRlbnQtKgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjYKKworICAgICAgICBUZXN0
OiBmYXN0L2Nzcy9jb3VudGVycy9jb250ZW50LTAyMS5odG1sCisKKyAgICAgICAgKiByZW5kZXJp
bmcvQ291bnRlck5vZGUuY3BwOgorICAgICAgICAoc2hvd0NvdW50ZXJUcmVlKToKKyAgICAgICAg
TWFkZSBwYXJhbWV0ZXIgY29uc3QgYmVjYXVzZSBpdCBpcyBzdXBwb3NlZCB0byBiZSBzby4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cmV2aW91c0luUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNTaWJsaW5nT3JQ
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjphcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRJblByZU9yZGVyKToKKyAgICAgICAgQWRkZWQgdGhlc2UgbG9jYWwgaGVscGVyIGZ1bmN0aW9u
cyB0byBoZWxwIG5hdmlnYXRlIHRoZSBET00gdHJlZQorICAgICAgICBlbnJpY2hlZCB3aXRoIDpi
ZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgIChXZWJDb3JlOjpwbGFu
Q291bnRlcik6CisgICAgICAgIEZpeGVkIGJ1ZyB0aGF0IHdvdWxkIGNyZWF0ZSBhIHJlcGVhdCBj
b3VudGVyIGZvciBzZWNvbmQgYW5kCisgICAgICAgIHN1YnNlcXVlbnQgcmVuZGVyZXJzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgc2FtZSBET00gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRQ
bGFjZUZvckNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAg
ICAgICAgQ2hhbmdlZCB0byB1c2UgdGhlIG5ldyB0cmVlIG5hdmlnYXRpb24gZnVuY3Rpb25zIGRl
c2NyaWJlZCBhYm92ZQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBSZW5kZXJlciBUcmVlIG5hdmln
YXRpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6cmVuZGVy
ZXJTdWJ0cmVlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6cmVu
ZGVyZXJTdHlsZUNoYW5nZWQpOgorICAgICAgICBPcHRpbWl6ZWQgdG8gbm90IGJvdGhlciBhYm91
dCBjb3VudGVycyB1bnRpbCB0aGUgcmVuZGVyZXJzIGFyZQorICAgICAgICBmaW5hbGx5IGF0dGFj
aGVkLgorICAgICAgICAoc2hvd1JlbmRlcmVyVHJlZSk6CisgICAgICAgIChzaG93Tm9kZVRyZWUp
OgorICAgICAgICBEZWJ1ZyBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gZGVidWcgQ291bnRlciBi
dWdzLgorCiAyMDExLTAyLTAxICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggZmUyMTQ4YS4uZWFkZDM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3Rh
dGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IENvdW50ZXJOb2RlKiBub2RlKQogCiAjaWZu
ZGVmIE5ERUJVRwogCi12b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OkNvdW50ZXJOb2RlKiBj
b3VudGVyKQordm9pZCBzaG93Q291bnRlclRyZWUoY29uc3QgV2ViQ29yZTo6Q291bnRlck5vZGUq
IGNvdW50ZXIpCiB7CiAgICAgaWYgKGNvdW50ZXIpCiAgICAgICAgIHNob3dUcmVlQW5kTWFyayhj
b3VudGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgKaW5kZXggNTI5ZDQw
OS4uNjM5OTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgKQEAgLTk0
LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogI2lmbmRlZiBOREVCVUcKIC8vIE91dHNpZGUgdGhlIFdl
YkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSBnZGIuCi12b2lkIHNo
b3dUcmVlKGNvbnN0IFdlYkNvcmU6OkNvdW50ZXJOb2RlKik7Cit2b2lkIHNob3dDb3VudGVyVHJl
ZShjb25zdCBXZWJDb3JlOjpDb3VudGVyTm9kZSopOwogI2VuZGlmCiAKICNlbmRpZiAvLyBDb3Vu
dGVyTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5k
ZXggN2UxMDQ0MC4uZmJkNTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ291bnRlck5vZGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKQEAgLTQ2LDExICs0NywxNTcgQEAgc3RhdGljIENvdW50ZXJNYXBzJiBj
b3VudGVyTWFwcygpCiAgICAgcmV0dXJuIHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCi1zdGF0aWMg
aW5saW5lIFJlbmRlck9iamVjdCogcHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoUmVuZGVyT2JqZWN0
KiBvYmplY3QpCisvLyBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgcmVuZGVyZXIgdHJlZSBp
biB0aGUgb3JkZXIgb2YgdGhlIERPTSB0cmVlCisvLyBpbmNsdWRpbmcgcHNldWRvIGVsZW1lbnRz
IGFzIGRlZmluZWQgaW4gQ1NTIDIuMS4KKy8vIEFub255bW91cyByZW5kZXJlcnMgYXJlIHNraXBw
ZWQgZXhjZXB0IGZvciB0aG9zZSByZXByZXNlbnRpbmcgcHNldWRvIGVsZW1lbnRzLgorc3RhdGlj
IFJlbmRlck9iamVjdCogcHJldmlvdXNJblByZU9yZGVyKGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0KQogewotICAgIGlmIChSZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBvYmplY3QtPnByZXZpb3Vz
U2libGluZygpKQotICAgICAgICByZXR1cm4gc2libGluZzsKLSAgICByZXR1cm4gb2JqZWN0LT5w
YXJlbnQoKTsKKyAgICBFbGVtZW50KiBwYXJlbnQ7CisgICAgRWxlbWVudCogc2libGluZzsKKyAg
ICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkpIHsKKyAgICBjYXNlIE5PUFNF
VURPOgorICAgICAgICBBU1NFUlQoIW9iamVjdC0+aXNBbm9ueW1vdXMoKSk7CisgICAgICAgIHBh
cmVudCA9IHRvRWxlbWVudChvYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNpYmxpbmcgPSBwYXJl
bnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnRFbGVtZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQkVGT1JFOgorICAgICAg
ICByZXR1cm4gb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5yZW5kZXJlcigpOyAvLyBJdCBpcyBh
bHdheXMgdGhlIGdlbmVyYXRpbmcgbm9kZSdzIHJlbmRlcmVyCisgICAgY2FzZSBBRlRFUjoKKyAg
ICAgICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CisgICAg
ICAgIHNpYmxpbmcgPSBwYXJlbnQtPmxhc3RFbGVtZW50Q2hpbGQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICB3aGlsZSAoc2libGluZykgeworICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIGFmdGVyID0gcmVuZGVyZXItPmFmdGVyUHNldWRvRWxlbWVudFJlbmRl
cmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFmdGVyOworICAgICAgICAgICAgcGFyZW50
ID0gc2libGluZzsKKyAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5sYXN0RWxlbWVudENo
aWxkKCk7CisgICAgICAgICAgICBpZiAoIXNpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBiZWZvcmUgPSByZW5kZXJlci0+YmVmb3JlUHNldWRvRWxlbWVudFJlbmRl
cmVyKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiZWZvcmU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CisgICAg
fQorICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOyAvLyBTaG91bGQgbmV2ZXIgYmUgbnVsbAor
ICAgIGlmIChSZW5kZXJPYmplY3QqIGJlZm9yZSA9IHJlbmRlcmVyLT5iZWZvcmVQc2V1ZG9FbGVt
ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGJlZm9yZTsKKyAgICByZXR1cm4gcmVuZGVy
ZXI7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGlu
IHRoZSBvcmRlciBvZiB0aGUgRE9NIHRyZWUKKy8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMg
YXMgZGVmaW5lZCBpbiBDU1MgMi4xLgorLy8gQW5vbnltb3VzIHJlbmRlcmVycyBhcmUgc2tpcHBl
ZCBleGNlcHQgZm9yIHRob3NlIHJlcHJlc2VudGluZyBwc2V1ZG8gZWxlbWVudHMuCitzdGF0aWMg
UmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChjb25zdCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBFbGVtZW50KiBwYXJlbnQ7CisgICAgRWxlbWVudCogc2libGluZzsK
KyAgICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkpIHsKKyAgICBjYXNlIE5P
UFNFVURPOgorICAgICAgICBBU1NFUlQoIW9iamVjdC0+aXNBbm9ueW1vdXMoKSk7CisgICAgICAg
IHBhcmVudCA9IHRvRWxlbWVudChvYmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNpYmxpbmcgPSBw
YXJlbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQkVGT1JFOgorICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpLT5yZW5kZXJlcigpOyAvLyBJdCBp
cyBhbHdheXMgdGhlIGdlbmVyYXRpbmcgbm9kZSdzIHJlbmRlcmVyCisgICAgY2FzZSBBRlRFUjoK
KyAgICAgICAgcGFyZW50ID0gdG9FbGVtZW50KG9iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7Cisg
ICAgICAgIHNpYmxpbmcgPSBwYXJlbnQtPmxhc3RFbGVtZW50Q2hpbGQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICB3aGlsZSAoc2libGluZykgeworICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpIC8vIFRoaXMgc2tpcHMg
aW52aXNpYmxlIG5vZGVzCisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIHNp
YmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CisgICAgfQorICAgIGlm
IChwYXJlbnQpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogYmVmb3JlID0gcmVuZGVyZXItPnZp
cnR1YWxDaGlsZHJlbigpLT5iZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIocmVuZGVyZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGJlZm9yZTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCktPnN0eWxl
VHlwZSgpKSB7CisgICAgY2FzZSBOT1BTRVVETzoKKyAgICAgICAgQVNTRVJUKCFvYmplY3QtPmlz
QW5vbnltb3VzKCkpOworICAgICAgICByZXR1cm4gdG9FbGVtZW50KG9iamVjdC0+bm9kZSgpKS0+
cGFyZW50RWxlbWVudCgpOworICAgIGNhc2UgQkVGT1JFOgorICAgIGNhc2UgQUZURVI6CisgICAg
ICAgIHJldHVybiB0b0VsZW1lbnQob2JqZWN0LT5nZW5lcmF0aW5nTm9kZSgpKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCitzdGF0aWMgaW5saW5lIGJvb2wgYXJlUmVuZGVyZXJzRWxlbWVudHNTaWJsaW5n
cyhSZW5kZXJPYmplY3QqIGZpcnN0LCBSZW5kZXJPYmplY3QqIHNlY29uZCkKK3sKKyAgICByZXR1
cm4gcGFyZW50RWxlbWVudChmaXJzdCkgPT0gcGFyZW50RWxlbWVudChzZWNvbmQpOworfQorCisv
LyBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgcmVuZGVyZXIgdHJlZSBpbiB0aGUgb3JkZXIg
b2YgdGhlIERPTSB0cmVlCisvLyBpbmNsdWRpbmcgcHNldWRvIGVsZW1lbnRzIGFzIGRlZmluZWQg
aW4gQ1NTIDIuMS4KKy8vIEFub255bW91cyByZW5kZXJlcnMgYXJlIHNraXBwZWQgZXhjZXB0IGZv
ciB0aG9zZSByZXByZXNlbnRpbmcgcHNldWRvIGVsZW1lbnRzLgorc3RhdGljIFJlbmRlck9iamVj
dCogbmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEVsZW1l
bnQqIHN0YXlXaXRoaW4sIGJvb2wgc2tpcERlc2NlbmRhbnRzID0gZmFsc2UpCit7CisgICAgRWxl
bWVudCogc2VsZjsKKyAgICBFbGVtZW50KiBjaGlsZDsKKyAgICBSZW5kZXJPYmplY3QqIHJlc3Vs
dDsKKyAgICBzZWxmID0gdG9FbGVtZW50KG9iamVjdC0+Z2VuZXJhdGluZ05vZGUoKSk7CisgICAg
aWYgKHNraXBEZXNjZW5kYW50cykKKyAgICAgICAgZ290byBuZXh0c2libGluZzsKKyAgICBzd2l0
Y2ggKG9iamVjdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkpIHsKKyAgICBjYXNlIE5PUFNFVURPOgor
ICAgICAgICBBU1NFUlQoIW9iamVjdC0+aXNBbm9ueW1vdXMoKSk7CisgICAgICAgIHJlc3VsdCA9
IG9iamVjdC0+YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZXN1
bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEJFRk9SRToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBRlRFUjoKKyAgICAgICAgZ290byBu
ZXh0c2libGluZzsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNoaWxkID0gc2VsZi0+Zmlyc3RFbGVtZW50
Q2hpbGQoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGNoaWxkLT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgY2hpbGQg
PSBjaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0
ID0gc2VsZi0+cmVuZGVyZXIoKS0+YWZ0ZXJQc2V1ZG9FbGVtZW50UmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CituZXh0c2libGluZzoK
KyAgICAgICAgaWYgKHNlbGYgPT0gc3RheVdpdGhpbikKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBjaGlsZCA9IHNlbGYtPm5leHRFbGVtZW50U2libGluZygpOworICAgICAgICBzZWxm
ID0gc2VsZi0+cGFyZW50RWxlbWVudCgpOworICAgICAgICBpZiAoIXNlbGYpIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghY2hpbGQpOyAvLyBXZSBjYW4gb25seSByZWFjaCB0aGlzIGlmIHdlIGFyZSBz
ZWFyY2hpbmcgYmV5b25kIHRoZSByb290IGVsZW1lbnQKKyAgICAgICAgICAgIHJldHVybiAwOyAv
LyAgd2hpY2ggY2Fubm90IGhhdmUgc2libGluZ3MKKyAgICAgICAgfQorICAgIH0KIH0KIAogc3Rh
dGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0
cmluZyYgaWRlbnRpZmllciwgYm9vbCYgaXNSZXNldCwgaW50JiB2YWx1ZSkKQEAgLTYxLDEwICsy
MDgsMjcgQEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm8KICAgICAvLyBXZSBjYW4ndCBldmVuIGxv
b2sgYXQgdGhlaXIgc3R5bGVzIG9yIHdlJ2xsIHNlZSBleHRyYSByZXNldHMgYW5kIGluY3JlbWVu
dHMhCiAgICAgaWYgKG9iamVjdC0+aXNUZXh0KCkgJiYgIW9iamVjdC0+aXNCUigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KKyAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSA9IG9iamVjdC0+Z2Vu
ZXJhdGluZ05vZGUoKTsKKyAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5vZGUgb3Ig
ZWxzZSB3ZSBjYW5ub3QgaGF2ZSBhIGNvdW50ZXIuCisgICAgaWYgKCFnZW5lcmF0aW5nTm9kZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+
c3R5bGUoKTsKICAgICBBU1NFUlQoc3R5bGUpOwogCisgICAgc3dpdGNoIChzdHlsZS0+c3R5bGVU
eXBlKCkpIHsKKyAgICBjYXNlIE5PUFNFVURPOgorICAgICAgICAvLyBTb21ldGltZXMgbm9kZXMg
aGF2ZSBtb3JlIHRoZW4gb25lIHJlbmRlcmVyLiBPbmx5IHRoZSBmaXJzdCBvbmUgZ2V0cyB0aGUg
Y291bnRlcgorICAgICAgICAvLyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9jb3VudGVyLWNy
YXNoLmh0bWwKKyAgICAgICAgaWYgKGdlbmVyYXRpbmdOb2RlLT5yZW5kZXJlcigpICE9IG9iamVj
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBC
RUZPUkU6CisgICAgY2FzZSBBRlRFUjoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDb3VudGVycyBhcmUgZm9yYmlkZGVuIGZyb20gYWxsIG90
aGVyIHBzZXVkbyBlbGVtZW50cy4KKyAgICB9CisKICAgICBpZiAoY29uc3QgQ291bnRlckRpcmVj
dGl2ZU1hcCogZGlyZWN0aXZlc01hcCA9IHN0eWxlLT5jb3VudGVyRGlyZWN0aXZlcygpKSB7CiAg
ICAgICAgIENvdW50ZXJEaXJlY3RpdmVzIGRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzTWFwLT5nZXQo
aWRlbnRpZmllci5pbXBsKCkpOwogICAgICAgICBpZiAoZGlyZWN0aXZlcy5tX3Jlc2V0KSB7CkBA
IC0xMzMsNyArMjk3LDcgQEAgc3RhdGljIGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJP
YmplY3QqIGNvdW50ZXJPd25lciwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIC8vIFdlIGNoZWNr
IHJlbmRlcmVycyBpbiBwcmVPcmRlciBmcm9tIHRoZSByZW5kZXJlciB0aGF0IG91ciBjb3VudGVy
IGlzIGF0dGFjaGVkIHRvCiAgICAgLy8gdG93YXJkcyB0aGUgYmVnaW5pbmcgb2YgdGhlIGRvY3Vt
ZW50IGZvciBjb3VudGVycyB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgYXMgdGhlIG9uZQogICAg
IC8vIHdlIGFyZSB0cnlpbmcgdG8gZmluZCBhIHBsYWNlIGZvci4gVGhpcyBpcyB0aGUgbmV4dCBy
ZW5kZXJlciB0byBiZSBjaGVja2VkLgotICAgIFJlbmRlck9iamVjdCogY3VycmVudFJlbmRlcmVy
ID0gY291bnRlck93bmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKTsKKyAgICBSZW5kZXJPYmplY3Qq
IGN1cnJlbnRSZW5kZXJlciA9IHByZXZpb3VzSW5QcmVPcmRlcihjb3VudGVyT3duZXIpOwogICAg
IHByZXZpb3VzU2libGluZyA9IDA7CiAgICAgd2hpbGUgKGN1cnJlbnRSZW5kZXJlcikgewogICAg
ICAgICBDb3VudGVyTm9kZSogY3VycmVudENvdW50ZXIgPSBtYWtlQ291bnRlck5vZGUoY3VycmVu
dFJlbmRlcmVyLCBpZGVudGlmaWVyLCBmYWxzZSk7CkBAIC0xNDQsNyArMzA4LDcgQEAgc3RhdGlj
IGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIGNvdW50ZXJPd25lciwgY29u
c3QgQXRvbWljU3RyaW5nJgogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHsg
Ly8gQnV0IHdlIGFscmVhZHkgZm91bmQgYW5vdGhlciBjb3VudGVyIHRoYXQgd2UgY29tZSBhZnRl
ci4KICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb3VudGVyLT5hY3RzQXNSZXNldCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIHJlc2V0IGNvdW50ZXIg
dGhhdCBpcyBvbiBhIHJlbmRlcmVyIHRoYXQgaXMgYSBzaWJsaW5nIG9mIG91cnMgb3IgYSBwYXJl
bnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAmJiBjdXJyZW50UmVuZGVy
ZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc1Jlc2V0ICYmIGFyZVJlbmRlcmVyc0VsZW1lbnRzU2libGluZ3MoY3Vy
cmVudFJlbmRlcmVyLCBjb3VudGVyT3duZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgYXJlIGFsc28gYSByZXNldCBjb3VudGVyIGFuZCB0aGUgcHJldmlvdXMgcmVzZXQg
d2FzIG9uIGEgc2libGluZyByZW5kZXJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGhlbmNlIHdlIGFyZSB0aGUgbmV4dCBzaWJsaW5nIG9mIHRoYXQgY291bnRlciBpZiB0aGF0IHJl
c2V0IGlzIG5vdCBhIHJvb3Qgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBh
cmUgYSByb290IG5vZGUgaWYgdGhhdCByZXNldCBpcyBhIHJvb3QuCkBAIC0xNTksNyArMzIzLDcg
QEAgc3RhdGljIGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIGNvdW50ZXJP
d25lciwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLy8gQ3Vy
cmVudENvdW50ZXIsIHRoZSBjb3VudGVyIGF0IHRoZSBFbmRTZWFyY2hSZW5kZXJlciwgaXMgbm90
IHJlc2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXQgfHwgY3VycmVudFJlbmRl
cmVyLT5wYXJlbnQoKSAhPSBjb3VudGVyT3duZXItPnBhcmVudCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghaXNSZXNldCB8fCAhYXJlUmVuZGVyZXJzRWxlbWVudHNTaWJsaW5ncyhjdXJy
ZW50UmVuZGVyZXIsIGNvdW50ZXJPd25lcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoZSBub2RlIHdlIGFyZSBwbGFjaW5nIGlzIG5vdCByZXNldCBvciB3ZSBoYXZlIGZvdW5k
IGEgY291bnRlciB0aGF0IGlzIGF0dGFjaGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
byBhbiBhbmNlc3RvciBvZiB0aGUgcGxhY2VkIGNvdW50ZXIncyByZW5kZXJlciB3ZSBrbm93IHdl
IGFyZSBhIHNpYmxpbmcgb2YgdGhhdCBub2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGN1cnJlbnRDb3VudGVyLT5wYXJlbnQoKSA9PSBwcmV2aW91c1NpYmxpbmctPnBhcmVudCgp
KTsKQEAgLTE3Miw3ICszMzYsNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJl
bmRlck9iamVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHByZXZpb3VzU2libGluZywgYW5kIHdoZW4gd2UgYXJlIGEgc2libGluZyBv
ZiB0aGUgZW5kIGNvdW50ZXIgd2UgbXVzdCBzZXQgcHJldmlvdXNTaWJsaW5nCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHRvIGN1cnJlbnRDb3VudGVyLgogICAgICAgICAgICAgICAgICAgICBpZiAo
Y3VycmVudENvdW50ZXItPmFjdHNBc1Jlc2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc1Jlc2V0ICYmIGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgPT0gY291bnRlck93bmVy
LT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzZXQgJiYgYXJl
UmVuZGVyZXJzRWxlbWVudHNTaWJsaW5ncyhjdXJyZW50UmVuZGVyZXIsIGNvdW50ZXJPd25lcikp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+
cGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0g
Y3VycmVudENvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dDsKQEAgLTE4MCw3ICszNDQsNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJl
bmRlck9iamVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghaXNSZXNldCB8fCBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpICE9IGNvdW50
ZXJPd25lci0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2V0IHx8
ICFhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxpbmdzKGN1cnJlbnRSZW5kZXJlciwgY291bnRlck93
bmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXIt
PnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3Vy
cmVudENvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIw
NSw3ICszNjksNyBAQCBzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9iamVj
dCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJyZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIGFyZSBubyBsb25nZXIgaW50ZXJlc3RlZCBpbiBwcmV2aW91cyBzaWJsaW5n
cyBvZiB0aGUgY3VycmVudFJlbmRlcmVyIG9yIHRoZWlyIGNoaWxkcmVuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhcyBjb3VudGVycyB0aGV5IG1heSBoYXZlIGF0dGFjaGVkIGNhbm5vdCBi
ZSB0aGUgcHJldmlvdXMgc2libGluZyBvZiB0aGUgY291bnRlciB3ZSBhcmUgcGxhY2luZy4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IGN1cnJlbnRSZW5kZXJlci0+
cGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBwYXJl
bnRFbGVtZW50KGN1cnJlbnRSZW5kZXJlciktPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0gZWxzZQpAQCAtMjU2LDI4ICs0MjAsMjggQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291
bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKICAg
ICAgICAgb2JqZWN0LT5tX2hhc0NvdW50ZXJOb2RlTWFwID0gdHJ1ZTsKICAgICB9CiAgICAgbm9k
ZU1hcC0+c2V0KGlkZW50aWZpZXIuaW1wbCgpLCBuZXdOb2RlKTsKLSAgICBpZiAobmV3Tm9kZS0+
cGFyZW50KCkgfHwgIW9iamVjdC0+bmV4dEluUHJlT3JkZXIob2JqZWN0LT5wYXJlbnQoKSkpCisg
ICAgaWYgKG5ld05vZGUtPnBhcmVudCgpKQogICAgICAgICByZXR1cm4gbmV3Tm9kZS5nZXQoKTsK
ICAgICAvLyBDaGVja2luZyBpZiBzb21lIG5vZGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGNvdW50
ZXIgdHJlZSByb290IG5vZGVzCiAgICAgLy8gc2hvdWxkIGJlY29tZSBjaGlsZHJlbiBvZiB0aGlz
IG5vZGUgbm93LgogICAgIENvdW50ZXJNYXBzJiBtYXBzID0gY291bnRlck1hcHMoKTsKLSAgICBS
ZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4gPSBvYmplY3QtPnBhcmVudCgpOwotICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIgPSBvYmplY3QtPm5leHRJblByZU9yZGVyKHN0YXlX
aXRoaW4pOyBjdXJyZW50UmVuZGVyZXI7IGN1cnJlbnRSZW5kZXJlciA9IGN1cnJlbnRSZW5kZXJl
ci0+bmV4dEluUHJlT3JkZXIoc3RheVdpdGhpbikpIHsKKyAgICBFbGVtZW50KiBzdGF5V2l0aGlu
ID0gcGFyZW50RWxlbWVudChvYmplY3QpOworICAgIGJvb2wgc2tpcERlc2NlbmRhbnRzOworICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5QcmVPcmRlcihvYmpl
Y3QsIHN0YXlXaXRoaW4pOyBjdXJyZW50UmVuZGVyZXI7IGN1cnJlbnRSZW5kZXJlciA9IG5leHRJ
blByZU9yZGVyKGN1cnJlbnRSZW5kZXJlciwgc3RheVdpdGhpbiwgc2tpcERlc2NlbmRhbnRzKSkg
eworICAgICAgICBza2lwRGVzY2VuZGFudHMgPSBmYWxzZTsKICAgICAgICAgaWYgKCFjdXJyZW50
UmVuZGVyZXItPm1faGFzQ291bnRlck5vZGVNYXApCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQoY3VycmVudFJlbmRl
cmVyKS0+Z2V0KGlkZW50aWZpZXIuaW1wbCgpKS5nZXQoKTsKICAgICAgICAgaWYgKCFjdXJyZW50
Q291bnRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBza2lwRGVzY2VuZGFudHMg
PSB0cnVlOwogICAgICAgICBpZiAoY3VycmVudENvdW50ZXItPnBhcmVudCgpKSB7CiAgICAgICAg
ICAgICBBU1NFUlQobmV3Tm9kZS0+Zmlyc3RDaGlsZCgpKTsKLSAgICAgICAgICAgIGlmIChjdXJy
ZW50UmVuZGVyZXItPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJl
ciA9IGN1cnJlbnRSZW5kZXJlci0+bGFzdENoaWxkKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoc3RheVdpdGhpbiAhPSBjdXJyZW50UmVuZGVyZXItPnBh
cmVudCgpIHx8ICFjdXJyZW50Q291bnRlci0+aGFzUmVzZXRUeXBlKCkpCi0gICAgICAgICAgICBu
ZXdOb2RlLT5pbnNlcnRBZnRlcihjdXJyZW50Q291bnRlciwgbmV3Tm9kZS0+bGFzdENoaWxkKCks
IGlkZW50aWZpZXIpOwotICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyLT5sYXN0Q2hpbGQoKSkK
LSAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IGN1cnJlbnRSZW5kZXJlci0+bGFzdENoaWxk
KCk7CisgICAgICAgIGlmIChzdGF5V2l0aGluID09IHBhcmVudEVsZW1lbnQoY3VycmVudFJlbmRl
cmVyKSAmJiBjdXJyZW50Q291bnRlci0+aGFzUmVzZXRUeXBlKCkpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgbmV3Tm9kZS0+aW5zZXJ0QWZ0ZXIoY3VycmVudENvdW50ZXIsIG5ld05vZGUt
Pmxhc3RDaGlsZCgpLCBpZGVudGlmaWVyKTsKICAgICB9CiAgICAgcmV0dXJuIG5ld05vZGUuZ2V0
KCk7CiB9CkBAIC00NDQsMTIgKzYwOCwyMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDb3VudGVycyhS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3Vi
dHJlZUF0dGFjaGVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CisgICAgTm9kZSogbm9kZSA9
IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKG5vZGUpCisgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCk7CisgICAgZWxzZQorICAgICAgICBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRp
bmdOb2RlKCk7CisgICAgaWYgKG5vZGUgJiYgIW5vZGUtPmF0dGFjaGVkKCkpCisgICAgICAgIHJl
dHVybjsgLy8gTm8gbmVlZCB0byB1cGRhdGUgaWYgdGhlIHBhcmVudCBpcyBub3QgYXR0YWNoZWQg
eWV0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSByZW5kZXJlcjsgZGVzY2Vu
ZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVyKHJlbmRlcmVyKSkK
ICAgICAgICAgdXBkYXRlQ291bnRlcnMoZGVzY2VuZGFudCk7CiB9CiAKIHZvaWQgUmVuZGVyQ291
bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCiB7Cisg
ICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5nZW5lcmF0aW5nTm9kZSgpOworICAgIGlmICghbm9k
ZSB8fCAhbm9kZS0+YXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuOyAvLyBjYW5ub3QgaGF2ZSBn
ZW5lcmF0ZWQgY29udGVudCBvciBpZiBpdCBjYW4gaGF2ZSwgaXQgd2lsbCBiZSBoYW5kbGVkIGR1
cmluZyBhdHRhY2hpbmcKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBuZXdDb3VudGVy
RGlyZWN0aXZlczsKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBvbGRDb3VudGVyRGly
ZWN0aXZlczsKICAgICBpZiAob2xkU3R5bGUgJiYgKG9sZENvdW50ZXJEaXJlY3RpdmVzID0gb2xk
U3R5bGUtPmNvdW50ZXJEaXJlY3RpdmVzKCkpKSB7CkBAIC00ODksMyArNjYzLDI3IEBAIHZvaWQg
UmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgUmVuZGVyU3R5CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2lmbmRl
ZiBOREVCVUcKKwordm9pZCBzaG93Q291bnRlclJlbmRlcmVyVHJlZShjb25zdCBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFyKiBjb3VudGVyTmFtZSkKK3sKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgV2ViQ29yZTo6UmVuZGVy
T2JqZWN0KiByb290ID0gcmVuZGVyZXI7CisgICAgd2hpbGUgKHJvb3QtPnBhcmVudCgpKQorICAg
ICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmll
cihjb3VudGVyTmFtZSk7CisgICAgZm9yIChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIGN1
cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dEluUHJlT3JkZXIo
KSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwgKGN1cnJlbnQgPT0gcmVuZGVyZXIp
ID8gJyonIDogJyAnKTsKKyAgICAgICAgZm9yIChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
IHBhcmVudCA9IGN1cnJlbnQ7IHBhcmVudCAmJiBwYXJlbnQgIT0gcm9vdDsgcGFyZW50ID0gcGFy
ZW50LT5wYXJlbnQoKSkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICIpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwIE46JXAgUDolcCBQUzolcCBOUzolcCBDOiVwXG4iLAor
ICAgICAgICAgICAgY3VycmVudCwgY3VycmVudC0+bm9kZSgpLCBjdXJyZW50LT5wYXJlbnQoKSwg
Y3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCksCisgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2li
bGluZygpLCBjdXJyZW50LT5tX2hhc0NvdW50ZXJOb2RlTWFwPworICAgICAgICAgICAgY291bnRl
ck5hbWUgPyBXZWJDb3JlOjpjb3VudGVyTWFwcygpLmdldChjdXJyZW50KS0+Z2V0KGlkZW50aWZp
ZXIuaW1wbCgpKS5nZXQoKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpD
b3VudGVyTm9kZSopMCk7CisgICAgfQorfQorCisjZW5kaWYgLy8gTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCA5MzczMTkzLi5kZTBlZTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTY3LDQgKzY3LDkgQEAg
dm9pZCB0b1JlbmRlckNvdW50ZXIoY29uc3QgUmVuZGVyQ291bnRlciopOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKKyNpZm5kZWYgTkRFQlVHCisvLyBPdXRzaWRlIHRoZSBXZWJDb3JlIG5h
bWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gZ2RiLgordm9pZCBzaG93Q291bnRl
clJlbmRlcmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBjaGFyKiBj
b3VudGVyTmFtZSA9IDApOworI2VuZGlmCisKICNlbmRpZiAvLyBSZW5kZXJDb3VudGVyX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>