<?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>50061</bug_id>
          
          <creation_ts>2010-11-25 02:33:10 -0800</creation_ts>
          <short_desc>Move requestGeolocationPermissionForFrame to GeolocationClient</short_desc>
          <delta_ts>2010-12-02 10:59:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45752</blocked>
    
    <blocked>46895</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>sam</cc>
    
    <cc>sfalken</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313659</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 02:33:10 -0800</bug_when>
    <thetext>With the client-based geolocation design, it makes sense for the GeolocationClient to be the entry point for geolocation permission policy, rather than on the ChromeClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313667</commentid>
    <comment_count>1</comment_count>
      <attachid>74846</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 03:12:48 -0800</bug_when>
    <thetext>Created attachment 74846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313705</commentid>
    <comment_count>2</comment_count>
      <attachid>74846</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-25 05:01:48 -0800</bug_when>
    <thetext>Comment on attachment 74846
Patch

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

&gt; WebCore/page/ChromeClient.h:209
&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)

It&apos;s probably confusing to add these guards. Currently, the methods are unguarded, so all ports have to implement the methods. Adding these guards means that all ports not implementing Geolocation, and those implementing non-client-based Geolocation, have to do so, which is odd.

&gt; WebCore/platform/mock/GeolocationClientMock.cpp:47
&gt;  {

Should either init m_permissionState or call reset()

&gt; WebCore/platform/mock/GeolocationClientMock.cpp:93
&gt; +}

It is certain that all Geolocation objects will call cancel, so the timer is always stopped, before this object is destroyed?

&gt; WebCore/platform/mock/GeolocationClientMock.cpp:109
&gt; +    // Add comment here about how reentrancy that modifies m_pendingPermission is not possible.

!!

&gt; WebCore/platform/mock/GeolocationClientMock.h:71
&gt;  private:

usually have a blank line above &apos;private&apos;

&gt; WebKit/mac/ChangeLog:10
&gt; +        interface.

Maybe describe that you&apos;re just moving some code unchanged from the ChromeClient to the GeolocationClient.

&gt; WebKit/mac/WebCoreSupport/WebChromeClient.mm:1
&gt; +

intentional ?

&gt; WebKit/mac/WebCoreSupport/WebGeolocationClient.h:47
&gt; +#if ENABLE(CLIENT_BASED_GEOLOCATION)

I don&apos;t think we need these guards - the whole class is for the client-base impl. On a related note, can you file a bug to remove the Mac GeolocationService, which I think is dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313766</commentid>
    <comment_count>3</comment_count>
      <attachid>74878</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-25 07:51:09 -0800</bug_when>
    <thetext>Created attachment 74878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313772</commentid>
    <comment_count>4</comment_count>
      <attachid>74878</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-25 08:03:59 -0800</bug_when>
    <thetext>Comment on attachment 74878
Patch

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

&gt; WebCore/page/Chrome.cpp:421
&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)

I think we should remove these guards too, for consistency.

&gt; WebCore/platform/mock/GeolocationClientMock.cpp:95
&gt; +}

It is certain that all Geolocation objects will call cancel, so the timer is always stopped, before this object is destroyed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313952</commentid>
    <comment_count>5</comment_count>
      <attachid>74878</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-26 04:27:13 -0800</bug_when>
    <thetext>Comment on attachment 74878
Patch

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

&gt;&gt; WebCore/page/Chrome.cpp:421
&gt;&gt; +#if !ENABLE(CLIENT_BASED_GEOLOCATION)
&gt; 
&gt; I think we should remove these guards too, for consistency.

Agree.

&gt;&gt; WebCore/platform/mock/GeolocationClientMock.cpp:95
&gt;&gt; +}
&gt; 
&gt; It is certain that all Geolocation objects will call cancel, so the timer is always stopped, before this object is destroyed?

Yes. Perhaps my comment was too terse. when the Frame that hosts the Window that hosts the Navigator object that hosts the Geolocation object is closed, the disconnectFrame() method is called on the Geolocation object which calls cancelPermissionRequest. 

The timers will also be automatically stopped by the Timer destructor on destruction of the containing GeolocationClientMock object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313956</commentid>
    <comment_count>6</comment_count>
      <attachid>74918</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-26 04:29:46 -0800</bug_when>
    <thetext>Created attachment 74918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313959</commentid>
    <comment_count>7</comment_count>
      <attachid>74918</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-26 04:31:58 -0800</bug_when>
    <thetext>Comment on attachment 74918
Patch

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

&gt; WebCore/ChangeLog:12
&gt; +        * page/Chrome.cpp:

No longer needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313960</commentid>
    <comment_count>8</comment_count>
      <attachid>74921</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-26 04:34:09 -0800</bug_when>
    <thetext>Created attachment 74921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313963</commentid>
    <comment_count>9</comment_count>
      <attachid>74921</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-26 04:45:59 -0800</bug_when>
    <thetext>Comment on attachment 74921
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313967</commentid>
    <comment_count>10</comment_count>
      <attachid>74921</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-11-26 05:01:33 -0800</bug_when>
    <thetext>Comment on attachment 74921
Patch

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

drive by comments

&gt; WebKit/mac/WebCoreSupport/WebChromeClient.h:177
&gt; +    virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*) { };

no ;

&gt; WebKit/win/WebCoreSupport/WebChromeClient.h:164
&gt; +    virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*) { };

no ;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313991</commentid>
    <comment_count>11</comment_count>
      <attachid>74927</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-11-26 06:19:19 -0800</bug_when>
    <thetext>Created attachment 74927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313998</commentid>
    <comment_count>12</comment_count>
      <attachid>74927</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-26 06:28:06 -0800</bug_when>
    <thetext>Comment on attachment 74927
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314014</commentid>
    <comment_count>13</comment_count>
      <attachid>74927</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-26 07:17:42 -0800</bug_when>
    <thetext>Comment on attachment 74927
Patch

Rejecting patch 74927 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
Core.build/Debug/WebCore.build/Objects-normal/x86_64/DOMHTMLCanvasElement.o /Projects/CommitQueue/WebKitBuild/Debug/DerivedSources/WebCore/DOMHTMLCanvasElement.mm normal x86_64 objective-c++ com.apple.compilers.gcc.4_2
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/DOMHTMLButtonElement.o /Projects/CommitQueue/WebKitBuild/Debug/DerivedSources/WebCore/DOMHTMLButtonElement.mm normal x86_64 objective-c++ com.apple.compilers.gcc.4_2
(79 failures)


Full output: http://queues.webkit.org/results/6433009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314050</commentid>
    <comment_count>14</comment_count>
      <attachid>74927</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-26 09:21:55 -0800</bug_when>
    <thetext>Comment on attachment 74927
Patch

Maybe queue flakiness - trying again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314059</commentid>
    <comment_count>15</comment_count>
      <attachid>74927</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-26 10:10:33 -0800</bug_when>
    <thetext>Comment on attachment 74927
Patch

Rejecting patch 74927 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
RSION_MINOR 0320
    setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Script-5DF50887116F3077005202AB.sh

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/GeolocationClientMock.o /Projects/CommitQueue/WebCore/platform/mock/GeolocationClientMock.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/6366067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315858</commentid>
    <comment_count>16</comment_count>
      <attachid>75315</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-01 13:29:53 -0800</bug_when>
    <thetext>Created attachment 75315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316046</commentid>
    <comment_count>17</comment_count>
      <attachid>75315</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-02 01:49:20 -0800</bug_when>
    <thetext>Comment on attachment 75315
Patch

Fixed use of ASSERT_UNUSED in GeolocationClientMock::permissionTimerFired()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316249</commentid>
    <comment_count>18</comment_count>
      <attachid>75315</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 10:59:22 -0800</bug_when>
    <thetext>Comment on attachment 75315
Patch

Clearing flags on attachment: 75315

Committed r73163: &lt;http://trac.webkit.org/changeset/73163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316251</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 10:59:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74846</attachid>
            <date>2010-11-25 03:12:48 -0800</date>
            <delta_ts>2010-11-25 07:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101125111245.patch</filename>
            <type>text/plain</type>
            <size>27287</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDcwYjJhZjgyZjQ4MmZiZDRiYjkyMjMxYmRmMjUyYWNiNzY3YWI4Yy4uMGU1ODM0NzJmOTliODc0
ZmIyZGFiZjkxMjNlOGQ3ZjQ4MDZjZTk1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0yNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5n
ZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdl
b2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAxMC0xMS0yNSAgSGFu
cyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpl
cmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggODNkMGY4NTVhNGMzNzkzYjUyNmM2NTg1OGI3Y2M4ZmZl
YmM2NDY5My4uZGExZmUxZTUyMGU5ZWM1ODIzYTBkNmFkZTFjYzBiZDNmMTBiZDg4NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKQEAgLTQxOCw2ICs0MTgsNyBAQCB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQog
ICAgIG1fY2xpZW50LT5wcmludChmcmFtZSk7CiB9CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKIHZvaWQgQ2hyb21lOjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7CiAgICAg
bV9jbGllbnQtPnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShmcmFtZSwgZ2Vv
bG9jYXRpb24pOwpAQCAtNDI3LDYgKzQyOCw3IEBAIHZvaWQgQ2hyb21lOjpjYW5jZWxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvCiB7
CiAgICAgbV9jbGllbnQtPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShmcmFtZSwgZ2VvbG9jYXRpb24pOwogfQorI2VuZGlmCiAKIHZvaWQgQ2hyb21lOjpydW5PcGVu
UGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikK
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCBmMmM1ZGI0ZjFjYmZlYmQ0ODQ4YzI1MWIwZDRiYjQ3MTU1OTk0ODk0Li5hYmU4
ODk2ZGRiOTc5MWEyOTJkNjBmZWUzMmIxMDk0YmJkMWJiYTM0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xMzksOCArMTM5
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7
CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAgICAgdm9pZCBy
ZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiop
OwogICAgICAgICB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CisjZW5kaWYKIAogICAgICAgICB2b2lkIHJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBjaG9v
c2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDM5ZjY4NTMxNGZmZDE2MzlhMmJjNmY1Nzk5NzJkMjI1MGFjOWNkYmUu
LjAwZmEwNTdiYjIxMjFmYjlhMWEwMzkxNzkwMDE1MzhhNGJhNzNmN2QgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTIwNiwxMSArMjA2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZhbHVlLCBmbG9hdCBwcm9wb3J0
aW9uLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2spOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRDdXN0b21TY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAgICAgLy8gVGhp
cyBjYW4gYmUgZWl0aGVyIGEgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIGNhbGwuIFRoZSBD
aHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9u
CiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2NhdGlvbi4KICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7Ci0gICAgICAgICAgICAKKyNl
bmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVm
UHRyPEZpbGVDaG9vc2VyPikgPSAwOwogICAgICAgICAvLyBBc3luY2hyb25vdXMgcmVxdWVzdCB0
byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3Nl
ciopID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAgYi9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCmluZGV4IDkxMzUwNDkyYjM5ODY1MzhhY2QxN2YzOTY5
OTU2YWI4MTMwNGJiNWIuLjljNmY2ZDE5MzZiNDdlNDE0ZTRiMzUxNTM4NGViZjJkMDdkNzZjMWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmNwcApAQCAtMjMzLDggKzIzMywxMyBAQCBHZW9sb2NhdGlvbjo6fkdl
b2xvY2F0aW9uKCkKIAogdm9pZCBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkKIHsKLSAg
ICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9hbGxvd0dlb2xvY2F0aW9uID09
IEluUHJvZ3Jlc3MpCisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpICYmIG1fYWxs
b3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKSB7CisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKKyAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5nZW9sb2NhdGlvbkNvbnRyb2xs
ZXIoKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QodGhpcyk7CisjZWxzZQogICAgICAgICBtX2Zy
YW1lLT5wYWdlKCktPmNocm9tZSgpLT5jYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Rm9yRnJhbWUobV9mcmFtZSwgdGhpcyk7CisjZW5kaWYKKyAgICB9CiAgICAgY2FuY2VsQWxsUmVx
dWVzdHMoKTsKICAgICBzdG9wVXBkYXRpbmcoKTsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1l
LT5kb2N1bWVudCgpKQpAQCAtNTk2LDggKzYwMSwxMiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXF1
ZXN0UGVybWlzc2lvbigpCiAKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBJblByb2dyZXNzOwog
Ci0gICAgLy8gQXNrIHRoZSBjaHJvbWU6IGl0IG1haW50YWlucyB0aGUgZ2VvbG9jYXRpb24gY2hh
bGxlbmdlIHBvbGljeSBpdHNlbGYuCisgICAgLy8gQXNrIHRoZSBlbWJlZGRlcjogaXQgbWFpbnRh
aW5zIHRoZSBnZW9sb2NhdGlvbiBjaGFsbGVuZ2UgcG9saWN5IGl0c2VsZi4KKyNpZiBFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxl
cigpLT5yZXF1ZXN0UGVybWlzc2lvbih0aGlzKTsKKyNlbHNlCiAgICAgcGFnZS0+Y2hyb21lKCkt
PnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShtX2ZyYW1lLCB0aGlzKTsKKyNl
bmRpZgogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpwb3NpdGlvbkNoYW5nZWRJbnRlcm5hbCgpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25DbGllbnQuaCBiL1dlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGM2NDZmOTE4YTJjOGMwZTIzMDI4NTNhZTg5ZjY3
N2EwNjkyZTk1ZTUuLjQ0Y2I5MDkxNzJkMDk3ZjE3MjBkYWNlYzM1ZTllNWU0YjliN2I2NDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1dlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgR2VvbG9jYXRpb247CiBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9u
OwogCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudCB7CkBAIC00Myw2ICs0NCw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpID0gMDsKIAorICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKSA9IDA7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbkNsaWVudCgpIHsgfQogfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZGI0Y2MyMzBjM2FlMmYyNmI2YjAw
MTg0MjY2YWI0M2ZlMDZhZjM0OC4uMjhkNTIyZDk2MDQ3NGU2OTlmOGMxNzk5ZTU5MWNkZWM0NWM1
NmIxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTc4LDYgKzc4
LDE4IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2Nh
dGlvbiogb2JzZXJ2ZXIpCiAgICAgfQogfQogCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKGdlb2xvY2F0aW9u
KTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChnZW9sb2NhdGlvbik7Cit9CisK
IHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25Q
b3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBiL1dlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRleCAyZDgxMDZkZTQ5MzM1ODMzNGU5Y2Ni
Mjc1Y2JhMjE3Y2UxZDg4YTRhLi43ZGIxOTUxMzllNjE3ZWVkMWIwMjI5MDdiZjQzOTk2MzYyMGQ1
OTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysr
IGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCkBAIC00OCw2ICs0OCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiwgYm9vbCBlbmFibGVI
aWdoQWNjdXJhY3kpOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24qKTsKIAor
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKKyAgICB2b2lkIGNhbmNl
bFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKik7CisKICAgICB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAgICAgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xv
Y2F0aW9uRXJyb3IqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcAppbmRleCAzYzQ2OTdmMDYwMWRlNTQ2ZjRhMjMwNWU0MmMyMzkyZjc2MDgz
ZWYxLi4xODA0ZDM2ZjM5NTUxZWJiYWZmODRjMjgyOGU0YjcxMjIyNjZjM2MyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6R2Vv
bG9jYXRpb25DbGllbnRNb2NrKCkKICAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwgbV90aW1l
cih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQorICAgICwgbV9jb250
cm9sbGVyVGltZXIodGhpcywgJkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVy
RmlyZWQpCisgICAgLCBtX3Blcm1pc3Npb25UaW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpwZXJtaXNzaW9uVGltZXJGaXJlZCkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiB7CiB9
CkBAIC03MSwxMCArNzIsNTIgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9y
KFBhc3NSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IpCiAgICAgYXN5bmNVcGRhdGVDb250
cm9sbGVyKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9u
KGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IGFsbG93ZWQgPyBQZXJt
aXNzaW9uU3RhdGVBbGxvd2VkIDogUGVybWlzc2lvblN0YXRlRGVuaWVkOworICAgIGFzeW5jVXBk
YXRlUGVybWlzc2lvbigpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVz
dFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIG1fcGVuZGluZ1Bl
cm1pc3Npb24uYWRkKGdlb2xvY2F0aW9uKTsKKyAgICBpZiAobV9wZXJtaXNzaW9uU3RhdGUgIT0g
UGVybWlzc2lvblN0YXRlVW5zZXQpCisgICAgICAgIGFzeW5jVXBkYXRlUGVybWlzc2lvbigpOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
R2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIG1fcGVuZGluZ1Blcm1pc3Npb24ucmVt
b3ZlKGdlb2xvY2F0aW9uKTsKKyAgICBpZiAobV9wZW5kaW5nUGVybWlzc2lvbi5pc0VtcHR5KCkg
JiYgbV9wZXJtaXNzaW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZXJtaXNzaW9uVGlt
ZXIuc3RvcCgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNVcGRhdGVQ
ZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQobV9wZXJtaXNzaW9uU3RhdGUgIT0gUGVybWlzc2lv
blN0YXRlVW5zZXQpOworICAgIGlmICghbV9wZXJtaXNzaW9uVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgbV9wZXJtaXNzaW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8R2Vv
bG9jYXRpb25DbGllbnRNb2NrPiogdGltZXIpCit7CisgICAgQVNTRVJUKHRpbWVyID09ICZtX3Bl
cm1pc3Npb25UaW1lcik7CisgICAgQVNTRVJUKG1fcGVybWlzc2lvblN0YXRlICE9IFBlcm1pc3Np
b25TdGF0ZVVuc2V0KTsKKyAgICBib29sIGFsbG93ZWQgPSBtX3Blcm1pc3Npb25TdGF0ZSA9PSBQ
ZXJtaXNzaW9uU3RhdGVBbGxvd2VkOworICAgIEdlb2xvY2F0aW9uU2V0OjppdGVyYXRvciBlbmQg
PSBtX3BlbmRpbmdQZXJtaXNzaW9uLmVuZCgpOworCisgICAgLy8gQWRkIGNvbW1lbnQgaGVyZSBh
Ym91dCBob3cgcmVlbnRyYW5jeSB0aGF0IG1vZGlmaWVzIG1fcGVuZGluZ1Blcm1pc3Npb24gaXMg
bm90IHBvc3NpYmxlLgorCisgICAgZm9yIChHZW9sb2NhdGlvblNldDo6aXRlcmF0b3IgaXQgPSBt
X3BlbmRpbmdQZXJtaXNzaW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCpp
dCktPnNldElzQWxsb3dlZChhbGxvd2VkKTsKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmNsZWFy
KCk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCgpCiB7CiAgICAgbV9s
YXN0UG9zaXRpb24gPSAwOwogICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBtX3Blcm1pc3Npb25T
dGF0ZSA9IFBlcm1pc3Npb25TdGF0ZVVuc2V0OwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQpAQCAtOTMsNyArMTM2LDcgQEAgdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZygpCiB7CiAgICAgQVNTRVJUKG1faXNBY3Rp
dmUpOwogICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKLSAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBt
X2NvbnRyb2xsZXJUaW1lci5zdG9wKCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKQEAgLTExMCwxOCArMTUzLDEzIEBAIEdlb2xv
Y2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKIHZv
aWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRyb2xsZXIoKQogewogICAg
IEFTU0VSVChtX2NvbnRyb2xsZXIpOwotICAgIGlmIChtX2lzQWN0aXZlICYmICFtX3RpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1v
Y2s+KiB0aW1lcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
cik7Ci0gICAgdXBkYXRlQ29udHJvbGxlcigpOworICAgIGlmIChtX2lzQWN0aXZlICYmICFtX2Nv
bnRyb2xsZXJUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2NvbnRyb2xsZXJUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjp1cGRhdGVDb250
cm9sbGVyKCkKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJl
ZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+KiB0aW1lcikKIHsKKyAgICBBU1NFUlRfVU5V
U0VEKHRpbWVyLCB0aW1lciA9PSAmbV9jb250cm9sbGVyVGltZXIpOwogICAgIEFTU0VSVChtX2Nv
bnRyb2xsZXIpOwogCiAgICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IGY1N2FmYTlhMjU1OTI1
MzlkMDg3ZmVhN2M4MTY3M2M1OTQ5N2M3MmQuLmM4ZWNhOTg2NzI3YmM4OTVjZGU4YmE5MWJmMjRi
NTdiMzU4MWU1ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01Nyw2ICs1
OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxHZW9sb2NhdGlv
bkVycm9yPik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9z
aXRpb24+KTsKKyAgICB2b2lkIHNldFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKIAogICAgIC8v
IEdlb2xvY2F0aW9uQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVk
KCk7CkBAIC02NCwxNyArNjYsMjkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBk
YXRpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOwog
ICAgIHZpcnR1YWwgR2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7Ci0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsKIHByaXZhdGU6Ci0g
ICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKICAgICB2
b2lkIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwotICAgIHZvaWQgdXBkYXRlQ29udHJvbGxlcigp
OworICAgIHZvaWQgY29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRN
b2NrPiopOworCisgICAgdm9pZCBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKKyAgICB2b2lkIHBl
cm1pc3Npb25UaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKIAogICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25FcnJv
cj4gbV9sYXN0RXJyb3I7Ci0gICAgVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX3RpbWVy
OworICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9jb250cm9sbGVyVGltZXI7Cisg
ICAgVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX3Blcm1pc3Npb25UaW1lcjsKICAgICBi
b29sIG1faXNBY3RpdmU7CisKKyAgICBlbnVtIFBlcm1pc3Npb25TdGF0ZSB7CisgICAgICAgIFBl
cm1pc3Npb25TdGF0ZVVuc2V0LAorICAgICAgICBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkLAorICAg
ICAgICBQZXJtaXNzaW9uU3RhdGVEZW5pZWQsCisgICAgfSBtX3Blcm1pc3Npb25TdGF0ZTsKKyAg
ICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZWZQdHI8R2VvbG9jYXRpb24+ID4gR2VvbG9jYXRpb25T
ZXQ7CisgICAgR2VvbG9jYXRpb25TZXQgbV9wZW5kaW5nUGVybWlzc2lvbjsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggNWI5YWI5MmM0YzFiYTBmMDBhZDEzZTVjZTJjZTIxNjdkYWViODFkNC4uYTZiZWMwY2ZjM2Qw
OTdlZmU3NjgwYzVkZDBjMGRhMzBkOWI1Yzk5YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0x
MS0yNSAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBU
aGlzIGNoYW5nZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50
YXRpb24gYnkKKyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGlu
dG8gdGhlIGdlb2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW06CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGluaXRXaXRo
R2VvbG9jYXRpb246XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIg
YWxsb3ddKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBkZW55XSk6
CisKIDIwMTAtMTEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IGE1ZjQ5ZTMwMTlkZGJhYmI1YWMwMTlhZWI0N2Y5NzQ1NWI1
NDcyODEuLjIwZjJhZTg5ZjRkYzE0ZDM2MjFkMmIwZGFlYzU0MjUxMjE3NzhhZDEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTcyLDkgKzE3Miw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdl
YkNvcmU6OkVsZW1lbnQqKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xv
Y2F0aW9uKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9
Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBmZTk1OTg5NjlkMzBkZmNmY2Y2ZDVjODgzZGVk
MTFkMGVmOGE0ODA0Li4zNDFkZTdkMTkzMDUwYWVhN2VlOWY5M2ExMmE2ODc5MjczYTU0MTkzIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQor
KysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMSwz
ICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCkBA
IC01NSw3ICs1Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ljb24uaD4KQEAgLTEwMiwxMyArMTAyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAt
IChpZClpbml0V2l0aENob29zZXI6KFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KWNob29zZXI7CiBA
ZW5kCiAKLUBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0
IDxXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyPgotewotICAgIFJlZlB0cjxHZW9sb2NhdGlv
bj4gX2dlb2xvY2F0aW9uOwotfQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRp
b24qKWdlb2xvY2F0aW9uOwotQGVuZAotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBA
aW50ZXJmYWNlIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJLaXRGdWxs
U2NyZWVuTGlzdGVuZXI+CkBAIC04NDksMjcgKzg0Miw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIAogI2VuZGlmCiAK
LXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCi17Ci0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTps
aXN0ZW5lcjopOwotICAgIGlmICghW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1Nl
bGVjdG9yOnNlbGVjdG9yXSkgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZh
bHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3
ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2Vj
dXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwotICAgIFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0aW9uXTsKLQot
ICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwga2l0KGZy
YW1lKSwgbGlzdGVuZXIpOwotCi0gICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKLSAgICBbbGlzdGVu
ZXIgcmVsZWFzZV07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiBAaW1w
bGVtZW50YXRpb24gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIKIAogLSAoaWQpaW5pdFdpdGhD
aG9vc2VyOihQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiljaG9vc2VyCkBAIC05MzIsMjggKzkwNCw2
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIKLQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjoo
R2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpYWxsb3cKLXsKLSAgICBfZ2VvbG9jYXRp
b24tPnNldElzQWxsb3dlZCh0cnVlKTsKLX0KLQotLSAodm9pZClkZW55Ci17Ci0gICAgX2dlb2xv
Y2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOwotfQotCi1AZW5kCi0KICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApp
bmRleCA1ZWEzMzY5YzA5MGY5NDIxYzAyMTA2Mjk2ZmNjNzkxNDdlYzQzMGY2Li44ODg0ZTg5Yzlj
MzkwYjNmYzZiODViZWFiYzQzM2M2ODQyNjlkYjAwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFz
cyBHZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBAY2xhc3MgV2ViVmlldzsKQEAgLTQzLDYgKzQ0
LDExIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQ
b3NpdGlvbigpOwogCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBhNjM1YjQ0
Y2U1ODIyZTVhYzZkYjU2ZDRkNzE0ZTQ2YWEyMGRiM2ZiLi5iNTJiN2JjNjQyMDk2OTAxZjkzNTg4
M2M4MjNkYzA4ZmNlYmRmZWNjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTI1LDExICsyNSwyNSBAQAogCiAjaW1wb3J0ICJX
ZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdp
bkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFjZSBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+
Cit7CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRpb247Cit9CistIChpZClpbml0
V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247CitAZW5kCisKIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01MCw2ICs2NCwyOCBAQCB2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQogICAgIFtbbV93ZWJWaWV3IF9nZW9sb2Nh
dGlvblByb3ZpZGVyXSB1bnJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCit2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9j
YXRpb24pCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgU0VMIHNl
bGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1
ZXN0RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjopOworICAgIGlmICghW1ttX3dlYlZpZXcgVUlE
ZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgeworICAgICAgICBnZW9sb2Nh
dGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEZyYW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOworICAgIFdlYlNlY3VyaXR5T3Jp
Z2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJD
b3JlU2VjdXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwor
ICAgIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0aW9u
XTsKKworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwg
a2l0KGZyYW1lKSwgbGlzdGVuZXIpOworCisgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKKyAgICBb
bGlzdGVuZXIgcmVsZWFzZV07CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQor
CiBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9u
KCkKIHsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQpAQCAtNTgsMyArOTQs
MjYgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3Np
dGlvbigpCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIH0KKworQGltcGxlbWVudGF0aW9uIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIKKworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2Vv
bG9jYXRpb24qKWdlb2xvY2F0aW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYWxsb3cKK3sKKyAgICBfZ2VvbG9jYXRpb24t
PnNldElzQWxsb3dlZCh0cnVlKTsKK30KKworLSAodm9pZClkZW55Cit7CisgICAgX2dlb2xvY2F0
aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOWY2ZjgzN2NjMTNl
NjkwYTYyZDQ2Y2FiZDMwNjI4ZTI2NGVkNzcxYy4uNmNjYmVhZjhmYTkxM2M4ZWFjZjJkZTNhMzk1
MGFmMmFiMTE1YzU0MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0xMS0yNSAgSm9obiBLbm90
dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5nZSBmYWNp
bGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkKKyAgICAg
ICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdlb2xvY2F0
aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisKIDIw
MTAtMTEtMjIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBw
YXRocyByZWxhdGl2ZSB0byAkV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyIHRvIGFjY2VzcyBz
aGFyZWQgLnZzcHJvcHMgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCBkMDQ2YzIxZDIwYTc2YzU0NWZkZGU5NGM3OTkxN2Y2ZTAyNDAx
ZDU1Li44ODRkNGRjMWUzM2YwZjEyYjA2NjA3NzdjNGU0ZjcxMTFiYjczZjg4IDEwMDY0NAotLS0g
YS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50UHJv
cGVydHlCYWcuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiCiAjaW5jbHVkZSAi
V2ViTXV0YWJsZVVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmgiCkBAIC00Niw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxXaW5kb3dzQ29udGV4dC5oPgpAQCAtODE3LDI5ICs4MTUs
NiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNv
cigpCiAgICAgbV93ZWJWaWV3LT5zZXRMYXN0Q3Vyc29yKDo6R2V0Q3Vyc29yKCkpOwogfQogCi12
b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
KEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQotewotICAgIENPTVB0cjxJ
V2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlE
ZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93
ZWQoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ09NUHRyPElXZWJVSURl
bGVnYXRlUHJpdmF0ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7Ci0g
ICAgaWYgKCF1aURlbGVnYXRlUHJpdmF0ZTIpIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElz
QWxsb3dlZChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDT01QdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgQ09N
UHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRpb24pOwotICAgIEhSRVNV
TFQgaHIgPSB1aURlbGVnYXRlUHJpdmF0ZTItPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdChtX3dlYlZpZXcsIGtpdChmcmFtZSksIG9yaWdpbi5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkp
OwotICAgIGlmIChociAhPSBFX05PVElNUEwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdlb2xv
Y2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOwotfQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDU1MTY3YjZlN2M3ODFh
NTM0MTYwZDE1ZWQ5NGFiNzllOTM2NzkxMDIuLjI0ZGYzMDUyYTY3Nzg4NDM1NmU0MGIxMTc2M2Zk
NjNhZjljYzUxYTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtMTU5LDkgKzE1OSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxSZWN0SW50b1ZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlNj
cm9sbFZpZXcqKSBjb25zdCB7fQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9u
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9Ci0KICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvck5v
ZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggOGE1MjZjNDkyN2ZiNzE2OTQwYjEx
NTQyZjNiNGNmN2NlNzYwYzU4Zi4uYjFkODNmYmQ5NjlmMDhiOTRiYzBlMzVkYTMzNTJiZTcxYmIx
YTEwYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKQEAgLTI3LDggKzI3LDE0IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAj
aW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYkZyYW1lLmgi
CisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTcyLDMgKzc4LDI3IEBAIEdl
b2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQog
ICAgIHJldHVybiAwOwogI2VuZGlmCiB9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJl
cXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBDT01QdHI8
SVdlYlVJRGVsZWdhdGU+IHVpRGVsZWdhdGU7CisgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnVp
RGVsZWdhdGUoJnVpRGVsZWdhdGUpKSkgeworICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxv
d2VkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENPTVB0cjxJV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUyPiB1aURlbGVnYXRlUHJpdmF0ZTIoUXVlcnksIHVpRGVsZWdhdGUpOwor
ICAgIGlmICghdWlEZWxlZ2F0ZVByaXZhdGUyKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZy
YW1lID0gZ2VvbG9jYXRpb24tPmZyYW1lKCk7CisgICAgQ09NUHRyPFdlYlNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIENPTVB0cjxXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lciA9IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXI6OmNyZWF0ZUluc3RhbmNlKGdlb2xvY2F0aW9uKTsKKyAgICBIUkVTVUxUIGhyID0gdWlEZWxl
Z2F0ZVByaXZhdGUyLT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3QobV93ZWJWaWV3
LmdldCgpLCBraXQoZnJhbWUpLCBvcmlnaW4uZ2V0KCksIGxpc3RlbmVyLmdldCgpKTsKKyAgICBp
ZiAoaHIgIT0gRV9OT1RJTVBMKQorICAgICAgICByZXR1cm47CisKKyAgICBnZW9sb2NhdGlvbi0+
c2V0SXNBbGxvd2VkKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAyNDIyYWU1ZDM3Zjc2NjY5MzNmNzk3NjFjYjhh
OGYyNmQ4ZTI1MGQ2Li5jNWRiMTM0MDU3OWNkOTBhNmMxOTYyMzg1MWE0N2ViMWQ3ZjlkN2JkIDEw
MDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvbkNsaWVudC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsK
K2NsYXNzIEdlb2xvY2F0aW9uOworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogY2xh
c3MgV2ViVmlldzsKQEAgLTQ1LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgeyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfQorCiBwcml2
YXRlOgogICAgIENPTVB0cjxXZWJWaWV3PiBtX3dlYlZpZXc7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74878</attachid>
            <date>2010-11-25 07:51:09 -0800</date>
            <delta_ts>2010-11-26 04:29:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101125155106.patch</filename>
            <type>text/plain</type>
            <size>28759</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDcwYjJhZjgyZjQ4MmZiZDRiYjkyMjMxYmRmMjUyYWNiNzY3YWI4Yy4uMGU1ODM0NzJmOTliODc0
ZmIyZGFiZjkxMjNlOGQ3ZjQ4MDZjZTk1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0yNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5n
ZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdl
b2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAxMC0xMS0yNSAgSGFu
cyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpl
cmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggODNkMGY4NTVhNGMzNzkzYjUyNmM2NTg1OGI3Y2M4ZmZl
YmM2NDY5My4uZGExZmUxZTUyMGU5ZWM1ODIzYTBkNmFkZTFjYzBiZDNmMTBiZDg4NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKQEAgLTQxOCw2ICs0MTgsNyBAQCB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQog
ICAgIG1fY2xpZW50LT5wcmludChmcmFtZSk7CiB9CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKIHZvaWQgQ2hyb21lOjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7CiAgICAg
bV9jbGllbnQtPnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShmcmFtZSwgZ2Vv
bG9jYXRpb24pOwpAQCAtNDI3LDYgKzQyOCw3IEBAIHZvaWQgQ2hyb21lOjpjYW5jZWxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvCiB7
CiAgICAgbV9jbGllbnQtPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShmcmFtZSwgZ2VvbG9jYXRpb24pOwogfQorI2VuZGlmCiAKIHZvaWQgQ2hyb21lOjpydW5PcGVu
UGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikK
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCBmMmM1ZGI0ZjFjYmZlYmQ0ODQ4YzI1MWIwZDRiYjQ3MTU1OTk0ODk0Li5hYmU4
ODk2ZGRiOTc5MWEyOTJkNjBmZWUzMmIxMDk0YmJkMWJiYTM0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xMzksOCArMTM5
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7
CiAKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAgICAgdm9pZCBy
ZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiop
OwogICAgICAgICB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CisjZW5kaWYKIAogICAgICAgICB2b2lkIHJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdm9pZCBjaG9v
c2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDM5ZjY4NTMxNGZmZDE2MzlhMmJjNmY1Nzk5NzJkMjI1MGFjOWNkYmUu
LjI0NGNjZWNmYjdmZmI1Yjg1ZjMzZjYxNzdkZjA4YmQxYTlmMmNiOGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTIwNiwxMSArMjA2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZhbHVlLCBmbG9hdCBwcm9wb3J0
aW9uLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2spOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRDdXN0b21TY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CiAKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xp
ZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAzNzMKKyAgICAgICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhl
c2UgdHdvIG1ldGhvZHMgaGF2ZSBtb3ZlZCB0byBHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCiAgICAgICAgIC8vIFRoaXMgY2Fu
IGJlIGVpdGhlciBhIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21l
Q2xpZW50IGNhbiBkaXNwbGF5IFVJIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgogICAg
ICAgICAvLyB0byB1c2UgR2VvbG9jYXRpb24uCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RG
b3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikgPSAwOwotICAgICAgICAgICAgCisKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+KSA9IDA7CiAgICAgICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNv
biBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKikgPSAwOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5jcHAKaW5kZXggOTEzNTA0OTJiMzk4NjUzOGFjZDE3ZjM5Njk5NTZhYjgxMzA0YmI1
Yi4uOWM2ZjZkMTkzNmI0N2U0MTRlNGIzNTE1Mzg0ZWJmMmQwN2Q3NmMxZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b24uY3BwCkBAIC0yMzMsOCArMjMzLDEzIEBAIEdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24oKQog
CiB2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQogewotICAgIGlmIChtX2ZyYW1l
ICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9ncmVzcykK
KyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9hbGxvd0dlb2xvY2F0aW9u
ID09IEluUHJvZ3Jlc3MpIHsKKyNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQor
ICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5jYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCh0aGlzKTsKKyNlbHNlCiAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+
Y2hyb21lKCktPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShtX2Zy
YW1lLCB0aGlzKTsKKyNlbmRpZgorICAgIH0KICAgICBjYW5jZWxBbGxSZXF1ZXN0cygpOwogICAg
IHN0b3BVcGRhdGluZygpOwogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkp
CkBAIC01OTYsOCArNjAxLDEyIEBAIHZvaWQgR2VvbG9jYXRpb246OnJlcXVlc3RQZXJtaXNzaW9u
KCkKIAogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IEluUHJvZ3Jlc3M7CiAKLSAgICAvLyBBc2sg
dGhlIGNocm9tZTogaXQgbWFpbnRhaW5zIHRoZSBnZW9sb2NhdGlvbiBjaGFsbGVuZ2UgcG9saWN5
IGl0c2VsZi4KKyAgICAvLyBBc2sgdGhlIGVtYmVkZGVyOiBpdCBtYWludGFpbnMgdGhlIGdlb2xv
Y2F0aW9uIGNoYWxsZW5nZSBwb2xpY3kgaXRzZWxmLgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCisgICAgcGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPnJlcXVlc3RQ
ZXJtaXNzaW9uKHRoaXMpOworI2Vsc2UKICAgICBwYWdlLT5jaHJvbWUoKS0+cmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKG1fZnJhbWUsIHRoaXMpOworI2VuZGlmCiB9CiAKIHZv
aWQgR2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdlZEludGVybmFsKCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggYzY0NmY5MThhMmM4YzBlMjMwMjg1M2FlODlmNjc3YTA2OTJlOTVlNS4u
NDRjYjkwOTE3MmQwOTdmMTcyMGRhY2VjMzVlOWU1ZTRiOWI3YjY0NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uQ2xpZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIGNsYXNzIEdl
b2xvY2F0aW9uQ2xpZW50IHsKQEAgLTQzLDYgKzQ0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgR2VvbG9j
YXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopID0gMDsKKwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgfkdlb2xvY2F0aW9uQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcAppbmRleCBkYjRjYzIzMGMzYWUyZjI2YjZiMDAxODQyNjZhYjQzZmUw
NmFmMzQ4Li4yOGQ1MjJkOTYwNDc0ZTY5OWY4YzE3OTllNTkxY2RlYzQ1YzU2YjExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtNzgsNiArNzgsMTggQEAgdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZl
cikKICAgICB9CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oZ2VvbG9jYXRpb24pOworfQorCit2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRp
b24qIGdlb2xvY2F0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQt
PmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKK30KKwogdm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3Np
dGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5oCmluZGV4IDJkODEwNmRlNDkzMzU4MzM0ZTljY2IyNzVjYmEyMTdjZTFk
ODhhNGEuLjdkYjE5NTEzOWU2MTdlZWQxYjAyMjkwN2JmNDM5OTYzNjIwZDU5MGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDkgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7
CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiopOwogCisgICAgdm9pZCByZXF1
ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiopOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24qKTsKKwogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0
aW9uUG9zaXRpb24qKTsKICAgICB2b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciop
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
CmluZGV4IDNjNDY5N2YwNjAxZGU1NDZmNGEyMzA1ZTQyYzIzOTJmNzYwODNlZjEuLmVmMzE1OWE3
ZjIwYWFjYWRjMzdkMzFjMDIwNGZmN2MyZjIyZmEwNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC00MSw4ICs0MSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6R2VvbG9jYXRpb25DbGll
bnRNb2NrKCkKICAgICA6IG1fY29udHJvbGxlcigwKQotICAgICwgbV90aW1lcih0aGlzLCAmR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQorICAgICwgbV9jb250cm9sbGVyVGltZXIo
dGhpcywgJkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpCisgICAg
LCBtX3Blcm1pc3Npb25UaW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNz
aW9uVGltZXJGaXJlZCkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCisgICAgLCBtX3Blcm1pc3Np
b25TdGF0ZShQZXJtaXNzaW9uU3RhdGVVbnNldCkKIHsKIH0KIApAQCAtNzEsMTAgKzczLDU1IEBA
IHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0
aW9uRXJyb3I+IGVycm9yKQogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwogfQogCit2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7Cisg
ICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBhbGxvd2VkID8gUGVybWlzc2lvblN0YXRlQWxsb3dlZCA6
IFBlcm1pc3Npb25TdGF0ZURlbmllZDsKKyAgICBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKK30K
Kwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmFkZChnZW9sb2Nh
dGlvbik7CisgICAgaWYgKG1fcGVybWlzc2lvblN0YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0
KQorICAgICAgICBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKK30KKwordm9pZCBHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKiBnZW9sb2Nh
dGlvbikKK3sKKyAgICAvLyBDYWxsZWQgZnJvbSBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1l
KCkgaW4gcmVzcG9uc2UgdG8gRnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgbV9wZW5kaW5nUGVybWlz
c2lvbi5yZW1vdmUoZ2VvbG9jYXRpb24pOworICAgIGlmIChtX3BlbmRpbmdQZXJtaXNzaW9uLmlz
RW1wdHkoKSAmJiBtX3Blcm1pc3Npb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Blcm1p
c3Npb25UaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3lu
Y1VwZGF0ZVBlcm1pc3Npb24oKQoreworICAgIEFTU0VSVChtX3Blcm1pc3Npb25TdGF0ZSAhPSBQ
ZXJtaXNzaW9uU3RhdGVVbnNldCk7CisgICAgaWYgKCFtX3Blcm1pc3Npb25UaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3Blcm1pc3Npb25UaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9uVGltZXJGaXJlZChXZWJDb3JlOjpU
aW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlQodGltZXIg
PT0gJm1fcGVybWlzc2lvblRpbWVyKTsKKyAgICBBU1NFUlQobV9wZXJtaXNzaW9uU3RhdGUgIT0g
UGVybWlzc2lvblN0YXRlVW5zZXQpOworICAgIGJvb2wgYWxsb3dlZCA9IG1fcGVybWlzc2lvblN0
YXRlID09IFBlcm1pc3Npb25TdGF0ZUFsbG93ZWQ7CisgICAgR2VvbG9jYXRpb25TZXQ6Oml0ZXJh
dG9yIGVuZCA9IG1fcGVuZGluZ1Blcm1pc3Npb24uZW5kKCk7CisKKyAgICAvLyBPbmNlIHBlcm1p
c3Npb24gaGFzIGJlZW4gc2V0IChvciBkZW5pZWQpIG9uIGEgR2VvbG9jYXRpb24gb2JqZWN0LCB0
aGVyZSBjYW4gYmUKKyAgICAvLyBubyBmdXJ0aGVyIHJlcXVlc3RzIGZvciBwZXJtaXNzaW9uIHRv
IHRoZSBtb2NrLiBDb25zZXF1ZW50bHkgdGhlIGNhbGxiYWNrcworICAgIC8vIHdoaWNoIGZpcmUg
c3luY2hyb25vdXNseSBmcm9tIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKSBjYW5ub3QgcmVl
bnRyYW50bHkgbW9kaWZ5CisgICAgLy8gbV9wZW5kaW5nUGVybWlzc2lvbi4KKyAgICBmb3IgKEdl
b2xvY2F0aW9uU2V0OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1Blcm1pc3Npb24uYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+c2V0SXNBbGxvd2VkKGFsbG93ZWQpOwor
ICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uY2xlYXIoKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnJlc2V0KCkKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7CiAgICAgbV9sYXN0
RXJyb3IgPSAwOworICAgIG1fcGVybWlzc2lvblN0YXRlID0gUGVybWlzc2lvblN0YXRlVW5zZXQ7
CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
CkBAIC05Myw3ICsxNDAsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0
aW5nKCkKIHsKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAgICAgbV9pc0FjdGl2ZSA9IGZhbHNl
OwotICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1fY29udHJvbGxlclRpbWVyLnN0b3AoKTsKIH0K
IAogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KQpAQCAtMTEwLDE4ICsxNTcsMTMgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmFz
eW5jVXBkYXRlQ29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7Ci0gICAg
aWYgKG1faXNBY3RpdmUgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjp0aW1lckZp
cmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQotewotICAgIEFTU0VSVF9V
TlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVyKTsKLSAgICB1cGRhdGVDb250cm9sbGVyKCk7
CisgICAgaWYgKG1faXNBY3RpdmUgJiYgIW1fY29udHJvbGxlclRpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fY29udHJvbGxlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnVwZGF0ZUNvbnRyb2xsZXIoKQordm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OmNvbnRyb2xsZXJUaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9j
az4qIHRpbWVyKQogeworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRy
b2xsZXJUaW1lcik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKICAgICBpZiAobV9sYXN0
UG9zaXRpb24uZ2V0KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKaW5kZXggZjU3YWZhOWEyNTU5MjUzOWQwODdmZWE3YzgxNjczYzU5NDk3YzcyZC4u
ZGYzNTMxNjhlZmZlNTdhZWZmNGQ0ZmUwZWVmYmQzMjMwMmEzZGFkMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTU3LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+KTsKICAgICB2b2lkIHNldFBvc2l0
aW9uKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4pOworICAgIHZvaWQgc2V0UGVybWlz
c2lvbihib29sIGFsbG93ZWQpOwogCiAgICAgLy8gR2VvbG9jYXRpb25DbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKQEAgLTY0LDE3ICs2NiwzMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0
aW9uKiBsYXN0UG9zaXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
R2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
R2VvbG9jYXRpb24qKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2Vv
bG9jYXRpb25DbGllbnRNb2NrPiopOwogICAgIHZvaWQgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7
Ci0gICAgdm9pZCB1cGRhdGVDb250cm9sbGVyKCk7CisgICAgdm9pZCBjb250cm9sbGVyVGltZXJG
aXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAgICB2b2lkIGFzeW5jVXBk
YXRlUGVybWlzc2lvbigpOworICAgIHZvaWQgcGVybWlzc2lvblRpbWVyRmlyZWQoVGltZXI8R2Vv
bG9jYXRpb25DbGllbnRNb2NrPiopOwogCiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9u
OwogICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKLSAgICBUaW1lcjxH
ZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fdGltZXI7CisgICAgVGltZXI8R2VvbG9jYXRpb25DbGll
bnRNb2NrPiBtX2NvbnRyb2xsZXJUaW1lcjsKKyAgICBUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1v
Y2s+IG1fcGVybWlzc2lvblRpbWVyOwogICAgIGJvb2wgbV9pc0FjdGl2ZTsKKworICAgIGVudW0g
UGVybWlzc2lvblN0YXRlIHsKKyAgICAgICAgUGVybWlzc2lvblN0YXRlVW5zZXQsCisgICAgICAg
IFBlcm1pc3Npb25TdGF0ZUFsbG93ZWQsCisgICAgICAgIFBlcm1pc3Npb25TdGF0ZURlbmllZCwK
KyAgICB9IG1fcGVybWlzc2lvblN0YXRlOworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlZlB0
cjxHZW9sb2NhdGlvbj4gPiBHZW9sb2NhdGlvblNldDsKKyAgICBHZW9sb2NhdGlvblNldCBtX3Bl
bmRpbmdQZXJtaXNzaW9uOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YjlhYjkyYzRjMWJhMGYwMGFkMTNlNWNl
MmNlMjE2N2RhZWI4MWQ0Li45NzJiNjI2YzU0YzRhYzY4ODlmMTE2MjgwNGNmNzQxNmI0N2I2YTQ4
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtu
b3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRv
IEdlb2xvY2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDA2MQorCisgICAgICAgIFRoaXMgY2hhbmdlIGZhY2lsaXRhdGVzIGNsaWVu
dC1iYXNlZCBnZW9sb2NhdGlvbiBpbXBsZW1lbnRhdGlvbiBieQorICAgICAgICBicmluZ2luZyB0
b2dldGhlciBwZXJtaXNzaW9uIGNvbnRyb2wgaW50byB0aGUgZ2VvbG9jYXRpb24gY2xpZW50Cisg
ICAgICAgIGludGVyZmFjZS4KKworICAgICAgICBNb3ZlIG1ldGhvZCBDaHJvbWVDbGllbnQ6OnJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSB0bworICAgICAgICBHZW9sb2NhdGlv
bkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24sIGFuZCBzdXBwb3J0aW5nIGNsYXNzCisgICAgICAg
IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuIFRoZSBtb3ZlZCBjb2RlIGlzIHVuY2hhbmdl
ZCBleGNlcHQKKyAgICAgICAgdGhhdCByZXF1ZXN0UGVybWlzc2lvbiBub3cgdGFrZXMgb25seSBv
bmUgYXJndW1lbnQgKEdlb2xvY2F0aW9uKikKKyAgICAgICAgYW5kIHRoZSBGcmFtZSBwYXJhbWV0
ZXIgaXMgcmV0cmlldmVkIGZyb20gdGhlIEdlb2xvY2F0aW9uIG9iamVjdC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlz
c2lvbik6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhH
ZW9sb2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBh
bGxvd10pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGRlbnldKToK
KwogMjAxMC0xMS0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggYTVmNDllMzAxOWRkYmFiYjVhYzAxOWFlYjQ3Zjk3NDU1YjU0
NzI4MS4uYjYzNGM5ZDlkZTI3ZGRlYjg5ODkyMDQ3YmI3ZjBhMWYyMzg5OWQ4ZiAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNzIsNyArMTcyLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2Vi
Q29yZTo6RWxlbWVudCopOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9j
YXRpb24qKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1c2luZyBj
bGllbnQtYmFzZWQgZ2VvbG9jYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDM3MworICAgIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNl
IHR3byBtZXRob2RzIGhhdmUgbW92ZWQgdG8gV2ViR2VvbG9jYXRpb25DbGllbnQuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA2MQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJD
b3JlOjpHZW9sb2NhdGlvbiopIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2Vv
bG9jYXRpb24qKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQppbmRleCBmZTk1OTg5NjlkMzBkZmNmY2Y2ZDVjODgzZGVkMTFkMGVmOGE0ODA0Li40
OGNjZGFiZGVkMzMxMDhkNmZiMGVjNzQ1MzM2YTcwMzUyZGIwODZkIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNTUsNyArNTUsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkUmVxdWVzdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HZW9s
b2NhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+CkBAIC0xMDIsMTMg
KzEwMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLSAoaWQpaW5pdFdpdGhDaG9vc2Vy
OihQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiljaG9vc2VyOwogQGVuZAogCi1AaW50ZXJmYWNlIFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcj4KLXsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKLX0K
LS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbjsKLUBl
bmQKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogQGludGVyZmFjZSBXZWJLaXRGdWxs
U2NyZWVuTGlzdGVuZXIgOiBOU09iamVjdCA8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPgpAQCAt
ODQ5LDI3ICs4NDEsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAKICNlbmRpZgogCi12b2lkIFdlYkNocm9tZUNsaWVu
dDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2Vv
bG9jYXRpb24qIGdlb2xvY2F0aW9uKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLQotICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKLSAgICBpZiAo
IVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsK
LSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1
cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKiBsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10g
aW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl07Ci0KLSAgICBDYWxsVUlEZWxlZ2F0ZSht
X3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGtpdChmcmFtZSksIGxpc3RlbmVyKTsKLQot
ICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyCiAKIC0gKGlkKWluaXRXaXRoQ2hvb3NlcjooUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4pY2hvb3NlcgpAQCAtOTMyLDI4ICs5MDMsNiBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwg
R2VvbG9jYQogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyCi0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2Nh
dGlvbgotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIF9nZW9sb2NhdGlvbiA9IGdlb2xvY2F0aW9uOwotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWFsbG93Ci17Ci0gICAgX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQodHJ1
ZSk7Ci19Ci0KLS0gKHZvaWQpZGVueQotewotICAgIF9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2Vk
KGZhbHNlKTsKLX0KLQotQGVuZAotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBAaW1w
bGVtZW50YXRpb24gV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggNWVhMzM2OWMwOTBmOTQy
MWMwMjEwNjI5NmZjYzc5MTQ3ZWM0MzBmNi4uYjhlN2I4NzFlYmFjNzdkMDcwM2IyY2VlMWNlZGNh
OWM0ZmRlYzM1YiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtMjYsNyArMjYsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2Nh
dGlvbkNsaWVudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKK2NsYXNzIEdlb2xvY2F0aW9uOworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlv
bjsKIH0KIAogQGNsYXNzIFdlYlZpZXc7CkBAIC00Myw2ICs0NCw5IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwogCisgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZvaWQgY2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSB7IH07CisKIHByaXZh
dGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGE2MzViNDRjZTU4MjJlNWFj
NmRiNTZkNGQ3MTRlNDZhYTIwZGIzZmIuLmI1MmI3YmM2NDIwOTY5MDFmOTM1ODgzYzgyM2RjMDhm
Y2ViZGZlY2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbQpAQCAtMjUsMTEgKzI1LDI1IEBACiAKICNpbXBvcnQgIldlYkdlb2xvY2F0
aW9uQ2xpZW50LmgiCiAKKyNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgiCisjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlv
blBvc2l0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50
ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCitAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIgOiBOU09iamVjdCA8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4KK3sKKyAgICBS
ZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKK30KKy0gKGlkKWluaXRXaXRoR2VvbG9j
YXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbjsKK0BlbmQKKwogV2ViR2VvbG9jYXRpb25D
bGllbnQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKIHsKQEAgLTUwLDYgKzY0LDI4IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlk
ZXJdIHVucmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKK3ZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBTRUwgc2VsZWN0b3IgPSBA
c2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmZyYW1lOmxpc3RlbmVyOik7CisgICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSBy
ZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUgKmZy
YW1lID0gZ2VvbG9jYXRpb24tPmZyYW1lKCk7CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9y
aWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0
eU9yaWdpbjpmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25dOworCisgICAg
Q2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUp
LCBsaXN0ZW5lcik7CisKKyAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOworICAgIFtsaXN0ZW5lciBy
ZWxlYXNlXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIEdlb2xvY2F0
aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogI2lm
IEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCkBAIC01OCwzICs5NCwyNiBAQCBHZW9s
b2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAg
ICByZXR1cm4gMDsKICNlbmRpZgogfQorCitAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcgorCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiop
Z2VvbG9jYXRpb24KK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICBfZ2VvbG9jYXRpb24gPSBnZW9sb2NhdGlvbjsKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClhbGxvdworeworICAgIF9nZW9sb2NhdGlvbi0+c2V0SXNBbGxv
d2VkKHRydWUpOworfQorCistICh2b2lkKWRlbnkKK3sKKyAgICBfZ2VvbG9jYXRpb24tPnNldElz
QWxsb3dlZChmYWxzZSk7Cit9CisKK0BlbmQKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA5ZjZmODM3Y2MxM2U2OTBhNjJkNDZj
YWJkMzA2MjhlMjY0ZWQ3NzFjLi5lNzE1NzQ5ZThjZGNlYmFkZmFmMTM5YTJhY2I2MGVhNTlhYzM2
MjNkIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8
amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
IHRvIEdlb2xvY2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDA2MQorCisgICAgICAgIFRoaXMgY2hhbmdlIGZhY2lsaXRhdGVzIGNs
aWVudC1iYXNlZCBnZW9sb2NhdGlvbiBpbXBsZW1lbnRhdGlvbiBieQorICAgICAgICBicmluZ2lu
ZyB0b2dldGhlciBwZXJtaXNzaW9uIGNvbnRyb2wgaW50byB0aGUgZ2VvbG9jYXRpb24gY2xpZW50
CisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICBNb3ZlIG1ldGhvZCBDaHJvbWVDbGllbnQ6
OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSB0bworICAgICAgICBHZW9sb2Nh
dGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24uIFRoZSBtb3ZlZCBjb2RlIGlzIHVuY2hhbmdl
ZAorICAgICAgICBleGNlcHQgdGhhdCByZXF1ZXN0UGVybWlzc2lvbiBub3cgdGFrZXMgb25seSBv
bmUgYXJndW1lbnQgKEdlb2xvY2F0aW9uKiksCisgICAgICAgIHRoZSBGcmFtZSBwYXJhbWV0ZXIg
aXMgcmV0cmlldmVkIGZyb20gdGhlIEdlb2xvY2F0aW9uIG9iamVjdCBhbmQgd2UgbmVlZCB0bwor
ICAgICAgICBjYWxsIG1fd2ViVmlldy5nZXQoKSBhcyBpdCBpcyBhIENPTVB0ciBpbiBHZW9sb2Nh
dGlvbkNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAgICAgICAoV2Vi
R2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25D
bGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKwogMjAxMC0xMS0yMiAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHBhdGhzIHJlbGF0aXZlIHRvICRX
ZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIgdG8gYWNjZXNzIHNoYXJlZCAudnNwcm9wcyBmaWxl
cwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IGQwNDZjMjFkMjBhNzZjNTQ1ZmRkZTk0Yzc5OTE3ZjZlMDI0MDFkNTUuLjg4NGQ0ZGMxZTMzZjBm
MTJiMDY2MDc3N2M0ZTRmNzExMWJiNzNmODggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJET01D
b3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnRQcm9wZXJ0eUJhZy5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIldlYkhpc3RvcnkuaCIKICNpbmNsdWRlICJXZWJNdXRhYmxlVVJMUmVxdWVz
dC5oIgogI2luY2x1ZGUgIldlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaCIKQEAgLTQ2
LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
b2NhbFdpbmRvd3NDb250ZXh0Lmg+CkBAIC04MTcsMjkgKzgxNSw2IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkKICAgICBtX3dlYlZpZXct
PnNldExhc3RDdXJzb3IoOjpHZXRDdXJzb3IoKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9s
b2NhdGlvbiogZ2VvbG9jYXRpb24pCi17Ci0gICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURl
bGVnYXRlOwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1aURlbGVnYXRl
KSkpIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQcml2YXRlMj4gdWlE
ZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5LCB1aURlbGVnYXRlKTsKLSAgICBpZiAoIXVpRGVsZWdhdGVQ
cml2YXRlMikgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENPTVB0cjxXZWJTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luKEFkb3B0Q09NLCBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2UoZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcj4gbGlzdGVuZXIgPSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpj
cmVhdGVJbnN0YW5jZShnZW9sb2NhdGlvbik7Ci0gICAgSFJFU1VMVCBociA9IHVpRGVsZWdhdGVQ
cml2YXRlMi0+ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0KG1fd2ViVmlldywga2l0
KGZyYW1lKSwgb3JpZ2luLmdldCgpLCBsaXN0ZW5lci5nZXQoKSk7Ci0gICAgaWYgKGhyICE9IEVf
Tk9USU1QTCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dl
ZChmYWxzZSk7Ci19Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNTUxNjdiNmU3Yzc4MWE1MzQxNjBkMTVlZDk0YWI3OWU5
MzY3OTEwMi4uYjhmMjEyYjFlNjNhY2Q3MWI4YTRjODc5ZjQ0MWE1ZGE4NTNmMzU4MiAxMDA2NDQK
LS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTksNyArMTU5
LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6U2Nyb2xsVmlldyopIGNvbnN0IHt9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1c2luZyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24u
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3MworICAgIC8vIEZv
ciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNlIHR3byBtZXRob2RzIGhhdmUgYmVlbiBt
b3ZlZCB0byBXZWJHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMDYxCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikg
eyB9OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfQogCiAj
aWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCA4YTUyNmM0OTI3ZmI3MTY5NDBiMTE1NDJmM2I0Y2Y3
Y2U3NjBjNThmLi5iMWQ4M2ZiZDk2OWYwOGI5NGJjMGUzNWRhMzM1MmJlNzFiYjFhMTBhIDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cApAQCAtMjcsOCArMjcsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
V2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dlb2xvY2F0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzIsMyArNzgsMjcgQEAgR2VvbG9jYXRpb25Q
b3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKIH0KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIENPTVB0cjxJV2ViVUlEZWxl
Z2F0ZT4gdWlEZWxlZ2F0ZTsKKyAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgm
dWlEZWxlZ2F0ZSkpKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJp
dmF0ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7CisgICAgaWYgKCF1
aURlbGVnYXRlUHJpdmF0ZTIpIHsKKyAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChm
YWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBnZW9s
b2NhdGlvbi0+ZnJhbWUoKTsKKyAgICBDT01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbihB
ZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoZ2VvbG9jYXRpb24pOworICAgIEhSRVNVTFQgaHIgPSB1aURlbGVnYXRlUHJpdmF0
ZTItPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChtX3dlYlZpZXcuZ2V0KCksIGtp
dChmcmFtZSksIG9yaWdpbi5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpOworICAgIGlmIChociAhPSBF
X05PVElNUEwpCisgICAgICAgIHJldHVybjsKKworICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93
ZWQoZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCmluZGV4IDI0MjJhZTVkMzdmNzY2NjkzM2Y3OTc2MWNiOGE4ZjI2ZDhlMjUw
ZDYuLmM1ZGIxMzQwNTc5Y2Q5MGE2YzE5NjIzODUxYTQ3ZWIxZDdmOWQ3YmQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMwLDcg
KzMwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgR2Vv
bG9jYXRpb247CitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBjbGFzcyBXZWJWaWV3
OwpAQCAtNDUsNiArNDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhp
Z2hBY2N1cmFjeShib29sKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNz
aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9CisKIHByaXZhdGU6CiAgICAg
Q09NUHRyPFdlYlZpZXc+IG1fd2ViVmlldzsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74918</attachid>
            <date>2010-11-26 04:29:46 -0800</date>
            <delta_ts>2010-11-26 04:34:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101126122944.patch</filename>
            <type>text/plain</type>
            <size>28054</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDdjNWU3MmU4NDZjZWQ1Y2YzZDI5OGZhMTRlMWQwOTdmMGI4YWQ1Zi4uYWNkMmI2YTUxNTlkYmZi
OGY2YjY0MzA0YTVjMmJhYzExNzJiNWMzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0yNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5n
ZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdl
b2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAxMC0xMS0yNSAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCmluZGV4IGYyYzVkYjRmMWNiZmViZDQ4NDhjMjUxYjBkNGJiNDcxNTU5
OTQ4OTQuLmM5ODYyYWRkMzFkMjNlNTRiMDU2MmQyNDc1Mjc5ZThiNGVkZWYxZWUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAg
LTEzOSw2ICsxMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwcmlu
dChGcmFtZSopOwogCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJl
IHVzaW5nIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwMzczCisgICAgICAgIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24sIHRoZXNlIHR3byBtZXRob2RzIGhhdmUgbW92ZWQgdG8gR2VvbG9jYXRpb25DbGllbnQu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA2MQogICAgICAgICB2
b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0
aW9uKik7CiAgICAgICAgIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZv
ckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDM5ZjY4
NTMxNGZmZDE2MzlhMmJjNmY1Nzk5NzJkMjI1MGFjOWNkYmUuLjI0NGNjZWNmYjdmZmI1Yjg1ZjMz
ZjYxNzdkZjA4YmQxYTlmMmNiOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIwNiwxMSArMjA2LDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHZhbHVlLCBmbG9hdCBwcm9wb3J0aW9uLCBTY3JvbGxiYXJDb250cm9s
UGFydE1hc2spOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKKyAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvbmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9u
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMKKyAgICAgICAg
Ly8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2ZSBt
b3ZlZCB0byBHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMDYxCiAgICAgICAgIC8vIFRoaXMgY2FuIGJlIGVpdGhlciBhIHN5bmNocm9u
b3VzIG9yIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xpZW50IGNhbiBkaXNwbGF5IFVJ
IGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgogICAgICAgICAvLyB0byB1c2UgR2VvbG9j
YXRpb24uCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xv
Y2F0aW9uKikgPSAwOwotICAgICAgICAgICAgCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAgICAgIC8v
IEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVu
YW1lcy4KICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKikgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKaW5kZXggOTEz
NTA0OTJiMzk4NjUzOGFjZDE3ZjM5Njk5NTZhYjgxMzA0YmI1Yi4uOWM2ZjZkMTkzNmI0N2U0MTRl
NGIzNTE1Mzg0ZWJmMmQwN2Q3NmMxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC0yMzMsOCArMjMz
LDEzIEBAIEdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24oKQogCiB2b2lkIEdlb2xvY2F0aW9uOjpk
aXNjb25uZWN0RnJhbWUoKQogewotICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSAm
JiBtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9ncmVzcykKKyAgICBpZiAobV9mcmFtZSAmJiBt
X2ZyYW1lLT5wYWdlKCkgJiYgbV9hbGxvd0dlb2xvY2F0aW9uID09IEluUHJvZ3Jlc3MpIHsKKyNp
ZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgICAgICBtX2ZyYW1lLT5wYWdl
KCktPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5jYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCh0aGlz
KTsKKyNlbHNlCiAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNhbmNlbEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShtX2ZyYW1lLCB0aGlzKTsKKyNlbmRpZgor
ICAgIH0KICAgICBjYW5jZWxBbGxSZXF1ZXN0cygpOwogICAgIHN0b3BVcGRhdGluZygpOwogICAg
IGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCkBAIC01OTYsOCArNjAxLDEyIEBA
IHZvaWQgR2VvbG9jYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKCkKIAogICAgIG1fYWxsb3dHZW9s
b2NhdGlvbiA9IEluUHJvZ3Jlc3M7CiAKLSAgICAvLyBBc2sgdGhlIGNocm9tZTogaXQgbWFpbnRh
aW5zIHRoZSBnZW9sb2NhdGlvbiBjaGFsbGVuZ2UgcG9saWN5IGl0c2VsZi4KKyAgICAvLyBBc2sg
dGhlIGVtYmVkZGVyOiBpdCBtYWludGFpbnMgdGhlIGdlb2xvY2F0aW9uIGNoYWxsZW5nZSBwb2xp
Y3kgaXRzZWxmLgorI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgcGFn
ZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPnJlcXVlc3RQZXJtaXNzaW9uKHRoaXMpOworI2Vs
c2UKICAgICBwYWdlLT5jaHJvbWUoKS0+cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lKG1fZnJhbWUsIHRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgR2VvbG9jYXRpb246OnBvc2l0
aW9uQ2hhbmdlZEludGVybmFsKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bkNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggYzY0NmY5
MThhMmM4YzBlMjMwMjg1M2FlODlmNjc3YTA2OTJlOTVlNS4uNDRjYjkwOTE3MmQwOTdmMTcyMGRh
Y2VjMzVlOWU1ZTRiOWI3YjY0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHZW9sb2NhdGlvbjsKIGNs
YXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50IHsKQEAg
LTQzLDYgKzQ0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgR2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBv
c2l0aW9uKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xv
Y2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChH
ZW9sb2NhdGlvbiopID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9u
Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRl
eCBkYjRjYzIzMGMzYWUyZjI2YjZiMDAxODQyNjZhYjQzZmUwNmFmMzQ4Li4yOGQ1MjJkOTYwNDc0
ZTY5OWY4YzE3OTllNTkxY2RlYzQ1YzU2YjExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcApAQCAtNzgsNiArNzgsMTggQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZlcikKICAgICB9CiB9CiAKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2Vv
bG9jYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVxdWVz
dFBlcm1pc3Npb24oZ2VvbG9jYXRpb24pOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KGdlb2xvY2F0aW9uKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0
aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQ
b3NpdGlvbiA9IHBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4
IDJkODEwNmRlNDkzMzU4MzM0ZTljY2IyNzVjYmEyMTdjZTFkODhhNGEuLjdkYjE5NTEzOWU2MTdl
ZWQxYjAyMjkwN2JmNDM5OTYzNjIwZDU5MGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTQ4LDYgKzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoR2Vv
bG9jYXRpb24qLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCByZW1vdmVPYnNl
cnZlcihHZW9sb2NhdGlvbiopOwogCisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiopOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsK
KwogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKICAgICB2
b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciopOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDNjNDY5N2YwNjAxZGU1
NDZmNGEyMzA1ZTQyYzIzOTJmNzYwODNlZjEuLmVmMzE1OWE3ZjIwYWFjYWRjMzdkMzFjMDIwNGZm
N2MyZjIyZmEwNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwCkBAIC00MSw4ICs0MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6R2VvbG9jYXRpb25DbGllbnRNb2NrKCkKICAgICA6IG1fY29u
dHJvbGxlcigwKQotICAgICwgbV90aW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjp0
aW1lckZpcmVkKQorICAgICwgbV9jb250cm9sbGVyVGltZXIodGhpcywgJkdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpCisgICAgLCBtX3Blcm1pc3Npb25UaW1lcih0
aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9uVGltZXJGaXJlZCkKICAgICAs
IG1faXNBY3RpdmUoZmFsc2UpCisgICAgLCBtX3Blcm1pc3Npb25TdGF0ZShQZXJtaXNzaW9uU3Rh
dGVVbnNldCkKIHsKIH0KIApAQCAtNzEsMTAgKzczLDU1IEBAIHZvaWQgR2VvbG9jYXRpb25DbGll
bnRNb2NrOjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQogICAg
IGFzeW5jVXBkYXRlQ29udHJvbGxlcigpOwogfQogCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgbV9wZXJtaXNzaW9uU3RhdGUg
PSBhbGxvd2VkID8gUGVybWlzc2lvblN0YXRlQWxsb3dlZCA6IFBlcm1pc3Npb25TdGF0ZURlbmll
ZDsKKyAgICBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sK
KyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLmFkZChnZW9sb2NhdGlvbik7CisgICAgaWYgKG1fcGVy
bWlzc2lvblN0YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0KQorICAgICAgICBhc3luY1VwZGF0
ZVBlcm1pc3Npb24oKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICAvLyBDYWxs
ZWQgZnJvbSBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkgaW4gcmVzcG9uc2UgdG8gRnJh
bWUgZGVzdHJ1Y3Rpb24uCisgICAgbV9wZW5kaW5nUGVybWlzc2lvbi5yZW1vdmUoZ2VvbG9jYXRp
b24pOworICAgIGlmIChtX3BlbmRpbmdQZXJtaXNzaW9uLmlzRW1wdHkoKSAmJiBtX3Blcm1pc3Np
b25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Blcm1pc3Npb25UaW1lci5zdG9wKCk7Cit9
CisKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZVBlcm1pc3Npb24oKQor
eworICAgIEFTU0VSVChtX3Blcm1pc3Npb25TdGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCk7
CisgICAgaWYgKCFtX3Blcm1pc3Npb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Blcm1p
c3Npb25UaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpwZXJtaXNzaW9uVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxHZW9sb2NhdGlvbkNsaWVu
dE1vY2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlQodGltZXIgPT0gJm1fcGVybWlzc2lvblRpbWVy
KTsKKyAgICBBU1NFUlQobV9wZXJtaXNzaW9uU3RhdGUgIT0gUGVybWlzc2lvblN0YXRlVW5zZXQp
OworICAgIGJvb2wgYWxsb3dlZCA9IG1fcGVybWlzc2lvblN0YXRlID09IFBlcm1pc3Npb25TdGF0
ZUFsbG93ZWQ7CisgICAgR2VvbG9jYXRpb25TZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Bl
cm1pc3Npb24uZW5kKCk7CisKKyAgICAvLyBPbmNlIHBlcm1pc3Npb24gaGFzIGJlZW4gc2V0IChv
ciBkZW5pZWQpIG9uIGEgR2VvbG9jYXRpb24gb2JqZWN0LCB0aGVyZSBjYW4gYmUKKyAgICAvLyBu
byBmdXJ0aGVyIHJlcXVlc3RzIGZvciBwZXJtaXNzaW9uIHRvIHRoZSBtb2NrLiBDb25zZXF1ZW50
bHkgdGhlIGNhbGxiYWNrcworICAgIC8vIHdoaWNoIGZpcmUgc3luY2hyb25vdXNseSBmcm9tIEdl
b2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKSBjYW5ub3QgcmVlbnRyYW50bHkgbW9kaWZ5CisgICAg
Ly8gbV9wZW5kaW5nUGVybWlzc2lvbi4KKyAgICBmb3IgKEdlb2xvY2F0aW9uU2V0OjppdGVyYXRv
ciBpdCA9IG1fcGVuZGluZ1Blcm1pc3Npb24uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICAoKml0KS0+c2V0SXNBbGxvd2VkKGFsbG93ZWQpOworICAgIG1fcGVuZGluZ1Blcm1pc3Np
b24uY2xlYXIoKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KCkKIHsK
ICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7CiAgICAgbV9sYXN0RXJyb3IgPSAwOworICAgIG1fcGVy
bWlzc2lvblN0YXRlID0gUGVybWlzc2lvblN0YXRlVW5zZXQ7CiB9CiAKIHZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCkBAIC05Myw3ICsxNDAsNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKIHsKICAgICBBU1NFUlQo
bV9pc0FjdGl2ZSk7CiAgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOwotICAgIG1fdGltZXIuc3RvcCgp
OworICAgIG1fY29udHJvbGxlclRpbWVyLnN0b3AoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKQpAQCAtMTEwLDE4ICsxNTcsMTMg
QEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRp
b24oKQogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmFzeW5jVXBkYXRlQ29udHJvbGxlcigp
CiB7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7Ci0gICAgaWYgKG1faXNBY3RpdmUgJiYgIW1f
dGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9u
Q2xpZW50TW9jaz4qIHRpbWVyKQotewotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09
ICZtX3RpbWVyKTsKLSAgICB1cGRhdGVDb250cm9sbGVyKCk7CisgICAgaWYgKG1faXNBY3RpdmUg
JiYgIW1fY29udHJvbGxlclRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY29udHJvbGxlclRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnVw
ZGF0ZUNvbnRyb2xsZXIoKQordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xsZXJU
aW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQogeworICAgIEFT
U0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRyb2xsZXJUaW1lcik7CiAgICAgQVNT
RVJUKG1fY29udHJvbGxlcik7CiAKICAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggZjU3YWZh
OWEyNTU5MjUzOWQwODdmZWE3YzgxNjczYzU5NDk3YzcyZC4uZGYzNTMxNjhlZmZlNTdhZWZmNGQ0
ZmUwZWVmYmQzMjMwMmEzZGFkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2Nh
dGlvbkNsaWVudE1vY2suaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAg
LTU3LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPEdl
b2xvY2F0aW9uRXJyb3I+KTsKICAgICB2b2lkIHNldFBvc2l0aW9uKFBhc3NSZWZQdHI8R2VvbG9j
YXRpb25Qb3NpdGlvbj4pOworICAgIHZvaWQgc2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpOwog
CiAgICAgLy8gR2VvbG9jYXRpb25DbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25E
ZXN0cm95ZWQoKTsKQEAgLTY0LDE3ICs2NiwzMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BVcGRhdGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCk7CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiop
OwogICAgIHZvaWQgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250
cm9sbGVyKCk7CisgICAgdm9pZCBjb250cm9sbGVyVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlv
bkNsaWVudE1vY2s+Kik7CisKKyAgICB2b2lkIGFzeW5jVXBkYXRlUGVybWlzc2lvbigpOworICAg
IHZvaWQgcGVybWlzc2lvblRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiop
OwogCiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiAgICAgUmVmUHRy
PEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIFJlZlB0cjxHZW9sb2Nh
dGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKLSAgICBUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+
IG1fdGltZXI7CisgICAgVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiBtX2NvbnRyb2xsZXJU
aW1lcjsKKyAgICBUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fcGVybWlzc2lvblRpbWVy
OwogICAgIGJvb2wgbV9pc0FjdGl2ZTsKKworICAgIGVudW0gUGVybWlzc2lvblN0YXRlIHsKKyAg
ICAgICAgUGVybWlzc2lvblN0YXRlVW5zZXQsCisgICAgICAgIFBlcm1pc3Npb25TdGF0ZUFsbG93
ZWQsCisgICAgICAgIFBlcm1pc3Npb25TdGF0ZURlbmllZCwKKyAgICB9IG1fcGVybWlzc2lvblN0
YXRlOworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBHZW9s
b2NhdGlvblNldDsKKyAgICBHZW9sb2NhdGlvblNldCBtX3BlbmRpbmdQZXJtaXNzaW9uOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA1YjlhYjkyYzRjMWJhMGYwMGFkMTNlNWNlMmNlMjE2N2RhZWI4MWQ0Li45NzJi
NjI2YzU0YzRhYzY4ODlmMTE2MjgwNGNmNzQxNmI0N2I2YTQ4IDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvIEdlb2xvY2F0aW9uQ2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA2MQorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGZhY2lsaXRhdGVzIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBp
bXBsZW1lbnRhdGlvbiBieQorICAgICAgICBicmluZ2luZyB0b2dldGhlciBwZXJtaXNzaW9uIGNv
bnRyb2wgaW50byB0aGUgZ2VvbG9jYXRpb24gY2xpZW50CisgICAgICAgIGludGVyZmFjZS4KKwor
ICAgICAgICBNb3ZlIG1ldGhvZCBDaHJvbWVDbGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZSB0bworICAgICAgICBHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24sIGFuZCBzdXBwb3J0aW5nIGNsYXNzCisgICAgICAgIFdlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIuIFRoZSBtb3ZlZCBjb2RlIGlzIHVuY2hhbmdlZCBleGNlcHQKKyAgICAgICAgdGhh
dCByZXF1ZXN0UGVybWlzc2lvbiBub3cgdGFrZXMgb25seSBvbmUgYXJndW1lbnQgKEdlb2xvY2F0
aW9uKikKKyAgICAgICAgYW5kIHRoZSBGcmFtZSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20g
dGhlIEdlb2xvY2F0aW9uIG9iamVjdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAg
KFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICgtW1dl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhHZW9sb2NhdGlvbjpdKToKKyAgICAg
ICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvd10pOgorICAgICAgICAoLVtX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGRlbnldKToKKwogMjAxMC0xMS0yMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
YTVmNDllMzAxOWRkYmFiYjVhYzAxOWFlYjQ3Zjk3NDU1YjU0NzI4MS4uYjYzNGM5ZDlkZTI3ZGRl
Yjg5ODkyMDQ3YmI3ZjBhMWYyMzg5OWQ4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNzIsNyArMTcyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOwogI2Vu
ZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1c2luZyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRp
b24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3MworICAgIC8v
IEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNlIHR3byBtZXRob2RzIGhhdmUgbW92
ZWQgdG8gV2ViR2VvbG9jYXRpb25DbGllbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDA2MQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsg
fTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKSB7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCBmZTk1OTg5
NjlkMzBkZmNmY2Y2ZDVjODgzZGVkMTFkMGVmOGE0ODA0Li40OGNjZGFiZGVkMzMxMDhkNmZiMGVj
NzQ1MzM2YTcwMzUyZGIwODZkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQpAQCAtNTUsNyArNTUsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVM
b2FkUmVxdWVzdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+CkBAIC0xMDIsMTMgKzEwMSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogLSAoaWQpaW5pdFdpdGhDaG9vc2VyOihQYXNzUmVmUHRyPEZpbGVDaG9v
c2VyPiljaG9vc2VyOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIgOiBOU09iamVjdCA8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4KLXsKLSAgICBS
ZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2NhdGlvbjsKLX0KLS0gKGlkKWluaXRXaXRoR2VvbG9j
YXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbjsKLUBlbmQKLQogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKIAogQGludGVyZmFjZSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgOiBOU09i
amVjdCA8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPgpAQCAtODQ5LDI3ICs4NDEsNiBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpCiAKICNlbmRpZgogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIFNFTCBzZWxlY3Rv
ciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKLSAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdh
dGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKLSAgICAgICAgZ2VvbG9jYXRpb24t
PnNldElzQWxsb3dlZChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJT
ZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2lu
aXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKiBsaXN0ZW5lciA9IFtb
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpn
ZW9sb2NhdGlvbl07Ci0KLSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3
ZWJPcmlnaW4sIGtpdChmcmFtZSksIGxpc3RlbmVyKTsKLQotICAgIFt3ZWJPcmlnaW4gcmVsZWFz
ZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyCiAK
IC0gKGlkKWluaXRXaXRoQ2hvb3NlcjooUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pY2hvb3NlcgpA
QCAtOTMyLDI4ICs5MDMsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYQogCiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyCi0KLS0gKGlkKWluaXRX
aXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbgotewotICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9nZW9sb2NhdGlv
biA9IGdlb2xvY2F0aW9uOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWFsbG93Ci17
Ci0gICAgX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQodHJ1ZSk7Ci19Ci0KLS0gKHZvaWQpZGVu
eQotewotICAgIF9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKLX0KLQotQGVuZAot
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0RnVs
bFNjcmVlbkxpc3RlbmVyCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKaW5kZXggNWVhMzM2OWMwOTBmOTQyMWMwMjEwNjI5NmZjYzc5MTQ3ZWM0
MzBmNi4uYjhlN2I4NzFlYmFjNzdkMDcwM2IyY2VlMWNlZGNhOWM0ZmRlYzM1YiAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMjYs
NyArMjYsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbkNsaWVudC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNzIEdl
b2xvY2F0aW9uOworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogQGNsYXNzIFdlYlZp
ZXc7CkBAIC00Myw2ICs0NCw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwogCisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
V2ViQ29yZTo6R2VvbG9jYXRpb24qKSB7IH07CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93
ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tCmluZGV4IGE2MzViNDRjZTU4MjJlNWFjNmRiNTZkNGQ3MTRlNDZhYTIwZGIz
ZmIuLmI1MmI3YmM2NDIwOTY5MDFmOTM1ODgzYzgyM2RjMDhmY2ViZGZlY2MgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMjUs
MTEgKzI1LDI1IEBACiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCiAKKyNpbXBv
cnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJGcmFt
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlVJRGVs
ZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CitAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4KK3sKKyAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9n
ZW9sb2NhdGlvbjsKK30KKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKiln
ZW9sb2NhdGlvbjsKK0BlbmQKKwogV2ViR2VvbG9jYXRpb25DbGllbnQ6OldlYkdlb2xvY2F0aW9u
Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAg
LTUwLDYgKzY0LDI4IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygp
CiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIHVucmVnaXN0ZXJXZWJWaWV3
Om1fd2ViVmlld107CiB9CiAKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJt
aXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOik7
CisgICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2Vs
ZWN0b3JdKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUgKmZyYW1lID0gZ2VvbG9jYXRpb24tPmZy
YW1lKCk7CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciogbGlzdGVuZXIgPSBbW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25dOworCisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJW
aWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0ZW5lcik7CisKKyAgICBb
d2ViT3JpZ2luIHJlbGVhc2VdOworICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCkBAIC01OCwzICs5NCwyNiBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAgICByZXR1cm4gMDsKICNlbmRpZgog
fQorCitAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcgorCistIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb24KK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZ2Vv
bG9jYXRpb24gPSBnZW9sb2NhdGlvbjsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClh
bGxvdworeworICAgIF9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKHRydWUpOworfQorCistICh2
b2lkKWRlbnkKK3sKKyAgICBfZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Cit9CisK
K0BlbmQKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCA5ZjZmODM3Y2MxM2U2OTBhNjJkNDZjYWJkMzA2MjhlMjY0ZWQ3NzFjLi5l
NzE1NzQ5ZThjZGNlYmFkZmFmMTM5YTJhY2I2MGVhNTlhYzM2MjNkIDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEwLTExLTI1ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvIEdlb2xvY2F0aW9uQ2xpZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA2MQor
CisgICAgICAgIFRoaXMgY2hhbmdlIGZhY2lsaXRhdGVzIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
biBpbXBsZW1lbnRhdGlvbiBieQorICAgICAgICBicmluZ2luZyB0b2dldGhlciBwZXJtaXNzaW9u
IGNvbnRyb2wgaW50byB0aGUgZ2VvbG9jYXRpb24gY2xpZW50CisgICAgICAgIGludGVyZmFjZS4K
KworICAgICAgICBNb3ZlIG1ldGhvZCBDaHJvbWVDbGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0bworICAgICAgICBHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBl
cm1pc3Npb24uIFRoZSBtb3ZlZCBjb2RlIGlzIHVuY2hhbmdlZAorICAgICAgICBleGNlcHQgdGhh
dCByZXF1ZXN0UGVybWlzc2lvbiBub3cgdGFrZXMgb25seSBvbmUgYXJndW1lbnQgKEdlb2xvY2F0
aW9uKiksCisgICAgICAgIHRoZSBGcmFtZSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20gdGhl
IEdlb2xvY2F0aW9uIG9iamVjdCBhbmQgd2UgbmVlZCB0bworICAgICAgICBjYWxsIG1fd2ViVmll
dy5nZXQoKSBhcyBpdCBpcyBhIENPTVB0ciBpbiBHZW9sb2NhdGlvbkNsaWVudC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJl
cXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KToKKwogMjAxMC0xMS0yMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVXNlIHBhdGhzIHJlbGF0aXZlIHRvICRXZWJLaXRWU1Byb3BzUmVkaXJlY3Rp
b25EaXIgdG8gYWNjZXNzIHNoYXJlZCAudnNwcm9wcyBmaWxlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGQwNDZjMjFkMjBhNzZjNTQ1ZmRk
ZTk0Yzc5OTE3ZjZlMDI0MDFkNTUuLjg4NGQ0ZGMxZTMzZjBmMTJiMDY2MDc3N2M0ZTRmNzExMWJi
NzNmODggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1
ZGUgIldlYkVsZW1lbnRQcm9wZXJ0eUJhZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYkhpc3Rv
cnkuaCIKICNpbmNsdWRlICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaCIKQEAgLTQ2LDcgKzQ1LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9H
ZW9sb2NhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbFdpbmRvd3NDb250ZXh0Lmg+
CkBAIC04MTcsMjkgKzgxNSw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRMYXN0U2V0Q3Vy
c29yVG9DdXJyZW50Q3Vyc29yKCkKICAgICBtX3dlYlZpZXctPnNldExhc3RDdXJzb3IoOjpHZXRD
dXJzb3IoKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24p
Ci17Ci0gICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlOwotICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKLSAgICAgICAgZ2VvbG9j
YXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQcml2YXRlMj4gdWlEZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5
LCB1aURlbGVnYXRlKTsKLSAgICBpZiAoIXVpRGVsZWdhdGVQcml2YXRlMikgewotICAgICAgICBn
ZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIENPTVB0cjxXZWJTZWN1cml0eU9yaWdpbj4gb3JpZ2luKEFkb3B0Q09NLCBXZWJTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2UoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpKTsKLSAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gbGlzdGVu
ZXIgPSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShnZW9sb2Nh
dGlvbik7Ci0gICAgSFJFU1VMVCBociA9IHVpRGVsZWdhdGVQcml2YXRlMi0+ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0KG1fd2ViVmlldywga2l0KGZyYW1lKSwgb3JpZ2luLmdldCgp
LCBsaXN0ZW5lci5nZXQoKSk7Ci0gICAgaWYgKGhyICE9IEVfTk9USU1QTCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Ci19Ci0KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNTUxNjdiNmU3Yzc4MWE1MzQxNjBkMTVlZDk0YWI3OWU5MzY3OTEwMi4uYjhmMjEyYjFlNjNh
Y2Q3MWI4YTRjODc5ZjQ0MWE1ZGE4NTNmMzU4MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTksNyArMTU5LDkgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6U2Nyb2xsVmlldyopIGNvbnN0IHt9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRz
IGFyZSB1c2luZyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3MworICAgIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24sIHRoZXNlIHR3byBtZXRob2RzIGhhdmUgYmVlbiBtb3ZlZCB0byBXZWJHZW9sb2NhdGlv
bkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJD
b3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9OwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfQogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApp
bmRleCA4YTUyNmM0OTI3ZmI3MTY5NDBiMTE1NDJmM2I0Y2Y3Y2U3NjBjNThmLi5iMWQ4M2ZiZDk2
OWYwOGI5NGJjMGUzNWRhMzM1MmJlNzFiYjFhMTBhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtMjcsOCArMjcsMTQgQEAK
ICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5o
IgogCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1
ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtNzIsMyArNzgsMjcgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRp
b25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIH0KKwordm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdl
b2xvY2F0aW9uKQoreworICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKKyAg
ICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7CisgICAg
ICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZTI+IHVpRGVsZWdhdGVQcml2
YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7CisgICAgaWYgKCF1aURlbGVnYXRlUHJpdmF0ZTIpIHsK
KyAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKKyAg
ICBDT01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSk7CisgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0g
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRpb24p
OworICAgIEhSRVNVTFQgaHIgPSB1aURlbGVnYXRlUHJpdmF0ZTItPmRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUmVxdWVzdChtX3dlYlZpZXcuZ2V0KCksIGtpdChmcmFtZSksIG9yaWdpbi5nZXQo
KSwgbGlzdGVuZXIuZ2V0KCkpOworICAgIGlmIChociAhPSBFX05PVElNUEwpCisgICAgICAgIHJl
dHVybjsKKworICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDI0
MjJhZTVkMzdmNzY2NjkzM2Y3OTc2MWNiOGE4ZjI2ZDhlMjUwZDYuLmM1ZGIxMzQwNTc5Y2Q5MGE2
YzE5NjIzODUxYTQ3ZWIxZDdmOWQ3YmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMwLDcgKzMwLDggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBj
bGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBHZW9s
b2NhdGlvblBvc2l0aW9uOwogfQogCiBjbGFzcyBXZWJWaWV3OwpAQCAtNDUsNiArNDYsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSB7IH0K
ICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigp
OwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6
Okdlb2xvY2F0aW9uKikgeyB9CisKIHByaXZhdGU6CiAgICAgQ09NUHRyPFdlYlZpZXc+IG1fd2Vi
VmlldzsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74921</attachid>
            <date>2010-11-26 04:34:09 -0800</date>
            <delta_ts>2010-11-26 06:19:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101126123406.patch</filename>
            <type>text/plain</type>
            <size>28026</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDdjNWU3MmU4NDZjZWQ1Y2YzZDI5OGZhMTRlMWQwOTdmMGI4YWQ1Zi4uZGNhODMxMDAzYmVlZDg1
MmVkMjQ2MDE5MTBhOTNkMDU3MDJlMTkxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMS0yNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5n
ZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdl
b2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVj
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lv
bik6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogcGFn
ZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNVcGRhdGVQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmFzeW5jVXBkYXRlQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRy
b2xsZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oOgorCiAyMDEwLTExLTI1ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjJjNWRi
NGYxY2JmZWJkNDg0OGMyNTFiMGQ0YmI0NzE1NTk5NDg5NC4uYzk4NjJhZGQzMWQyM2U1NGIwNTYy
ZDI0NzUyNzllOGI0ZWRlZjFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisr
KyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTM5LDYgKzEzOSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7CiAKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSBvbmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xpZW50LWJhc2VkIGdlb2xvY2F0
aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMKKyAgICAg
ICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2
ZSBtb3ZlZCB0byBHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMDYxCiAgICAgICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKICAgICAgICAgdm9pZCBjYW5jZWxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiop
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzlmNjg1MzE0ZmZkMTYzOWEyYmM2ZjU3OTk3MmQyMjUw
YWM5Y2RiZS4uMjQ0Y2NlY2ZiN2ZmYjViODVmMzNmNjE3N2RmMDhiZDFhOWYyY2I4YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMjA2LDExICsyMDYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWUsIGZsb2F0
IHByb3BvcnRpb24sIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayk7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludEN1c3RvbVNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmKTsKIAorICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1
c2luZyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDM3MworICAgICAgICAvLyBGb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0
aW9uLCB0aGVzZSB0d28gbWV0aG9kcyBoYXZlIG1vdmVkIHRvIEdlb2xvY2F0aW9uQ2xpZW50LiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKICAgICAgICAgLy8g
VGhpcyBjYW4gYmUgZWl0aGVyIGEgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIGNhbGwuIFRo
ZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNz
aW9uCiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2NhdGlvbi4KICAgICAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9u
KikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7Ci0gICAgICAgICAgICAK
KwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4pID0gMDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9h
ZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKSA9
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwIGIvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5MTM1MDQ5MmIzOTg2NTM4YWNkMTdmMzk2OTk1NmFi
ODEzMDRiYjViLi45YzZmNmQxOTM2YjQ3ZTQxNGU0YjM1MTUzODRlYmYyZDA3ZDc2YzFkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5jcHAKQEAgLTIzMyw4ICsyMzMsMTMgQEAgR2VvbG9jYXRpb246On5HZW9sb2Nh
dGlvbigpCiAKIHZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiB7Ci0gICAgaWYg
KG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblBy
b2dyZXNzKQorICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2FsbG93R2Vv
bG9jYXRpb24gPT0gSW5Qcm9ncmVzcykgeworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCkt
PmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOworI2Vsc2UKICAgICAgICAgbV9mcmFtZS0+
cGFnZSgpLT5jaHJvbWUoKS0+Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKG1fZnJhbWUsIHRoaXMpOworI2VuZGlmCisgICAgfQogICAgIGNhbmNlbEFsbFJlcXVlc3Rz
KCk7CiAgICAgc3RvcFVwZGF0aW5nKCk7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9j
dW1lbnQoKSkKQEAgLTU5Niw4ICs2MDEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFBl
cm1pc3Npb24oKQogCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gSW5Qcm9ncmVzczsKIAotICAg
IC8vIEFzayB0aGUgY2hyb21lOiBpdCBtYWludGFpbnMgdGhlIGdlb2xvY2F0aW9uIGNoYWxsZW5n
ZSBwb2xpY3kgaXRzZWxmLgorICAgIC8vIEFzayB0aGUgZW1iZWRkZXI6IGl0IG1haW50YWlucyB0
aGUgZ2VvbG9jYXRpb24gY2hhbGxlbmdlIHBvbGljeSBpdHNlbGYuCisjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+
cmVxdWVzdFBlcm1pc3Npb24odGhpcyk7CisjZWxzZQogICAgIHBhZ2UtPmNocm9tZSgpLT5yZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUobV9mcmFtZSwgdGhpcyk7CisjZW5kaWYK
IH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkSW50ZXJuYWwoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCBjNjQ2ZjkxOGEyYzhjMGUyMzAyODUzYWU4OWY2NzdhMDY5
MmU5NWU1Li40NGNiOTA5MTcyZDA5N2YxNzIwZGFjZWMzNWU5ZTVlNGI5YjdiNjQ0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIAog
Y2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewpAQCAtNDMsNiArNDQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7CiAgICAgdmlydHVh
bCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRpb25DbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGRiNGNjMjMwYzNhZTJmMjZiNmIwMDE4NDI2
NmFiNDNmZTA2YWYzNDguLjI4ZDUyMmQ5NjA0NzRlNjk5ZjhjMTc5OWU1OTFjZGVjNDVjNTZiMTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC03OCw2ICs3OCwxOCBA
QCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24q
IG9ic2VydmVyKQogICAgIH0KIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVl
c3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihnZW9sb2NhdGlvbik7Cit9
CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRpb24pOworfQorCiB2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRp
b24qIHBvc2l0aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb247CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb25Db250cm9sbGVyLmgKaW5kZXggMmQ4MTA2ZGU0OTMzNTgzMzRlOWNjYjI3NWNi
YTIxN2NlMWQ4OGE0YS4uN2RiMTk1MTM5ZTYxN2VlZDFiMDIyOTA3YmY0Mzk5NjM2MjBkNTkwYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1dl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlvbiosIGJvb2wgZW5hYmxlSGlnaEFj
Y3VyYWN5KTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKik7CiAKKyAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBjYW5jZWxQZXJt
aXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopOworCiAgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQo
R2VvbG9jYXRpb25Qb3NpdGlvbiopOwogICAgIHZvaWQgZXJyb3JPY2N1cnJlZChHZW9sb2NhdGlv
bkVycm9yKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5jcHAKaW5kZXggM2M0Njk3ZjA2MDFkZTU0NmY0YTIzMDVlNDJjMjM5MmY3NjA4M2VmMS4u
ZWYzMTU5YTdmMjBhYWNhZGMzN2QzMWMwMjA0ZmY3YzJmMjJmYTA2MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTQxLDggKzQxLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogR2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2soKQogICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKHRo
aXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpCisgICAgLCBtX2NvbnRyb2xs
ZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJl
ZCkKKyAgICAsIG1fcGVybWlzc2lvblRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnBlcm1pc3Npb25UaW1lckZpcmVkKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKKyAgICAsIG1f
cGVybWlzc2lvblN0YXRlKFBlcm1pc3Npb25TdGF0ZVVuc2V0KQogewogfQogCkBAIC03MSwxMCAr
NzMsNTUgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9yKFBhc3NSZWZQdHI8
R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IpCiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9
CiAKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IGFsbG93ZWQgPyBQZXJtaXNzaW9uU3RhdGVB
bGxvd2VkIDogUGVybWlzc2lvblN0YXRlRGVuaWVkOworICAgIGFzeW5jVXBkYXRlUGVybWlzc2lv
bigpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24o
R2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uYWRk
KGdlb2xvY2F0aW9uKTsKKyAgICBpZiAobV9wZXJtaXNzaW9uU3RhdGUgIT0gUGVybWlzc2lvblN0
YXRlVW5zZXQpCisgICAgICAgIGFzeW5jVXBkYXRlUGVybWlzc2lvbigpOworfQorCit2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24q
IGdlb2xvY2F0aW9uKQoreworICAgIC8vIENhbGxlZCBmcm9tIEdlb2xvY2F0aW9uOjpkaXNjb25u
ZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBtX3BlbmRp
bmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7CisgICAgaWYgKG1fcGVuZGluZ1Blcm1p
c3Npb24uaXNFbXB0eSgpICYmIG1fcGVybWlzc2lvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fcGVybWlzc2lvblRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbigpCit7CisgICAgQVNTRVJUKG1fcGVybWlzc2lvblN0
YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0KTsKKyAgICBpZiAoIW1fcGVybWlzc2lvblRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVybWlzc2lvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VS
VCh0aW1lciA9PSAmbV9wZXJtaXNzaW9uVGltZXIpOworICAgIEFTU0VSVChtX3Blcm1pc3Npb25T
dGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCk7CisgICAgYm9vbCBhbGxvd2VkID0gbV9wZXJt
aXNzaW9uU3RhdGUgPT0gUGVybWlzc2lvblN0YXRlQWxsb3dlZDsKKyAgICBHZW9sb2NhdGlvblNl
dDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUGVybWlzc2lvbi5lbmQoKTsKKworICAgIC8vIE9u
Y2UgcGVybWlzc2lvbiBoYXMgYmVlbiBzZXQgKG9yIGRlbmllZCkgb24gYSBHZW9sb2NhdGlvbiBv
YmplY3QsIHRoZXJlIGNhbiBiZQorICAgIC8vIG5vIGZ1cnRoZXIgcmVxdWVzdHMgZm9yIHBlcm1p
c3Npb24gdG8gdGhlIG1vY2suIENvbnNlcXVlbnRseSB0aGUgY2FsbGJhY2tzCisgICAgLy8gd2hp
Y2ggZmlyZSBzeW5jaHJvbm91c2x5IGZyb20gR2VvbG9jYXRpb246OnNldElzQWxsb3dlZCgpIGNh
bm5vdCByZWVudHJhbnRseSBtb2RpZnkKKyAgICAvLyBtX3BlbmRpbmdQZXJtaXNzaW9uLgorICAg
IGZvciAoR2VvbG9jYXRpb25TZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUGVybWlzc2lvbi5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5zZXRJc0FsbG93ZWQoYWxs
b3dlZCk7CisgICAgbV9wZW5kaW5nUGVybWlzc2lvbi5jbGVhcigpOworfQorCiB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKICAg
ICBtX2xhc3RFcnJvciA9IDA7CisgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJtaXNzaW9uU3Rh
dGVVbnNldDsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVz
dHJveWVkKCkKQEAgLTkzLDcgKzE0MCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
dG9wVXBkYXRpbmcoKQogewogICAgIEFTU0VSVChtX2lzQWN0aXZlKTsKICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7Ci0gICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9sbGVyVGltZXIuc3Rv
cCgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wpCkBAIC0xMTAsMTggKzE1NywxMyBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQobV9jb250cm9sbGVy
KTsKLSAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiogdGltZXIpCi17Ci0gICAg
QVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXIpOwotICAgIHVwZGF0ZUNvbnRy
b2xsZXIoKTsKKyAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV9jb250cm9sbGVyVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV9jb250cm9sbGVyVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6dXBkYXRlQ29udHJvbGxlcigpCit2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25D
bGllbnRNb2NrPiogdGltZXIpCiB7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0g
Jm1fY29udHJvbGxlclRpbWVyKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKIAogICAgIGlm
IChtX2xhc3RQb3NpdGlvbi5nZXQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2Nh
dGlvbkNsaWVudE1vY2suaAppbmRleCBmNTdhZmE5YTI1NTkyNTM5ZDA4N2ZlYTdjODE2NzNjNTk0
OTdjNzJkLi5kZjM1MzE2OGVmZmU1N2FlZmY0ZDRmZTBlZWZiZDMyMzAyYTNkYWQwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4pOwogICAgIHZvaWQg
c2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPik7CisgICAgdm9pZCBz
ZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAog
ICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwpAQCAtNjQsMTcgKzY2LDMw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKICAgICB2aXJ0dWFsIEdlb2xvY2F0
aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChHZW9sb2NhdGlvbiopOwogCiBwcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAgICAgdm9pZCBhc3luY1VwZGF0ZUNvbnRy
b2xsZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRyb2xsZXIoKTsKKyAgICB2b2lkIGNvbnRyb2xs
ZXJUaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKKworICAgIHZvaWQg
YXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CisgICAgdm9pZCBwZXJtaXNzaW9uVGltZXJGaXJlZChU
aW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKICAgICBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIqIG1fY29udHJvbGxlcjsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IG1fbGFzdEVycm9yOwotICAg
IFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV90aW1lcjsKKyAgICBUaW1lcjxHZW9sb2Nh
dGlvbkNsaWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOworICAgIFRpbWVyPEdlb2xvY2F0aW9u
Q2xpZW50TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOworCisg
ICAgZW51bSBQZXJtaXNzaW9uU3RhdGUgeworICAgICAgICBQZXJtaXNzaW9uU3RhdGVVbnNldCwK
KyAgICAgICAgUGVybWlzc2lvblN0YXRlQWxsb3dlZCwKKyAgICAgICAgUGVybWlzc2lvblN0YXRl
RGVuaWVkLAorICAgIH0gbV9wZXJtaXNzaW9uU3RhdGU7CisgICAgdHlwZWRlZiBXVEY6Okhhc2hT
ZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IEdlb2xvY2F0aW9uU2V0OworICAgIEdlb2xvY2F0aW9u
U2V0IG1fcGVuZGluZ1Blcm1pc3Npb247CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDViOWFiOTJjNGMxYmEwZjAw
YWQxM2U1Y2UyY2UyMTY3ZGFlYjgxZDQuLjk3MmI2MjZjNTRjNGFjNjg4OWYxMTYyODA0Y2Y3NDE2
YjQ3YjZhNDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMjUgIEpvaG4gS25vdHRlbmJl
bHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUgdG8gR2VvbG9jYXRpb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZmFjaWxpdGF0
ZXMgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIGJ5CisgICAgICAgIGJy
aW5naW5nIHRvZ2V0aGVyIHBlcm1pc3Npb24gY29udHJvbCBpbnRvIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgIE1vdmUgbWV0aG9kIENocm9tZUNs
aWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvCisgICAgICAgIEdl
b2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbiwgYW5kIHN1cHBvcnRpbmcgY2xhc3MK
KyAgICAgICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci4gVGhlIG1vdmVkIGNvZGUgaXMg
dW5jaGFuZ2VkIGV4Y2VwdAorICAgICAgICB0aGF0IHJlcXVlc3RQZXJtaXNzaW9uIG5vdyB0YWtl
cyBvbmx5IG9uZSBhcmd1bWVudCAoR2VvbG9jYXRpb24qKQorICAgICAgICBhbmQgdGhlIEZyYW1l
IHBhcmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgR2VvbG9jYXRpb24gb2JqZWN0LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVl
c3RQZXJtaXNzaW9uKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBp
bml0V2l0aEdlb2xvY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyIGFsbG93XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIg
ZGVueV0pOgorCiAyMDEwLTExLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhNWY0OWUzMDE5ZGRiYWJiNWFjMDE5YWViNDdm
OTc0NTViNTQ3MjgxLi5iNjM0YzlkOWRlMjdkZGViODk4OTIwNDdiYjdmMGExZjIzODk5ZDhmIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE3Miw3
ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50Kik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3Jl
OjpHZW9sb2NhdGlvbiopOworICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJl
IHVzaW5nIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwMzczCisgICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
biwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2ZSBtb3ZlZCB0byBXZWJHZW9sb2NhdGlvbkNsaWVudC4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJD
b3JlOjpHZW9sb2NhdGlvbiopIHsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0
aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCmluZGV4IGZlOTU5ODk2OWQzMGRmY2ZjZjZkNWM4ODNkZWQxMWQwZWY4
YTQ4MDQuLjQ4Y2NkYWJkZWQzMzEwOGQ2ZmIwZWM3NDUzMzZhNzAzNTJkYjA4NmQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC01NSw3ICs1NSw2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dlb2xvY2F0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KQEAg
LTEwMiwxMyArMTAxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtIChpZClpbml0V2l0
aENob29zZXI6KFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KWNob29zZXI7CiBAZW5kCiAKLUBpbnRl
cmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyPgotewotICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gX2dlb2xvY2F0
aW9uOwotfQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0
aW9uOwotQGVuZAotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBAaW50ZXJmYWNlIFdl
YktpdEZ1bGxTY3JlZW5MaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVu
ZXI+CkBAIC04NDksMjcgKzg0MSw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIAogI2VuZGlmCiAKLXZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotCi0gICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjopOwot
ICAgIGlmICghW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVj
dG9yXSkgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwotICAgIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
IGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0aW9uXTsKLQotICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwga2l0KGZyYW1lKSwgbGlzdGVu
ZXIpOwotCi0gICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKLSAgICBbbGlzdGVuZXIgcmVsZWFzZV07
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiBAaW1wbGVtZW50YXRpb24g
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIKIAogLSAoaWQpaW5pdFdpdGhDaG9vc2VyOihQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPiljaG9vc2VyCkBAIC05MzIsMjggKzkwMyw2IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBHZW9sb2NhCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIKLQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24q
KWdlb2xvY2F0aW9uCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247Ci0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpYWxsb3cKLXsKLSAgICBfZ2VvbG9jYXRpb24tPnNldElzQWxs
b3dlZCh0cnVlKTsKLX0KLQotLSAodm9pZClkZW55Ci17Ci0gICAgX2dlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoZmFsc2UpOwotfQotCi1AZW5kCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA1ZWEzMzY5
YzA5MGY5NDIxYzAyMTA2Mjk2ZmNjNzkxNDdlYzQzMGY2Li5iOGU3Yjg3MWViYWM3N2QwNzAzYjJj
ZWUxY2VkY2E5YzRmZGVjMzViIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBH
ZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBHZW9sb2NhdGlv
blBvc2l0aW9uOwogfQogCiBAY2xhc3MgV2ViVmlldzsKQEAgLTQzLDYgKzQ0LDkgQEAgcHVibGlj
OgogCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CiAK
KyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAg
dm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfTsK
KwogcHJpdmF0ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggYTYzNWI0NGNl
NTgyMmU1YWM2ZGI1NmQ0ZDcxNGU0NmFhMjBkYjNmYi4uYjUyYjdiYzY0MjA5NjkwMWY5MzU4ODNj
ODIzZGMwOGZjZWJkZmVjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC0yNSwxMSArMjUsMjUgQEAKIAogI2ltcG9ydCAiV2Vi
R2VvbG9jYXRpb25DbGllbnQuaCIKIAorI2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hpbmcuaCIKKyNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkdl
b2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5J
bnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldl
YlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK0BpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyPgor
eworICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gX2dlb2xvY2F0aW9uOworfQorLSAoaWQpaW5pdFdp
dGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uOworQGVuZAorCiBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6V2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpAQCAtNTAsNiArNjQsMjggQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKICAgICBbW21fd2ViVmlldyBfZ2VvbG9jYXRp
b25Qcm92aWRlcl0gdW5yZWdpc3RlcldlYlZpZXc6bV93ZWJWaWV3XTsKIH0KIAordm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0
aW9uKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFNFTCBzZWxl
Y3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVz
dEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKKyAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVs
ZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKKyAgICAgICAgZ2VvbG9jYXRp
b24tPnNldElzQWxsb3dlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBG
cmFtZSAqZnJhbWUgPSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKKyAgICBXZWJTZWN1cml0eU9yaWdp
biAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29y
ZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKKyAg
ICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKiBsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl07
CisKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGtp
dChmcmFtZSksIGxpc3RlbmVyKTsKKworICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgW2xp
c3RlbmVyIHJlbGVhc2VdOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwog
R2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigp
CiB7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKQEAgLTU4LDMgKzk0LDI2
IEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRp
b24oKQogICAgIHJldHVybiAwOwogI2VuZGlmCiB9CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyCisKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xv
Y2F0aW9uKilnZW9sb2NhdGlvbgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIF9nZW9sb2NhdGlvbiA9IGdlb2xvY2F0aW9uOworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWFsbG93Cit7CisgICAgX2dlb2xvY2F0aW9uLT5z
ZXRJc0FsbG93ZWQodHJ1ZSk7Cit9CisKKy0gKHZvaWQpZGVueQoreworICAgIF9nZW9sb2NhdGlv
bi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKK30KKworQGVuZAorCmRpZmYgLS1naXQgYS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDlmNmY4MzdjYzEzZTY5
MGE2MmQ0NmNhYmQzMDYyOGUyNjRlZDc3MWMuLmU3MTU3NDllOGNkY2ViYWRmYWYxMzlhMmFjYjYw
ZWE1OWFjMzYyM2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMTEtMjUgIEpvaG4gS25vdHRl
bmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUgdG8gR2VvbG9jYXRpb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZmFjaWxp
dGF0ZXMgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIGJ5CisgICAgICAg
IGJyaW5naW5nIHRvZ2V0aGVyIHBlcm1pc3Npb24gY29udHJvbCBpbnRvIHRoZSBnZW9sb2NhdGlv
biBjbGllbnQKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgIE1vdmUgbWV0aG9kIENocm9t
ZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvCisgICAgICAg
IEdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbi4gVGhlIG1vdmVkIGNvZGUgaXMg
dW5jaGFuZ2VkCisgICAgICAgIGV4Y2VwdCB0aGF0IHJlcXVlc3RQZXJtaXNzaW9uIG5vdyB0YWtl
cyBvbmx5IG9uZSBhcmd1bWVudCAoR2VvbG9jYXRpb24qKSwKKyAgICAgICAgdGhlIEZyYW1lIHBh
cmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgR2VvbG9jYXRpb24gb2JqZWN0IGFuZCB3ZSBu
ZWVkIHRvCisgICAgICAgIGNhbGwgbV93ZWJWaWV3LmdldCgpIGFzIGl0IGlzIGEgQ09NUHRyIGlu
IEdlb2xvY2F0aW9uQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJHZW9s
b2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QpOgorCiAyMDEwLTExLTIyICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgcGF0aHMgcmVsYXRp
dmUgdG8gJFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpciB0byBhY2Nlc3Mgc2hhcmVkIC52c3By
b3BzIGZpbGVzCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggZDA0NmMyMWQyMGE3NmM1NDVmZGRlOTRjNzk5MTdmNmUwMjQwMWQ1NS4uODg0ZDRk
YzFlMzNmMGYxMmIwNjYwNzc3YzRlNGY3MTExYmI3M2Y4OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudFByb3BlcnR5QmFnLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeS5oIgogI2luY2x1ZGUgIldlYk11dGFibGVV
UkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5o
IgpAQCAtNDYsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvY2FsV2luZG93c0NvbnRleHQuaD4KQEAgLTgxNywyOSArODE1LDYgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKQogICAgIG1f
d2ViVmlldy0+c2V0TGFzdEN1cnNvcig6OkdldEN1cnNvcigpKTsKIH0KIAotdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSogZnJh
bWUsIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKLXsKLSAgICBDT01QdHI8SVdlYlVJRGVsZWdh
dGU+IHVpRGVsZWdhdGU7Ci0gICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVp
RGVsZWdhdGUpKSkgewotICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZh
dGUyPiB1aURlbGVnYXRlUHJpdmF0ZTIoUXVlcnksIHVpRGVsZWdhdGUpOwotICAgIGlmICghdWlE
ZWxlZ2F0ZVByaXZhdGUyKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ09NUHRyPFdlYlNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpOwotICAgIENPTVB0cjxXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lciA9IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXI6OmNyZWF0ZUluc3RhbmNlKGdlb2xvY2F0aW9uKTsKLSAgICBIUkVTVUxUIGhyID0gdWlE
ZWxlZ2F0ZVByaXZhdGUyLT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3QobV93ZWJW
aWV3LCBraXQoZnJhbWUpLCBvcmlnaW4uZ2V0KCksIGxpc3RlbmVyLmdldCgpKTsKLSAgICBpZiAo
aHIgIT0gRV9OT1RJTVBMKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnZW9sb2NhdGlvbi0+c2V0
SXNBbGxvd2VkKGZhbHNlKTsKLX0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSogZnJh
bWUsIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7CmRpZmYgLS1naXQgYS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA1NTE2N2I2ZTdjNzgxYTUzNDE2MGQxNWVk
OTRhYjc5ZTkzNjc5MTAyLi5iOGYyMTJiMWU2M2FjZDcxYjhhNGM4NzlmNDQxYTVkYTg1M2YzNTgy
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1
OSw3ICsxNTksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9W
aWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpTY3JvbGxWaWV3Kikg
Y29uc3Qge30KIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIC8v
IEZJWE1FOiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJlIHVzaW5nIGNsaWVudC1iYXNlZCBnZW9s
b2NhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzczCisg
ICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2
ZSBiZWVuIG1vdmVkIHRvIFdlYkdlb2xvY2F0aW9uQ2xpZW50LiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9j
YXRpb24qKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikg
eyB9CiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDhhNTI2YzQ5MjdmYjcxNjk0MGIxMTU0
MmYzYjRjZjdjZTc2MGM1OGYuLmIxZDgzZmJkOTY5ZjA4Yjk0YmMwZTM1ZGEzMzUyYmU3MWJiMWEx
MGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCkBAIC0yNyw4ICsyNywxNCBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MiwzICs3OCwyNyBAQCBHZW9s
b2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAg
ICByZXR1cm4gMDsKICNlbmRpZgogfQorCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1
ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgQ09NUHRyPElX
ZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlOworICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT51aURl
bGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKKyAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dl
ZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDT01QdHI8SVdlYlVJRGVs
ZWdhdGVQcml2YXRlMj4gdWlEZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5LCB1aURlbGVnYXRlKTsKKyAg
ICBpZiAoIXVpRGVsZWdhdGVQcml2YXRlMikgeworICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNB
bGxvd2VkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lKiBmcmFt
ZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOworICAgIENPTVB0cjxXZWJTZWN1cml0eU9yaWdpbj4g
b3JpZ2luKEFkb3B0Q09NLCBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2UoZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBDT01QdHI8V2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lcj4gbGlzdGVuZXIgPSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
OjpjcmVhdGVJbnN0YW5jZShnZW9sb2NhdGlvbik7CisgICAgSFJFU1VMVCBociA9IHVpRGVsZWdh
dGVQcml2YXRlMi0+ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0KG1fd2ViVmlldy5n
ZXQoKSwga2l0KGZyYW1lKSwgb3JpZ2luLmdldCgpLCBsaXN0ZW5lci5nZXQoKSk7CisgICAgaWYg
KGhyICE9IEVfTk9USU1QTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2VvbG9jYXRpb24tPnNl
dElzQWxsb3dlZChmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMjQyMmFlNWQzN2Y3NjY2OTMzZjc5NzYxY2I4YThm
MjZkOGUyNTBkNi4uYzVkYjEzNDA1NzljZDkwYTZjMTk2MjM4NTFhNDdlYjFkN2Y5ZDdiZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApA
QCAtMzAsNyArMzAsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25DbGllbnQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247Citj
bGFzcyBHZW9sb2NhdGlvbjsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKIGNsYXNz
IFdlYlZpZXc7CkBAIC00NSw2ICs0Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIHsgfQogICAgIHZpcnR1YWwgV2ViQ29yZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSB7IH0KKwogcHJpdmF0
ZToKICAgICBDT01QdHI8V2ViVmlldz4gbV93ZWJWaWV3OwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74927</attachid>
            <date>2010-11-26 06:19:19 -0800</date>
            <delta_ts>2010-12-01 13:29:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101126141916.patch</filename>
            <type>text/plain</type>
            <size>28024</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDdjNWU3MmU4NDZjZWQ1Y2YzZDI5OGZhMTRlMWQwOTdmMGI4YWQ1Zi4uZGNhODMxMDAzYmVlZDg1
MmVkMjQ2MDE5MTBhOTNkMDU3MDJlMTkxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMS0yNSAgSm9o
biBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5n
ZSBmYWNpbGl0YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgYnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdl
b2xvY2F0aW9uIGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVj
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lv
bik6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogcGFn
ZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnRNb2NrOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNVcGRhdGVQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmFzeW5jVXBkYXRlQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRy
b2xsZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oOgorCiAyMDEwLTExLTI1ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjJjNWRi
NGYxY2JmZWJkNDg0OGMyNTFiMGQ0YmI0NzE1NTk5NDg5NC4uYzk4NjJhZGQzMWQyM2U1NGIwNTYy
ZDI0NzUyNzllOGI0ZWRlZjFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisr
KyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTM5LDYgKzEzOSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7CiAKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSBvbmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xpZW50LWJhc2VkIGdlb2xvY2F0
aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMKKyAgICAg
ICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2
ZSBtb3ZlZCB0byBHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMDYxCiAgICAgICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKICAgICAgICAgdm9pZCBjYW5jZWxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiop
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzlmNjg1MzE0ZmZkMTYzOWEyYmM2ZjU3OTk3MmQyMjUw
YWM5Y2RiZS4uMjQ0Y2NlY2ZiN2ZmYjViODVmMzNmNjE3N2RmMDhiZDFhOWYyY2I4YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMjA2LDExICsyMDYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWUsIGZsb2F0
IHByb3BvcnRpb24sIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayk7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludEN1c3RvbVNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmKTsKIAorICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1
c2luZyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDM3MworICAgICAgICAvLyBGb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0
aW9uLCB0aGVzZSB0d28gbWV0aG9kcyBoYXZlIG1vdmVkIHRvIEdlb2xvY2F0aW9uQ2xpZW50LiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKICAgICAgICAgLy8g
VGhpcyBjYW4gYmUgZWl0aGVyIGEgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIGNhbGwuIFRo
ZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNz
aW9uCiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2NhdGlvbi4KICAgICAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9u
KikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKSA9IDA7Ci0gICAgICAgICAgICAK
KwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4pID0gMDsKICAgICAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9h
ZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKSA9
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwIGIvV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5MTM1MDQ5MmIzOTg2NTM4YWNkMTdmMzk2OTk1NmFi
ODEzMDRiYjViLi45YzZmNmQxOTM2YjQ3ZTQxNGU0YjM1MTUzODRlYmYyZDA3ZDc2YzFkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5jcHAKQEAgLTIzMyw4ICsyMzMsMTMgQEAgR2VvbG9jYXRpb246On5HZW9sb2Nh
dGlvbigpCiAKIHZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiB7Ci0gICAgaWYg
KG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblBy
b2dyZXNzKQorICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2FsbG93R2Vv
bG9jYXRpb24gPT0gSW5Qcm9ncmVzcykgeworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCkt
PmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOworI2Vsc2UKICAgICAgICAgbV9mcmFtZS0+
cGFnZSgpLT5jaHJvbWUoKS0+Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZy
YW1lKG1fZnJhbWUsIHRoaXMpOworI2VuZGlmCisgICAgfQogICAgIGNhbmNlbEFsbFJlcXVlc3Rz
KCk7CiAgICAgc3RvcFVwZGF0aW5nKCk7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9j
dW1lbnQoKSkKQEAgLTU5Niw4ICs2MDEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFBl
cm1pc3Npb24oKQogCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9uID0gSW5Qcm9ncmVzczsKIAotICAg
IC8vIEFzayB0aGUgY2hyb21lOiBpdCBtYWludGFpbnMgdGhlIGdlb2xvY2F0aW9uIGNoYWxsZW5n
ZSBwb2xpY3kgaXRzZWxmLgorICAgIC8vIEFzayB0aGUgZW1iZWRkZXI6IGl0IG1haW50YWlucyB0
aGUgZ2VvbG9jYXRpb24gY2hhbGxlbmdlIHBvbGljeSBpdHNlbGYuCisjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+
cmVxdWVzdFBlcm1pc3Npb24odGhpcyk7CisjZWxzZQogICAgIHBhZ2UtPmNocm9tZSgpLT5yZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUobV9mcmFtZSwgdGhpcyk7CisjZW5kaWYK
IH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkSW50ZXJuYWwoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCBjNjQ2ZjkxOGEyYzhjMGUyMzAyODUzYWU4OWY2NzdhMDY5
MmU5NWU1Li40NGNiOTA5MTcyZDA5N2YxNzIwZGFjZWMzNWU5ZTVlNGI5YjdiNjQ0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIAog
Y2xhc3MgR2VvbG9jYXRpb25DbGllbnQgewpAQCAtNDMsNiArNDQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7CiAgICAgdmlydHVh
bCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKikgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRpb25DbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGRiNGNjMjMwYzNhZTJmMjZiNmIwMDE4NDI2
NmFiNDNmZTA2YWYzNDguLjI4ZDUyMmQ5NjA0NzRlNjk5ZjhjMTc5OWU1OTFjZGVjNDVjNTZiMTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC03OCw2ICs3OCwxOCBA
QCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24q
IG9ic2VydmVyKQogICAgIH0KIH0KIAordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVl
c3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihnZW9sb2NhdGlvbik7Cit9
CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRpb24pOworfQorCiB2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRp
b24qIHBvc2l0aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb247CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb25Db250cm9sbGVyLmgKaW5kZXggMmQ4MTA2ZGU0OTMzNTgzMzRlOWNjYjI3NWNi
YTIxN2NlMWQ4OGE0YS4uN2RiMTk1MTM5ZTYxN2VlZDFiMDIyOTA3YmY0Mzk5NjM2MjBkNTkwYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1dl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlvbiosIGJvb2wgZW5hYmxlSGlnaEFj
Y3VyYWN5KTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKik7CiAKKyAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBjYW5jZWxQZXJt
aXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopOworCiAgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQo
R2VvbG9jYXRpb25Qb3NpdGlvbiopOwogICAgIHZvaWQgZXJyb3JPY2N1cnJlZChHZW9sb2NhdGlv
bkVycm9yKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5jcHAKaW5kZXggM2M0Njk3ZjA2MDFkZTU0NmY0YTIzMDVlNDJjMjM5MmY3NjA4M2VmMS4u
ZWYzMTU5YTdmMjBhYWNhZGMzN2QzMWMwMjA0ZmY3YzJmMjJmYTA2MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTQxLDggKzQxLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogR2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2soKQogICAgIDogbV9jb250cm9sbGVyKDApCi0gICAgLCBtX3RpbWVyKHRo
aXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpCisgICAgLCBtX2NvbnRyb2xs
ZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJl
ZCkKKyAgICAsIG1fcGVybWlzc2lvblRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnBlcm1pc3Npb25UaW1lckZpcmVkKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKKyAgICAsIG1f
cGVybWlzc2lvblN0YXRlKFBlcm1pc3Npb25TdGF0ZVVuc2V0KQogewogfQogCkBAIC03MSwxMCAr
NzMsNTUgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9yKFBhc3NSZWZQdHI8
R2VvbG9jYXRpb25FcnJvcj4gZXJyb3IpCiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9
CiAKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IGFsbG93ZWQgPyBQZXJtaXNzaW9uU3RhdGVB
bGxvd2VkIDogUGVybWlzc2lvblN0YXRlRGVuaWVkOworICAgIGFzeW5jVXBkYXRlUGVybWlzc2lv
bigpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1pc3Npb24o
R2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIG1fcGVuZGluZ1Blcm1pc3Npb24uYWRk
KGdlb2xvY2F0aW9uKTsKKyAgICBpZiAobV9wZXJtaXNzaW9uU3RhdGUgIT0gUGVybWlzc2lvblN0
YXRlVW5zZXQpCisgICAgICAgIGFzeW5jVXBkYXRlUGVybWlzc2lvbigpOworfQorCit2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24q
IGdlb2xvY2F0aW9uKQoreworICAgIC8vIENhbGxlZCBmcm9tIEdlb2xvY2F0aW9uOjpkaXNjb25u
ZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBtX3BlbmRp
bmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7CisgICAgaWYgKG1fcGVuZGluZ1Blcm1p
c3Npb24uaXNFbXB0eSgpICYmIG1fcGVybWlzc2lvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fcGVybWlzc2lvblRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbigpCit7CisgICAgQVNTRVJUKG1fcGVybWlzc2lvblN0
YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0KTsKKyAgICBpZiAoIW1fcGVybWlzc2lvblRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVybWlzc2lvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VS
VCh0aW1lciA9PSAmbV9wZXJtaXNzaW9uVGltZXIpOworICAgIEFTU0VSVChtX3Blcm1pc3Npb25T
dGF0ZSAhPSBQZXJtaXNzaW9uU3RhdGVVbnNldCk7CisgICAgYm9vbCBhbGxvd2VkID0gbV9wZXJt
aXNzaW9uU3RhdGUgPT0gUGVybWlzc2lvblN0YXRlQWxsb3dlZDsKKyAgICBHZW9sb2NhdGlvblNl
dDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUGVybWlzc2lvbi5lbmQoKTsKKworICAgIC8vIE9u
Y2UgcGVybWlzc2lvbiBoYXMgYmVlbiBzZXQgKG9yIGRlbmllZCkgb24gYSBHZW9sb2NhdGlvbiBv
YmplY3QsIHRoZXJlIGNhbiBiZQorICAgIC8vIG5vIGZ1cnRoZXIgcmVxdWVzdHMgZm9yIHBlcm1p
c3Npb24gdG8gdGhlIG1vY2suIENvbnNlcXVlbnRseSB0aGUgY2FsbGJhY2tzCisgICAgLy8gd2hp
Y2ggZmlyZSBzeW5jaHJvbm91c2x5IGZyb20gR2VvbG9jYXRpb246OnNldElzQWxsb3dlZCgpIGNh
bm5vdCByZWVudHJhbnRseSBtb2RpZnkKKyAgICAvLyBtX3BlbmRpbmdQZXJtaXNzaW9uLgorICAg
IGZvciAoR2VvbG9jYXRpb25TZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUGVybWlzc2lvbi5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5zZXRJc0FsbG93ZWQoYWxs
b3dlZCk7CisgICAgbV9wZW5kaW5nUGVybWlzc2lvbi5jbGVhcigpOworfQorCiB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKICAg
ICBtX2xhc3RFcnJvciA9IDA7CisgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJtaXNzaW9uU3Rh
dGVVbnNldDsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omdlb2xvY2F0aW9uRGVz
dHJveWVkKCkKQEAgLTkzLDcgKzE0MCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpz
dG9wVXBkYXRpbmcoKQogewogICAgIEFTU0VSVChtX2lzQWN0aXZlKTsKICAgICBtX2lzQWN0aXZl
ID0gZmFsc2U7Ci0gICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9sbGVyVGltZXIuc3Rv
cCgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wpCkBAIC0xMTAsMTggKzE1NywxMyBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQobV9jb250cm9sbGVy
KTsKLSAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiogdGltZXIpCi17Ci0gICAg
QVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXIpOwotICAgIHVwZGF0ZUNvbnRy
b2xsZXIoKTsKKyAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV9jb250cm9sbGVyVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV9jb250cm9sbGVyVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6dXBkYXRlQ29udHJvbGxlcigpCit2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25D
bGllbnRNb2NrPiogdGltZXIpCiB7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0g
Jm1fY29udHJvbGxlclRpbWVyKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKIAogICAgIGlm
IChtX2xhc3RQb3NpdGlvbi5nZXQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2Nh
dGlvbkNsaWVudE1vY2suaAppbmRleCBmNTdhZmE5YTI1NTkyNTM5ZDA4N2ZlYTdjODE2NzNjNTk0
OTdjNzJkLi5kZjM1MzE2OGVmZmU1N2FlZmY0ZDRmZTBlZWZiZDMyMzAyYTNkYWQwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4pOwogICAgIHZvaWQg
c2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPik7CisgICAgdm9pZCBz
ZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbkNsaWVudAog
ICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwpAQCAtNjQsMTcgKzY2LDMw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKICAgICB2aXJ0dWFsIEdlb2xvY2F0
aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChHZW9sb2NhdGlvbiopOwogCiBwcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAgICAgdm9pZCBhc3luY1VwZGF0ZUNvbnRy
b2xsZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRyb2xsZXIoKTsKKyAgICB2b2lkIGNvbnRyb2xs
ZXJUaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKKworICAgIHZvaWQg
YXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CisgICAgdm9pZCBwZXJtaXNzaW9uVGltZXJGaXJlZChU
aW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKICAgICBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIqIG1fY29udHJvbGxlcjsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IG1fbGFzdEVycm9yOwotICAg
IFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV90aW1lcjsKKyAgICBUaW1lcjxHZW9sb2Nh
dGlvbkNsaWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOworICAgIFRpbWVyPEdlb2xvY2F0aW9u
Q2xpZW50TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOworCisg
ICAgZW51bSBQZXJtaXNzaW9uU3RhdGUgeworICAgICAgICBQZXJtaXNzaW9uU3RhdGVVbnNldCwK
KyAgICAgICAgUGVybWlzc2lvblN0YXRlQWxsb3dlZCwKKyAgICAgICAgUGVybWlzc2lvblN0YXRl
RGVuaWVkLAorICAgIH0gbV9wZXJtaXNzaW9uU3RhdGU7CisgICAgdHlwZWRlZiBXVEY6Okhhc2hT
ZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IEdlb2xvY2F0aW9uU2V0OworICAgIEdlb2xvY2F0aW9u
U2V0IG1fcGVuZGluZ1Blcm1pc3Npb247CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDViOWFiOTJjNGMxYmEwZjAw
YWQxM2U1Y2UyY2UyMTY3ZGFlYjgxZDQuLjk3MmI2MjZjNTRjNGFjNjg4OWYxMTYyODA0Y2Y3NDE2
YjQ3YjZhNDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMjUgIEpvaG4gS25vdHRlbmJl
bHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUgdG8gR2VvbG9jYXRpb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZmFjaWxpdGF0
ZXMgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIGJ5CisgICAgICAgIGJy
aW5naW5nIHRvZ2V0aGVyIHBlcm1pc3Npb24gY29udHJvbCBpbnRvIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgIE1vdmUgbWV0aG9kIENocm9tZUNs
aWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvCisgICAgICAgIEdl
b2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbiwgYW5kIHN1cHBvcnRpbmcgY2xhc3MK
KyAgICAgICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci4gVGhlIG1vdmVkIGNvZGUgaXMg
dW5jaGFuZ2VkIGV4Y2VwdAorICAgICAgICB0aGF0IHJlcXVlc3RQZXJtaXNzaW9uIG5vdyB0YWtl
cyBvbmx5IG9uZSBhcmd1bWVudCAoR2VvbG9jYXRpb24qKQorICAgICAgICBhbmQgdGhlIEZyYW1l
IHBhcmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgR2VvbG9jYXRpb24gb2JqZWN0LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6
Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVl
c3RQZXJtaXNzaW9uKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBp
bml0V2l0aEdlb2xvY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyIGFsbG93XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIg
ZGVueV0pOgorCiAyMDEwLTExLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhNWY0OWUzMDE5ZGRiYWJiNWFjMDE5YWViNDdm
OTc0NTViNTQ3MjgxLi44NjQ5NjYyNDRlM2VjNWEyYThiMmZmZDMwMjM4Nzg4MTliZDExMjY3IDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE3Miw3
ICsxNzIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50Kik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3Jl
OjpHZW9sb2NhdGlvbiopOworICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJl
IHVzaW5nIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwMzczCisgICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
biwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2ZSBtb3ZlZCB0byBXZWJHZW9sb2NhdGlvbkNsaWVudC4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6Okdlb2xvY2F0aW9uKikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KaW5kZXggZmU5NTk4OTY5ZDMwZGZjZmNmNmQ1Yzg4M2RlZDExZDBlZjhh
NDgwNC4uNDhjY2RhYmRlZDMzMTA4ZDZmYjBlYzc0NTMzNmE3MDM1MmRiMDg2ZCAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTU1LDcgKzU1LDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR2VvbG9jYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbi5oPgpAQCAt
MTAyLDEzICsxMDEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKGlkKWluaXRXaXRo
Q2hvb3NlcjooUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pY2hvb3NlcjsKIEBlbmQKIAotQGludGVy
ZmFjZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXI+Ci17Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRp
b247Ci19Ci0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRp
b247Ci1AZW5kCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKIEBpbnRlcmZhY2UgV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyIDogTlNPYmplY3QgPFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5l
cj4KQEAgLTg0OSwyNyArODQxLDYgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogCiAjZW5kaWYKIAotdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSogZnJh
bWUsIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0KLSAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOik7Ci0g
ICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0
b3JdKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07Ci0gICAgV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIg
YWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25dOwotCi0gICAgQ2FsbFVJRGVs
ZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBraXQoZnJhbWUpLCBsaXN0ZW5l
cik7Ci0KLSAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOwotICAgIFtsaXN0ZW5lciByZWxlYXNlXTsK
LQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci19Ci0KIEBpbXBsZW1lbnRhdGlvbiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcgogCiAtIChpZClpbml0V2l0aENob29zZXI6KFBhc3NS
ZWZQdHI8RmlsZUNob29zZXI+KWNob29zZXIKQEAgLTkzMiwyOCArOTAzLDYgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSog
ZnJhbWUsIEdlb2xvY2EKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcgotCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiop
Z2VvbG9jYXRpb24KLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBfZ2VvbG9jYXRpb24gPSBnZW9sb2NhdGlvbjsKLSAgICByZXR1cm4g
c2VsZjsKLX0KLQotLSAodm9pZClhbGxvdwotewotICAgIF9nZW9sb2NhdGlvbi0+c2V0SXNBbGxv
d2VkKHRydWUpOwotfQotCi0tICh2b2lkKWRlbnkKLXsKLSAgICBfZ2VvbG9jYXRpb24tPnNldElz
QWxsb3dlZChmYWxzZSk7Ci19Ci0KLUBlbmQKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
IAogQGltcGxlbWVudGF0aW9uIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDVlYTMzNjlj
MDkwZjk0MjFjMDIxMDYyOTZmY2M3OTE0N2VjNDMwZjYuLmI4ZTdiODcxZWJhYzc3ZDA3MDNiMmNl
ZTFjZWRjYTljNGZkZWMzNWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTI2LDcgKzI2LDggQEAKICNpbXBvcnQgPFdlYkNvcmUv
R2VvbG9jYXRpb25DbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEdl
b2xvY2F0aW9uUG9zaXRpb247CitjbGFzcyBHZW9sb2NhdGlvbjsKK2NsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiB9CiAKIEBjbGFzcyBXZWJWaWV3OwpAQCAtNDMsNiArNDQsOSBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKIAor
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKKyAgICB2
b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9Owor
CiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBhNjM1YjQ0Y2U1
ODIyZTVhYzZkYjU2ZDRkNzE0ZTQ2YWEyMGRiM2ZiLi5iNTJiN2JjNjQyMDk2OTAxZjkzNTg4M2M4
MjNkYzA4ZmNlYmRmZWNjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTI1LDExICsyNSwyNSBAQAogCiAjaW1wb3J0ICJXZWJH
ZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbklu
dGVybmFsLmgiCisjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
Vmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+Cit7
CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRpb247Cit9CistIChpZClpbml0V2l0
aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247CitAZW5kCisKIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01MCw2ICs2NCwyOCBAQCB2b2lkIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQogICAgIFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlv
blByb3ZpZGVyXSB1bnJlZ2lzdGVyV2ViVmlldzptX3dlYlZpZXddOwogfQogCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgU0VMIHNlbGVj
dG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0
RnJvbU9yaWdpbjpmcmFtZTpsaXN0ZW5lcjopOworICAgIGlmICghW1ttX3dlYlZpZXcgVUlEZWxl
Z2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgeworICAgICAgICBnZW9sb2NhdGlv
bi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZy
YW1lICpmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOworICAgIFdlYlNlY3VyaXR5T3JpZ2lu
ICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3Jl
U2VjdXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOworICAg
IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0aW9uXTsK
KworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwga2l0
KGZyYW1lKSwgbGlzdGVuZXIpOworCisgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKKyAgICBbbGlz
dGVuZXIgcmVsZWFzZV07CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCiBH
ZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkK
IHsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQpAQCAtNTgsMyArOTQsMjYg
QEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlv
bigpCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIH0KKworQGltcGxlbWVudGF0aW9uIFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIKKworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9j
YXRpb24qKWdlb2xvY2F0aW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYWxsb3cKK3sKKyAgICBfZ2VvbG9jYXRpb24tPnNl
dElzQWxsb3dlZCh0cnVlKTsKK30KKworLSAodm9pZClkZW55Cit7CisgICAgX2dlb2xvY2F0aW9u
LT5zZXRJc0FsbG93ZWQoZmFsc2UpOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOWY2ZjgzN2NjMTNlNjkw
YTYyZDQ2Y2FiZDMwNjI4ZTI2NGVkNzcxYy4uZTcxNTc0OWU4Y2RjZWJhZGZhZjEzOWEyYWNiNjBl
YTU5YWMzNjIzZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0xMS0yNSAgSm9obiBLbm90dGVu
YmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZSB0byBHZW9sb2NhdGlvbkNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNjEKKworICAgICAgICBUaGlzIGNoYW5nZSBmYWNpbGl0
YXRlcyBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gaW1wbGVtZW50YXRpb24gYnkKKyAgICAgICAg
YnJpbmdpbmcgdG9nZXRoZXIgcGVybWlzc2lvbiBjb250cm9sIGludG8gdGhlIGdlb2xvY2F0aW9u
IGNsaWVudAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgTW92ZSBtZXRob2QgQ2hyb21l
Q2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUgdG8KKyAgICAgICAg
R2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uLiBUaGUgbW92ZWQgY29kZSBpcyB1
bmNoYW5nZWQKKyAgICAgICAgZXhjZXB0IHRoYXQgcmVxdWVzdFBlcm1pc3Npb24gbm93IHRha2Vz
IG9ubHkgb25lIGFyZ3VtZW50IChHZW9sb2NhdGlvbiopLAorICAgICAgICB0aGUgRnJhbWUgcGFy
YW1ldGVyIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBHZW9sb2NhdGlvbiBvYmplY3QgYW5kIHdlIG5l
ZWQgdG8KKyAgICAgICAgY2FsbCBtX3dlYlZpZXcuZ2V0KCkgYXMgaXQgaXMgYSBDT01QdHIgaW4g
R2VvbG9jYXRpb25DbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisKIDIwMTAtMTEtMjIgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBwYXRocyByZWxhdGl2
ZSB0byAkV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyIHRvIGFjY2VzcyBzaGFyZWQgLnZzcHJv
cHMgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCBkMDQ2YzIxZDIwYTc2YzU0NWZkZGU5NGM3OTkxN2Y2ZTAyNDAxZDU1Li44ODRkNGRj
MWUzM2YwZjEyYjA2NjA3NzdjNGU0ZjcxMTFiYjczZjg4IDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50UHJvcGVydHlCYWcuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTXV0YWJsZVVS
TFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgi
CkBAIC00Niw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTG9jYWxXaW5kb3dzQ29udGV4dC5oPgpAQCAtODE3LDI5ICs4MTUsNiBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpCiAgICAgbV93
ZWJWaWV3LT5zZXRMYXN0Q3Vyc29yKDo6R2V0Q3Vyc29yKCkpOwogfQogCi12b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQotewotICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0
ZT4gdWlEZWxlZ2F0ZTsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWlE
ZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0
ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7Ci0gICAgaWYgKCF1aURl
bGVnYXRlUHJpdmF0ZTIpIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDT01QdHI8V2ViU2VjdXJpdHlPcmln
aW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgQ09NUHRyPFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRpb24pOwotICAgIEhSRVNVTFQgaHIgPSB1aURl
bGVnYXRlUHJpdmF0ZTItPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChtX3dlYlZp
ZXcsIGtpdChmcmFtZSksIG9yaWdpbi5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpOwotICAgIGlmICho
ciAhPSBFX05PVElNUEwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoZmFsc2UpOwotfQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFt
ZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDU1MTY3YjZlN2M3ODFhNTM0MTYwZDE1ZWQ5
NGFiNzllOTM2NzkxMDIuLmI2YzI1MjUwOWJlMTM5NzE1MmJhY2VjNWU0MjIxNzA5YjBkMTQwNzkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTU5
LDcgKzE1OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1Zp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlNjcm9sbFZpZXcqKSBj
b25zdCB7fQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgLy8g
RklYTUU6IFJlbW92ZSBvbmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xpZW50LWJhc2VkIGdlb2xv
Y2F0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMKKyAg
ICAvLyBGb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uLCB0aGVzZSB0d28gbWV0aG9kcyBoYXZl
IGJlZW4gbW92ZWQgdG8gV2ViR2VvbG9jYXRpb25DbGllbnQuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDA2MQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2Nh
dGlvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsg
fQogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCA4YTUyNmM0OTI3ZmI3MTY5NDBiMTE1NDJm
M2I0Y2Y3Y2U3NjBjNThmLi5iMWQ4M2ZiZDk2OWYwOGI5NGJjMGUzNWRhMzM1MmJlNzFiYjFhMTBh
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcApAQCAtMjcsOCArMjcsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0dlb2xvY2F0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzIsMyArNzgsMjcgQEAgR2VvbG9j
YXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKIH0KKwordm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVz
dFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIENPTVB0cjxJV2Vi
VUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKKyAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlEZWxl
Z2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQo
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ09NUHRyPElXZWJVSURlbGVn
YXRlUHJpdmF0ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7CisgICAg
aWYgKCF1aURlbGVnYXRlUHJpdmF0ZTIpIHsKKyAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxs
b3dlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUg
PSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKKyAgICBDT01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9y
aWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6
Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRpb24pOworICAgIEhSRVNVTFQgaHIgPSB1aURlbGVnYXRl
UHJpdmF0ZTItPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChtX3dlYlZpZXcuZ2V0
KCksIGtpdChmcmFtZSksIG9yaWdpbi5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpOworICAgIGlmICho
ciAhPSBFX05PVElNUEwpCisgICAgICAgIHJldHVybjsKKworICAgIGdlb2xvY2F0aW9uLT5zZXRJ
c0FsbG93ZWQoZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDI0MjJhZTVkMzdmNzY2NjkzM2Y3OTc2MWNiOGE4ZjI2
ZDhlMjUwZDYuLmM1ZGIxMzQwNTc5Y2Q5MGE2YzE5NjIzODUxYTQ3ZWIxZDdmOWQ3YmQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAor
KysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTMwLDcgKzMwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOworY2xh
c3MgR2VvbG9jYXRpb247CitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBjbGFzcyBX
ZWJWaWV3OwpAQCAtNDUsNiArNDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeShib29sKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQ
ZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNl
bFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgeyB9CisKIHByaXZhdGU6
CiAgICAgQ09NUHRyPFdlYlZpZXc+IG1fd2ViVmlldzsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75315</attachid>
            <date>2010-12-01 13:29:53 -0800</date>
            <delta_ts>2010-12-02 10:59:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50061-20101201212951.patch</filename>
            <type>text/plain</type>
            <size>26930</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMTItMDEgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCisKKyAgICAg
ICAgTW92ZSByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUgdG8gR2VvbG9jYXRp
b25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwMDYxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZmFjaWxpdGF0ZXMgY2xpZW50LWJhc2VkIGdl
b2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIGJ5CisgICAgICAgIGJyaW5naW5nIHRvZ2V0aGVyIHBl
cm1pc3Npb24gY29udHJvbCBpbnRvIHRoZSBnZW9sb2NhdGlvbiBjbGllbnQKKyAgICAgICAgaW50
ZXJmYWNlLgorCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRp
b25DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVxdWVzdFBlcm1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjYW5jZWxQ
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKwogMjAxMC0xMS0zMCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
SmVyZW15IE9ybG93LgpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNzMwNjIpCisrKyBXZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBwcmludChGcmFtZSopOwogCisgICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJlIHVzaW5nIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
bi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzczCisgICAgICAg
IC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNlIHR3byBtZXRob2RzIGhhdmUg
bW92ZWQgdG8gR2VvbG9jYXRpb25DbGllbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDA2MQogICAgICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZvaWQgY2FuY2VsR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsK
IApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzMwNjIpCisrKyBXZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMSArMjA2LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHZhbHVlLCBmbG9hdCBwcm9wb3J0aW9uLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBv
bmNlIGFsbCBwb3J0cyBhcmUgdXNpbmcgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMKKyAgICAgICAgLy8gRm9yIGNs
aWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2UgdHdvIG1ldGhvZHMgaGF2ZSBtb3ZlZCB0byBH
ZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwMDYxCiAgICAgICAgIC8vIFRoaXMgY2FuIGJlIGVpdGhlciBhIHN5bmNocm9ub3VzIG9yIGFz
eW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xpZW50IGNhbiBkaXNwbGF5IFVJIGFza2luZyB0
aGUgdXNlciBmb3IgcGVybWlzc2lvbgogICAgICAgICAvLyB0byB1c2UgR2VvbG9jYXRpb24uCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUo
RnJhbWUqLCBHZW9sb2NhdGlvbiopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikg
PSAwOwotICAgICAgICAgICAgCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CiAgICAgICAgIC8vIEFzeW5jaHJv
bm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KICAg
ICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIEZpbGVDaG9vc2VyKikgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiA3
MzA2MikKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw4ICsyMzMsMTMgQEAgR2VvbG9jYXRpb246On5HZW9sb2NhdGlvbigpCiAKIHZvaWQgR2Vv
bG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiB7Ci0gICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFt
ZS0+cGFnZSgpICYmIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBJblByb2dyZXNzKQorICAgIGlmICht
X2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9n
cmVzcykgeworI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgICAgIG1f
ZnJhbWUtPnBhZ2UoKS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0KHRoaXMpOworI2Vsc2UKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKG1fZnJhbWUsIHRoaXMp
OworI2VuZGlmCisgICAgfQogICAgIGNhbmNlbEFsbFJlcXVlc3RzKCk7CiAgICAgc3RvcFVwZGF0
aW5nKCk7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkKQEAgLTU5Niw4
ICs2MDEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oKQogCiAgICAg
bV9hbGxvd0dlb2xvY2F0aW9uID0gSW5Qcm9ncmVzczsKIAotICAgIC8vIEFzayB0aGUgY2hyb21l
OiBpdCBtYWludGFpbnMgdGhlIGdlb2xvY2F0aW9uIGNoYWxsZW5nZSBwb2xpY3kgaXRzZWxmLgor
ICAgIC8vIEFzayB0aGUgZW1iZWRkZXI6IGl0IG1haW50YWlucyB0aGUgZ2VvbG9jYXRpb24gY2hh
bGxlbmdlIHBvbGljeSBpdHNlbGYuCisjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+cmVxdWVzdFBlcm1pc3Npb24o
dGhpcyk7CisjZWxzZQogICAgIHBhZ2UtPmNocm9tZSgpLT5yZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUobV9mcmFtZSwgdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBHZW9sb2Nh
dGlvbjo6cG9zaXRpb25DaGFuZ2VkSW50ZXJuYWwoKQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xp
ZW50LmgJKHJldmlzaW9uIDczMDYyKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIGNs
YXNzIEdlb2xvY2F0aW9uQ2xpZW50IHsKQEAgLTQzLDYgKzQ0LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgPSAwOwogCisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uQ2xpZW50KCkgeyB9CiB9OwpJbmRleDogV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMDYyKQorKysgV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYg
Kzc4LDE4IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnYKICAgICB9
CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbihHZW9s
b2NhdGlvbiogZ2VvbG9jYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+cmVxdWVzdFBlcm1pc3Npb24oZ2VvbG9jYXRpb24pOworfQorCit2b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qIGdlb2xv
Y2F0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFBl
cm1pc3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsK
ICAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzMwNjIpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSk7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiopOwogCisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiopOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoR2VvbG9jYXRpb24qKTsKKwogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xv
Y2F0aW9uUG9zaXRpb24qKTsKICAgICB2b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJv
ciopOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmNwcAkocmV2aXNpb24gNzMwNjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0aW9u
Q2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkKLSAgICAsIG1fdGltZXIodGhpcywg
Jkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZCkKKyAgICAsIG1fY29udHJvbGxlclRp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xsZXJUaW1lckZpcmVkKQor
ICAgICwgbV9wZXJtaXNzaW9uVGltZXIodGhpcywgJkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVy
bWlzc2lvblRpbWVyRmlyZWQpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwgbV9wZXJt
aXNzaW9uU3RhdGUoUGVybWlzc2lvblN0YXRlVW5zZXQpCiB7CiB9CiAKQEAgLTcxLDEwICs3Myw1
NSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RXJyb3IoUGFzCiAgICAgYXN5bmNV
cGRhdGVDb250cm9sbGVyKCk7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQ
ZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IGFsbG93
ZWQgPyBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkIDogUGVybWlzc2lvblN0YXRlRGVuaWVkOworICAg
IGFzeW5jVXBkYXRlUGVybWlzc2lvbigpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIG1f
cGVuZGluZ1Blcm1pc3Npb24uYWRkKGdlb2xvY2F0aW9uKTsKKyAgICBpZiAobV9wZXJtaXNzaW9u
U3RhdGUgIT0gUGVybWlzc2lvblN0YXRlVW5zZXQpCisgICAgICAgIGFzeW5jVXBkYXRlUGVybWlz
c2lvbigpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQoreworICAgIC8vIENhbGxlZCBmcm9t
IEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKSBpbiByZXNwb25zZSB0byBGcmFtZSBkZXN0
cnVjdGlvbi4KKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uLnJlbW92ZShnZW9sb2NhdGlvbik7Cisg
ICAgaWYgKG1fcGVuZGluZ1Blcm1pc3Npb24uaXNFbXB0eSgpICYmIG1fcGVybWlzc2lvblRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVybWlzc2lvblRpbWVyLnN0b3AoKTsKK30KKwordm9p
ZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmFzeW5jVXBkYXRlUGVybWlzc2lvbigpCit7CisgICAg
QVNTRVJUKG1fcGVybWlzc2lvblN0YXRlICE9IFBlcm1pc3Npb25TdGF0ZVVuc2V0KTsKKyAgICBp
ZiAoIW1fcGVybWlzc2lvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVybWlzc2lvblRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBl
cm1pc3Npb25UaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4q
IHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3Blcm1pc3Np
b25UaW1lcik7CisgICAgQVNTRVJUKG1fcGVybWlzc2lvblN0YXRlICE9IFBlcm1pc3Npb25TdGF0
ZVVuc2V0KTsKKyAgICBib29sIGFsbG93ZWQgPSBtX3Blcm1pc3Npb25TdGF0ZSA9PSBQZXJtaXNz
aW9uU3RhdGVBbGxvd2VkOworICAgIEdlb2xvY2F0aW9uU2V0OjppdGVyYXRvciBlbmQgPSBtX3Bl
bmRpbmdQZXJtaXNzaW9uLmVuZCgpOworCisgICAgLy8gT25jZSBwZXJtaXNzaW9uIGhhcyBiZWVu
IHNldCAob3IgZGVuaWVkKSBvbiBhIEdlb2xvY2F0aW9uIG9iamVjdCwgdGhlcmUgY2FuIGJlCisg
ICAgLy8gbm8gZnVydGhlciByZXF1ZXN0cyBmb3IgcGVybWlzc2lvbiB0byB0aGUgbW9jay4gQ29u
c2VxdWVudGx5IHRoZSBjYWxsYmFja3MKKyAgICAvLyB3aGljaCBmaXJlIHN5bmNocm9ub3VzbHkg
ZnJvbSBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKCkgY2Fubm90IHJlZW50cmFudGx5IG1vZGlm
eQorICAgIC8vIG1fcGVuZGluZ1Blcm1pc3Npb24uCisgICAgZm9yIChHZW9sb2NhdGlvblNldDo6
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdQZXJtaXNzaW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKKyAgICAgICAgKCppdCktPnNldElzQWxsb3dlZChhbGxvd2VkKTsKKyAgICBtX3BlbmRpbmdQ
ZXJtaXNzaW9uLmNsZWFyKCk7Cit9CisKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNl
dCgpCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSAwOwogICAgIG1fbGFzdEVycm9yID0gMDsKKyAg
ICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25TdGF0ZVVuc2V0OwogfQogCiB2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQpAQCAtOTMsNyArMTQw
LDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZwogewogICAgIEFT
U0VSVChtX2lzQWN0aXZlKTsKICAgICBtX2lzQWN0aXZlID0gZmFsc2U7Ci0gICAgbV90aW1lci5z
dG9wKCk7CisgICAgbV9jb250cm9sbGVyVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCkBAIC0xMTAsMTggKzE1
NywxMyBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vCiB2b2lkIEdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKIHsKICAgICBBU1NF
UlQobV9jb250cm9sbGVyKTsKLSAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV90aW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiog
dGltZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXIpOwot
ICAgIHVwZGF0ZUNvbnRyb2xsZXIoKTsKKyAgICBpZiAobV9pc0FjdGl2ZSAmJiAhbV9jb250cm9s
bGVyVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jb250cm9sbGVyVGltZXIuc3RhcnRPbmVT
aG90KDApOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6dXBkYXRlQ29udHJvbGxl
cigpCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGlt
ZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiogdGltZXIpCiB7CisgICAgQVNTRVJUX1VOVVNFRCh0
aW1lciwgdGltZXIgPT0gJm1fY29udHJvbGxlclRpbWVyKTsKICAgICBBU1NFUlQobV9jb250cm9s
bGVyKTsKIAogICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQoKSkKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDczMDYyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTcsNiArNTgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25F
cnJvcj4pOwogICAgIHZvaWQgc2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0
aW9uPik7CisgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAKICAgICAvLyBH
ZW9sb2NhdGlvbkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
OwpAQCAtNjQsMTcgKzY2LDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0
aW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKICAg
ICB2aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiopOwogCiBwcml2YXRlOgotICAg
IHZvaWQgdGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAgICAgdm9p
ZCBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRyb2xsZXIoKTsK
KyAgICB2b2lkIGNvbnRyb2xsZXJUaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9j
az4qKTsKKworICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CisgICAgdm9pZCBwZXJt
aXNzaW9uVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKICAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKICAgICBSZWZQdHI8R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+
IG1fbGFzdEVycm9yOwotICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV90aW1lcjsK
KyAgICBUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOworICAg
IFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9v
bCBtX2lzQWN0aXZlOworCisgICAgZW51bSBQZXJtaXNzaW9uU3RhdGUgeworICAgICAgICBQZXJt
aXNzaW9uU3RhdGVVbnNldCwKKyAgICAgICAgUGVybWlzc2lvblN0YXRlQWxsb3dlZCwKKyAgICAg
ICAgUGVybWlzc2lvblN0YXRlRGVuaWVkLAorICAgIH0gbV9wZXJtaXNzaW9uU3RhdGU7CisgICAg
dHlwZWRlZiBXVEY6Okhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IEdlb2xvY2F0aW9uU2V0
OworICAgIEdlb2xvY2F0aW9uU2V0IG1fcGVuZGluZ1Blcm1pc3Npb247CiB9OwogCiB9CkluZGV4
OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzMwNjIpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMwIEBACisyMDEwLTEyLTAxICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0
ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgorCisg
ICAgICAgIE1vdmUgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRvIEdlb2xv
Y2F0aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDA2MQorCisgICAgICAgIFRoaXMgY2hhbmdlIGZhY2lsaXRhdGVzIGNsaWVudC1iYXNl
ZCBnZW9sb2NhdGlvbiBpbXBsZW1lbnRhdGlvbiBieQorICAgICAgICBicmluZ2luZyB0b2dldGhl
ciBwZXJtaXNzaW9uIGNvbnRyb2wgaW50byB0aGUgZ2VvbG9jYXRpb24gY2xpZW50CisgICAgICAg
IGludGVyZmFjZS4KKworICAgICAgICBNb3ZlIG1ldGhvZCBDaHJvbWVDbGllbnQ6OnJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSB0bworICAgICAgICBHZW9sb2NhdGlvbkNsaWVu
dDo6cmVxdWVzdFBlcm1pc3Npb24sIGFuZCBzdXBwb3J0aW5nIGNsYXNzCisgICAgICAgIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuIFRoZSBtb3ZlZCBjb2RlIGlzIHVuY2hhbmdlZCBleGNl
cHQKKyAgICAgICAgdGhhdCByZXF1ZXN0UGVybWlzc2lvbiBub3cgdGFrZXMgb25seSBvbmUgYXJn
dW1lbnQgKEdlb2xvY2F0aW9uKikKKyAgICAgICAgYW5kIHRoZSBGcmFtZSBwYXJhbWV0ZXIgaXMg
cmV0cmlldmVkIGZyb20gdGhlIEdlb2xvY2F0aW9uIG9iamVjdC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbik6
CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhHZW9sb2Nh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvd10p
OgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIGRlbnldKToKKwogMjAx
MC0xMS0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MzA2MikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50Kik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2Nh
dGlvbiopOworICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBhbGwgcG9ydHMgYXJlIHVzaW5nIGNs
aWVudC1iYXNlZCBnZW9sb2NhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMzczCisgICAgLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2Ug
dHdvIG1ldGhvZHMgaGF2ZSBtb3ZlZCB0byBXZWJHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6Okdlb2xvY2F0aW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xv
Y2F0aW9uKikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCShyZXZpc2lvbiA3MzA2MikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dl
b2xvY2F0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KQEAgLTEwMiwx
MyArMTAxLDYgQEAgQGludGVyZmFjZSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA6IAogLSAo
aWQpaW5pdFdpdGhDaG9vc2VyOihQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiljaG9vc2VyOwogQGVu
ZAogCi1AaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBOU09iamVjdCA8
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4KLXsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb24+
IF9nZW9sb2NhdGlvbjsKLX0KLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9u
KilnZW9sb2NhdGlvbjsKLUBlbmQKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogQGlu
dGVyZmFjZSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgOiBOU09iamVjdCA8V2ViS2l0RnVsbFNj
cmVlbkxpc3RlbmVyPgpAQCAtODQ5LDI3ICs4NDEsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFCiAKICNlbmRpZgogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRp
b24qIGdlb2xvY2F0aW9uKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQot
ICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVuZXI6KTsKLSAgICBpZiAoIVtbbV93
ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKLSAgICAg
ICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9y
aWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpXTsKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
KiBsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl07Ci0KLSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGtpdChmcmFtZSksIGxpc3RlbmVyKTsKLQotICAgIFt3
ZWJPcmlnaW4gcmVsZWFzZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyCiAKIC0gKGlkKWluaXRXaXRoQ2hvb3NlcjooUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pY2hvb3NlcgpAQCAtOTMyLDI4ICs5MDMsNiBAQCAtICh2b2lkKWNob29zZUZpbGVuYW1l
czooTlNBcnJheSAqKWZpbGVuCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIKLQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRp
b24qKWdlb2xvY2F0aW9uCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247Ci0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpYWxsb3cKLXsKLSAgICBfZ2VvbG9jYXRpb24tPnNldElz
QWxsb3dlZCh0cnVlKTsKLX0KLQotLSAodm9pZClkZW55Ci17Ci0gICAgX2dlb2xvY2F0aW9uLT5z
ZXRJc0FsbG93ZWQoZmFsc2UpOwotfQotCi1AZW5kCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIKSW5kZXg6IFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHJl
dmlzaW9uIDczMDYyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0dlb2xvY2F0aW9uQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFz
cyBHZW9sb2NhdGlvblBvc2l0aW9uOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBHZW9sb2Nh
dGlvblBvc2l0aW9uOwogfQogCiBAY2xhc3MgV2ViVmlldzsKQEAgLTQzLDYgKzQ0LDkgQEAgcHVi
bGljOgogCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7Cisg
ICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsg
fTsKKwogcHJpdmF0ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpJbmRleDogV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCShyZXZp
c2lvbiA3MzA2MikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwyNSBAQAogCiAjaW1wb3J0ICJX
ZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdp
bkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFjZSBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+
Cit7CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uPiBfZ2VvbG9jYXRpb247Cit9CistIChpZClpbml0
V2l0aEdlb2xvY2F0aW9uOihHZW9sb2NhdGlvbiopZ2VvbG9jYXRpb247CitAZW5kCisKIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01MCw2ICs2NCwyOCBAQCB2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoCiAgICAgW1ttX3dlYlZpZXcgX2dlb2xvY2F0
aW9uUHJvdmlkZXJdIHVucmVnaXN0ZXJXZWJWaWV3Om1fd2ViVmlld107CiB9CiAKK3ZvaWQgV2Vi
R2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2Nh
dGlvbikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBTRUwgc2Vs
ZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOik7CisgICAgaWYgKCFbW21fd2ViVmlldyBVSURl
bGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CisgICAgICAgIGdlb2xvY2F0
aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
RnJhbWUgKmZyYW1lID0gZ2VvbG9jYXRpb24tPmZyYW1lKCk7CisgICAgV2ViU2VjdXJpdHlPcmln
aW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNv
cmVTZWN1cml0eU9yaWdpbjpmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07Cisg
ICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb246Z2VvbG9jYXRpb25d
OworCisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBr
aXQoZnJhbWUpLCBsaXN0ZW5lcik7CisKKyAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOworICAgIFts
aXN0ZW5lciByZWxlYXNlXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisK
IEdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24o
KQogewogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCkBAIC01OCwzICs5NCwy
NiBAQCBHZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVuCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKIH0KKworQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIKKworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0
aW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgX2dlb2xvY2F0aW9uID0gZ2VvbG9jYXRpb247CisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpYWxsb3cKK3sKKyAgICBfZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZCh0cnVl
KTsKK30KKworLSAodm9pZClkZW55Cit7CisgICAgX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQo
ZmFsc2UpOworfQorCitAZW5kCisKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA2MikKKysrIFdlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMTItMDEg
IEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU3RldmUgQmxvY2suCisKKyAgICAgICAgTW92ZSByZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUgdG8gR2VvbG9jYXRpb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgZmFjaWxpdGF0ZXMgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIGJ5
CisgICAgICAgIGJyaW5naW5nIHRvZ2V0aGVyIHBlcm1pc3Npb24gY29udHJvbCBpbnRvIHRoZSBn
ZW9sb2NhdGlvbiBjbGllbnQKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgIE1vdmUgbWV0
aG9kIENocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lIHRv
CisgICAgICAgIEdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbi4gVGhlIG1vdmVk
IGNvZGUgaXMgdW5jaGFuZ2VkCisgICAgICAgIGV4Y2VwdCB0aGF0IHJlcXVlc3RQZXJtaXNzaW9u
IG5vdyB0YWtlcyBvbmx5IG9uZSBhcmd1bWVudCAoR2VvbG9jYXRpb24qKSwKKyAgICAgICAgdGhl
IEZyYW1lIHBhcmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgR2VvbG9jYXRpb24gb2JqZWN0
IGFuZCB3ZSBuZWVkIHRvCisgICAgICAgIGNhbGwgbV93ZWJWaWV3LmdldCgpIGFzIGl0IGlzIGEg
Q09NUHRyIGluIEdlb2xvY2F0aW9uQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChXZWJHZW9sb2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QpOgorCiAyMDEw
LTEyLTAxICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDczMDYyKQorKysgV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJFbGVt
ZW50UHJvcGVydHlCYWcuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiCiAjaW5j
bHVkZSAiV2ViTXV0YWJsZVVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmgiCkBAIC00Niw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxXaW5kb3dzQ29udGV4dC5oPgpAQCAtODE3LDI5
ICs4MTUsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TGFzdFNldEN1cnNvclRvCiAgICAg
bV93ZWJWaWV3LT5zZXRMYXN0Q3Vyc29yKDo6R2V0Q3Vyc29yKCkpOwogfQogCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBm
cmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQotewotICAgIENPTVB0cjxJV2ViVUlEZWxl
Z2F0ZT4gdWlEZWxlZ2F0ZTsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgm
dWlEZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2Up
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJp
dmF0ZTI+IHVpRGVsZWdhdGVQcml2YXRlMihRdWVyeSwgdWlEZWxlZ2F0ZSk7Ci0gICAgaWYgKCF1
aURlbGVnYXRlUHJpdmF0ZTIpIHsKLSAgICAgICAgZ2VvbG9jYXRpb24tPnNldElzQWxsb3dlZChm
YWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDT01QdHI8V2ViU2VjdXJpdHlP
cmlnaW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNl
KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgQ09NUHRyPFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRpb24pOwotICAgIEhSRVNVTFQgaHIgPSB1
aURlbGVnYXRlUHJpdmF0ZTItPmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChtX3dl
YlZpZXcsIGtpdChmcmFtZSksIG9yaWdpbi5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpOwotICAgIGlm
IChociAhPSBFX05PVElNUEwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdlb2xvY2F0aW9uLT5z
ZXRJc0FsbG93ZWQoZmFsc2UpOwotfQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBm
cmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKSW5kZXg6IFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzMwNjIpCisrKyBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTksNyArMTU5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJl
Y3RJbnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6U2Nyb2xs
VmlldyopIGNvbnN0IHt9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVy
bWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIHBvcnRzIGFyZSB1c2luZyBjbGllbnQtYmFz
ZWQgZ2VvbG9jYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDM3MworICAgIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNlIHR3byBtZXRo
b2RzIGhhdmUgYmVlbiBtb3ZlZCB0byBXZWJHZW9sb2NhdGlvbkNsaWVudC4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDYxCisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6
Okdlb2xvY2F0aW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0
aW9uKikgeyB9CiAKICNpZiBFTkFCTEUoVklERU8pCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gNzMwNjIp
CisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIK
ICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogCisjaW5jbHVkZSAiV2ViRnJhbWUu
aCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzIsMyArNzgsMjcgQEAg
R2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbgogICAgIHJldHVybiAwOwog
I2VuZGlmCiB9CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9u
KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+
IHVpRGVsZWdhdGU7CisgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpRGVs
ZWdhdGUpKSkgeworICAgICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGUy
PiB1aURlbGVnYXRlUHJpdmF0ZTIoUXVlcnksIHVpRGVsZWdhdGUpOworICAgIGlmICghdWlEZWxl
Z2F0ZVByaXZhdGUyKSB7CisgICAgICAgIGdlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQoZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gZ2VvbG9jYXRp
b24tPmZyYW1lKCk7CisgICAgQ09NUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oQWRvcHRD
T00sIFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyPiBsaXN0ZW5lciA9IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3Rh
bmNlKGdlb2xvY2F0aW9uKTsKKyAgICBIUkVTVUxUIGhyID0gdWlEZWxlZ2F0ZVByaXZhdGUyLT5k
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3QobV93ZWJWaWV3LmdldCgpLCBraXQoZnJh
bWUpLCBvcmlnaW4uZ2V0KCksIGxpc3RlbmVyLmdldCgpKTsKKyAgICBpZiAoaHIgIT0gRV9OT1RJ
TVBMKQorICAgICAgICByZXR1cm47CisKKyAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGZh
bHNlKTsKK30KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDczMDYyKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvbkNsaWVudC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKK2NsYXNzIEdlb2xvY2F0
aW9uOworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogY2xhc3MgV2ViVmlldzsKQEAg
LTQ1LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCkgeyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
KiBsYXN0UG9zaXRpb24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfQorCiBwcml2YXRlOgogICAgIENPTVB0
cjxXZWJWaWV3PiBtX3dlYlZpZXc7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>