<?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>57665</bug_id>
          
          <creation_ts>2011-04-01 14:56:34 -0700</creation_ts>
          <short_desc>[Mac] WebCore need to notify AppKit spell checker after user has modified autocorrected text.</short_desc>
          <delta_ts>2011-04-06 09:10:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jia Pu">jiapu.mail</reporter>
          <assigned_to name="Jia Pu">jiapu.mail</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddavidso</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>378104</commentid>
    <comment_count>0</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-01 14:56:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/7350477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378181</commentid>
    <comment_count>1</comment_count>
      <attachid>87937</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-01 16:22:21 -0700</bug_when>
    <thetext>Created attachment 87937
Patch (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378208</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-01 16:47:09 -0700</bug_when>
    <thetext>Attachment 87937 did not build on qt:
Build output: http://queues.webkit.org/results/8185320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378214</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 16:58:49 -0700</bug_when>
    <thetext>Attachment 87937 did not build on chromium:
Build output: http://queues.webkit.org/results/8320314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378245</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-01 17:37:43 -0700</bug_when>
    <thetext>editing/Editor.cpp:127: error: ‘bool WebCore::markersHaveIdenticalDescription(const WTF::Vector&lt;WebCore::DocumentMarker, 0u&gt;&amp;)’ defined but not used

Sounds like that function has to be moved inside the #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378812</commentid>
    <comment_count>5</comment_count>
      <attachid>88065</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-04 09:02:09 -0700</bug_when>
    <thetext>Created attachment 88065
Patch (v2)

Fixed a build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378836</commentid>
    <comment_count>6</comment_count>
      <attachid>88065</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 09:49:44 -0700</bug_when>
    <thetext>Comment on attachment 88065
Patch (v2)

View in context: https://bugs.webkit.org/attachment.cgi?id=88065&amp;action=review

&gt; Source/WebCore/dom/DocumentMarkerController.cpp:351
&gt; +            if (node == startContainer &amp;&amp; node == endContainer) {
&gt; +                // The range spans only one node.
&gt; +                if (it-&gt;endOffset &gt; static_cast&lt;unsigned&gt;(range-&gt;startOffset()) &amp;&amp; it-&gt;startOffset &lt; static_cast&lt;unsigned&gt;(range-&gt;endOffset()))
&gt; +                    foundMarkers.append(*it);
&gt; +            } else {
&gt; +                if (node == startContainer) {
&gt; +                    if (it-&gt;endOffset &gt; static_cast&lt;unsigned&gt;(range-&gt;startOffset()))
&gt; +                        foundMarkers.append(*it);
&gt; +                } else if (node == endContainer) {
&gt; +                    if (it-&gt;startOffset &lt; static_cast&lt;unsigned&gt;(range-&gt;endOffset()))
&gt; +                        foundMarkers.append(*it);
&gt; +                } else
&gt; +                    foundMarkers.append(*it);

I think that with continue you could write this with less repeated code:

    if (node == startContainer &amp;&amp; it-&gt;endOffset &lt;= static_cast&lt;unsigned&gt;(range-&gt;startOffset()))
        continue;
    if (node == endContainer &amp;&amp; it-&gt;startOffset &gt;= static_cast&lt;unsigned&gt;(range-&gt;endOffset()))
        continue;
    foundMarkers.append(*it);

Cuts it down from 13 lines of code to 5 and I think it doesn’t lose clarity.

If this logic was copied from another function, I suggest the same simplification for that other function.

&gt; Source/WebCore/editing/Editor.cpp:2451
&gt; +                        Range* range = replacedRange.get();

I don’t think this local variable does us much good.

&gt; Source/WebCore/editing/Editor.cpp:2784
&gt; +        DocumentMarker::MarkerType markerType = markerTypesToAdd[i];
&gt; +        Range* range = replacementRange.get();
&gt;          if (m_correctionPanelInfo.panelType == CorrectionPanelInfo::PanelTypeReversion)
&gt; -            markers-&gt;addMarker(replacementRange.get(), markerTypesToAdd[i]);
&gt; -        else
&gt; -            markers-&gt;addMarker(replacementRange.get(), markerTypesToAdd[i], m_correctionPanelInfo.replacedString);
&gt; +            markers-&gt;addMarker(range, markerType);
&gt; +        else {
&gt; +            if (markerType == DocumentMarker::Replacement || markerType == DocumentMarker::Autocorrected)
&gt; +                markers-&gt;addMarker(range, markerType, m_correctionPanelInfo.replacedString);
&gt; +            else
&gt; +                markers-&gt;addMarker(range, markerType);
&gt; +        }

I think the logic here could be streamlined a bit. The different branches of the if statement look almost the same to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379076</commentid>
    <comment_count>7</comment_count>
      <attachid>88129</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-04 14:23:49 -0700</bug_when>
    <thetext>Created attachment 88129
Patch (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379206</commentid>
    <comment_count>8</comment_count>
      <attachid>88129</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 16:44:16 -0700</bug_when>
    <thetext>Comment on attachment 88129
Patch (v3)

View in context: https://bugs.webkit.org/attachment.cgi?id=88129&amp;action=review

&gt; Source/WebCore/dom/DocumentMarker.h:40
&gt; +        // Text has been modified by spell correction, reversion of spell correction or other types of substitution. 

This would be better worded as &quot;or other type&quot; rather than &quot;or other types&quot;.

&gt; Source/WebCore/dom/DocumentMarker.h:41
&gt; +        // On some platforms, this prevents the text to be autocorrected again. On post Snow Leopard Mac OS X, 

Correct grammar would be &quot;prevents the text from being autocorrected&quot;.

&gt; Source/WebCore/dom/DocumentMarker.h:54
&gt;          // On some platforms, this prevents the text to be spellchecked again.

Grammar: should be &quot;from being spellchecked&quot; rather than &quot;to be spellchecked&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379293</commentid>
    <comment_count>9</comment_count>
      <attachid>88129</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-04 19:09:38 -0700</bug_when>
    <thetext>Comment on attachment 88129
Patch (v3)

Rejecting attachment 88129 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-7&apos;, &apos;build&apos;...&quot; exit_code: 2

Last 500 characters of output:
env XCODE_VERSION_MINOR 0320
    setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/Editor.o /mnt/git/webkit-commit-queue/Source/WebCore/editing/Editor.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/8329408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379890</commentid>
    <comment_count>10</comment_count>
      <attachid>88315</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-05 15:05:12 -0700</bug_when>
    <thetext>Created attachment 88315
Patch (v4)

Resovled conflict with TOT. Rearranged some code to fix build failure on SnowLeopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380058</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-05 19:36:50 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 88315:

media/invalid-media-url-crash.html bug 51138 (authors: inferno@chromium.org and jamesr@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380059</commentid>
    <comment_count>12</comment_count>
      <attachid>88315</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-05 19:38:46 -0700</bug_when>
    <thetext>Comment on attachment 88315
Patch (v4)

Rejecting attachment 88315 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-8&apos;, &apos;land-a...&quot; exit_code: 1

Last 500 characters of output:
M	Source/WebKit/chromium/public/WebContextMenuData.h
r83008 = aaf08a4819113308ab54f5e0c3073aa0f941412b (refs/remotes/trunk)
	M	Tools/ChangeLog
	M	Tools/Scripts/webkitpy/layout_tests/port/chromium.py
	M	Tools/Scripts/webkitpy/layout_tests/port/test.py
	M	Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py
r83009 = 8487ee9f890e2780cd7a6371494ec208403cad35 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/8341030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380319</commentid>
    <comment_count>13</comment_count>
      <attachid>88409</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-06 06:48:49 -0700</bug_when>
    <thetext>Created attachment 88409
Patch (v5)

Resovled conflict with Added missing &quot;Reviewed by ...&quot; line in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380320</commentid>
    <comment_count>14</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-06 06:49:58 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=88409) [details]
&gt; Patch (v5)
&gt; 
&gt; Resovled conflict with Added missing &quot;Reviewed by ...&quot; line in previous patch.

Correction, it should read: Added missing &quot;Reviewed by ...&quot; line in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380456</commentid>
    <comment_count>15</comment_count>
      <attachid>88409</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 09:09:53 -0700</bug_when>
    <thetext>Comment on attachment 88409
Patch (v5)

Clearing flags on attachment: 88409

Committed r83060: &lt;http://trac.webkit.org/changeset/83060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380459</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 09:10:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87937</attachid>
            <date>2011-04-01 16:22:21 -0700</date>
            <delta_ts>2011-04-04 09:02:06 -0700</delta_ts>
            <desc>Patch (v1)</desc>
            <filename>bug-57665-20110401162220.patch</filename>
            <type>text/plain</type>
            <size>21405</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZmU0MWYyOWJkMGY3NDhj
ZWI5YWY0MjRjNDAxN2NiZGZhMzkxZjk5Li5jYTBkYTRmYjRjNDZjMGJhOWNhYzA1YTI5ODNiYzRk
ZjE0MjkxY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDEgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW01hY10gV2ViQ29yZSBuZWVkIHRvIG5vdGlmeSBBcHBLaXQgc3BlbGwgY2hl
Y2tlciBhZnRlciB1c2VyIGhhcyBtb2RpZmllZCBhdXRvY29ycmVjdGVkIHRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzM1MDQ3Nz4KKworICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIGhvdyB1
c2VyIG1vZGlmaWVkIGFuIGF1dG9jb3JyZWN0ZWQgd29yZC4gSWYgaGUgY2hhbmdlZCBpdCBiYWNr
IHRvIG9yaWdpbmFsCisgICAgICAgIHRleHQsIHdlIHdhbnQgdG8gcmVjb3JkIEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgcmVzcG9uc2UuIEFuZCBpZiBoZSBjaGFuZ2VkIGl0IHRvIHNvbWV0aGluZwor
ICAgICAgICBlbHNlLCB3ZSB3YW50IHRvIHJlY29yZCBBdXRvY29ycmVjdGlvbkVkaXRlZCByZXNw
b25zZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHdlIG5lZWQgdG8gZGlzdHJpbmd1aXNo
IGJldHdlZW4gdGV4dCByZXBsYWNlbWVudCBjYXVzZWQgYnkgYXV0b2NvcnJlY3Rpb24KKyAgICAg
ICAgZnJvbSB0aGF0IGR1ZSB0byBvdGhlciBjYXVzZXMsIHN1Y2ggYXMgcmV2ZXJzaW9uLCB0ZXh0
IHN1YnN0aXR1dGlvbiwgZXRjLiBTbyB3ZSBhZGRlZCBhIG5ldworICAgICAgICBtYXJrZXIgdHlw
ZSAiQXV0b2NvcnJlY3RlZCIuIFdlIGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIGNoZWNrIGZvciBj
b3JyZWN0aW9uLCBldmVuIHdoZW4gd2UKKyAgICAgICAgZG9uJ3QgaW50ZW5kIHRvIGFjdHVhbGx5
IGNhcnJ5IG91dCByZXBsYWNlbWVudC4gRm9yIHRoaXMsIHdlIGludHJvZHVjZWQgYSBuZXcgVGV4
dENoZWNraW5nT3B0aW9uCisgICAgICAgIHZhbHVlLCAiQ2hlY2tGb3JDb3JyZWN0aW9uIi4KKwor
ICAgICAgICBXZSBhbHNvIGFkZGVkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6bWFya2Vyc0lu
UmFuZ2UoKSB0byByZXRyaWV2ZSBhIHZlY3RvciBvZiBtYXJrZXJzIGluCisgICAgICAgIHNwZWNp
ZmllZCByYW5nZSwgYW5kIG9mIHNwZWNpZmllZCB0eXBlLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJh
bmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVHlwZXNGb3JB
dXRvY29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5n
ZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBs
eUNvcnJlY3Rpb25QYW5lbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDExLTAzLTIzICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCmluZGV4
IDgxMTEyYmZjMWMzY2FkOGZlYTEzZjMyZDIwYWZjNDg2Nzg5ZjI2OTMuLjI4NzM5M2M1OTRhNjY1
NDk5ZmE4MDgyNGU5Y2VmNmRjMGRiNTg0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ci5oCkBAIC0zNyw5ICszNyw5IEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7CiAgICAgICAgIFNw
ZWxsaW5nID0gMSA8PCAwLAogICAgICAgICBHcmFtbWFyID0gMSA8PCAxLAogICAgICAgICBUZXh0
TWF0Y2ggPSAxIDw8IDIsCi0gICAgICAgIC8vIFRleHQgaGFzIGJlZW4gbW9kaWZpZWQgYnkgc3Bl
bGwgY29ycmVjdGlvbi4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQK
LSAgICAgICAgLy8gdG8gYmUgYXV0b2NvcnJlY3RlZCBhZ2Fpbi4gT24gcG9zdCBTbm93IExlb3Bh
cmQgTWFjIE9TIFgsIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zCi0gICAgICAgIC8v
IG5vbi1lbXB0eSBkZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KKyAg
ICAgICAgLy8gVGV4dCBoYXMgYmVlbiBtb2RpZmllZCBieSBzcGVsbCBjb3JyZWN0aW9uLCByZXZl
cnNpb24gb2Ygc3BlbGwgY29ycmVjdGlvbiBvciBvdGhlciB0eXBlcyBvZiBzdWJzdGl0dXRpb24u
IAorICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0
byBiZSBhdXRvY29ycmVjdGVkIGFnYWluLiBPbiBwb3N0IFNub3cgTGVvcGFyZCBNYWMgT1MgWCwg
CisgICAgICAgIC8vIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zIG5vbi1lbXB0eSBk
ZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KICAgICAgICAgUmVwbGFj
ZW1lbnQgPSAxIDw8IDMsCiAgICAgICAgIC8vIFJlbmRlcmVyIG5lZWRzIHRvIGFkZCB1bmRlcmxp
bmUgaW5kaWNhdGluZyB0aGF0IHRoZSB0ZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IHNwZWxsCiAg
ICAgICAgIC8vIGNvcnJlY3Rpb24uIFRleHQgd2l0aCBSZXBsYWNlbWVudCBtYXJrZXIgZG9lc24n
dCBuZWNlc3NhcmlseSBoYXMgQ29ycmVjdGlvbkluZGljYXRvcgpAQCAtNDksOSArNDksMTEgQEAg
c3RydWN0IERvY3VtZW50TWFya2VyIHsKICAgICAgICAgQ29ycmVjdGlvbkluZGljYXRvciA9IDEg
PDwgNCwKICAgICAgICAgLy8gQ29ycmVjdGlvbiBzdWdnZXN0aW9uIGhhcyBiZWVuIG9mZmVyZWQs
IGJ1dCBnb3QgcmVqZWN0ZWQgYnkgdXNlci4KICAgICAgICAgUmVqZWN0ZWRDb3JyZWN0aW9uID0g
MSA8PCA1LAorICAgICAgICAvLyBUZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGF1dG9jb3JyZWN0
aW9uLiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBtYXJrZXIgaXMgdGhlIG9yaWdpbmFsIHRleHQg
YmVmb3JlIGF1dG9jb3JyZWN0aW9uLgorICAgICAgICBBdXRvY29ycmVjdGVkID0gMSA8PCA2LAog
ICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0byBi
ZSBzcGVsbGNoZWNrZWQgYWdhaW4uCi0gICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gPSAx
IDw8IDYsCi0gICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBUZXh0TWF0
Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENvcnJlY3Rp
b24gfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uCisgICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRp
b24gPSAxIDw8IDcsCisgICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBU
ZXh0TWF0Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENv
cnJlY3Rpb24gfCBBdXRvY29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbgogICAgIH07
CiAgICAgTWFya2VyVHlwZSB0eXBlOwogICAgIHR5cGVkZWYgdW5zaWduZWQgTWFya2VyVHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGY2NDZmM2M1YTVhZmNlYjM3MjY1ZmIxZDJhNjI1MDM1NjFiZmNmNzMuLjMzYTExOTM4MmQy
NjdmMGJlNTkwMjdhNmE4ZjA3ODRkOTczNTUwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zMTcsNiArMzE3LDQ0IEBAIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJzRm9yTm9k
ZShOb2RlKiBub2RlKQogICAgIHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CiB9CiAK
K1ZlY3RvcjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJz
SW5SYW5nZShSYW5nZSogcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCit7CisgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpCisgICAgICAg
IHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CisKKyAgICBWZWN0b3I8RG9jdW1lbnRN
YXJrZXI+IGZvdW5kTWFya2VyczsKKworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCk7CisgICAgQVNTRVJUKHN0YXJ0Q29udGFpbmVyKTsKKyAgICBOb2Rl
KiBlbmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKCk7CisgICAgQVNTRVJUKGVuZENv
bnRhaW5lcik7CisKKyAgICBOb2RlKiBwYXN0TGFzdE5vZGUgPSByYW5nZS0+cGFzdExhc3ROb2Rl
KCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2UtPmZpcnN0Tm9kZSgpOyBub2RlICE9IHBh
c3RMYXN0Tm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBtYXJrZXJzRm9yTm9kZShub2RlKTsKKyAg
ICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFya2Vy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1hcmtlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBpZiAoIShtYXJrZXJUeXBlICYgaXQtPnR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIgJiYgbm9kZSA9PSBlbmRD
b250YWluZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmFuZ2Ugc3BhbnMgb25seSBvbmUg
bm9kZS4KKyAgICAgICAgICAgICAgICBpZiAoaXQtPmVuZE9mZnNldCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgJiYgaXQtPnN0YXJ0T2Zmc2V0IDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAg
IGZvdW5kTWFya2Vycy5hcHBlbmQoKml0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0LT5lbmRPZmZzZXQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNYXJrZXJzLmFwcGVuZCgq
aXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZSA9PSBlbmRDb250YWluZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5zdGFydE9mZnNldCA8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm91
bmRNYXJrZXJzLmFwcGVuZCgqaXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBmb3VuZE1hcmtlcnMuYXBwZW5kKCppdCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZvdW5kTWFya2VyczsKK30KKwogVmVjdG9yPEludFJl
Y3Q+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKIHsKICAgICBWZWN0b3I8SW50UmVj
dD4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oCmluZGV4IDZmYTA2MGEzNDZhMjJmNGU4YzFmYTUzMjM2MTdhOTJjZDFiZTVkZTYuLjNkNTVh
NWJhZDdjMmIyOGZlMGM4NDg3MDU2MmJiYTY1ODI3NWVhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGlj
OgogCiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckNvbnRhaW5pbmdQb2ludChjb25zdCBJbnRQ
b2ludCYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1h
cmtlcnMpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2Vyc0Zvck5vZGUoTm9kZSop
OworICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlbmRlcmVkUmVj
dHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6
OkFsbE1hcmtlcnMpOwogICAgIHZvaWQgY2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2Vj
dGluZ1JhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI2MDdjMTEzZTE4MGQ0ODQxZWQ5OTNjNzQ2YmI1NDhh
ZDhlMTQ5NDMuLmU4ZGFkNzJhMDQ4M2E4YTNiMDg4MDRiOWNiNGI3YjllNmFiMWMzMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEwOSw2ICsxMDksNyBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JBdXRvY29y
cmVjdGlvbigpCiAgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0NvcnJlY3Rpb24uYXBwZW5kKERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiAgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0Nv
cnJlY3Rpb24uYXBwZW5kKERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAg
ICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5hcHBlbmQoRG9jdW1lbnRNYXJrZXI6
OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgICAgICBtYXJrZXJUeXBlc0ZvckF1dG9Db3Jy
ZWN0aW9uLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCk7CiAgICAgfQogICAg
IHJldHVybiBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9uOwogfQpAQCAtMTIzLDYgKzEyNCwx
OSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFy
a2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQ7CiB9CiAKK3N0YXRpYyBib29sIG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVzY3JpcHRpb24o
Y29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyPiYgbWFya2VycykKK3sKKyAgICBpZiAobWFya2Vy
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiA9IG1hcmtlcnNbMF0uZGVzY3JpcHRpb247CisgICAgZm9yIChzaXplX3QgaSA9
IDE7IGkgPCBtYXJrZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbiAh
PSBtYXJrZXJzW2ldLmRlc2NyaXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gV2hlbiBhbiBldmVudCBoYW5kbGVyIGhhcyBt
b3ZlZCB0aGUgc2VsZWN0aW9uIG91dHNpZGUgb2YgYSB0ZXh0IGNvbnRyb2wKIC8vIHdlIHNob3Vs
ZCB1c2UgdGhlIHRhcmdldCBjb250cm9sJ3Mgc2VsZWN0aW9uIGZvciB0aGlzIGVkaXRpbmcgb3Bl
cmF0aW9uLgogVmlzaWJsZVNlbGVjdGlvbiBFZGl0b3I6OnNlbGVjdGlvbkZvckNvbW1hbmQoRXZl
bnQqIGV2ZW50KQpAQCAtMjIxMyw2ICsyMjI3LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gK
ICAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtH
cmFtbWFyOwogICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5n
T3B0aW9ucyAmIFBlcmZvcm1SZXBsYWNlbWVudDsKICAgICBib29sIHNob3VsZFNob3dDb3JyZWN0
aW9uUGFuZWwgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKKyAg
ICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFu
ZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBDaGVja0ZvckNvcnJlY3Rpb24pOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5k
ZWQgdG8gd29yZCBib3VuZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjI0
MCw3ICsyMjU1LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICBpZiAoc2hvdWxkTWFy
a0dyYW1tYXIgPyAoc3BlbGxpbmdQYXJhZ3JhcGguaXNSYW5nZUVtcHR5KCkgJiYgZ3JhbW1hclBh
cmFncmFwaC5pc0VtcHR5KCkpIDogc3BlbGxpbmdQYXJhZ3JhcGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZE1h
cmtTcGVsbGluZykgeworICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgfHwgc2hvdWxk
TWFya1NwZWxsaW5nIHx8IHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikgewogICAgICAgICBpZiAo
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9u
OjpDYXJldFNlbGVjdGlvbikgewogICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBzYXZlIHRoZSBj
YXJldCBwb3NpdGlvbiBzbyB3ZSBjYW4gcmVzdG9yZSBpdCBsYXRlciBpZiBuZWVkZWQKICAgICAg
ICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5k
KCk7CkBAIC0yMjYyLDcgKzIyNzcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBpZiAoc2hv
dWxkTWFya0dyYW1tYXIpCiAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXI7Ci0gICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCisgICAgaWYgKHNo
b3VsZENoZWNrRm9yQ29ycmVjdGlvbikKICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7
CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtMjMyMiw3ICsyMzM3LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
VGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJh
bmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2Vy
KGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+
dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRTaG93Q29y
cmVjdGlvblBhbmVsKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGlu
Z1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxs
aW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExv
Y2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0
TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFy
dCgpCiAgICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZUxpbmsKICAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVRdW90ZQogICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZURhc2gKQEAgLTIzNDgsMjUgKzIzNjMsMjkgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
KyAxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBTdHJpbmcgcmVw
bGFjZWRTdHJpbmc7CisKICAgICAgICAgICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4g
YW4gYWxyZWFkeS1jb3JyZWN0ZWQgd29yZC4KICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gcmFuZ2VUb1JlcGxhY2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAg
aW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2VUb1JlcGxhY2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgaW50IGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgcmVwbGFjZW1lbnRMZW5ndGg7
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbm9kZS0+
ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAg
ICAgICBzaXplX3QgbWFya2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlckNvdW50OyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICgobWFya2VyLnR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50IHx8IG1hcmtlci50eXBlID09IERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rp
b24pICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLnN0YXJ0T2Zmc2V0KSA8IGVuZE9mZnNldCAm
JiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5lbmRPZmZzZXQpID4gc3RhcnRPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJlcGxhY2VkU3RyaW5nID0gcGxh
aW5UZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCk7
CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnMtPmhhc01hcmtlcnMocmFuZ2VUb1JlcGxhY2Uu
Z2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZG9SZXBsYWNlbWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI+IGNvcnJlY3RlZE9uY2VNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFu
Z2UocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3JyZWN0ZWRPbmNlTWFya2Vycy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWxsaW5nIGNvcnJlY3RlZCB0ZXh0IGhh
cyBiZWVuIGVkaXRlZC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB1c2VyIGhhcyByZXZl
cnRlZCBpdCB0byBvcmlnaW5hbCB0ZXh0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBl
ZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxjaGVja2VyIGFjY29y
ZGluZ2x5LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNIYXZlSWRlbnRpY2Fs
RGVzY3JpcHRpb24oY29ycmVjdGVkT25jZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJz
WzBdLmRlc2NyaXB0aW9uID09IHJlcGxhY2VkU3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVu
dDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFj
ZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNs
aWVudDo6QXV0b2NvcnJlY3Rpb25FZGl0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxh
Y2VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMo
cmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8aW50PihtYXJrZXIuc3RhcnRPZmZzZXQpID49IGVuZE9mZnNldCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKG1hcmtlcnMtPmhhc01hcmtlcnMocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBkb1JlcGxh
Y2VtZW50ID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghZG9SZXBs
YWNlbWVudCkKKyAgICAgICAgICAgIGlmICghKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB8fCAhZG9SZXBsYWNlbWVudCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKQEAgLTI0
MDAsMTAgKzI0MTksNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAg
IGlmIChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChD
cmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVw
bGFjZW1lbnQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYmIHNob3VsZElu
c2VydFRleHQocmVzdWx0LT5yZXBsYWNlbWVudCwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIEVkaXRv
ckluc2VydEFjdGlvblR5cGVkKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0
cmluZzsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWlu
VGV4dChyYW5nZVRvUmVwbGFjZS5nZXQoKSk7Ci0KICAgICAgICAgICAgICAgICBib29sIHVzZVNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgPSBmYWxzZTsKICNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikKQEAgLTI0Mjcs
OSArMjQ0MiwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gQWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2ls
eSBiZSB1bmRvbmUgYW5kIHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlZFJhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFu
Z2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2Vycygp
LT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50LCByZXBsYWNlZFN0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJlcGxh
Y2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1l
bnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRN
YXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgICAgICAgICAgICAgICAgICBWZWN0
b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzVG9BZGQgPSBtYXJrZXJU
eXBlc0ZvckF1dG9jb3JyZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlciogbWFya2VycyA9IHJlcGxhY2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkt
PmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXJrZXJUeXBlc1RvQWRkLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlID0gbWFya2Vy
VHlwZXNUb0FkZFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKiByYW5nZSA9IHJl
cGxhY2VkUmFuZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFya2VyVHlw
ZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVu
dE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJr
ZXJzLT5hZGRNYXJrZXIocmFuZ2UsIG1hcmtlclR5cGUsIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJr
ZXJzLT5hZGRNYXJrZXIocmFuZ2UsIG1hcmtlclR5cGUpOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNDc2LDYg
KzI0OTgsNyBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBSZWZQdHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9
IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0
cmluZy5sZW5ndGgoKSk7CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpSZXBsYWNlbWVudCwgU3RyaW5nKCkpOwogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJ
T05fUEFORUwKKyAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRp
YWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRSYW5nZS5nZXQoKSwg
RG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogI2VuZGlmCiAjZWxzZQpA
QCAtMjQ5MCw3ICsyNTEzLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5J
RklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENo
ZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZzsKKyAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRl
eHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247CiAg
ICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAg
ICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOwogICAgIG1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdT
ZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKQEAgLTI3NDcsMTAgKzI3NzAsMTYgQEAgdm9pZCBFZGl0
b3I6OmFwcGx5Q29ycmVjdGlvblBhbmVsSW5mbyhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGU+JgogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJl
cGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
ICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOworICAgICAgICBSYW5nZSog
cmFuZ2UgPSByZXBsYWNlbWVudFJhbmdlLmdldCgpOwogICAgICAgICBpZiAobV9jb3JyZWN0aW9u
UGFuZWxJbmZvLnBhbmVsVHlwZSA9PSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZl
cnNpb24pCi0gICAgICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5n
ZXQoKSwgbWFya2VyVHlwZXNUb0FkZFtpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1h
cmtlcnMtPmFkZE1hcmtlcihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBtYXJrZXJUeXBlc1RvQWRk
W2ldLCBtX2NvcnJlY3Rpb25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAg
bWFya2Vycy0+YWRkTWFya2VyKHJhbmdlLCBtYXJrZXJUeXBlKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQg
fHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkKKyAgICAgICAg
ICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UsIG1hcmtlclR5cGUsIG1fY29ycmVjdGlv
blBhbmVsSW5mby5yZXBsYWNlZFN0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJhbmdlLCBtYXJrZXJUeXBlKTsKKyAgICAgICAgfQog
ICAgIH0KICNlbHNlIC8vIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBVTlVTRURf
UEFSQU0obWFya2VyVHlwZXNUb0FkZCk7CkBAIC0yNzg3LDcgKzI4MTYsNyBAQCB2b2lkIEVkaXRv
cjo6dW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbk9mQ29ycmVjdAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1f
ZnJhbWUtPmRvY3VtZW50KCksIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFy
dCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpOwotICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyk7CisgICAgbWFya2Vycy0+cmVtb3ZlTWFya2VycyhyYW5nZS5nZXQo
KSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0
ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdN
YXJrZXIpOwogICAgIG1hcmtlcnMtPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKICNlbHNlIC8vIFNVUFBPUlRf
QVVUT0NPUlJFQ1RJT05fUEFORUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGRlYTc3YzJi
OTY5NjliNDU5ZjU1ZGM4MDAwMTk4NzMwYTU5ZDM3ZjYuLjM4NTE1NWJkNmUzNmY0M2ZiNDQ1YzI1
ZjUxODA0ZDUzMDRlM2IxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjQ3LDYgKzI0
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCiAgICAgICAgIFBl
cmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKICAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9
IDEgPDwgMywKKyAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9uID0gMSA8PCA0LAogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBi
YWQ0YTk5ZTk4MTg5MzAyZWM2MWJmZGIwOWRhMTQ2ZDBiYjE0ZWI0Li5hZmU3NGE4ZDk4NGNjZTEy
NzgyOWIyNWNlNDRlNTg5Mzk5N2M5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoIWZyYWdtZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTZXRTZWxl
Y3Rpb25Db21tYW5kOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpDbG9zZVR5cGluZyB8IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkNsZWFyVHlwaW5n
U3R5bGUpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTZXRTZWxlY3Rpb25Db21tYW5k
OjpjcmVhdGUobV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxlY3Rpb25Db250cm9sbGVyOjpT
cGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbG9zZVR5cGlu
ZyB8IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkNsZWFyVHlwaW5nU3R5bGUpKTsKICNpZiBTVVBQT1JU
X0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU3BlbGxp
bmdDb3JyZWN0aW9uUmVjb3JkVW5kb0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX2NvcnJl
Y3RlZCwgbV9jb3JyZWN0aW9uKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88065</attachid>
            <date>2011-04-04 09:02:09 -0700</date>
            <delta_ts>2011-04-04 14:23:46 -0700</delta_ts>
            <desc>Patch (v2)</desc>
            <filename>bug-57665-20110404090207.patch</filename>
            <type>text/plain</type>
            <size>21447</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZmU0MWYyOWJkMGY3NDhj
ZWI5YWY0MjRjNDAxN2NiZGZhMzkxZjk5Li5jYTBkYTRmYjRjNDZjMGJhOWNhYzA1YTI5ODNiYzRk
ZjE0MjkxY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDEgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW01hY10gV2ViQ29yZSBuZWVkIHRvIG5vdGlmeSBBcHBLaXQgc3BlbGwgY2hl
Y2tlciBhZnRlciB1c2VyIGhhcyBtb2RpZmllZCBhdXRvY29ycmVjdGVkIHRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzM1MDQ3Nz4KKworICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIGhvdyB1
c2VyIG1vZGlmaWVkIGFuIGF1dG9jb3JyZWN0ZWQgd29yZC4gSWYgaGUgY2hhbmdlZCBpdCBiYWNr
IHRvIG9yaWdpbmFsCisgICAgICAgIHRleHQsIHdlIHdhbnQgdG8gcmVjb3JkIEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgcmVzcG9uc2UuIEFuZCBpZiBoZSBjaGFuZ2VkIGl0IHRvIHNvbWV0aGluZwor
ICAgICAgICBlbHNlLCB3ZSB3YW50IHRvIHJlY29yZCBBdXRvY29ycmVjdGlvbkVkaXRlZCByZXNw
b25zZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHdlIG5lZWQgdG8gZGlzdHJpbmd1aXNo
IGJldHdlZW4gdGV4dCByZXBsYWNlbWVudCBjYXVzZWQgYnkgYXV0b2NvcnJlY3Rpb24KKyAgICAg
ICAgZnJvbSB0aGF0IGR1ZSB0byBvdGhlciBjYXVzZXMsIHN1Y2ggYXMgcmV2ZXJzaW9uLCB0ZXh0
IHN1YnN0aXR1dGlvbiwgZXRjLiBTbyB3ZSBhZGRlZCBhIG5ldworICAgICAgICBtYXJrZXIgdHlw
ZSAiQXV0b2NvcnJlY3RlZCIuIFdlIGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIGNoZWNrIGZvciBj
b3JyZWN0aW9uLCBldmVuIHdoZW4gd2UKKyAgICAgICAgZG9uJ3QgaW50ZW5kIHRvIGFjdHVhbGx5
IGNhcnJ5IG91dCByZXBsYWNlbWVudC4gRm9yIHRoaXMsIHdlIGludHJvZHVjZWQgYSBuZXcgVGV4
dENoZWNraW5nT3B0aW9uCisgICAgICAgIHZhbHVlLCAiQ2hlY2tGb3JDb3JyZWN0aW9uIi4KKwor
ICAgICAgICBXZSBhbHNvIGFkZGVkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6bWFya2Vyc0lu
UmFuZ2UoKSB0byByZXRyaWV2ZSBhIHZlY3RvciBvZiBtYXJrZXJzIGluCisgICAgICAgIHNwZWNp
ZmllZCByYW5nZSwgYW5kIG9mIHNwZWNpZmllZCB0eXBlLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJh
bmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVHlwZXNGb3JB
dXRvY29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5n
ZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBs
eUNvcnJlY3Rpb25QYW5lbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDExLTAzLTIzICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCmluZGV4
IDgxMTEyYmZjMWMzY2FkOGZlYTEzZjMyZDIwYWZjNDg2Nzg5ZjI2OTMuLjI4NzM5M2M1OTRhNjY1
NDk5ZmE4MDgyNGU5Y2VmNmRjMGRiNTg0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ci5oCkBAIC0zNyw5ICszNyw5IEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7CiAgICAgICAgIFNw
ZWxsaW5nID0gMSA8PCAwLAogICAgICAgICBHcmFtbWFyID0gMSA8PCAxLAogICAgICAgICBUZXh0
TWF0Y2ggPSAxIDw8IDIsCi0gICAgICAgIC8vIFRleHQgaGFzIGJlZW4gbW9kaWZpZWQgYnkgc3Bl
bGwgY29ycmVjdGlvbi4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQK
LSAgICAgICAgLy8gdG8gYmUgYXV0b2NvcnJlY3RlZCBhZ2Fpbi4gT24gcG9zdCBTbm93IExlb3Bh
cmQgTWFjIE9TIFgsIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zCi0gICAgICAgIC8v
IG5vbi1lbXB0eSBkZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KKyAg
ICAgICAgLy8gVGV4dCBoYXMgYmVlbiBtb2RpZmllZCBieSBzcGVsbCBjb3JyZWN0aW9uLCByZXZl
cnNpb24gb2Ygc3BlbGwgY29ycmVjdGlvbiBvciBvdGhlciB0eXBlcyBvZiBzdWJzdGl0dXRpb24u
IAorICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0
byBiZSBhdXRvY29ycmVjdGVkIGFnYWluLiBPbiBwb3N0IFNub3cgTGVvcGFyZCBNYWMgT1MgWCwg
CisgICAgICAgIC8vIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zIG5vbi1lbXB0eSBk
ZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KICAgICAgICAgUmVwbGFj
ZW1lbnQgPSAxIDw8IDMsCiAgICAgICAgIC8vIFJlbmRlcmVyIG5lZWRzIHRvIGFkZCB1bmRlcmxp
bmUgaW5kaWNhdGluZyB0aGF0IHRoZSB0ZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IHNwZWxsCiAg
ICAgICAgIC8vIGNvcnJlY3Rpb24uIFRleHQgd2l0aCBSZXBsYWNlbWVudCBtYXJrZXIgZG9lc24n
dCBuZWNlc3NhcmlseSBoYXMgQ29ycmVjdGlvbkluZGljYXRvcgpAQCAtNDksOSArNDksMTEgQEAg
c3RydWN0IERvY3VtZW50TWFya2VyIHsKICAgICAgICAgQ29ycmVjdGlvbkluZGljYXRvciA9IDEg
PDwgNCwKICAgICAgICAgLy8gQ29ycmVjdGlvbiBzdWdnZXN0aW9uIGhhcyBiZWVuIG9mZmVyZWQs
IGJ1dCBnb3QgcmVqZWN0ZWQgYnkgdXNlci4KICAgICAgICAgUmVqZWN0ZWRDb3JyZWN0aW9uID0g
MSA8PCA1LAorICAgICAgICAvLyBUZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGF1dG9jb3JyZWN0
aW9uLiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBtYXJrZXIgaXMgdGhlIG9yaWdpbmFsIHRleHQg
YmVmb3JlIGF1dG9jb3JyZWN0aW9uLgorICAgICAgICBBdXRvY29ycmVjdGVkID0gMSA8PCA2LAog
ICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0byBi
ZSBzcGVsbGNoZWNrZWQgYWdhaW4uCi0gICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gPSAx
IDw8IDYsCi0gICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBUZXh0TWF0
Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENvcnJlY3Rp
b24gfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uCisgICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRp
b24gPSAxIDw8IDcsCisgICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBU
ZXh0TWF0Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENv
cnJlY3Rpb24gfCBBdXRvY29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbgogICAgIH07
CiAgICAgTWFya2VyVHlwZSB0eXBlOwogICAgIHR5cGVkZWYgdW5zaWduZWQgTWFya2VyVHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGY2NDZmM2M1YTVhZmNlYjM3MjY1ZmIxZDJhNjI1MDM1NjFiZmNmNzMuLjMzYTExOTM4MmQy
NjdmMGJlNTkwMjdhNmE4ZjA3ODRkOTczNTUwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zMTcsNiArMzE3LDQ0IEBAIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJzRm9yTm9k
ZShOb2RlKiBub2RlKQogICAgIHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CiB9CiAK
K1ZlY3RvcjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJz
SW5SYW5nZShSYW5nZSogcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCit7CisgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpCisgICAgICAg
IHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CisKKyAgICBWZWN0b3I8RG9jdW1lbnRN
YXJrZXI+IGZvdW5kTWFya2VyczsKKworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCk7CisgICAgQVNTRVJUKHN0YXJ0Q29udGFpbmVyKTsKKyAgICBOb2Rl
KiBlbmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKCk7CisgICAgQVNTRVJUKGVuZENv
bnRhaW5lcik7CisKKyAgICBOb2RlKiBwYXN0TGFzdE5vZGUgPSByYW5nZS0+cGFzdExhc3ROb2Rl
KCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2UtPmZpcnN0Tm9kZSgpOyBub2RlICE9IHBh
c3RMYXN0Tm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBtYXJrZXJzRm9yTm9kZShub2RlKTsKKyAg
ICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFya2Vy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1hcmtlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBpZiAoIShtYXJrZXJUeXBlICYgaXQtPnR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIgJiYgbm9kZSA9PSBlbmRD
b250YWluZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmFuZ2Ugc3BhbnMgb25seSBvbmUg
bm9kZS4KKyAgICAgICAgICAgICAgICBpZiAoaXQtPmVuZE9mZnNldCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgJiYgaXQtPnN0YXJ0T2Zmc2V0IDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAg
IGZvdW5kTWFya2Vycy5hcHBlbmQoKml0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0LT5lbmRPZmZzZXQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNYXJrZXJzLmFwcGVuZCgq
aXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZSA9PSBlbmRDb250YWluZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5zdGFydE9mZnNldCA8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm91
bmRNYXJrZXJzLmFwcGVuZCgqaXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBmb3VuZE1hcmtlcnMuYXBwZW5kKCppdCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZvdW5kTWFya2VyczsKK30KKwogVmVjdG9yPEludFJl
Y3Q+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKIHsKICAgICBWZWN0b3I8SW50UmVj
dD4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oCmluZGV4IDZmYTA2MGEzNDZhMjJmNGU4YzFmYTUzMjM2MTdhOTJjZDFiZTVkZTYuLjNkNTVh
NWJhZDdjMmIyOGZlMGM4NDg3MDU2MmJiYTY1ODI3NWVhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGlj
OgogCiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckNvbnRhaW5pbmdQb2ludChjb25zdCBJbnRQ
b2ludCYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1h
cmtlcnMpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2Vyc0Zvck5vZGUoTm9kZSop
OworICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlbmRlcmVkUmVj
dHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6
OkFsbE1hcmtlcnMpOwogICAgIHZvaWQgY2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2Vj
dGluZ1JhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI2MDdjMTEzZTE4MGQ0ODQxZWQ5OTNjNzQ2YmI1NDhh
ZDhlMTQ5NDMuLmI3NDhkMDJhYmI4MjliMzExYWQ2MTk1MDM0YzU3ZGYwNWUxOTdmNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEwOSw2ICsxMDksNyBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JBdXRvY29y
cmVjdGlvbigpCiAgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0NvcnJlY3Rpb24uYXBwZW5kKERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiAgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0Nv
cnJlY3Rpb24uYXBwZW5kKERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAg
ICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5hcHBlbmQoRG9jdW1lbnRNYXJrZXI6
OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgICAgICBtYXJrZXJUeXBlc0ZvckF1dG9Db3Jy
ZWN0aW9uLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCk7CiAgICAgfQogICAg
IHJldHVybiBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9uOwogfQpAQCAtMTIzLDYgKzEyNCwy
MSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFy
a2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQ7CiB9CiAKKyNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCitzdGF0aWMgYm9v
bCBtYXJrZXJzSGF2ZUlkZW50aWNhbERlc2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1h
cmtlcj4mIG1hcmtlcnMpCit7CisgICAgaWYgKG1hcmtlcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24gPSBtYXJrZXJzWzBd
LmRlc2NyaXB0aW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbWFya2Vycy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT0gbWFya2Vyc1tpXS5kZXNjcmlwdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYKKwogLy8gV2hlbiBhbiBldmVudCBoYW5kbGVyIGhhcyBtb3ZlZCB0aGUgc2VsZWN0
aW9uIG91dHNpZGUgb2YgYSB0ZXh0IGNvbnRyb2wKIC8vIHdlIHNob3VsZCB1c2UgdGhlIHRhcmdl
dCBjb250cm9sJ3Mgc2VsZWN0aW9uIGZvciB0aGlzIGVkaXRpbmcgb3BlcmF0aW9uLgogVmlzaWJs
ZVNlbGVjdGlvbiBFZGl0b3I6OnNlbGVjdGlvbkZvckNvbW1hbmQoRXZlbnQqIGV2ZW50KQpAQCAt
MjIxMyw2ICsyMjI5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICBib29sIHNob3Vs
ZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOwogICAgIGJv
b2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZv
cm1SZXBsYWNlbWVudDsKICAgICBib29sIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgPSB0ZXh0
Q2hlY2tpbmdPcHRpb25zICYgU2hvd0NvcnJlY3Rpb25QYW5lbDsKKyAgICBib29sIHNob3VsZENo
ZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVj
a2luZ09wdGlvbnMgJiBDaGVja0ZvckNvcnJlY3Rpb24pOwogCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBib3Vu
ZGFyaWVzLgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMjI0MCw3ICsyMjU3LDcgQEAg
dm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIgPyAoc3Bl
bGxpbmdQYXJhZ3JhcGguaXNSYW5nZUVtcHR5KCkgJiYgZ3JhbW1hclBhcmFncmFwaC5pc0VtcHR5
KCkpIDogc3BlbGxpbmdQYXJhZ3JhcGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZE1hcmtTcGVsbGluZykgewor
ICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgfHwgc2hvdWxkTWFya1NwZWxsaW5nIHx8
IHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikgewogICAgICAgICBpZiAobV9mcmFtZS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlv
bikgewogICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBzYXZlIHRoZSBjYXJldCBwb3NpdGlvbiBz
byB3ZSBjYW4gcmVzdG9yZSBpdCBsYXRlciBpZiBuZWVkZWQKICAgICAgICAgICAgIFBvc2l0aW9u
IGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCk7CkBAIC0yMjYyLDcg
KzIyNzksNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICBjaGVja2luZ1R5cGVz
IHw9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIp
CiAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAg
aWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCisgICAgaWYgKHNob3VsZENoZWNrRm9yQ29y
cmVjdGlvbikKICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7CiAjaWYgVVNFKEFVVE9N
QVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtMjMyMiw3ICsyMzM5LDcgQEAgdm9pZCBFZGl0b3I6
Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENvbnRh
aW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5n
ZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9u
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
KHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSAm
JiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0
ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxsaW5nUGFyYWdyYXBoLmNo
ZWNraW5nU3RhcnQoKQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0
TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1
bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCiAgICAgICAgICAg
ICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKICAgICAg
ICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQog
ICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURh
c2gKQEAgLTIzNDgsMjUgKzIzNjUsMjkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAg
ICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgc2VsZWN0
aW9uT2Zmc2V0ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggKyAxKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmc7CisK
ICAgICAgICAgICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4gYW4gYWxyZWFkeS1jb3Jy
ZWN0ZWQgd29yZC4KICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2VUb1Jl
cGxhY2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0
ID0gcmFuZ2VUb1JlcGxhY2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgaW50IGVu
ZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgcmVwbGFjZW1lbnRMZW5ndGg7Ci0gICAgICAgICAgICAg
ICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbm9kZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgICAgICBzaXplX3QgbWFy
a2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1hcmtlckNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAgICAgICAgICAgICAgICAg
IGlmICgobWFya2VyLnR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtl
ci50eXBlID09IERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24pICYmIHN0YXRpY19j
YXN0PGludD4obWFya2VyLnN0YXJ0T2Zmc2V0KSA8IGVuZE9mZnNldCAmJiBzdGF0aWNfY2FzdDxp
bnQ+KG1hcmtlci5lbmRPZmZzZXQpID4gc3RhcnRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9S
ZXBsYWNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIq
IG1hcmtlcnMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCk7CisgICAgICAgICAgICAg
ICAgaWYgKG1hcmtlcnMtPmhhc01hcmtlcnMocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9SZXBsYWNlbWVu
dCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IGNv
cnJlY3RlZE9uY2VNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2UocmFuZ2VUb1JlcGxh
Y2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjb3JyZWN0ZWRPbmNlTWFya2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFNwZWxsaW5nIGNvcnJlY3RlZCB0ZXh0IGhhcyBiZWVuIGVkaXRlZC4g
V2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB1c2VyIGhhcyByZXZlcnRlZCBpdCB0byBvcmln
aW5hbCB0ZXh0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBlZGl0ZWQgaXQgdG8gc29t
ZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxjaGVja2VyIGFjY29yZGluZ2x5LgorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVzY3JpcHRpb24oY29y
cmVjdGVkT25jZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJzWzBdLmRlc2NyaXB0aW9u
ID09IHJlcGxhY2VkU3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCgp
LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rp
b25SZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVu
dCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJl
Y3Rpb25FZGl0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2VUb1JlcGxhY2Uu
Z2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihtYXJrZXIu
c3RhcnRPZmZzZXQpID49IGVuZE9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hcmtlcnMt
Pmhhc01hcmtlcnMocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZWplY3Rl
ZENvcnJlY3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBkb1JlcGxhY2VtZW50ID0gZmFsc2U7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghZG9SZXBsYWNlbWVudCkKKyAgICAg
ICAgICAgIGlmICghKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRTaG93Q29ycmVj
dGlvblBhbmVsKSB8fCAhZG9SZXBsYWNlbWVudCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKQEAgLTI0MDAsMTAgKzI0MjEsNiBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhU
ZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIGlmIChjYW5FZGl0Umlj
aGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChDcmVhdGVMaW5rQ29tbWFu
ZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVwbGFjZW1lbnQpKTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYmIHNob3VsZEluc2VydFRleHQocmVzdWx0
LT5yZXBsYWNlbWVudCwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5
cGVkKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZzsKLSAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKQot
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFN0cmluZyA9IHBsYWluVGV4dChyYW5nZVRvUmVw
bGFjZS5nZXQoKSk7Ci0KICAgICAgICAgICAgICAgICBib29sIHVzZVNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQgPSBmYWxzZTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikKQEAgLTI0MjcsOSArMjQ0NCwxNiBAQCB2
b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0
Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
QWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5k
IHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiByZXBsYWNlZFJhbmdlID0gc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRp
b24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmVw
bGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50LCByZXBsYWNlZFN0
cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJlcGxhY2VkUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2Vycygp
LT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hl
Y2tpbmdFeGVtcHRpb24pOworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzVG9BZGQgPSBtYXJrZXJUeXBlc0ZvckF1dG9jb3Jy
ZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciog
bWFya2VycyA9IHJlcGxhY2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1h
cmtlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJr
ZXJUeXBlc1RvQWRkLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlID0gbWFya2VyVHlwZXNUb0FkZFtpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKiByYW5nZSA9IHJlcGxhY2VkUmFuZ2UuZ2V0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2Nv
cnJlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIo
cmFuZ2UsIG1hcmtlclR5cGUsIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIo
cmFuZ2UsIG1hcmtlclR5cGUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNDc2LDYgKzI1MDAsNyBAQCB2b2lk
IEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZykKICAgICBSZWZQdHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJy
YW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7
CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJz
KCktPmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCwgU3RyaW5nKCkpOwogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICBj
aGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVt
b3ZlTWFya2VycyhjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVj
dGVkLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5n
TWFya2VyKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogI2VuZGlmCiAjZWxzZQpAQCAtMjQ5MCw3ICsyNTE1
LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNL
SU5HKQogICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9
IE1hcmtTcGVsbGluZzsKKyAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlv
bnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247CiAgICAgaWYgKG1hcmtHcmFt
bWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICB0ZXh0Q2hlY2tpbmdP
cHRpb25zIHw9IE1hcmtHcmFtbWFyOwogICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKQEAgLTI3NDcsMTAgKzI3NzIsMTYgQEAgdm9pZCBFZGl0b3I6OmFwcGx5Q29ycmVj
dGlvblBhbmVsSW5mbyhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+Jgog
ICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKICAgICBzaXplX3Qgc2l6
ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOworICAgICAgICBSYW5nZSogcmFuZ2UgPSByZXBsYWNl
bWVudFJhbmdlLmdldCgpOwogICAgICAgICBpZiAobV9jb3JyZWN0aW9uUGFuZWxJbmZvLnBhbmVs
VHlwZSA9PSBDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGVSZXZlcnNpb24pCi0gICAgICAg
ICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlw
ZXNUb0FkZFtpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1hcmtlcnMtPmFkZE1hcmtl
cihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBtYXJrZXJUeXBlc1RvQWRkW2ldLCBtX2NvcnJlY3Rp
b25QYW5lbEluZm8ucmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFy
a2VyKHJhbmdlLCBtYXJrZXJUeXBlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAo
bWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9
PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkKKyAgICAgICAgICAgICAgICBtYXJrZXJz
LT5hZGRNYXJrZXIocmFuZ2UsIG1hcmtlclR5cGUsIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBs
YWNlZFN0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWFya2Vycy0+
YWRkTWFya2VyKHJhbmdlLCBtYXJrZXJUeXBlKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlIC8v
IFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBVTlVTRURfUEFSQU0obWFya2VyVHlw
ZXNUb0FkZCk7CkBAIC0yNzg3LDcgKzI4MTgsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkU3Bl
bGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVjdAog
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50
KCksIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyKiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwotICAgIG1h
cmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGlu
Zyk7CisgICAgbWFya2Vycy0+cmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIG1h
cmtlcnMtPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50
KTsKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpT
cGVsbENoZWNraW5nRXhlbXB0aW9uKTsKICNlbHNlIC8vIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05f
UEFORUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGRlYTc3YzJiOTY5NjliNDU5ZjU1ZGM4
MDAwMTk4NzMwYTU5ZDM3ZjYuLjM4NTE1NWJkNmUzNmY0M2ZiNDQ1YzI1ZjUxODA0ZDUzMDRlM2Ix
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjQ3LDYgKzI0Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCiAgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKICAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICAg
ICAgQ2hlY2tGb3JDb3JyZWN0aW9uID0gMSA8PCA0LAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNp
Z25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBiYWQ0YTk5ZTk4MTg5MzAy
ZWM2MWJmZGIwOWRhMTQ2ZDBiYjE0ZWI0Li5hZmU3NGE4ZDk4NGNjZTEyNzgyOWIyNWNlNDRlNTg5
Mzk5N2M5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTZXRTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUobV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbG9z
ZVR5cGluZyB8IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkNsZWFyVHlwaW5nU3R5bGUpKTsKKyAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUobV9zZWxl
Y3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxlY3Rpb25Db250cm9sbGVyOjpTcGVsbENvcnJlY3Rpb25U
cmlnZ2VyZWQgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbG9zZVR5cGluZyB8IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkNsZWFyVHlwaW5nU3R5bGUpKTsKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9O
X1BBTkVMCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU3BlbGxpbmdDb3JyZWN0aW9uUmVj
b3JkVW5kb0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX2NvcnJlY3RlZCwgbV9jb3JyZWN0
aW9uKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88129</attachid>
            <date>2011-04-04 14:23:49 -0700</date>
            <delta_ts>2011-04-05 15:05:10 -0700</delta_ts>
            <desc>Patch (v3)</desc>
            <filename>bug-57665-20110404142348.patch</filename>
            <type>text/plain</type>
            <size>22209</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZmU0MWYyOWJkMGY3NDhj
ZWI5YWY0MjRjNDAxN2NiZGZhMzkxZjk5Li5jYTBkYTRmYjRjNDZjMGJhOWNhYzA1YTI5ODNiYzRk
ZjE0MjkxY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDEgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW01hY10gV2ViQ29yZSBuZWVkIHRvIG5vdGlmeSBBcHBLaXQgc3BlbGwgY2hl
Y2tlciBhZnRlciB1c2VyIGhhcyBtb2RpZmllZCBhdXRvY29ycmVjdGVkIHRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzM1MDQ3Nz4KKworICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIGhvdyB1
c2VyIG1vZGlmaWVkIGFuIGF1dG9jb3JyZWN0ZWQgd29yZC4gSWYgaGUgY2hhbmdlZCBpdCBiYWNr
IHRvIG9yaWdpbmFsCisgICAgICAgIHRleHQsIHdlIHdhbnQgdG8gcmVjb3JkIEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgcmVzcG9uc2UuIEFuZCBpZiBoZSBjaGFuZ2VkIGl0IHRvIHNvbWV0aGluZwor
ICAgICAgICBlbHNlLCB3ZSB3YW50IHRvIHJlY29yZCBBdXRvY29ycmVjdGlvbkVkaXRlZCByZXNw
b25zZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHdlIG5lZWQgdG8gZGlzdHJpbmd1aXNo
IGJldHdlZW4gdGV4dCByZXBsYWNlbWVudCBjYXVzZWQgYnkgYXV0b2NvcnJlY3Rpb24KKyAgICAg
ICAgZnJvbSB0aGF0IGR1ZSB0byBvdGhlciBjYXVzZXMsIHN1Y2ggYXMgcmV2ZXJzaW9uLCB0ZXh0
IHN1YnN0aXR1dGlvbiwgZXRjLiBTbyB3ZSBhZGRlZCBhIG5ldworICAgICAgICBtYXJrZXIgdHlw
ZSAiQXV0b2NvcnJlY3RlZCIuIFdlIGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIGNoZWNrIGZvciBj
b3JyZWN0aW9uLCBldmVuIHdoZW4gd2UKKyAgICAgICAgZG9uJ3QgaW50ZW5kIHRvIGFjdHVhbGx5
IGNhcnJ5IG91dCByZXBsYWNlbWVudC4gRm9yIHRoaXMsIHdlIGludHJvZHVjZWQgYSBuZXcgVGV4
dENoZWNraW5nT3B0aW9uCisgICAgICAgIHZhbHVlLCAiQ2hlY2tGb3JDb3JyZWN0aW9uIi4KKwor
ICAgICAgICBXZSBhbHNvIGFkZGVkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6bWFya2Vyc0lu
UmFuZ2UoKSB0byByZXRyaWV2ZSBhIHZlY3RvciBvZiBtYXJrZXJzIGluCisgICAgICAgIHNwZWNp
ZmllZCByYW5nZSwgYW5kIG9mIHNwZWNpZmllZCB0eXBlLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJh
bmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVHlwZXNGb3JB
dXRvY29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5n
ZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBs
eUNvcnJlY3Rpb25QYW5lbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDExLTAzLTIzICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCmluZGV4
IDgxMTEyYmZjMWMzY2FkOGZlYTEzZjMyZDIwYWZjNDg2Nzg5ZjI2OTMuLjI4NzM5M2M1OTRhNjY1
NDk5ZmE4MDgyNGU5Y2VmNmRjMGRiNTg0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ci5oCkBAIC0zNyw5ICszNyw5IEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7CiAgICAgICAgIFNw
ZWxsaW5nID0gMSA8PCAwLAogICAgICAgICBHcmFtbWFyID0gMSA8PCAxLAogICAgICAgICBUZXh0
TWF0Y2ggPSAxIDw8IDIsCi0gICAgICAgIC8vIFRleHQgaGFzIGJlZW4gbW9kaWZpZWQgYnkgc3Bl
bGwgY29ycmVjdGlvbi4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQK
LSAgICAgICAgLy8gdG8gYmUgYXV0b2NvcnJlY3RlZCBhZ2Fpbi4gT24gcG9zdCBTbm93IExlb3Bh
cmQgTWFjIE9TIFgsIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zCi0gICAgICAgIC8v
IG5vbi1lbXB0eSBkZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KKyAg
ICAgICAgLy8gVGV4dCBoYXMgYmVlbiBtb2RpZmllZCBieSBzcGVsbCBjb3JyZWN0aW9uLCByZXZl
cnNpb24gb2Ygc3BlbGwgY29ycmVjdGlvbiBvciBvdGhlciB0eXBlcyBvZiBzdWJzdGl0dXRpb24u
IAorICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0
byBiZSBhdXRvY29ycmVjdGVkIGFnYWluLiBPbiBwb3N0IFNub3cgTGVvcGFyZCBNYWMgT1MgWCwg
CisgICAgICAgIC8vIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5zIG5vbi1lbXB0eSBk
ZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KICAgICAgICAgUmVwbGFj
ZW1lbnQgPSAxIDw8IDMsCiAgICAgICAgIC8vIFJlbmRlcmVyIG5lZWRzIHRvIGFkZCB1bmRlcmxp
bmUgaW5kaWNhdGluZyB0aGF0IHRoZSB0ZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IHNwZWxsCiAg
ICAgICAgIC8vIGNvcnJlY3Rpb24uIFRleHQgd2l0aCBSZXBsYWNlbWVudCBtYXJrZXIgZG9lc24n
dCBuZWNlc3NhcmlseSBoYXMgQ29ycmVjdGlvbkluZGljYXRvcgpAQCAtNDksOSArNDksMTEgQEAg
c3RydWN0IERvY3VtZW50TWFya2VyIHsKICAgICAgICAgQ29ycmVjdGlvbkluZGljYXRvciA9IDEg
PDwgNCwKICAgICAgICAgLy8gQ29ycmVjdGlvbiBzdWdnZXN0aW9uIGhhcyBiZWVuIG9mZmVyZWQs
IGJ1dCBnb3QgcmVqZWN0ZWQgYnkgdXNlci4KICAgICAgICAgUmVqZWN0ZWRDb3JyZWN0aW9uID0g
MSA8PCA1LAorICAgICAgICAvLyBUZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGF1dG9jb3JyZWN0
aW9uLiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBtYXJrZXIgaXMgdGhlIG9yaWdpbmFsIHRleHQg
YmVmb3JlIGF1dG9jb3JyZWN0aW9uLgorICAgICAgICBBdXRvY29ycmVjdGVkID0gMSA8PCA2LAog
ICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCB0byBi
ZSBzcGVsbGNoZWNrZWQgYWdhaW4uCi0gICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gPSAx
IDw8IDYsCi0gICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBUZXh0TWF0
Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENvcnJlY3Rp
b24gfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uCisgICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRp
b24gPSAxIDw8IDcsCisgICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBU
ZXh0TWF0Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENv
cnJlY3Rpb24gfCBBdXRvY29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbgogICAgIH07
CiAgICAgTWFya2VyVHlwZSB0eXBlOwogICAgIHR5cGVkZWYgdW5zaWduZWQgTWFya2VyVHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGY2NDZmM2M1YTVhZmNlYjM3MjY1ZmIxZDJhNjI1MDM1NjFiZmNmNzMuLjZjOTMyNGE2Yjdm
YjUxOTA2YTY2NzllNjc3ZDIyOTMwMjAwOWRkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zMTcsNiArMzE3LDM1IEBAIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJzRm9yTm9k
ZShOb2RlKiBub2RlKQogICAgIHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CiB9CiAK
K1ZlY3RvcjxEb2N1bWVudE1hcmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJz
SW5SYW5nZShSYW5nZSogcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCit7CisgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpCisgICAgICAg
IHJldHVybiBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+KCk7CisKKyAgICBWZWN0b3I8RG9jdW1lbnRN
YXJrZXI+IGZvdW5kTWFya2VyczsKKworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCk7CisgICAgQVNTRVJUKHN0YXJ0Q29udGFpbmVyKTsKKyAgICBOb2Rl
KiBlbmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKCk7CisgICAgQVNTRVJUKGVuZENv
bnRhaW5lcik7CisKKyAgICBOb2RlKiBwYXN0TGFzdE5vZGUgPSByYW5nZS0+cGFzdExhc3ROb2Rl
KCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2UtPmZpcnN0Tm9kZSgpOyBub2RlICE9IHBh
c3RMYXN0Tm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBtYXJrZXJzRm9yTm9kZShub2RlKTsKKyAg
ICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFya2Vy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1hcmtlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBpZiAoIShtYXJrZXJUeXBlICYgaXQtPnR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIgJiYgaXQtPmVuZE9mZnNl
dCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG5vZGUgPT0gZW5kQ29udGFpbmVy
ICYmIGl0LT5zdGFydE9mZnNldCA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPmVuZE9m
ZnNldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvdW5kTWFy
a2Vycy5hcHBlbmQoKml0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZm91bmRNYXJr
ZXJzOworfQorCiBWZWN0b3I8SW50UmVjdD4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW5k
ZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBl
KQogewogICAgIFZlY3RvcjxJbnRSZWN0PiByZXN1bHQ7CkBAIC02MDIsMjAgKzYzMSwxMSBAQCBi
b29sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6aGFzTWFya2VycyhSYW5nZSogcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeQogICAgICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudE1hcmtl
cj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFya2Vycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgICAgIGlmICghKG1hcmtlclR5cGVzICYgaXQtPnR5cGUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIg
JiYgbm9kZSA9PSBlbmRDb250YWluZXIpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgcmFuZ2Ug
c3BhbnMgb25seSBvbmUgbm9kZS4KLSAgICAgICAgICAgICAgICBpZiAoaXQtPmVuZE9mZnNldCA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgJiYgaXQtPnN0YXJ0
T2Zmc2V0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydENvbnRhaW5lcikgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXQtPmVuZE9mZnNldCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3Rh
cnRPZmZzZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUgPT0gZW5kQ29udGFpbmVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpdC0+c3RhcnRPZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFu
Z2UtPmVuZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Q29udGFpbmVyICYm
IGl0LT5lbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9mZnNl
dCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChub2RlID09
IGVuZENvbnRhaW5lciAmJiBpdC0+c3RhcnRPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJhbmdlLT5lbmRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNmZh
MDYwYTM0NmEyMmY0ZThjMWZhNTMyMzYxN2E5MmNkMWJlNWRlNi4uM2Q1NWE1YmFkN2MyYjI4ZmUw
Yzg0ODcwNTYyYmJhNjU4Mjc1ZWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAKICAgICBEb2N1
bWVudE1hcmtlciogbWFya2VyQ29udGFpbmluZ1BvaW50KGNvbnN0IEludFBvaW50JiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7CiAgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzRm9yTm9kZShOb2RlKik7CisgICAgVmVjdG9y
PERvY3VtZW50TWFya2VyPiBtYXJrZXJzSW5SYW5nZShSYW5nZSosIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlKTsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMo
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7
CiAgICAgdm9pZCBjbGVhckRlc2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2UoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMjYwN2MxMTNlMTgwZDQ4NDFlZDk5M2M3NDZiYjU0OGFkOGUxNDk0My4uMGFj
OWZiODg4N2JjMWEyMTNkODY1MmQzZGQ0ZDk3ZWQwZmQ2OTNmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKICAg
ICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5hcHBlbmQoRG9jdW1lbnRNYXJrZXI6
OlJlcGxhY2VtZW50KTsKICAgICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5hcHBl
bmQoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBtYXJrZXJU
eXBlc0ZvckF1dG9Db3JyZWN0aW9uLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2lu
Z0V4ZW1wdGlvbik7CisgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0NvcnJlY3Rpb24uYXBwZW5k
KERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKICAgICB9CiAgICAgcmV0dXJuIG1hcmtl
clR5cGVzRm9yQXV0b0NvcnJlY3Rpb247CiB9CkBAIC0xMjMsNiArMTI0LDIxIEBAIHN0YXRpYyBj
b25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0ZvclJl
cGxhY2VtZW50KCkKICAgICByZXR1cm4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudDsKIH0KIAor
I2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKK3N0YXRpYyBib29sIG1hcmtlcnNIYXZl
SWRlbnRpY2FsRGVzY3JpcHRpb24oY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyPiYgbWFya2Vy
cykKK3sKKyAgICBpZiAobWFya2Vycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiA9IG1hcmtlcnNbMF0uZGVzY3JpcHRpb247
CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtYXJrZXJzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChkZXNjcmlwdGlvbiAhPSBtYXJrZXJzW2ldLmRlc2NyaXB0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiAv
LyBXaGVuIGFuIGV2ZW50IGhhbmRsZXIgaGFzIG1vdmVkIHRoZSBzZWxlY3Rpb24gb3V0c2lkZSBv
ZiBhIHRleHQgY29udHJvbAogLy8gd2Ugc2hvdWxkIHVzZSB0aGUgdGFyZ2V0IGNvbnRyb2wncyBz
ZWxlY3Rpb24gZm9yIHRoaXMgZWRpdGluZyBvcGVyYXRpb24uCiBWaXNpYmxlU2VsZWN0aW9uIEVk
aXRvcjo6c2VsZWN0aW9uRm9yQ29tbWFuZChFdmVudCogZXZlbnQpCkBAIC0yMjEzLDYgKzIyMjks
NyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIg
PSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXI7CiAgICAgYm9vbCBzaG91bGRQZXJm
b3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgUGVyZm9ybVJlcGxhY2VtZW50
OwogICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlv
bnMgJiBTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0
aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAm
IENoZWNrRm9yQ29ycmVjdGlvbik7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3
aXRoIHNlbGVjdGlvbnMgYWxyZWFkeSBleHBhbmRlZCB0byB3b3JkIGJvdW5kYXJpZXMuCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0yMjQwLDcgKzIyNTcsNyBAQCB2b2lkIEVkaXRvcjo6
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaAogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hciA/IChzcGVsbGluZ1BhcmFncmFw
aC5pc1JhbmdlRW1wdHkoKSAmJiBncmFtbWFyUGFyYWdyYXBoLmlzRW1wdHkoKSkgOiBzcGVsbGlu
Z1BhcmFncmFwaC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzaG91bGRQ
ZXJmb3JtUmVwbGFjZW1lbnQgfHwgc2hvdWxkTWFya1NwZWxsaW5nKSB7CisgICAgaWYgKHNob3Vs
ZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRNYXJrU3BlbGxpbmcgfHwgc2hvdWxkQ2hlY2tG
b3JDb3JyZWN0aW9uKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0
aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7CiAgICAgICAg
ICAgICAvLyBBdHRlbXB0IHRvIHNhdmUgdGhlIGNhcmV0IHBvc2l0aW9uIHNvIHdlIGNhbiByZXN0
b3JlIGl0IGxhdGVyIGlmIG5lZWRlZAogICAgICAgICAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlv
biA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKTsKQEAgLTIyNjIsNyArMjI3OSw3IEBAIHZv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKICAgICAgICAgY2hl
Y2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hv
d0NvcnJlY3Rpb25QYW5lbCkKKyAgICBpZiAoc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uKQogICAg
ICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGlm
IChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQ
TEFDRU1FTlQpCkBAIC0yMzIyLDcgKzIzMzksNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAog
ICAgICAgICAgICAgICAgICAgICBncmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9j
dW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgoc2hvdWxkUGVyZm9y
bVJlcGxhY2VtZW50IHx8IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpICYmIHJlc3VsdExvY2F0
aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9j
YXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgp
CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3Bl
bGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA+PSBz
cGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkKICAgICAgICAgICAgICAgICAgICAgJiYg
KHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluawogICAgICAgICAgICAgICAgICAg
ICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3RlCiAgICAgICAgICAgICAg
ICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaApAQCAtMjM0OCwy
NSArMjM2NSwyOSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgaWYgKHJl
c3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBzZWxlY3Rpb25PZmZzZXQgPiBy
ZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCArIDEpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKKyAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZzsKKwogICAgICAgICAgICAg
Ly8gRG9uJ3QgY29ycmVjdCBzcGVsbGluZyBpbiBhbiBhbHJlYWR5LWNvcnJlY3RlZCB3b3JkLgog
ICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bikgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSByYW5nZVRvUmVwbGFjZS0+c3RhcnRD
b250YWluZXIoKTsKLSAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSByYW5nZVRvUmVw
bGFjZS0+c3RhcnRPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gc3Rh
cnRPZmZzZXQgKyByZXBsYWNlbWVudExlbmd0aDsKLSAgICAgICAgICAgICAgICBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBub2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtl
cnNGb3JOb2RlKG5vZGUpOwotICAgICAgICAgICAgICAgIHNpemVfdCBtYXJrZXJDb3VudCA9IG1h
cmtlcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFy
a2VyQ291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtl
ciYgbWFya2VyID0gbWFya2Vyc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChtYXJrZXIu
dHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyLnR5cGUgPT0gRG9j
dW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbikgJiYgc3RhdGljX2Nhc3Q8aW50PihtYXJr
ZXIuc3RhcnRPZmZzZXQpIDwgZW5kT2Zmc2V0ICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLmVu
ZE9mZnNldCkgPiBzdGFydE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9SZXBs
YWNlbWVudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgcmVwbGFjZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VUb1JlcGxhY2UuZ2V0KCkp
OworICAgICAgICAgICAgICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2Vy
cy0+aGFzTWFya2VycyhyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICBkb1JlcGxhY2VtZW50ID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gY29ycmVjdGVkT25jZU1h
cmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
cnJlY3RlZE9uY2VNYXJrZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRvIGRl
dGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQgb3IK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkaXRlZCBpdCB0byBzb21ldGhpbmcgZWxzZSwg
YW5kIG5vdGlmeSBzcGVsbGNoZWNrZXIgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb3JyZWN0ZWRPbmNlTWFy
a2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0uZGVzY3JpcHRpb24gPT0gcmVwbGFjZWRT
dHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBy
ZXBsYWNlZFN0cmluZywgcmVzdWx0LT5yZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50KCktPnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvbkVkaXRlZCwg
cmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbWFya2Vycy0+cmVtb3ZlTWFya2VycyhyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1l
bnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3Zl
UGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5zdGFydE9mZnNldCkg
Pj0gZW5kT2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFya2Vycy0+aGFzTWFya2Vycyhy
YW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbikp
CisgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKCFkb1JlcGxhY2VtZW50KQorICAgICAgICAgICAgaWYgKCEo
c2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpIHx8
ICFkb1JlcGxhY2VtZW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAjaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTApAQCAtMjQwMCwxMCArMjQyMSw2IEBAIHZvaWQgRWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09w
dGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgaWYgKGNhbkVkaXRSaWNobHkoKSkKICAgICAg
ICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUobV9m
cmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50
LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKSB7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nOwotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsK
LQogICAgICAgICAgICAgICAgIGJvb2wgdXNlU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCA9IGZh
bHNlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uKQpAQCAtMjQyNyw5ICsyNDQ0LDE1IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlv
bnMgdGV4dENoCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIg
c28gdGhhdCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUt
Y29ycmVjdGVkLgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VkUmFu
Z2UgPSBzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1l
bnRMZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFJhbmdlLT5zdGFydENvbnRh
aW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyZXBsYWNlZFJhbmdlLmdl
dCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIHJlcGxhY2VkU3RyaW5nKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQo
KS0+bWFya2VycygpLT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IpOwotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihy
ZXBsYWNlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZT4gbWFya2VyVHlwZXNUb0FkZCA9IG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJrZXJzID0gcmVw
bGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlclR5cGVzVG9BZGQu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50
IHx8IG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VkUmFuZ2UuZ2V0
KCksIG1hcmtlclR5cGUsIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmVw
bGFjZWRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0NzYsNiArMjQ5
OSw3IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nKQogICAgIFJlZlB0cjxSYW5nZT4gY2hhbmdlZFJhbmdlID0gcGFy
YWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5n
Lmxlbmd0aCgpKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50
KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50LCBTdHJpbmcoKSk7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9Q
QU5FTAorICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5yZW1vdmVNYXJrZXJzKGNoYW5nZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5
T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+
ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiAjZW5kaWYKICNlbHNlCkBAIC0y
NDkwLDcgKzI1MTQsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlYwogI2lmIFVTRShVTklGSUVE
X1RFWFRfQ0hFQ0tJTkcpCiAgICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tp
bmdPcHRpb25zID0gTWFya1NwZWxsaW5nOworICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENo
ZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZyB8IENoZWNrRm9yQ29ycmVjdGlvbjsKICAgICBp
ZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHRl
eHRDaGVja2luZ09wdGlvbnMgfD0gTWFya0dyYW1tYXI7CiAgICAgbWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVsbGluZ1NlbGVj
dGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCkpOwpAQCAtMjc0NywxMCArMjc3MSwxMSBAQCB2b2lkIEVkaXRvcjo6
YXBwbHlDb3JyZWN0aW9uUGFuZWxJbmZvKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4mCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJrZXJzID0gcmVwbGFj
ZW1lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAg
IHNpemVfdCBzaXplID0gbWFya2VyVHlwZXNUb0FkZC5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fY29ycmVjdGlvblBhbmVsSW5m
by5wYW5lbFR5cGUgPT0gQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uKQot
ICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIG1h
cmtlclR5cGVzVG9BZGRbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXJrZXJzLT5h
ZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZXNUb0FkZFtpXSwgbV9j
b3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSA9IG1hcmtlclR5cGVzVG9BZGRbaV07CisgICAgICAg
IFN0cmluZyBkZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKG1fY29ycmVjdGlvblBhbmVsSW5mby5w
YW5lbFR5cGUgIT0gQ29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlUmV2ZXJzaW9uICYmICht
YXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09
IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKSkKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
ID0gbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJlcGxhY2VkU3RyaW5nOworICAgICAgICBtYXJrZXJz
LT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZSwgZGVzY3JpcHRp
b24pOwogICAgIH0KICNlbHNlIC8vIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBV
TlVTRURfUEFSQU0obWFya2VyVHlwZXNUb0FkZCk7CkBAIC0yNzg3LDcgKzI4MTIsNyBAQCB2b2lk
IEVkaXRvcjo6dW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbk9mQ29ycmVjdAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24o
KS5zdGFydCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZW5kKCkpOwogCiAg
ICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+bWFya2VycygpOwotICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgbWFya2Vycy0+cmVtb3ZlTWFya2VycyhyYW5n
ZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkF1dG9j
b3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3Zlcmxh
cHBpbmdNYXJrZXIpOwogICAgIG1hcmtlcnMtPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1l
bnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKICNlbHNlIC8vIFNV
UFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGRl
YTc3YzJiOTY5NjliNDU5ZjU1ZGM4MDAwMTk4NzMwYTU5ZDM3ZjYuLjM4NTE1NWJkNmUzNmY0M2Zi
NDQ1YzI1ZjUxODA0ZDUzMDRlM2IxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjQ3
LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCiAgICAg
ICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKICAgICAgICAgU2hvd0NvcnJlY3Rpb25Q
YW5lbCA9IDEgPDwgMywKKyAgICAgICAgQ2hlY2tGb3JDb3JyZWN0aW9uID0gMSA8PCA0LAogICAg
IH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApp
bmRleCBiYWQ0YTk5ZTk4MTg5MzAyZWM2MWJmZGIwOWRhMTQ2ZDBiYjE0ZWI0Li5hZmU3NGE4ZDk4
NGNjZTEyNzgyOWIyNWNlNDRlNTg5Mzk5N2M5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgdm9pZCBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoIWZy
YWdtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShT
ZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpDbG9zZVR5cGluZyB8IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkNsZWFy
VHlwaW5nU3R5bGUpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTZXRTZWxlY3Rpb25D
b21tYW5kOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbG9z
ZVR5cGluZyB8IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkNsZWFyVHlwaW5nU3R5bGUpKTsKICNpZiBT
VVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
U3BlbGxpbmdDb3JyZWN0aW9uUmVjb3JkVW5kb0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBt
X2NvcnJlY3RlZCwgbV9jb3JyZWN0aW9uKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88315</attachid>
            <date>2011-04-05 15:05:12 -0700</date>
            <delta_ts>2011-04-06 06:48:44 -0700</delta_ts>
            <desc>Patch (v4)</desc>
            <filename>bug-57665-20110405150512.patch</filename>
            <type>text/plain</type>
            <size>23935</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZWUwYzI1NzBiZDY3NjNi
YjJmN2I2NmM3MzY5OGE5MjdmYmJhMDQxLi43MDg5YTA3YWFiZDNmNmNiMGMxOTkzMDU3NDJiZWZj
NzBhZmU4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDQtMDUgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gV2ViQ29yZSBuZWVkIHRvIG5vdGlm
eSBBcHBLaXQgc3BlbGwgY2hlY2tlciBhZnRlciB1c2VyIGhhcyBtb2RpZmllZCBhdXRvY29ycmVj
dGVkIHRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NzY2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzM1MDQ3Nz4KKworICAgICAgICBXZSBu
ZWVkIHRvIHRyYWNrIGhvdyB1c2VyIG1vZGlmaWVkIGFuIGF1dG9jb3JyZWN0ZWQgd29yZC4gSWYg
aGUgY2hhbmdlZCBpdCBiYWNrIHRvIG9yaWdpbmFsCisgICAgICAgIHRleHQsIHdlIHdhbnQgdG8g
cmVjb3JkIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgcmVzcG9uc2UuIEFuZCBpZiBoZSBjaGFuZ2Vk
IGl0IHRvIHNvbWV0aGluZworICAgICAgICBlbHNlLCB3ZSB3YW50IHRvIHJlY29yZCBBdXRvY29y
cmVjdGlvbkVkaXRlZCByZXNwb25zZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHdlIG5l
ZWQgdG8gZGlzdHJpbmd1aXNoIGJldHdlZW4gdGV4dCByZXBsYWNlbWVudCBjYXVzZWQgYnkgYXV0
b2NvcnJlY3Rpb24KKyAgICAgICAgZnJvbSB0aGF0IGR1ZSB0byBvdGhlciBjYXVzZXMsIHN1Y2gg
YXMgcmV2ZXJzaW9uLCB0ZXh0IHN1YnN0aXR1dGlvbiwgZXRjLiBTbyB3ZSBhZGRlZCBhIG5ldwor
ICAgICAgICBtYXJrZXIgdHlwZSAiQXV0b2NvcnJlY3RlZCIuIFdlIGFsc28gbmVlZCB0byBiZSBh
YmxlIHRvIGNoZWNrIGZvciBjb3JyZWN0aW9uLCBldmVuIHdoZW4gd2UKKyAgICAgICAgZG9uJ3Qg
aW50ZW5kIHRvIGFjdHVhbGx5IGNhcnJ5IG91dCByZXBsYWNlbWVudC4gRm9yIHRoaXMsIHdlIGlu
dHJvZHVjZWQgYSBuZXcgVGV4dENoZWNraW5nT3B0aW9uCisgICAgICAgIHZhbHVlLCAiQ2hlY2tG
b3JDb3JyZWN0aW9uIi4KKworICAgICAgICBXZSBhbHNvIGFkZGVkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6bWFya2Vyc0luUmFuZ2UoKSB0byByZXRyaWV2ZSBhIHZlY3RvciBvZiBtYXJrZXJz
IGluCisgICAgICAgIHNwZWNpZmllZCByYW5nZSwgYW5kIG9mIHNwZWNpZmllZCB0eXBlLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6Om1hcmtlcnNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6aGFzTWFya2Vycyk6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpyZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseUNvcnJlY3Rpb25QYW5lbElu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZDo6ZG9BcHBseSk6CisKIDIwMTEtMDQtMDUgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCmluZGV4IDgxMTEyYmZjMWMzY2FkOGZlYTEzZjMyZDIw
YWZjNDg2Nzg5ZjI2OTMuLjI5MjkwYzMwNWFmMThiNmI1MGNjZjI3YTk4ODQ3ZWVlOTczOGQ1YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCkBAIC0zNyw5ICszNyw5IEBAIHN0cnVj
dCBEb2N1bWVudE1hcmtlciB7CiAgICAgICAgIFNwZWxsaW5nID0gMSA8PCAwLAogICAgICAgICBH
cmFtbWFyID0gMSA8PCAxLAogICAgICAgICBUZXh0TWF0Y2ggPSAxIDw8IDIsCi0gICAgICAgIC8v
IFRleHQgaGFzIGJlZW4gbW9kaWZpZWQgYnkgc3BlbGwgY29ycmVjdGlvbi4gT24gc29tZSBwbGF0
Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQKLSAgICAgICAgLy8gdG8gYmUgYXV0b2NvcnJl
Y3RlZCBhZ2Fpbi4gT24gcG9zdCBTbm93IExlb3BhcmQgTWFjIE9TIFgsIGlmIGEgUmVwbGFjZW1l
bnQgbWFya2VyIGNvbnRhaW5zCi0gICAgICAgIC8vIG5vbi1lbXB0eSBkZXNjcmlwdGlvbiwgYSBy
ZXZlcnNpb24gVUkgd2lsbCBiZSBzaG93bi4KKyAgICAgICAgLy8gVGV4dCBoYXMgYmVlbiBtb2Rp
ZmllZCBieSBzcGVsbCBjb3JyZWN0aW9uLCByZXZlcnNpb24gb2Ygc3BlbGwgY29ycmVjdGlvbiBv
ciBvdGhlciB0eXBlIG9mIHN1YnN0aXR1dGlvbi4gCisgICAgICAgIC8vIE9uIHNvbWUgcGxhdGZv
cm1zLCB0aGlzIHByZXZlbnRzIHRoZSB0ZXh0IGZyb20gYmVpbmcgYXV0b2NvcnJlY3RlZCBhZ2Fp
bi4gT24gcG9zdCBTbm93IExlb3BhcmQgTWFjIE9TIFgsIAorICAgICAgICAvLyBpZiBhIFJlcGxh
Y2VtZW50IG1hcmtlciBjb250YWlucyBub24tZW1wdHkgZGVzY3JpcHRpb24sIGEgcmV2ZXJzaW9u
IFVJIHdpbGwgYmUgc2hvd24uCiAgICAgICAgIFJlcGxhY2VtZW50ID0gMSA8PCAzLAogICAgICAg
ICAvLyBSZW5kZXJlciBuZWVkcyB0byBhZGQgdW5kZXJsaW5lIGluZGljYXRpbmcgdGhhdCB0aGUg
dGV4dCBoYXMgYmVlbiBtb2RpZmllZCBieSBzcGVsbAogICAgICAgICAvLyBjb3JyZWN0aW9uLiBU
ZXh0IHdpdGggUmVwbGFjZW1lbnQgbWFya2VyIGRvZXNuJ3QgbmVjZXNzYXJpbHkgaGFzIENvcnJl
Y3Rpb25JbmRpY2F0b3IKQEAgLTQ5LDkgKzQ5LDExIEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7
CiAgICAgICAgIENvcnJlY3Rpb25JbmRpY2F0b3IgPSAxIDw8IDQsCiAgICAgICAgIC8vIENvcnJl
Y3Rpb24gc3VnZ2VzdGlvbiBoYXMgYmVlbiBvZmZlcmVkLCBidXQgZ290IHJlamVjdGVkIGJ5IHVz
ZXIuCiAgICAgICAgIFJlamVjdGVkQ29ycmVjdGlvbiA9IDEgPDwgNSwKLSAgICAgICAgLy8gT24g
c29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQgdG8gYmUgc3BlbGxjaGVja2Vk
IGFnYWluLgotICAgICAgICBTcGVsbENoZWNraW5nRXhlbXB0aW9uID0gMSA8PCA2LAotICAgICAg
ICBBbGxNYXJrZXJzID0gU3BlbGxpbmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFjZW1l
bnQgfCBDb3JyZWN0aW9uSW5kaWNhdG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgU3BlbGxDaGVj
a2luZ0V4ZW1wdGlvbgorICAgICAgICAvLyBUZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGF1dG9j
b3JyZWN0aW9uLiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBtYXJrZXIgaXMgdGhlIG9yaWdpbmFs
IHRleHQgYmVmb3JlIGF1dG9jb3JyZWN0aW9uLgorICAgICAgICBBdXRvY29ycmVjdGVkID0gMSA8
PCA2LAorICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4
dCBmcm9tIGJlaW5nIHNwZWxsY2hlY2tlZCBhZ2Fpbi4KKyAgICAgICAgU3BlbGxDaGVja2luZ0V4
ZW1wdGlvbiA9IDEgPDwgNywKKyAgICAgICAgQWxsTWFya2VycyA9IFNwZWxsaW5nIHwgR3JhbW1h
ciB8IFRleHRNYXRjaCB8IFJlcGxhY2VtZW50IHwgQ29ycmVjdGlvbkluZGljYXRvciB8IFJlamVj
dGVkQ29ycmVjdGlvbiB8IEF1dG9jb3JyZWN0ZWQgfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uCiAg
ICAgfTsKICAgICBNYXJrZXJUeXBlIHR5cGU7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBNYXJrZXJU
eXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKaW5kZXggZjY0NmYzYzVhNWFmY2ViMzcyNjVmYjFkMmE2MjUwMzU2MWJmY2Y3My4uNmM5MzI0
YTZiN2ZiNTE5MDZhNjY3OWU2NzdkMjI5MzAyMDA5ZGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTMxNyw2ICszMTcsMzUgQEAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNG
b3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4oKTsK
IH0KIAorVmVjdG9yPERvY3VtZW50TWFya2VyPiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1h
cmtlcnNJblJhbmdlKFJhbmdlKiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFy
a2VyVHlwZSkKK3sKKyAgICBpZiAoIXBvc3NpYmx5SGFzTWFya2VycyhtYXJrZXJUeXBlKSkKKyAg
ICAgICAgcmV0dXJuIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4oKTsKKworICAgIFZlY3RvcjxEb2N1
bWVudE1hcmtlcj4gZm91bmRNYXJrZXJzOworCisgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBy
YW5nZS0+c3RhcnRDb250YWluZXIoKTsKKyAgICBBU1NFUlQoc3RhcnRDb250YWluZXIpOworICAg
IE5vZGUqIGVuZENvbnRhaW5lciA9IHJhbmdlLT5lbmRDb250YWluZXIoKTsKKyAgICBBU1NFUlQo
ZW5kQ29udGFpbmVyKTsKKworICAgIE5vZGUqIHBhc3RMYXN0Tm9kZSA9IHJhbmdlLT5wYXN0TGFz
dE5vZGUoKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZS0+Zmlyc3ROb2RlKCk7IG5vZGUg
IT0gcGFzdExhc3ROb2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAg
ICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2VycyA9IG1hcmtlcnNGb3JOb2RlKG5vZGUp
OworICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
YXJrZXJzLmVuZCgpOworICAgICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudE1hcmtlcj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbWFya2Vycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgICAgIGlmICghKG1hcmtlclR5cGUgJiBpdC0+dHlwZSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydENvbnRhaW5lciAmJiBpdC0+ZW5k
T2Zmc2V0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobm9kZSA9PSBlbmRDb250
YWluZXIgJiYgaXQtPnN0YXJ0T2Zmc2V0ID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+
ZW5kT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZm91
bmRNYXJrZXJzLmFwcGVuZCgqaXQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmb3Vu
ZE1hcmtlcnM7Cit9CisKIFZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtl
clR5cGUpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlc3VsdDsKQEAgLTYwMiwyMCArNjMxLDEx
IEBAIGJvb2wgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpoYXNNYXJrZXJzKFJhbmdlKiByYW5n
ZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5CiAgICAgICAgIGZvciAoVmVjdG9yPERvY3VtZW50
TWFya2VyPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXJrZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAgICAgaWYgKCEobWFya2VyVHlwZXMgJiBpdC0+dHlwZSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydENvbnRh
aW5lciAmJiBub2RlID09IGVuZENvbnRhaW5lcikgewotICAgICAgICAgICAgICAgIC8vIFRoZSBy
YW5nZSBzcGFucyBvbmx5IG9uZSBub2RlLgotICAgICAgICAgICAgICAgIGlmIChpdC0+ZW5kT2Zm
c2V0ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9mZnNldCgpKSAmJiBpdC0+
c3RhcnRPZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPmVuZE9mZnNldCgpKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Q29udGFpbmVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpdC0+ZW5kT2Zmc2V0ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdl
LT5zdGFydE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZSA9PSBlbmRDb250YWluZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGl0LT5zdGFydE9mZnNldCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWlu
ZXIgJiYgaXQtPmVuZE9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG5v
ZGUgPT0gZW5kQ29udGFpbmVyICYmIGl0LT5zdGFydE9mZnNldCA+PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmFuZ2UtPmVuZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRl
eCA2ZmEwNjBhMzQ2YTIyZjRlOGMxZmE1MzIzNjE3YTkyY2QxYmU1ZGU2Li4zZDU1YTViYWQ3YzJi
MjhmZTBjODQ4NzA1NjJiYmE2NTgyNzVlYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAg
IERvY3VtZW50TWFya2VyKiBtYXJrZXJDb250YWluaW5nUG9pbnQoY29uc3QgSW50UG9pbnQmLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsK
ICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnNGb3JOb2RlKE5vZGUqKTsKKyAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnNJblJhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUpOwogICAgIFZlY3RvcjxJbnRSZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFy
a2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJr
ZXJzKTsKICAgICB2b2lkIGNsZWFyRGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5n
ZShSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA2N2Y1NGM0NWIxZGY0ZGI1OTdhMTQ1YWFhMzcyNTI2OTFkNGI4NGIw
Li5mMGJmYTQ3NDkzMjE0Zjc4MWE0ZWZiYzRmMDRmNDhjYjVmYjNkNDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24o
KQogICAgICAgICBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9uLmFwcGVuZChEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQpOwogICAgICAgICBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9u
LmFwcGVuZChEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGljYXRvcik7CiAgICAgICAgIG1h
cmtlclR5cGVzRm9yQXV0b0NvcnJlY3Rpb24uYXBwZW5kKERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5h
cHBlbmQoRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpOwogICAgIH0KICAgICByZXR1cm4g
bWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbjsKIH0KQEAgLTEyMiw2ICsxMjMsMjEgQEAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVz
Rm9yUmVwbGFjZW1lbnQoKQogICAgIHJldHVybiBtYXJrZXJUeXBlc0ZvclJlcGxhY2VtZW50Owog
fQogCisjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAorc3RhdGljIGJvb2wgbWFya2Vy
c0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+JiBt
YXJrZXJzKQoreworICAgIGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uID0gbWFya2Vyc1swXS5kZXNjcmlw
dGlvbjsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKGRlc2NyaXB0aW9uICE9IG1hcmtlcnNbaV0uZGVzY3JpcHRpb24pCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisKIC8vIFdoZW4gYW4gZXZlbnQgaGFuZGxlciBoYXMgbW92ZWQgdGhlIHNlbGVjdGlvbiBvdXRz
aWRlIG9mIGEgdGV4dCBjb250cm9sCiAvLyB3ZSBzaG91bGQgdXNlIHRoZSB0YXJnZXQgY29udHJv
bCdzIHNlbGVjdGlvbiBmb3IgdGhpcyBlZGl0aW5nIG9wZXJhdGlvbi4KIFZpc2libGVTZWxlY3Rp
b24gRWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5kKEV2ZW50KiBldmVudCkKQEAgLTIyMTIsNiAr
MjIyOCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgYm9vbCBzaG91bGRNYXJrR3Jh
bW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKICAgICBib29sIHNob3Vs
ZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFj
ZW1lbnQ7CiAgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5n
T3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7CisgICAgYm9vbCBzaG91bGRDaGVja0ZvckNv
cnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRp
b25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIHdpdGggc2VsZWN0aW9ucyBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTIyMzksNyArMjI1Niw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoCiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyID8gKHNwZWxsaW5nUGFy
YWdyYXBoLmlzUmFuZ2VFbXB0eSgpICYmIGdyYW1tYXJQYXJhZ3JhcGguaXNFbXB0eSgpKSA6IHNw
ZWxsaW5nUGFyYWdyYXBoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNo
b3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRNYXJrU3BlbGxpbmcpIHsKKyAgICBpZiAo
c2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZE1hcmtTcGVsbGluZyB8fCBzaG91bGRD
aGVja0ZvckNvcnJlY3Rpb24pIHsKICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5z
ZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb24pIHsKICAg
ICAgICAgICAgIC8vIEF0dGVtcHQgdG8gc2F2ZSB0aGUgY2FyZXQgcG9zaXRpb24gc28gd2UgY2Fu
IHJlc3RvcmUgaXQgbGF0ZXIgaWYgbmVlZGVkCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBv
c2l0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpOwpAQCAtMjMwMiw3ICsyMzE5LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
VGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJh
bmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2Vy
KGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+
dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRTaG93Q29y
cmVjdGlvblBhbmVsKSAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGlu
Z1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxs
aW5nUGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExv
Y2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0
TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFy
dCgpCiAgICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZUxpbmsKICAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVRdW90ZQogICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZURhc2gKQEAgLTIzMjgsMjUgKzIzNDUsMjAgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGgg
KyAxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBTdHJpbmcgcmVw
bGFjZWRTdHJpbmc7CisKICAgICAgICAgICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4g
YW4gYWxyZWFkeS1jb3JyZWN0ZWQgd29yZC4KICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gcmFuZ2VUb1JlcGxhY2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAg
aW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2VUb1JlcGxhY2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgaW50IGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgcmVwbGFjZW1lbnRMZW5ndGg7
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbm9kZS0+
ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAg
ICAgICBzaXplX3QgbWFya2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlckNvdW50OyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICgobWFya2VyLnR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50IHx8IG1hcmtlci50eXBlID09IERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rp
b24pICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLnN0YXJ0T2Zmc2V0KSA8IGVuZE9mZnNldCAm
JiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5lbmRPZmZzZXQpID4gc3RhcnRPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5zdGFydE9mZnNldCkgPj0gZW5kT2Zm
c2V0KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBsYWNl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtl
cnMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hcmtlcnMtPmhhc01hcmtlcnMocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9SZXBsYWNlbWVudCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1v
ZGlmaWVkQ29ycmVjdGlvbihyYW5nZVRvUmVwbGFjZS5nZXQoKSwgcmVwbGFjZWRTdHJpbmcsIHJl
c3VsdC0+cmVwbGFjZW1lbnQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFya2Vycy0+
aGFzTWFya2VycyhyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVk
Q29ycmVjdGlvbikpCisgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFkb1JlcGxhY2VtZW50KQorICAgICAg
ICAgICAgaWYgKCEoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZFNob3dDb3JyZWN0
aW9uUGFuZWwpIHx8ICFkb1JlcGxhY2VtZW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTApAQCAtMjM4MCwxMCArMjM5Miw2IEBA
IHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgaWYgKGNhbkVkaXRSaWNo
bHkoKSkKICAgICAgICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtDb21tYW5k
OjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQt
PnJlcGxhY2VtZW50LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlw
ZWQpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nOwotICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCi0g
ICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBs
YWNlLmdldCgpKTsKLQogICAgICAgICAgICAgICAgIGJvb2wgdXNlU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZCA9IGZhbHNlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKQpAQCAtMjQwNyw5ICsyNDE1LDE1IEBAIHZv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBB
ZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5IGJlIHVuZG9uZSBhbmQg
d29uJ3QgYmUgcmUtY29ycmVjdGVkLgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VkUmFuZ2UgPSBzcGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlv
biwgcmVwbGFjZW1lbnRMZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFJhbmdl
LT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyZXBs
YWNlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIHJlcGxhY2VkU3Ry
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIo
KS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwg
RG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IpOwotICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkt
PmFkZE1hcmtlcihyZXBsYWNlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVj
a2luZ0V4ZW1wdGlvbik7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXNUb0FkZCA9IG1hcmtlclR5cGVzRm9yQXV0b2NvcnJl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBt
YXJrZXJzID0gcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtl
clR5cGVzVG9BZGQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6
OlJlcGxhY2VtZW50IHx8IG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0
ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxh
Y2VkUmFuZ2UuZ2V0KCksIG1hcmtlclR5cGUsIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLT5h
ZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTI0MzcsNiArMjQ1MSwzMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogI2VuZGlmIC8vIFVT
RShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKK3ZvaWQgRWRpdG9yOjpyZWNvcmRTcGVsbGNo
ZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihSYW5nZSogcmFuZ2VPZkNvcnJlY3Rp
b24sIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCit7
CisjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAorICAgIGlmICghcmFuZ2VPZkNvcnJl
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1h
cmtlcnMgPSByYW5nZU9mQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+
bWFya2VycygpOworICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gY29ycmVjdGVkT25jZU1hcmtl
cnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShyYW5nZU9mQ29ycmVjdGlvbiwgRG9jdW1lbnRN
YXJrZXI6OkF1dG9jb3JyZWN0ZWQpOworICAgIGlmIChjb3JyZWN0ZWRPbmNlTWFya2Vycy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBTcGVsbGluZyBjb3JyZWN0ZWQg
dGV4dCBoYXMgYmVlbiBlZGl0ZWQuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdXNlciBo
YXMgcmV2ZXJ0ZWQgaXQgdG8gb3JpZ2luYWwgdGV4dCBvcgorICAgIC8vIGVkaXRlZCBpdCB0byBz
b21ldGhpbmcgZWxzZSwgYW5kIG5vdGlmeSBzcGVsbGNoZWNrZXIgYWNjb3JkaW5nbHkuCisgICAg
aWYgKG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVzY3JpcHRpb24oY29ycmVjdGVkT25jZU1hcmtlcnMp
ICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJzWzBdLmRlc2NyaXB0aW9uID09IGNvcnJlY3RlZCkKKyAg
ICAgICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50
OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOworICAgIGVs
c2UKKyAgICAgICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9y
Q2xpZW50OjpBdXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAg
ICBtYXJrZXJzLT5yZW1vdmVNYXJrZXJzKHJhbmdlT2ZDb3JyZWN0aW9uLCBEb2N1bWVudE1hcmtl
cjo6QXV0b2NvcnJlY3RlZCwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFs
bHlPdmVybGFwcGluZ01hcmtlcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyYW5nZU9mQ29y
cmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGNvcnJlY3RlZCk7CisgICAgVU5VU0VEX1BBUkFN
KGNvcnJlY3Rpb24pOworI2VuZGlmCit9CisKIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBs
YWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogewogI2lmIFVTRShVTklG
SUVEX1RFWFRfQ0hFQ0tJTkcpCkBAIC0yNDU2LDYgKzI0OTQsNyBAQCB2b2lkIEVkaXRvcjo6Y2hh
bmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAg
ICBSZWZQdHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3Jh
cGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CiAgICAgY2hhbmdl
ZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtl
cihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwgU3RyaW5n
KCkpOwogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICBjaGFuZ2VkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2Vycyhj
aGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAg
ICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+
YWRkTWFya2VyKGNoYW5nZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tp
bmdFeGVtcHRpb24pOwogI2VuZGlmCiAjZWxzZQpAQCAtMjQ3MCw3ICsyNTA5LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNwZWxsaW5nU2VsZWMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlm
ICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGlu
ZzsKKyAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3Bl
bGxpbmcgfCBDaGVja0ZvckNvcnJlY3Rpb247CiAgICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1h
cmtHcmFtbWFyOwogICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
dGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKQEAg
LTI3MjcsMTAgKzI3NjYsMTEgQEAgdm9pZCBFZGl0b3I6OmFwcGx5Q29ycmVjdGlvblBhbmVsSW5m
byhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JgogICAgIERvY3VtZW50
TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5
cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGlmIChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlID09IENvcnJlY3Rp
b25QYW5lbEluZm86OlBhbmVsVHlwZVJldmVyc2lvbikKLSAgICAgICAgICAgIG1hcmtlcnMtPmFk
ZE1hcmtlcihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBtYXJrZXJUeXBlc1RvQWRkW2ldKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIG1hcmtlclR5cGVzVG9BZGRbaV0sIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBs
YWNlZFN0cmluZyk7CisgICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOworICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb247Cisg
ICAgICAgIGlmIChtX2NvcnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlICE9IENvcnJlY3Rpb25Q
YW5lbEluZm86OlBhbmVsVHlwZVJldmVyc2lvbiAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2Nv
cnJlY3RlZCkpCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IG1fY29ycmVjdGlvblBhbmVsSW5m
by5yZXBsYWNlZFN0cmluZzsKKyAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50
UmFuZ2UuZ2V0KCksIG1hcmtlclR5cGUsIGRlc2NyaXB0aW9uKTsKICAgICB9CiAjZWxzZSAvLyBT
VVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgVU5VU0VEX1BBUkFNKG1hcmtlclR5cGVz
VG9BZGQpOwpAQCAtMjc2Nyw3ICsyODA3LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZFNwZWxs
Q29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25PZkNvcnJlY3QKICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgp
LCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnNlbGVjdGlvbigpLmVuZCgpKTsKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJv
bGxlciogbWFya2VycyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJr
ZXJzLT5yZW1vdmVNYXJrZXJzKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcp
OworICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBtYXJr
ZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7
CiAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxDaGVja2luZ0V4ZW1wdGlvbik7CiAjZWxzZSAvLyBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BB
TkVMCkBAIC0zNTg5LDEzICszNjI5LDE0IEBAIFRleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6
dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlCiAgICAg
Ym9vbCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxs
aW5nOwogICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYg
TWFya0dyYW1tYXI7CiAgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENo
ZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7CisgICAgYm9vbCBzaG91bGRDaGVj
a0ZvckNvcnJlY3Rpb24gPSBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgQ2hlY2tGb3JDb3JyZWN0aW9uKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVN
YXNrIGNoZWNraW5nVHlwZXMgPSAwOwogICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCiAgICAg
ICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgIGlmIChz
aG91bGRNYXJrR3JhbW1hcikKICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkKKyAgICBpZiAo
c2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uKQogICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VN
RU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNzc0NTM1MWQxODc0YzdhMGQzNTY4M2E5
MTFlYWZiMDZiZDE4N2VlOC4uZjlhZWM0MDY5MGEwMWYzYTM4Nzg1NWNhMjJhMDY1N2U3NDVhYjMx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0yMjksNiArMjI5LDcgQEAgcHVibGljOgog
ICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKICAgICAgICAgUGVyZm9ybVJlcGxhY2VtZW50
ID0gMSA8PCAyLAogICAgICAgICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAzLAorICAgICAg
ICBDaGVja0ZvckNvcnJlY3Rpb24gPSAxIDw8IDQsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2ln
bmVkIFRleHRDaGVja2luZ09wdGlvbnM7CiAKQEAgLTQxNiw2ICs0MTcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9p
ZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBi
b29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7
CiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENo
ZWNraW5nT3B0aW9ucyk7CisgICAgdm9pZCByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1v
ZGlmaWVkQ29ycmVjdGlvbihSYW5nZSosIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBT
dHJpbmcmIGNvcnJlY3Rpb24pOwogCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAg
IHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxl
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggYmFkNGE5OWU5ODE4OTMwMmVjNjFiZmRiMDlkYTE0NmQwYmIx
NGViNC4uYWZlNzRhOGQ5ODRjY2UxMjc4MjliMjVjZTQ0ZTU4OTM5OTdjOTI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXBwbHlDb21t
YW5kVG9Db21wb3NpdGUoU2V0U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fc2VsZWN0aW9uVG9C
ZUNvcnJlY3RlZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Q2xvc2VUeXBpbmcgfCBTZWxlY3Rpb25D
b250cm9sbGVyOjpDbGVhclR5cGluZ1N0eWxlKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3Np
dGUoU2V0U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkIHwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6Q2xvc2VUeXBpbmcgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbGVhclR5cGlu
Z1N0eWxlKSk7CiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGFwcGx5Q29t
bWFuZFRvQ29tcG9zaXRlKFNwZWxsaW5nQ29ycmVjdGlvblJlY29yZFVuZG9Db21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQoKSwgbV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbikpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88409</attachid>
            <date>2011-04-06 06:48:49 -0700</date>
            <delta_ts>2011-04-06 09:09:53 -0700</delta_ts>
            <desc>Patch (v5)</desc>
            <filename>bug-57665-20110406064848.patch</filename>
            <type>text/plain</type>
            <size>23974</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZWUwYzI1NzBiZDY3NjNi
YjJmN2I2NmM3MzY5OGE5MjdmYmJhMDQxLi44MzhhNDczNjI2YWMxOThmZjA5ODI3NWZmOGE1M2Yy
ZGUzZDhlNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMDUgIEppYSBQ
dSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW01hY10gV2ViQ29yZSBuZWVkIHRvIG5vdGlmeSBBcHBLaXQgc3BlbGwgY2hl
Y2tlciBhZnRlciB1c2VyIGhhcyBtb2RpZmllZCBhdXRvY29ycmVjdGVkIHRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzM1MDQ3Nz4KKworICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIGhvdyB1
c2VyIG1vZGlmaWVkIGFuIGF1dG9jb3JyZWN0ZWQgd29yZC4gSWYgaGUgY2hhbmdlZCBpdCBiYWNr
IHRvIG9yaWdpbmFsCisgICAgICAgIHRleHQsIHdlIHdhbnQgdG8gcmVjb3JkIEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgcmVzcG9uc2UuIEFuZCBpZiBoZSBjaGFuZ2VkIGl0IHRvIHNvbWV0aGluZwor
ICAgICAgICBlbHNlLCB3ZSB3YW50IHRvIHJlY29yZCBBdXRvY29ycmVjdGlvbkVkaXRlZCByZXNw
b25zZS4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHdlIG5lZWQgdG8gZGlzdHJpbmd1aXNo
IGJldHdlZW4gdGV4dCByZXBsYWNlbWVudCBjYXVzZWQgYnkgYXV0b2NvcnJlY3Rpb24KKyAgICAg
ICAgZnJvbSB0aGF0IGR1ZSB0byBvdGhlciBjYXVzZXMsIHN1Y2ggYXMgcmV2ZXJzaW9uLCB0ZXh0
IHN1YnN0aXR1dGlvbiwgZXRjLiBTbyB3ZSBhZGRlZCBhIG5ldworICAgICAgICBtYXJrZXIgdHlw
ZSAiQXV0b2NvcnJlY3RlZCIuIFdlIGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIGNoZWNrIGZvciBj
b3JyZWN0aW9uLCBldmVuIHdoZW4gd2UKKyAgICAgICAgZG9uJ3QgaW50ZW5kIHRvIGFjdHVhbGx5
IGNhcnJ5IG91dCByZXBsYWNlbWVudC4gRm9yIHRoaXMsIHdlIGludHJvZHVjZWQgYSBuZXcgVGV4
dENoZWNraW5nT3B0aW9uCisgICAgICAgIHZhbHVlLCAiQ2hlY2tGb3JDb3JyZWN0aW9uIi4KKwor
ICAgICAgICBXZSBhbHNvIGFkZGVkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6bWFya2Vyc0lu
UmFuZ2UoKSB0byByZXRyaWV2ZSBhIHZlY3RvciBvZiBtYXJrZXJzIGluCisgICAgICAgIHNwZWNp
ZmllZCByYW5nZSwgYW5kIG9mIHNwZWNpZmllZCB0eXBlLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50TWFya2VyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6aGFzTWFy
a2Vycyk6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtlclR5cGVzRm9y
QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6bWFya2Vyc0hhdmVJZGVudGljYWxE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWNv
cmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjphcHBseUNvcnJlY3Rpb25QYW5lbEluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp1bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6
CisKIDIwMTEtMDQtMDUgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlci5oCmluZGV4IDgxMTEyYmZjMWMzY2FkOGZlYTEzZjMyZDIwYWZjNDg2Nzg5ZjI2OTMuLjI5
MjkwYzMwNWFmMThiNmI1MGNjZjI3YTk4ODQ3ZWVlOTczOGQ1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5oCkBAIC0zNyw5ICszNyw5IEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7
CiAgICAgICAgIFNwZWxsaW5nID0gMSA8PCAwLAogICAgICAgICBHcmFtbWFyID0gMSA8PCAxLAog
ICAgICAgICBUZXh0TWF0Y2ggPSAxIDw8IDIsCi0gICAgICAgIC8vIFRleHQgaGFzIGJlZW4gbW9k
aWZpZWQgYnkgc3BlbGwgY29ycmVjdGlvbi4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVu
dHMgdGhlIHRleHQKLSAgICAgICAgLy8gdG8gYmUgYXV0b2NvcnJlY3RlZCBhZ2Fpbi4gT24gcG9z
dCBTbm93IExlb3BhcmQgTWFjIE9TIFgsIGlmIGEgUmVwbGFjZW1lbnQgbWFya2VyIGNvbnRhaW5z
Ci0gICAgICAgIC8vIG5vbi1lbXB0eSBkZXNjcmlwdGlvbiwgYSByZXZlcnNpb24gVUkgd2lsbCBi
ZSBzaG93bi4KKyAgICAgICAgLy8gVGV4dCBoYXMgYmVlbiBtb2RpZmllZCBieSBzcGVsbCBjb3Jy
ZWN0aW9uLCByZXZlcnNpb24gb2Ygc3BlbGwgY29ycmVjdGlvbiBvciBvdGhlciB0eXBlIG9mIHN1
YnN0aXR1dGlvbi4gCisgICAgICAgIC8vIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIHByZXZlbnRz
IHRoZSB0ZXh0IGZyb20gYmVpbmcgYXV0b2NvcnJlY3RlZCBhZ2Fpbi4gT24gcG9zdCBTbm93IExl
b3BhcmQgTWFjIE9TIFgsIAorICAgICAgICAvLyBpZiBhIFJlcGxhY2VtZW50IG1hcmtlciBjb250
YWlucyBub24tZW1wdHkgZGVzY3JpcHRpb24sIGEgcmV2ZXJzaW9uIFVJIHdpbGwgYmUgc2hvd24u
CiAgICAgICAgIFJlcGxhY2VtZW50ID0gMSA8PCAzLAogICAgICAgICAvLyBSZW5kZXJlciBuZWVk
cyB0byBhZGQgdW5kZXJsaW5lIGluZGljYXRpbmcgdGhhdCB0aGUgdGV4dCBoYXMgYmVlbiBtb2Rp
ZmllZCBieSBzcGVsbAogICAgICAgICAvLyBjb3JyZWN0aW9uLiBUZXh0IHdpdGggUmVwbGFjZW1l
bnQgbWFya2VyIGRvZXNuJ3QgbmVjZXNzYXJpbHkgaGFzIENvcnJlY3Rpb25JbmRpY2F0b3IKQEAg
LTQ5LDkgKzQ5LDExIEBAIHN0cnVjdCBEb2N1bWVudE1hcmtlciB7CiAgICAgICAgIENvcnJlY3Rp
b25JbmRpY2F0b3IgPSAxIDw8IDQsCiAgICAgICAgIC8vIENvcnJlY3Rpb24gc3VnZ2VzdGlvbiBo
YXMgYmVlbiBvZmZlcmVkLCBidXQgZ290IHJlamVjdGVkIGJ5IHVzZXIuCiAgICAgICAgIFJlamVj
dGVkQ29ycmVjdGlvbiA9IDEgPDwgNSwKLSAgICAgICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIHRo
aXMgcHJldmVudHMgdGhlIHRleHQgdG8gYmUgc3BlbGxjaGVja2VkIGFnYWluLgotICAgICAgICBT
cGVsbENoZWNraW5nRXhlbXB0aW9uID0gMSA8PCA2LAotICAgICAgICBBbGxNYXJrZXJzID0gU3Bl
bGxpbmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFjZW1lbnQgfCBDb3JyZWN0aW9uSW5k
aWNhdG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbgorICAg
ICAgICAvLyBUZXh0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGF1dG9jb3JyZWN0aW9uLiBUaGUgZGVz
Y3JpcHRpb24gb2YgdGhpcyBtYXJrZXIgaXMgdGhlIG9yaWdpbmFsIHRleHQgYmVmb3JlIGF1dG9j
b3JyZWN0aW9uLgorICAgICAgICBBdXRvY29ycmVjdGVkID0gMSA8PCA2LAorICAgICAgICAvLyBP
biBzb21lIHBsYXRmb3JtcywgdGhpcyBwcmV2ZW50cyB0aGUgdGV4dCBmcm9tIGJlaW5nIHNwZWxs
Y2hlY2tlZCBhZ2Fpbi4KKyAgICAgICAgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbiA9IDEgPDwgNywK
KyAgICAgICAgQWxsTWFya2VycyA9IFNwZWxsaW5nIHwgR3JhbW1hciB8IFRleHRNYXRjaCB8IFJl
cGxhY2VtZW50IHwgQ29ycmVjdGlvbkluZGljYXRvciB8IFJlamVjdGVkQ29ycmVjdGlvbiB8IEF1
dG9jb3JyZWN0ZWQgfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uCiAgICAgfTsKICAgICBNYXJrZXJU
eXBlIHR5cGU7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBNYXJrZXJUeXBlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggZjY0NmYzYzVh
NWFmY2ViMzcyNjVmYjFkMmE2MjUwMzU2MWJmY2Y3My4uNmM5MzI0YTZiN2ZiNTE5MDZhNjY3OWU2
NzdkMjI5MzAyMDA5ZGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAKQEAgLTMxNyw2ICszMTcsMzUgQEAgVmVjdG9yPERvY3VtZW50TWFy
a2VyPiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNGb3JOb2RlKE5vZGUqIG5vZGUp
CiAgICAgcmV0dXJuIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4oKTsKIH0KIAorVmVjdG9yPERvY3Vt
ZW50TWFya2VyPiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJhbmdlKFJhbmdl
KiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKK3sKKyAgICBp
ZiAoIXBvc3NpYmx5SGFzTWFya2VycyhtYXJrZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcj4oKTsKKworICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gZm91bmRN
YXJrZXJzOworCisgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSByYW5nZS0+c3RhcnRDb250YWlu
ZXIoKTsKKyAgICBBU1NFUlQoc3RhcnRDb250YWluZXIpOworICAgIE5vZGUqIGVuZENvbnRhaW5l
ciA9IHJhbmdlLT5lbmRDb250YWluZXIoKTsKKyAgICBBU1NFUlQoZW5kQ29udGFpbmVyKTsKKwor
ICAgIE5vZGUqIHBhc3RMYXN0Tm9kZSA9IHJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSByYW5nZS0+Zmlyc3ROb2RlKCk7IG5vZGUgIT0gcGFzdExhc3ROb2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxEb2N1bWVu
dE1hcmtlcj4gbWFya2VycyA9IG1hcmtlcnNGb3JOb2RlKG5vZGUpOworICAgICAgICBWZWN0b3I8
RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXJrZXJzLmVuZCgpOworICAg
ICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudE1hcmtlcj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFy
a2Vycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICghKG1hcmtl
clR5cGUgJiBpdC0+dHlwZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAobm9kZSA9PSBzdGFydENvbnRhaW5lciAmJiBpdC0+ZW5kT2Zmc2V0IDw9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAobm9kZSA9PSBlbmRDb250YWluZXIgJiYgaXQtPnN0YXJ0
T2Zmc2V0ID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZm91bmRNYXJrZXJzLmFwcGVuZCgq
aXQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmb3VuZE1hcmtlcnM7Cit9CisKIFZl
Y3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JN
YXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCiB7CiAgICAgVmVj
dG9yPEludFJlY3Q+IHJlc3VsdDsKQEAgLTYwMiwyMCArNjMxLDExIEBAIGJvb2wgRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyOjpoYXNNYXJrZXJzKFJhbmdlKiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5CiAgICAgICAgIGZvciAoVmVjdG9yPERvY3VtZW50TWFya2VyPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtYXJrZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAg
ICAgaWYgKCEobWFya2VyVHlwZXMgJiBpdC0+dHlwZSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydENvbnRhaW5lciAmJiBub2RlID09IGVu
ZENvbnRhaW5lcikgewotICAgICAgICAgICAgICAgIC8vIFRoZSByYW5nZSBzcGFucyBvbmx5IG9u
ZSBub2RlLgotICAgICAgICAgICAgICAgIGlmIChpdC0+ZW5kT2Zmc2V0ID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9mZnNldCgpKSAmJiBpdC0+c3RhcnRPZmZzZXQgPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPmVuZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChub2RlID09IHN0YXJ0Q29udGFpbmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdC0+
ZW5kT2Zmc2V0ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9mZnNldCgpKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobm9kZSA9PSBlbmRDb250YWluZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGl0LT5zdGFydE9mZnNldCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0
KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIgJiYgaXQtPmVuZE9mZnNl
dCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG5vZGUgPT0gZW5kQ29udGFpbmVy
ICYmIGl0LT5zdGFydE9mZnNldCA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPmVuZE9m
ZnNldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2ZmEwNjBhMzQ2YTIyZjRl
OGMxZmE1MzIzNjE3YTkyY2QxYmU1ZGU2Li4zZDU1YTViYWQ3YzJiMjhmZTBjODQ4NzA1NjJiYmE2
NTgyNzVlYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50TWFya2VyKiBt
YXJrZXJDb250YWluaW5nUG9pbnQoY29uc3QgSW50UG9pbnQmLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKICAgICBWZWN0b3I8RG9jdW1l
bnRNYXJrZXI+IG1hcmtlcnNGb3JOb2RlKE5vZGUqKTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJr
ZXI+IG1hcmtlcnNJblJhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwog
ICAgIFZlY3RvcjxJbnRSZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKICAgICB2b2lkIGNs
ZWFyRGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5nZShSYW5nZSosIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA2
N2Y1NGM0NWIxZGY0ZGI1OTdhMTQ1YWFhMzcyNTI2OTFkNGI4NGIwLi5mMGJmYTQ3NDkzMjE0Zjc4
MWE0ZWZiYzRmMDRmNDhjYjVmYjNkNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4mIG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKQogICAgICAgICBtYXJrZXJU
eXBlc0ZvckF1dG9Db3JyZWN0aW9uLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQp
OwogICAgICAgICBtYXJrZXJUeXBlc0ZvckF1dG9Db3JyZWN0aW9uLmFwcGVuZChEb2N1bWVudE1h
cmtlcjo6Q29ycmVjdGlvbkluZGljYXRvcik7CiAgICAgICAgIG1hcmtlclR5cGVzRm9yQXV0b0Nv
cnJlY3Rpb24uYXBwZW5kKERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsK
KyAgICAgICAgbWFya2VyVHlwZXNGb3JBdXRvQ29ycmVjdGlvbi5hcHBlbmQoRG9jdW1lbnRNYXJr
ZXI6OkF1dG9jb3JyZWN0ZWQpOwogICAgIH0KICAgICByZXR1cm4gbWFya2VyVHlwZXNGb3JBdXRv
Q29ycmVjdGlvbjsKIH0KQEAgLTEyMiw2ICsxMjMsMjEgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQoKQog
ICAgIHJldHVybiBtYXJrZXJUeXBlc0ZvclJlcGxhY2VtZW50OwogfQogCisjaWYgU1VQUE9SVF9B
VVRPQ09SUkVDVElPTl9QQU5FTAorc3RhdGljIGJvb2wgbWFya2Vyc0hhdmVJZGVudGljYWxEZXNj
cmlwdGlvbihjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+JiBtYXJrZXJzKQoreworICAgIGlm
IChtYXJrZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uID0gbWFya2Vyc1swXS5kZXNjcmlwdGlvbjsKKyAgICBmb3IgKHNp
emVfdCBpID0gMTsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGRlc2Ny
aXB0aW9uICE9IG1hcmtlcnNbaV0uZGVzY3JpcHRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIC8vIFdoZW4gYW4gZXZl
bnQgaGFuZGxlciBoYXMgbW92ZWQgdGhlIHNlbGVjdGlvbiBvdXRzaWRlIG9mIGEgdGV4dCBjb250
cm9sCiAvLyB3ZSBzaG91bGQgdXNlIHRoZSB0YXJnZXQgY29udHJvbCdzIHNlbGVjdGlvbiBmb3Ig
dGhpcyBlZGl0aW5nIG9wZXJhdGlvbi4KIFZpc2libGVTZWxlY3Rpb24gRWRpdG9yOjpzZWxlY3Rp
b25Gb3JDb21tYW5kKEV2ZW50KiBldmVudCkKQEAgLTIyMTIsNiArMjIyOCw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoCiAgICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2lu
Z09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVu
dCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7CiAgICAgYm9vbCBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3Jy
ZWN0aW9uUGFuZWw7CisgICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBzaG91bGRT
aG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tGb3JDb3Jy
ZWN0aW9uKTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggc2VsZWN0aW9u
cyBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4KICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKQEAgLTIyMzksNyArMjI1Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAg
ICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyID8gKHNwZWxsaW5nUGFyYWdyYXBoLmlzUmFuZ2VFbXB0
eSgpICYmIGdyYW1tYXJQYXJhZ3JhcGguaXNFbXB0eSgpKSA6IHNwZWxsaW5nUGFyYWdyYXBoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNl
bWVudCB8fCBzaG91bGRNYXJrU3BlbGxpbmcpIHsKKyAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxh
Y2VtZW50IHx8IHNob3VsZE1hcmtTcGVsbGluZyB8fCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24p
IHsKICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb25UeXBlKCkgPT0g
VmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgIC8vIEF0dGVt
cHQgdG8gc2F2ZSB0aGUgY2FyZXQgcG9zaXRpb24gc28gd2UgY2FuIHJlc3RvcmUgaXQgbGF0ZXIg
aWYgbmVlZGVkCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCktPmVuZCgpOwpAQCAtMjMwMiw3ICsyMzE5LDcgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5l
cihlYyktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoKHNo
b3VsZFBlcmZvcm1SZXBsYWNlbWVudCB8fCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSAmJiBy
ZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYm
IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNwZWxsaW5nUGFyYWdyYXBoLmNoZWNr
aW5nU3RhcnQoKQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRM
ZW5ndGggPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCiAgICAgICAgICAgICAg
ICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKICAgICAgICAg
ICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQogICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gK
QEAgLTIzMjgsMjUgKzIzNDUsMjAgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAg
ICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgc2VsZWN0aW9u
T2Zmc2V0ID4gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggKyAxKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmc7CisKICAg
ICAgICAgICAgIC8vIERvbid0IGNvcnJlY3Qgc3BlbGxpbmcgaW4gYW4gYWxyZWFkeS1jb3JyZWN0
ZWQgd29yZC4KICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2VUb1JlcGxh
Y2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0g
cmFuZ2VUb1JlcGxhY2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgaW50IGVuZE9m
ZnNldCA9IHN0YXJ0T2Zmc2V0ICsgcmVwbGFjZW1lbnRMZW5ndGg7Ci0gICAgICAgICAgICAgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbm9kZS0+ZG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKLSAgICAgICAgICAgICAgICBzaXplX3QgbWFya2Vy
Q291bnQgPSBtYXJrZXJzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1hcmtlckNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgRG9j
dW1lbnRNYXJrZXImIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICgobWFya2VyLnR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtlci50
eXBlID09IERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24pICYmIHN0YXRpY19jYXN0
PGludD4obWFya2VyLnN0YXJ0T2Zmc2V0KSA8IGVuZE9mZnNldCAmJiBzdGF0aWNfY2FzdDxpbnQ+
KG1hcmtlci5lbmRPZmZzZXQpID4gc3RhcnRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ+KG1hcmtlci5zdGFydE9mZnNldCkgPj0gZW5kT2Zmc2V0KQotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
cGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnMtPmhhc01hcmtl
cnMocmFuZ2VUb1JlcGxhY2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZG9SZXBsYWNlbWVudCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihy
YW5nZVRvUmVwbGFjZS5nZXQoKSwgcmVwbGFjZWRTdHJpbmcsIHJlc3VsdC0+cmVwbGFjZW1lbnQp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFya2Vycy0+aGFzTWFya2VycyhyYW5nZVRv
UmVwbGFjZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbikpCisgICAg
ICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCFkb1JlcGxhY2VtZW50KQorICAgICAgICAgICAgaWYgKCEoc2hvdWxk
UGVyZm9ybVJlcGxhY2VtZW50IHx8IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpIHx8ICFkb1Jl
cGxhY2VtZW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAjaWYgU1VQUE9SVF9BVVRP
Q09SUkVDVElPTl9QQU5FTApAQCAtMjM4MCwxMCArMjM5Miw2IEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgICAgICAgICAgICAgaWYgKGNhbkVkaXRSaWNobHkoKSkKICAgICAgICAgICAg
ICAgICAgICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+
ZG9jdW1lbnQoKSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50LCByYW5n
ZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKSB7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQt
PnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsKLQogICAg
ICAgICAgICAgICAgIGJvb2wgdXNlU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCA9IGZhbHNlOwog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uKQpAQCAtMjQwNyw5ICsyNDE1LDE1IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4
dENoCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
Q29ycmVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhh
dCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVj
dGVkLgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VkUmFuZ2UgPSBz
cGVsbGluZ1BhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5n
dGgpOwotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFJhbmdlLT5zdGFydENvbnRhaW5lcigp
LT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyZXBsYWNlZFJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIHJlcGxhY2VkU3RyaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5hZGRNYXJrZXIocmVwbGFjZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkNv
cnJlY3Rpb25JbmRpY2F0b3IpOwotICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFJhbmdlLT5z
dGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyZXBsYWNl
ZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFy
a2VyVHlwZXNUb0FkZCA9IG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJrZXJzID0gcmVwbGFjZWRS
YW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1h
cmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VkUmFuZ2UuZ2V0KCksIG1h
cmtlclR5cGUsIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZWRS
YW5nZS5nZXQoKSwgbWFya2VyVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0MzcsNiArMjQ1MSwzMCBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhU
ZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogI2VuZGlmIC8vIFVTRShVTklGSUVEX1RFWFRfQ0hF
Q0tJTkcpCiB9CiAKK3ZvaWQgRWRpdG9yOjpyZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1v
ZGlmaWVkQ29ycmVjdGlvbihSYW5nZSogcmFuZ2VPZkNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
Y29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCit7CisjaWYgU1VQUE9SVF9BVVRP
Q09SUkVDVElPTl9QQU5FTAorICAgIGlmICghcmFuZ2VPZkNvcnJlY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSByYW5nZU9mQ29y
cmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOworICAgIFZl
Y3RvcjxEb2N1bWVudE1hcmtlcj4gY29ycmVjdGVkT25jZU1hcmtlcnMgPSBtYXJrZXJzLT5tYXJr
ZXJzSW5SYW5nZShyYW5nZU9mQ29ycmVjdGlvbiwgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0
ZWQpOworICAgIGlmIChjb3JyZWN0ZWRPbmNlTWFya2Vycy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICAvLyBTcGVsbGluZyBjb3JyZWN0ZWQgdGV4dCBoYXMgYmVlbiBlZGl0
ZWQuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdXNlciBoYXMgcmV2ZXJ0ZWQgaXQgdG8g
b3JpZ2luYWwgdGV4dCBvcgorICAgIC8vIGVkaXRlZCBpdCB0byBzb21ldGhpbmcgZWxzZSwgYW5k
IG5vdGlmeSBzcGVsbGNoZWNrZXIgYWNjb3JkaW5nbHkuCisgICAgaWYgKG1hcmtlcnNIYXZlSWRl
bnRpY2FsRGVzY3JpcHRpb24oY29ycmVjdGVkT25jZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VN
YXJrZXJzWzBdLmRlc2NyaXB0aW9uID09IGNvcnJlY3RlZCkKKyAgICAgICAgY2xpZW50KCktPnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJl
dmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgY2xpZW50
KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVj
dGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAgICBtYXJrZXJzLT5yZW1vdmVN
YXJrZXJzKHJhbmdlT2ZDb3JyZWN0aW9uLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtl
cik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyYW5nZU9mQ29ycmVjdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGNvcnJlY3RlZCk7CisgICAgVU5VU0VEX1BBUkFNKGNvcnJlY3Rpb24pOworI2Vu
ZGlmCit9CisKIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogewogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcp
CkBAIC0yNDU2LDYgKzI0OTQsNyBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRT
dHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBSZWZQdHI8UmFuZ2U+IGNo
YW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgp
LCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRh
aW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwgU3RyaW5nKCkpOwogI2lmIFNVUFBPUlRf
QVVUT0NPUlJFQ1RJT05fUEFORUwKKyAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhjaGFuZ2VkUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogI2Vu
ZGlmCiAjZWxzZQpAQCAtMjQ3MCw3ICsyNTA5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMK
ICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmICghaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFRleHRDaGVja2luZ09w
dGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtTcGVsbGluZzsKKyAgICBUZXh0Q2hlY2tp
bmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3BlbGxpbmcgfCBDaGVja0ZvckNv
cnJlY3Rpb247CiAgICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKQogICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtHcmFtbWFyOwogICAgIG1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9u
cywgc3BlbGxpbmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKQEAgLTI3MjcsMTAgKzI3NjYsMTEg
QEAgdm9pZCBFZGl0b3I6OmFwcGx5Q29ycmVjdGlvblBhbmVsSW5mbyhjb25zdCBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JgogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciog
bWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKTsKICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2Nv
cnJlY3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlID09IENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVs
VHlwZVJldmVyc2lvbikKLSAgICAgICAgICAgIG1hcmtlcnMtPmFkZE1hcmtlcihyZXBsYWNlbWVu
dFJhbmdlLmdldCgpLCBtYXJrZXJUeXBlc1RvQWRkW2ldKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIG1hcmtlclR5
cGVzVG9BZGRbaV0sIG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZyk7CisgICAg
ICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1Rv
QWRkW2ldOworICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIGlmIChtX2NvcnJl
Y3Rpb25QYW5lbEluZm8ucGFuZWxUeXBlICE9IENvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlw
ZVJldmVyc2lvbiAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQg
fHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkpCisgICAgICAg
ICAgICBkZXNjcmlwdGlvbiA9IG1fY29ycmVjdGlvblBhbmVsSW5mby5yZXBsYWNlZFN0cmluZzsK
KyAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIG1hcmtl
clR5cGUsIGRlc2NyaXB0aW9uKTsKICAgICB9CiAjZWxzZSAvLyBTVVBQT1JUX0FVVE9DT1JSRUNU
SU9OX1BBTkVMCiAgICAgVU5VU0VEX1BBUkFNKG1hcmtlclR5cGVzVG9BZGQpOwpAQCAtMjc2Nyw3
ICsyODA3LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25PZkNvcnJlY3QKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlv
bigpLmVuZCgpKTsKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJrZXJzLT5yZW1vdmVNYXJrZXJz
KHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOworICAgIG1hcmtlcnMtPnJl
bW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3Vt
ZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92
ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiAgICAgbWFya2Vycy0+YWRk
TWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlv
bik7CiAjZWxzZSAvLyBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCkBAIC0zNTg5LDEzICsz
NjI5LDE0IEBAIFRleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1h
c2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlCiAgICAgYm9vbCBzaG91bGRNYXJrU3Bl
bGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOwogICAgIGJvb2wgc2hv
dWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXI7CiAgICAg
Ym9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNo
b3dDb3JyZWN0aW9uUGFuZWw7CisgICAgYm9vbCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24gPSBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgQ2hlY2tG
b3JDb3JyZWN0aW9uKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMg
PSAwOwogICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCiAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikK
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBp
ZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkKKyAgICBpZiAoc2hvdWxkQ2hlY2tGb3JDb3Jy
ZWN0aW9uKQogICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0
aW9uOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKaW5kZXggNzc0NTM1MWQxODc0YzdhMGQzNTY4M2E5MTFlYWZiMDZiZDE4N2VlOC4u
ZjlhZWM0MDY5MGEwMWYzYTM4Nzg1NWNhMjJhMDY1N2U3NDVhYjMxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCkBAIC0yMjksNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBNYXJrR3JhbW1h
ciA9IDEgPDwgMSwKICAgICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAogICAgICAg
ICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAzLAorICAgICAgICBDaGVja0ZvckNvcnJlY3Rp
b24gPSAxIDw8IDQsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ09w
dGlvbnM7CiAKQEAgLTQxNiw2ICs0MTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmV2ZWFsU2Vs
ZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdz
T3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcs
IFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgVGV4dENoZWNraW5n
VHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7Cisg
ICAgdm9pZCByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihS
YW5nZSosIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24p
OwogCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggYmFkNGE5OWU5ODE4OTMwMmVjNjFiZmRiMDlkYTE0NmQwYmIxNGViNC4uYWZlNzRhOGQ5ODRj
Y2UxMjc4MjliMjVjZTQ0ZTU4OTM5OTdjOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFmcmFn
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU2V0
U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Q2xvc2VUeXBpbmcgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbGVhclR5
cGluZ1N0eWxlKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU2V0U2VsZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkIHwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Q2xvc2VU
eXBpbmcgfCBTZWxlY3Rpb25Db250cm9sbGVyOjpDbGVhclR5cGluZ1N0eWxlKSk7CiAjaWYgU1VQ
UE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNw
ZWxsaW5nQ29ycmVjdGlvblJlY29yZFVuZG9Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbikpOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>