<?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>143001</bug_id>
          
          <creation_ts>2015-03-24 02:09:00 -0700</creation_ts>
          <short_desc>[CoordinatedGraphics] Merge TILED_BACKING_STORE guard with COORDINATED_GRAPHICS</short_desc>
          <delta_ts>2015-04-28 22:08:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>gyuyoung</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079581</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-24 02:09:00 -0700</bug_when>
    <thetext>Now, TILED_BACKING_STORE is only used with COORDINATED_GRAPHICS.

So, I think that we&apos;d better to merge them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079765</commentid>
    <comment_count>1</comment_count>
      <attachid>249363</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-24 16:12:14 -0700</bug_when>
    <thetext>Created attachment 249363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080126</commentid>
    <comment_count>2</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-25 17:39:06 -0700</bug_when>
    <thetext>yoon, what do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080130</commentid>
    <comment_count>3</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-03-25 17:45:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; yoon, what do you think about this?

I agree to remove TILED_BACKING_STORE. 
But I think it is better integrated
with Mac Port&apos;s TiledBacking because
it provides almost same feature set.

Also, AFAIK, Win Cairo ports using
TILED_BACKING_STORE without coordinated
graphics. We need to check also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080199</commentid>
    <comment_count>4</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-25 22:23:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; yoon, what do you think about this?
&gt; 
&gt; I agree to remove TILED_BACKING_STORE. 
&gt; But I think it is better integrated
&gt; with Mac Port&apos;s TiledBacking because
&gt; it provides almost same feature set.
&gt; 
Agree.
Can we use TiledBacking in Coordinated Graphics without big changes ?
Then, I will check it.
If I remember correctly, you had a plan to merge coordinated graphics and mac&apos;s one (RemoteLayerTree?).

&gt; Also, AFAIK, Win Cairo ports using
&gt; TILED_BACKING_STORE without coordinated
&gt; graphics. We need to check also.

I don&apos;t think so. Now we can&apos;t use Tiled backing store without coordinated graphics.
For example, TileCairo.cpp was removed very long time ago.(I did)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080204</commentid>
    <comment_count>5</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-03-25 22:36:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; yoon, what do you think about this?
&gt; &gt; 
&gt; &gt; I agree to remove TILED_BACKING_STORE. 
&gt; &gt; But I think it is better integrated
&gt; &gt; with Mac Port&apos;s TiledBacking because
&gt; &gt; it provides almost same feature set.
&gt; &gt; 
&gt; Agree.
&gt; Can we use TiledBacking in Coordinated Graphics without big changes ?
&gt; Then, I will check it.
I cannot say it is a small change. :) But there is no big difference between
Apple&apos;s and our tiled backing store.


&gt; If I remember correctly, you had a plan to merge coordinated graphics and
&gt; mac&apos;s one (RemoteLayerTree?).

Yes, merging Coordinated Graphics and Apple&apos;s UI side compositing is planned as a todo.
Unifying TILED_BACKING_STORE and TiledBacking should be done for this plan.
Apparently, having TiledBackingStore and TiledBacking in same namespace is quite confusing.

&gt; &gt; Also, AFAIK, Win Cairo ports using
&gt; &gt; TILED_BACKING_STORE without coordinated
&gt; &gt; graphics. We need to check also.
&gt; 
&gt; I don&apos;t think so. Now we can&apos;t use Tiled backing store without coordinated
&gt; graphics.
&gt; For example, TileCairo.cpp was removed very long time ago.(I did)

Ah, I confused with TexMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080216</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-25 23:11:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; yoon, what do you think about this?
&gt; &gt; &gt; 
&gt; &gt; &gt; I agree to remove TILED_BACKING_STORE. 
&gt; &gt; &gt; But I think it is better integrated
&gt; &gt; &gt; with Mac Port&apos;s TiledBacking because
&gt; &gt; &gt; it provides almost same feature set.
&gt; &gt; &gt; 
&gt; &gt; Agree.
&gt; &gt; Can we use TiledBacking in Coordinated Graphics without big changes ?
&gt; &gt; Then, I will check it.
&gt; I cannot say it is a small change. :) But there is no big difference between
&gt; Apple&apos;s and our tiled backing store.

I am not good to make big impact. :)
Anyway, I will start to investigate TiledBacking.

&gt; 
&gt; 
&gt; &gt; If I remember correctly, you had a plan to merge coordinated graphics and
&gt; &gt; mac&apos;s one (RemoteLayerTree?).
&gt; 
&gt; Yes, merging Coordinated Graphics and Apple&apos;s UI side compositing is planned
&gt; as a todo.
&gt; Unifying TILED_BACKING_STORE and TiledBacking should be done for this plan.
&gt; Apparently, having TiledBackingStore and TiledBacking in same namespace is
&gt; quite confusing.

Yes, so I want to move it.
I think that we can move it first until we have clear picture to share them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089401</commentid>
    <comment_count>7</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-04-27 22:10:14 -0700</bug_when>
    <thetext>According to review comments, now we seem to need to decide whether we will merge tiled backing store with mac port&apos;s one. Is it easy work ? It seems not to easy work for me. Anyway I don&apos;t have big opinion about merging these two macros though, I usually like to remove unnecessary macro.

Yoon, do you agree that we can land this merge first, then try to merge with mac port&apos;s one ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089494</commentid>
    <comment_count>8</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-28 06:49:56 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; According to review comments, now we seem to need to decide whether we will
&gt; merge tiled backing store with mac port&apos;s one. Is it easy work ? It seems
&gt; not to easy work for me. Anyway I don&apos;t have big opinion about merging these
&gt; two macros though, I usually like to remove unnecessary macro.
&gt; 
&gt; Yoon, do you agree that we can land this merge first, then try to merge with
&gt; mac port&apos;s one ?

It looks like Ryuan don&apos;t have a time to merge TBS to mac port&apos;s one.
I agree to remove TILED_BACKING_STORE first.

I&apos;ll merge tiled backing store with mac port&apos;s one later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089499</commentid>
    <comment_count>9</comment_count>
      <attachid>249363</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-04-28 07:23:04 -0700</bug_when>
    <thetext>Comment on attachment 249363
Patch

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

&gt; Source/WebCore/PlatformGTK.cmake:-405
&gt; -        platform/graphics/TiledBackingStore.cpp

I don&apos;t know if GTK port enables ENABLE_THREADED_COMPOSITOR though, don&apos;t you need to add &quot;platform/graphics/texmap/coordinated/TiledBackingStore.cpp&quot; instead of platform/graphics/TiledBackingStore.cpp for gtk port ?

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:7757
&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;

I don&apos;t know .vcxproj file well, but why do we need add these options ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089508</commentid>
    <comment_count>10</comment_count>
      <attachid>249363</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-28 07:51:06 -0700</bug_when>
    <thetext>Comment on attachment 249363
Patch

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

&gt;&gt; Source/WebCore/PlatformGTK.cmake:-405
&gt;&gt; -        platform/graphics/TiledBackingStore.cpp
&gt; 
&gt; I don&apos;t know if GTK port enables ENABLE_THREADED_COMPOSITOR though, don&apos;t you need to add &quot;platform/graphics/texmap/coordinated/TiledBackingStore.cpp&quot; instead of platform/graphics/TiledBackingStore.cpp for gtk port ?

GTK port uses threaded compositor in optional manner. And again, we need to add TiledBackingStore in this source list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089753</commentid>
    <comment_count>11</comment_count>
      <attachid>249363</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 15:18:21 -0700</bug_when>
    <thetext>Comment on attachment 249363
Patch

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

&gt;&gt;&gt; Source/WebCore/PlatformGTK.cmake:-405
&gt;&gt;&gt; -        platform/graphics/TiledBackingStore.cpp
&gt;&gt; 
&gt;&gt; I don&apos;t know if GTK port enables ENABLE_THREADED_COMPOSITOR though, don&apos;t you need to add &quot;platform/graphics/texmap/coordinated/TiledBackingStore.cpp&quot; instead of platform/graphics/TiledBackingStore.cpp for gtk port ?
&gt; 
&gt; GTK port uses threaded compositor in optional manner. And again, we need to add TiledBackingStore in this source list.

Weird, I looks missing to add TiledBackingStore.cpp in PlatformGtk.cmake.

I will rebase.

&gt;&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:7757
&gt;&gt; +      &lt;ExcludedFromBuild Condition=&quot;&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|Win32&apos;&quot;&gt;true&lt;/ExcludedFromBuild&gt;
&gt; 
&gt; I don&apos;t know .vcxproj file well, but why do we need add these options ?

ExcludeFromBuild is not to build this file.
Without this patch, windows port has compiled TiledBackingStore.cpp which is guarded as TILED_BACKING_STORE so generates (almost) nothing.

Anyway, it might not be related to this commit in more thinking.
I will take care of this in different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089797</commentid>
    <comment_count>12</comment_count>
      <attachid>251900</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 17:01:28 -0700</bug_when>
    <thetext>Created attachment 251900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089878</commentid>
    <comment_count>13</comment_count>
      <attachid>251900</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-04-28 21:07:25 -0700</bug_when>
    <thetext>Comment on attachment 251900
Patch

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

LGTM. However it would be good if yoon take a final look before landing.

&gt; Source/WebCore/ChangeLog:8
&gt; +        TiledBackingStore is only used with Coordinated Graphics since Qt and WebKit1/Efl was dropped.

There are trivial typo.

&quot;TiledBackingStore has only been used by Coordinated Graphics since Qt and WebKit1/Efl ports were dropped. So, this patch replaces USE(TILED_BACKING_STORE) with USE(COORDINATED_GRAPHICS) to merge the features.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089882</commentid>
    <comment_count>14</comment_count>
      <attachid>251923</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 21:44:01 -0700</bug_when>
    <thetext>Created attachment 251923
fixed_typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089884</commentid>
    <comment_count>15</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-28 21:48:10 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=251900&amp;action=review

It looks good for me, but it would be good to reduce change log before adding it to the commit queue.

&gt; Source/WebCore/ChangeLog:43
&gt; +        (WebCore::TiledBackingStore::TiledBackingStore):

You can remove methods from change log if you just moved a file to reduce redundant lines in the changeling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089885</commentid>
    <comment_count>16</comment_count>
      <attachid>251924</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 21:52:11 -0700</bug_when>
    <thetext>Created attachment 251924
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089887</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 21:52:46 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251900&amp;action=review
&gt; 
&gt; It looks good for me, but it would be good to reduce change log before
&gt; adding it to the commit queue.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:43
&gt; &gt; +        (WebCore::TiledBackingStore::TiledBackingStore):
&gt; 
&gt; You can remove methods from change log if you just moved a file to reduce
&gt; redundant lines in the changeling.

OK, done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089891</commentid>
    <comment_count>18</comment_count>
      <attachid>251924</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 22:07:38 -0700</bug_when>
    <thetext>Comment on attachment 251924
patch

Clearing flags on attachment: 251924

Committed r183529: &lt;http://trac.webkit.org/changeset/183529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089892</commentid>
    <comment_count>19</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-04-28 22:08:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249363</attachid>
            <date>2015-03-24 16:12:14 -0700</date>
            <delta_ts>2015-04-28 17:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143001-20150325081128.patch</filename>
            <type>text/plain</type>
            <size>94281</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFlNWQxNDA2ZjhjOWY2
MTE1ZWY0ZDNlYTJiNjFmNGUzNDUyMzYyZC4uODdkMjJjZjQ3OWM3Y2YxMGQzOWI0ZmMwZTk0MDM2
ZGZhODhjYjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTAzLTI0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRl
ZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFU
RURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRpbGVkQmFja2luZ1N0b3JlIGlzIG9ubHkgdXNlZCB3aXRoIENvb3JkaW5hdGVkIEdyYXBo
aWNzIHNpbmNlIFF0IGFuZCBXZWJLaXQxL0VmbCB3YXMgZHJvcHBlZC4KKyAgICAgICAgU28sIHRo
aXMgcGF0Y2ggcmVwbGFjZSBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgdG8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKSB0byBtZXJnZSB0aGVtLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGlz
IG1vdmVzIFRpbGVkQmFja2luZ1N0b3JlIGFuZCByZWxhdGVkIGZpbGVzIGZyb20gcGxhdGZvcm0g
dG8gcGxhdGZvcm0vdGV4bWFwL2Nvb3JkaW5hdGVkCisgICAgICAgIHdoZXJlIG90aGVyIGNvb3Jk
aW5hdGVkIGdyYXBoaWNzIGZpbGVzIGFyZSBsb2NhdGVkLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IE1vdmUgVGlsZWRCYWNraW5nU3RvcmUuY3BwIGJlY2F1c2UgdGhpcyBpcyBub3QgY29t
bW9uIGZpbGUuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgRm9sbG93IG5ldyBUaWxlZEJhY2tpbmdTdG9yZSouIEluIGFkZGl0aW9uLCBleGNs
dWRlIFRpbGVkQmFja2luZ1NUb3JlLmNwcCBmcm9tIHRoZSBidWlsZCBiZWNhdXNlIGl0IGlzIG5v
dCB1c2VkIGluIHdpbmRvd3MgYnVpbGQuCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZVZpZXcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplSW5jbHVkaW5nT2JzY3VyZWRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVuc2NhbGVkVW5vYnNjdXJlZFZpc2libGVDb250ZW50U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxUbyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RpbGVDYWly
by5oOiBSZW1vdmVkIGJlY2F1c2UgaXQgaXMgZGVhZCBjb2RlIHNpbmNlIHIxNjkzMjgKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZS5oLgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6flRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAuCisgICAgICAg
IChXZWJDb3JlOjppbm5lckJvdHRvbVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6flRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OmNvdmVyYWdlUmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OnZpc2libGVBcmVhSXNDb3ZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0Rm9yQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjpjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzZXRLZWVwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdT
dG9yZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjp0aWxlQXQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OnNldFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJlbW92
ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om1hcFRvQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om1hcEZyb21Db250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29y
ZGluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQ29vcmRp
bmF0ZUZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRT
dXBwb3J0c0FscGhhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmguCisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjp0aWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292
ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb3ZlclJl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oLgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kOjp+VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudDo6flRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Ojp0aWxlZEJhY2tpbmdTdG9yZUhhc1Bl
bmRpbmdUaWxlQ3JlYXRpb24pOgorCiAyMDE1LTAzLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbCBsYXRjaGluZyBsb2dpYyBjYW4gZ2V0IHN0
dWNrIGluICdzY3JvbGxhYmxlPSJubyInIGlmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBiMjAw
YzE1MTQzYTA4YzMyNThiYjY3YjcyNjdiMDM0NzQwZTJlYTFiLi44M2I3YjRkNjk5YTMwNjkzNTY2
OTE3NjYwNzdmYjkxY2IxMjc3MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMDMtMjQgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CisKKyAg
ICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIE1lcmdlIFRJTEVEX0JBQ0tJTkdfU1RPUkUgZ3Vh
cmQgd2l0aCBDT09SRElOQVRFRF9HUkFQSElDUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKToKKyAg
ICAgICAgRGVsZXRlZCBiZWNhdXNlIFdJTiBkb2VzIG5vdCB1c2UgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3MuCisKIDIwMTUtMDMtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbiB1cCBET01UaW1lciByZWxhdGVkIHNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmFi
ZGI0MmQ5MDU1NTEzZDEzZGRiNWI0YzY0ZDhlMjYyZWNkNjUzZi4uYjU1MWEyNGQ3MjY2NjljNzA2
OTE2ZjIxYjg5Mzk4YjU2NWM4MDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1
LTAzLTI0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAg
IFtDb29yZGluYXRlZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdp
dGggQ09PUkRJTkFURURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNE
aWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNpemUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNhbkhhbmRsZVVzZXJFdmVudHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTUtMDMtMjMgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1hZ2VzIHNoYXJlZCB0byBwaG90b3Mg
dmlhIGFjdGlvbiBtZW51IGFyZSBwYWRkZWQgd2l0aCB6ZXJvZXMgYXQgdGhlIGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA0YmZkZDI3YjAwOGQ0MTY2ZWQyNTViNDY4MjczZmNhZTc5MjgzNjkz
Li44MDc5NWYxMjZiYTFlZjgwNWUzYTFiOTdkZmU2MzhjNDg0NTU5Yjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjEyOCw3ICsyMTI4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCBmMGEzYzQzMTA0Yzk3ZDllZTYxMjE1MjhiMTNkNDI3YzdkMjI2
NmU4Li4yM2IwNDdlNjYzOWRmNjg2YWNlZjU1Nzc5ZjMzMWJjNjVlYjlmNzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTkwLDYgKzE5MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEltYWdlQmFja2luZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKIAogICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZGQyNjQ5MDdlYWUwNDA5YWE4MjBjNjA3M2VhNzc0MWIyNWZmMDcyMi4uYWJiZWMxZDZm
NGNlODNkMzE0YmFlMTI1YTg1NzdjNTZkOTQwODY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTQwMiw3ICs0MDIsNiBAQCBpZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCiAg
ICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKICAgICAgICAgcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0FyZWFBbGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggZWJkY2QyYzMwZDkzNjM0MDAyODE0YWI3NTRhZjE5NmM0OTZiNWFiYS4uMzVhYmUxODIw
NWYzMzBhODUxZjdhYjc5MDAxMGJiM2U0ZDYzY2FkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NzUzLDcgKzc3NTMsMjAgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xUaWxlZEJhY2tpbmdTdG9yZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmUuY3Bw
Ij4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+ZmFsc2U8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+ZmFsc2U8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5mYWxzZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPmZhbHNlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1x3aW5cR3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwIj4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xOTUw
Miw5ICsxOTUxNSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlclRpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFRpbGVkQmFja2luZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nU3Rv
cmVDbGllbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRp
bGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xU
cmFja0Jhc2VQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbi5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDc2ZDg0NGY4NjA3NDVhZmZmMzg0ODIxNWY4ZTM3
NTIyMzlhMzEyOTAuLjViMjY1ZjA0MjE2NGQ3YTVkMDFkZGIyMWNlZjJlOGMzZDA0YWI4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTY3MzksOCArNjczOSw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xHcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmdT
dG9yZS5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5h
dGVkXFRpbGVkQmFja2luZ1N0b3JlLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcFxjb29yZGluYXRlZDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxzY3JvbGxpbmdcU2Nyb2xsaW5nU3RhdGVGaXhlZE5v
ZGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFnZVxzY3JvbGxpbmc8L0ZpbHRlcj4KQEAgLTE0MTI5
LDE0ICsxNDEyOSwxNCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcVGlsZWRCYWNraW5nLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmUuaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRm
b3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmUuaCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZDwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9y
bVxncmFwaGljczwvRmlsdGVyPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIj4K
KyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIj4KLSAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
Ij4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdl
XHNjcm9sbGluZ1xTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFn
ZVxzY3JvbGxpbmc8L0ZpbHRlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRl
eCBmOTAzNzg1OTk3YmIwMGY2ZjJhMTBlMjgxZjNjYTI4NDVlZDg3ZjIzLi4xYTUxMmQ4MDlkMmVh
MGUwYzQyMzQ0YmYwOTc2MmFlYjQxYWYzZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6
ZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0jaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmKSB7
IH0KICNlbmRpZgogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBl
YTEyMzZmYjI5ZWI3ZGQ1NDI1ZDg2ODY0ZWQ2YjFhMjg4ODE3MmU4Li4zM2I5NWJkZDhlZDk5MTg1
M2VjMDE4M2U3MGJlNWUwNTE4MTZlZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgQ2hyb21lOjpzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRTY3JvbGwobV9wYWdlKTsKIH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIHZvaWQgQ2hyb21lOjpkZWxlZ2F0
ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIG1f
Y2xpZW50LmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChzY3JvbGxQb2ludCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCAyNDEzYTRmMDlhYjJmOGQ3ODBhZjExMmJiMTZkYTBmNWUzYmNiOTBkLi5lY2Yw
YTBlYjgxMGQ4OGFjNTE3ZDc3M2RjOTlhOTA2NjRiNDg5YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29u
dGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBkZWxl
Z2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBvdmVycmlk
ZTsKICNlbmRpZgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5k
ZXggOTlkYTk1MGQ5Mzk0ZDMyMzRmZjM1ODJhNTI5ZGQ1YmRhZDFmNWMxNi4uNTFkZTkzNWUyNmQw
OTFmY2VlYTcwOTgyZjU1MGM2YjBlZjFiNmZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFJlY3QmKSA9IDA7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3Jv
bGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIElu
dFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CkBAIC0z
NDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290RnVsbFNjcmVl
bkxheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgSW50
UmVjdCB2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QgeyByZXR1cm4gSW50
UmVjdCgpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ODhhZDA2ZGNjOTRj
YjgxZmQ4MDRiMWUxNGI4Zjc4N2JlMmFlZWFmLi5iYjYwZGNhYWRhZWQzNzAwNzE5N2UxMmRmNjBi
ZjRkNzY0MzkxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtODkzLDcgKzg5Myw3IEBAIHZv
aWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yCiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CiAgICAgICAgIGZy
YW1lVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCp0aGlzLCB2aWV3cG9ydFNpemUpOwogICAgICAg
ICBmcmFtZVZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShmaXhlZExheW91dFNpemUpOwotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICAgICAgZnJhbWVWaWV3LT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChmaXhlZFZpc2libGVD
b250ZW50UmVjdCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oZml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNiNDE1ZDBmMzcyYmE2
MDU5YjJkMDY5YzkwZjIyMDM4ZDlhYWQ4YTAuLjliMjljZWE1M2IyNGFhNGFlYTQ2NTAyNzAyM2Rj
YzkwZDEyZWE4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5o
PgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCiAjZW5kaWYKIApAQCAtMjA1
OCw3ICsyMDU4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5n
ZSgpCiAgICAgICAgIGNsZWFyQmFja2luZ1N0b3JlcygpOwogfQogCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBGcmFtZVZp
ZXc6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVDb250
ZW50UmVjdCkKIHsKICAgICBib29sIHZpc2libGVDb250ZW50U2l6ZURpZENoYW5nZSA9IGZhbHNl
OwpAQCAtMjIyNyw3ICsyMjI3LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAgICAgIHRpbGVkQmFja2lu
Zy0+cHJlcG9wdWxhdGVSZWN0KEZsb2F0UmVjdChwb3NpdGlvbiwgdmlzaWJsZUNvbnRlbnRSZWN0
KCkuc2l6ZSgpKSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFn
ZSgpKSB7CiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAgcmV0dXJu
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUodGhpcywg
cG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYTZmNTgxMDE4NzVhNGNlN2Nh
NDA3MDYyYjdlYzRiYzIwNGE2YThjNS4uODk4ZmUwZmFmMzlhZTg4NGUwMGY0YmE3ZTUwMzVkYmVk
NmI5NmFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjIxNTE1NDM5YTQ2MDExZGIyYjkwZjdmZDI2ZDU3
MWYyMjNlMmI1NC4uNGZlMzkyYTQwOGQxZGIzYjczZjk4N2ExYTQ1ZjFmNGMyNzA3MGI0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2Nh
bGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4sIGJvb2wgaW5TdGFi
bGUKIAogICAgICAgICAgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKICAgICAg
ICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOwotI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICB2aWV3LT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRh
dGUob3JpZ2luKTsKICNlbmRpZgpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgUGFnZTo6c2V0UGFn
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBib29sIGlu
U3RhYmxlCiAKICAgICAgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKICAgICAg
ICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKG9yaWdpbik7Ci0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB2aWV3LT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUob3JpZ2luKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDM4MGExNWM0NWNi
YmI5NWU1NzgxZWExNGVhNjA2ZTQ2NjRhZjI1M2EuLjA4MjkyOGI0YmIwMjViZTU2OTQyMGU2M2Zj
YzFhMzc5NjVjZGVmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJlcXVlc3RzIHRoZSBob3N0IGludmFsaWRhdGUg
dGhlIGNvbnRlbnRzLCBub3QgdGhlIHJvb3Qgdmlldy4gVGhpcyBpcyB0aGUgc2xvdyBwYXRoIGZv
ciBzY3JvbGxpbmcuCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dT
Y3JvbGwoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgPSAwOwogCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIC8vIFJlcXVl
c3RzIHRoZSBob3N0IHRvIGRvIHRoZSBhY3R1YWwgc2Nyb2xsaW5nLiBUaGlzIGlzIG9ubHkgdXNl
ZCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZS4KICAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2lu
dCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IDZiZGM5MGU3M2Y1ZTdjZGVjM2QzYmI2YjNjMGQ4OTlmMjlkYWRhNjEuLjc4ZmIzYzY0NmVkODRj
NzZiOThmNjA5MjM1ODMyOWU0NzNkZTVkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxl
ZFZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ09ic2N1cmVkQXJlYShWaXNpYmxlQ29udGUKICAg
ICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNv
bnRlbnRTaXplSW5jbHVkaW5nT2JzY3VyZWRBcmVhKHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNs
dWRlU2Nyb2xsYmFycyk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Quc2l6
ZSgpOwogI2VuZGlmCkBAIC0yOTYsNyArMjk2LDcgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNj
YWxlZFVub2JzY3VyZWRWaXNpYmxlQ29udGVudFNpemUoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHUK
ICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJs
ZUNvbnRlbnRTaXplKHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CiAK
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHZpc2libGVDb250ZW50U2l6ZTsKICNlbmRpZgpAQCAtMzIyLDcgKzMyMiw3IEBA
IEludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNv
bnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiCiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAg
ICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChzY3JvbGxiYXJJbmNsdXNpb24g
PT0gSW5jbHVkZVNjcm9sbGJhcnMpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9maXhlZFZpc2libGVDb250
ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0OwogI2VuZGlmCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxU
byhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpCiAgICAgaWYgKHNjcm9sbGJhcnNTdXBwcmVzc2Vk
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkp
IHsKICAgICAgICAgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEludFBvaW50KG5ld09mZnNl
dCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggYjdlODk5ZDU4MjM4OTdmZjdkMjE4ODVjN2RmZDQ2MDMwMDE4ZGI1ZS4uYTBjZmZjNDBkNjBm
YzY5NTc4YTIxZjE2YmRhNjQ2YzdhMzA5ZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGljaCB1c3VhbGx5
IHdpbGwgaGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9y
IHdoZW4gc2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCiAgICAgdmlydHVh
bCBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQogCi0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QpIHsgbV9maXhlZFZpc2libGVDb250ZW50UmVjdCA9IHZpc2li
bGVDb250ZW50UmVjdDsgfQogICAgIEludFJlY3QgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OyB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTAwZGJhY2NiZWVlMDZjYmZiOTE1MzAwNmRhOThmY2M1OThlMmNjOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgot
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLSAKLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIAotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUaWxlX2gKLSNk
ZWZpbmUgVGlsZV9oCi0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLQotI2luY2x1ZGUg
IkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UG9pbnRIYXNoLmgiCi0jaW5jbHVkZSAiSW50UmVj
dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLQotY2xh
c3MgVGlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRpbGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IEludFBvaW50IENvb3JkaW5hdGU7Ci0KLSAgICB2aXJ0dWFsIH5UaWxlKCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZShjb25zdCBJbnRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPEludFJlY3Q+IHVw
ZGF0ZUJhY2tCdWZmZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCYWNrQnVmZmVyVG9G
cm9udCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsK
LX07Ci0KLX0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRjNDI2Yzc4MTgyMWY1ZTI5MGZiMjg4YTljZjljZGEwNDNmMjM4YmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDcyICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotIAotIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5o
IgotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVEaW1lbnNpb24gPSA1
MTI7Ci0KLXN0YXRpYyBJbnRQb2ludCBpbm5lckJvdHRvbVJpZ2h0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCi17Ci0gICAgLy8gQWN0dWFsbHksIHRoZSByZWN0IGRvZXMgbm90IGNvbnRhaW4gcmVjdC5t
YXhYKCkuIFJlZmVyIHRvIEludFJlY3Q6OmNvbnRhaW4uCi0gICAgcmV0dXJuIEludFBvaW50KHJl
Y3QubWF4WCgpIC0gMSwgcmVjdC5tYXhZKCkgLSAxKTsKLX0KLQotVGlsZWRCYWNraW5nU3RvcmU6
OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIHN0ZDo6
dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IGJhY2tlbmQpCi0gICAgOiBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX2JhY2tlbmQoV1RGOjptb3ZlKGJhY2tlbmQpKQotICAgICwg
bV90aWxlU2l6ZShkZWZhdWx0VGlsZURpbWVuc2lvbiwgZGVmYXVsdFRpbGVEaW1lbnNpb24pCi0g
ICAgLCBtX2NvdmVyQXJlYU11bHRpcGxpZXIoMi4wZikKLSAgICAsIG1fY29udGVudHNTY2FsZSgx
LmYpCi0gICAgLCBtX3N1cHBvcnRzQWxwaGEoZmFsc2UpCi0gICAgLCBtX3BlbmRpbmdUaWxlQ3Jl
YXRpb24oZmFsc2UpCi17Ci19Ci0KLVRpbGVkQmFja2luZ1N0b3JlOjp+VGlsZWRCYWNraW5nU3Rv
cmUoKQotewotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQotewotICAgIG1fdGlsZVNpemUgPSBzaXplOwotICAgIG1fdGlsZXMuY2xl
YXIoKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rvcihj
b25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIG1fcGVuZGluZ1RyYWpl
Y3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAgIG1fcGVuZGluZ1RyYWplY3RvcnlW
ZWN0b3Iubm9ybWFsaXplKCk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0
aFRpbGVzSWZOZWVkZWQoKQotewotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52aXNp
YmxlUmVjdCgpOwotICAgIEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+
dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Ci0KLSAgICBib29sIGRpZENoYW5nZSA9
IG1fdHJhamVjdG9yeVZlY3RvciAhPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yIHx8IG1fdmlz
aWJsZVJlY3QgIT0gdmlzaWJsZVJlY3QgfHwgbV9yZWN0ICE9IHJlY3Q7Ci0gICAgaWYgKGRpZENo
YW5nZSB8fCBtX3BlbmRpbmdUaWxlQ3JlYXRpb24pCi0gICAgICAgIGNyZWF0ZVRpbGVzKCk7Ci19
Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudHNEaXJ0eVJlY3QpCi17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QobWFwRnJvbUNvbnRlbnRz
KGNvbnRlbnRzRGlydHlSZWN0KSk7Ci0gICAgSW50UmVjdCBrZWVwUmVjdEZpdFRvVGlsZVNpemUg
PSB0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGVGb3JQb2ludChtX2tlZXBSZWN0
LmxvY2F0aW9uKCkpKTsKLSAgICBrZWVwUmVjdEZpdFRvVGlsZVNpemUudW5pdGUodGlsZVJlY3RG
b3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21SaWdodChtX2tl
ZXBSZWN0KSkpKTsKLQotICAgIC8vIE9ubHkgaXRlcmF0ZSBvbiB0aGUgcGFydCBvZiB0aGUgcmVj
dCB0aGF0IHdlIGtub3cgd2UgbWlnaHQgaGF2ZSB0aWxlcy4KLSAgICBJbnRSZWN0IGNvdmVyZWRE
aXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oZGlydHlSZWN0LCBrZWVwUmVjdEZpdFRvVGlsZVNpemUp
OwotICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQo
Y292ZXJlZERpcnR5UmVjdC5sb2NhdGlvbigpKTsKLSAgICBUaWxlOjpDb29yZGluYXRlIGJvdHRv
bVJpZ2h0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KGNvdmVyZWRE
aXJ0eVJlY3QpKTsKLQotICAgIGZvciAoaW50IHlDb29yZGluYXRlID0gdG9wTGVmdC55KCk7IHlD
b29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LnkoKTsgKyt5Q29vcmRpbmF0ZSkgewotICAgICAgICBm
b3IgKGludCB4Q29vcmRpbmF0ZSA9IHRvcExlZnQueCgpOyB4Q29vcmRpbmF0ZSA8PSBib3R0b21S
aWdodC54KCk7ICsreENvb3JkaW5hdGUpIHsKLSAgICAgICAgICAgIFJlZlB0cjxUaWxlPiBjdXJy
ZW50VGlsZSA9IHRpbGVBdChUaWxlOjpDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0
ZSkpOwotICAgICAgICAgICAgaWYgKCFjdXJyZW50VGlsZSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIC8vIFBhc3MgdGhlIGZ1bGwgcmVjdCB0byBlYWNoIHRpbGUgYXMg
Y292ZXJlZERpcnR5UmVjdCBtaWdodCBub3QKLSAgICAgICAgICAgIC8vIGNvbnRhaW4gdGhlbSBj
b21wbGV0ZWx5IGFuZCB3ZSBkb24ndCB3YW50IHBhcnRpYWwgdGlsZSByZWRyYXdzLgotICAgICAg
ICAgICAgY3VycmVudFRpbGUtPmludmFsaWRhdGUoZGlydHlSZWN0KTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQotewot
ICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKLQotICAgIFZlY3Rv
cjxJbnRSZWN0PiBwYWludGVkQXJlYTsKLSAgICBWZWN0b3I8UmVmUHRyPFRpbGU+ID4gZGlydHlU
aWxlczsKLSAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7Ci0gICAgICAg
IGlmICghdGlsZS0+aXNEaXJ0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRp
cnR5VGlsZXMuYXBwZW5kKHRpbGUpOwotICAgIH0KLQotICAgIGlmIChkaXJ0eVRpbGVzLmlzRW1w
dHkoKSkgewotICAgICAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChwYWlu
dGVkQXJlYSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSW4gc2lu
Z2xlIHRocmVhZGVkIGNhc2UsIHRpbGUgYmFjayBidWZmZXJzIGNvdWxkIGJlIHVwZGF0ZWQgYXN5
bmNocm9ub3VzbHkgCi0gICAgLy8gb25lIGJ5IG9uZSBhbmQgdGhlbiBzd2FwcGVkIHRvIGZyb250
IGluIG9uZSBnby4gVGhpcyB3b3VsZCBtaW5pbWl6ZSB0aGUgdGltZSBzcGVudAotICAgIC8vIGJs
b2NraW5nIG9uIHRpbGUgdXBkYXRlcy4KLSAgICB1bnNpZ25lZCBzaXplID0gZGlydHlUaWxlcy5z
aXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikgewotICAgICAg
ICBWZWN0b3I8SW50UmVjdD4gcGFpbnRlZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+dXBkYXRlQmFj
a0J1ZmZlcigpOwotICAgICAgICBwYWludGVkQXJlYS5hcHBlbmRWZWN0b3IocGFpbnRlZFJlY3Rz
KTsKLSAgICAgICAgZGlydHlUaWxlc1tuXS0+c3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7Ci0gICAg
fQotCi0gICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQocGFpbnRlZEFyZWEp
OwotfQotCi1JbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjp2aXNpYmxlUmVjdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBzY2FsZSkKLXsKLSAgICBpZiAoc2NhbGUgPT0gbV9jb250ZW50c1NjYWxlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKLSAgICBtX3Rp
bGVzLmNsZWFyKCk7Ci0gICAgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOwotfQotCi1kb3VibGUg
VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwg
Y29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNvbnN0Ci17Ci0gICAgaWYg
KHZpZXdwb3J0LmludGVyc2VjdHModGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRl
KSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSW50UG9pbnQgdmlld0NlbnRlciA9IHZpZXdw
b3J0LmxvY2F0aW9uKCkgKyBJbnRTaXplKHZpZXdwb3J0LndpZHRoKCkgLyAyLCB2aWV3cG9ydC5o
ZWlnaHQoKSAvIDIpOwotICAgIFRpbGU6OkNvb3JkaW5hdGUgY2VudGVyQ29vcmRpbmF0ZSA9IHRp
bGVDb29yZGluYXRlRm9yUG9pbnQodmlld0NlbnRlcik7Ci0KLSAgICByZXR1cm4gc3RkOjptYXgo
YWJzKGNlbnRlckNvb3JkaW5hdGUueSgpIC0gdGlsZUNvb3JkaW5hdGUueSgpKSwgYWJzKGNlbnRl
ckNvb3JkaW5hdGUueCgpIC0gdGlsZUNvb3JkaW5hdGUueCgpKSk7Ci19Ci0KLS8vIFJldHVybnMg
YSByYXRpbyBiZXR3ZWVuIDAuMGYgYW5kIDEuMGYgb2YgdGhlIHN1cmZhY2Ugb2YgY29udGVudHNS
ZWN0IGNvdmVyZWQgYnkgcmVuZGVyZWQgdGlsZXMuCi1mbG9hdCBUaWxlZEJhY2tpbmdTdG9yZTo6
Y292ZXJhZ2VSYXRpbyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50c1JlY3QpIGNvbnN0
Ci17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBtYXBGcm9tQ29udGVudHMoY29udGVudHNSZWN0
KTsKLSAgICBmbG9hdCByZWN0QXJlYSA9IGRpcnR5UmVjdC53aWR0aCgpICogZGlydHlSZWN0Lmhl
aWdodCgpOwotICAgIGZsb2F0IGNvdmVyQXJlYSA9IDAuMGY7Ci0KLSAgICBUaWxlOjpDb29yZGlu
YXRlIHRvcExlZnQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGRpcnR5UmVjdC5sb2NhdGlvbigp
KTsKLSAgICBUaWxlOjpDb29yZGluYXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNvb3JkaW5hdGVGb3JQ
b2ludChpbm5lckJvdHRvbVJpZ2h0KGRpcnR5UmVjdCkpOwotCi0gICAgZm9yIChpbnQgeUNvb3Jk
aW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lD
b29yZGluYXRlKSB7Ci0gICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7
IHhDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgewotICAgICAg
ICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjdXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNv
b3JkaW5hdGUpOwotICAgICAgICAgICAgUmVmUHRyPFRpbGU+IGN1cnJlbnRUaWxlID0gdGlsZUF0
KGN1cnJlbnRDb29yZGluYXRlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50VGlsZSAmJiBjdXJy
ZW50VGlsZS0+aXNSZWFkeVRvUGFpbnQoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgY292
ZXJSZWN0ID0gaW50ZXJzZWN0aW9uKGRpcnR5UmVjdCwgY3VycmVudFRpbGUtPnJlY3QoKSk7Ci0g
ICAgICAgICAgICAgICAgY292ZXJBcmVhICs9IGNvdmVyUmVjdC53aWR0aCgpICogY292ZXJSZWN0
LmhlaWdodCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBj
b3ZlckFyZWEgLyByZWN0QXJlYTsKLX0KLQotYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6dmlzaWJs
ZUFyZWFJc0NvdmVyZWQoKSBjb25zdAotewotICAgIEludFJlY3QgYm91bmRlZFZpc2libGVDb250
ZW50c1JlY3QgPSBpbnRlcnNlY3Rpb24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVmlzaWJs
ZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOwotICAg
IHJldHVybiBjb3ZlcmFnZVJhdGlvKGJvdW5kZWRWaXNpYmxlQ29udGVudHNSZWN0KSA9PSAxLjBm
OwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCi17Ci0gICAgLy8g
VXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgotICAgIGNvbnN0IEludFJlY3QgcHJl
dmlvdXNSZWN0ID0gbV9yZWN0OwotICAgIG1fcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVu
dC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Ci0gICAgbV90cmFqZWN0b3J5VmVj
dG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlz
aWJsZVJlY3QoKTsKLQotICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNldENv
dmVyUmVjdChJbnRSZWN0KCkpOwotICAgICAgICBzZXRLZWVwUmVjdChJbnRSZWN0KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLyogV2UgbXVzdCBjb21wdXRlIGNvdmVyIGFuZCBr
ZWVwIHJlY3RzIHVzaW5nIHRoZSB2aXNpYmxlUmVjdCwgaW5zdGVhZCBvZiB0aGUgcmVjdCBpbnRl
cnNlY3RpbmcgdGhlIHZpc2libGVSZWN0IHdpdGggbV9yZWN0LAotICAgICAqIGJlY2F1c2UgVEJT
IGNhbiBiZSB1c2VkIGFzIGEgYmFja2luZyBzdG9yZSBvZiBHcmFwaGljc0xheWVyIGFuZCB0aGUg
dmlzaWJsZSByZWN0IHVzdWFsbHkgZG9lcyBub3QgaW50ZXJzZWN0IHdpdGggbV9yZWN0LgotICAg
ICAqIEluIHRoZSBiZWxvdyBjYXNlLCB0aGUgaW50ZXJzZWN0aW5nIHJlY3QgaXMgYW4gZW1wdHku
Ci0gICAgICoKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgICAgICAgICAg
ICAgIHwKLSAgICAgKiAgfCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgfCAgICAgICArLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgICAgICB8IEhFUkUgIHwgIGNv
dmVyIG9yIGtlZXAgICAgICAgIHwKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICByZWN0
ICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgKy0tLS0tLS0tLSsgICAg
ICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgfCB2aXNpYmxlIHwgICAgICAgICAg
IHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgfCAgcmVjdCAgIHwgICAgICAgICAgIHwKLSAg
ICAgKiAgICAgICAgICB8ICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgIHwKLSAgICAgKiAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKgotICAgICAqIFdlIG11c3QgY3Jl
YXRlIG9yIGtlZXAgdGhlIHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KLSAgICAgKi8KLQotICAg
IEludFJlY3QgY292ZXJSZWN0OwotICAgIEludFJlY3Qga2VlcFJlY3Q7Ci0gICAgY29tcHV0ZUNv
dmVyQW5kS2VlcFJlY3QobV92aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7Ci0KLSAg
ICBzZXRDb3ZlclJlY3QoY292ZXJSZWN0KTsKLSAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7Ci0K
LSAgICBpZiAoY292ZXJSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
UmVzaXplIHRpbGVzIGF0IHRoZSBlZGdlIGluIGNhc2UgdGhlIGNvbnRlbnRzIHNpemUgaGFzIGNo
YW5nZWQsIGJ1dCBvbmx5IGRvIHNvCi0gICAgLy8gYWZ0ZXIgaGF2aW5nIGRyb3BwZWQgdGlsZXMg
b3V0c2lkZSB0aGUga2VlcCByZWN0LgotICAgIGJvb2wgZGlkUmVzaXplVGlsZXMgPSBmYWxzZTsK
LSAgICBpZiAocHJldmlvdXNSZWN0ICE9IG1fcmVjdCkKLSAgICAgICAgZGlkUmVzaXplVGlsZXMg
PSByZXNpemVFZGdlVGlsZXMoKTsKLQotICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRpbGUgcG9zaXRp
b24gY2xvc2VzdCB0byB0aGUgdmlld3BvcnQgY2VudGVyIHRoYXQgZG9lcyBub3QgeWV0IGNvbnRh
aW4gYSB0aWxlLgotICAgIC8vIFdoaWNoIHBvc2l0aW9uIGlzIGNvbnNpZGVyZWQgdGhlIGNsb3Nl
c3QgZGVwZW5kcyBvbiB0aGUgdGlsZURpc3RhbmNlIGZ1bmN0aW9uLgotICAgIGRvdWJsZSBzaG9y
dGVzdERpc3RhbmNlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwot
ICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRlPiB0aWxlc1RvQ3JlYXRlOwotICAgIHVuc2lnbmVk
IHJlcXVpcmVkVGlsZUNvdW50ID0gMDsKLQotICAgIC8vIENvdmVyIGFyZWFzIChpbiB0aWxlcykg
d2l0aCBtaW5pbXVtIGRpc3RhbmNlIGZyb20gdGhlIHZpc2libGUgcmVjdC4gSWYgdGhlIHZpc2li
bGUgcmVjdCBpcwotICAgIC8vIG5vdCBjb3ZlcmVkIGFscmVhZHkgaXQgd2lsbCBiZSBjb3ZlcmVk
IGZpcnN0IGluIG9uZSBnbywgZHVlIHRvIHRoZSBkaXN0YW5jZSBiZWluZyAwIGZvciB0aWxlcwot
ICAgIC8vIGluc2lkZSB0aGUgdmlzaWJsZSByZWN0LgotICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9w
TGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoY292ZXJSZWN0LmxvY2F0aW9uKCkpOwotICAg
IFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlu
bmVyQm90dG9tUmlnaHQoY292ZXJSZWN0KSk7Ci0gICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0
b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRl
KSB7Ci0gICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGlu
YXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgewotICAgICAgICAgICAgVGls
ZTo6Q29vcmRpbmF0ZSBjdXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNvb3JkaW5hdGUp
OwotICAgICAgICAgICAgaWYgKHRpbGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAg
ICAgICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJlY3QsIGN1cnJl
bnRDb29yZGluYXRlKTsKLSAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0ZXN0RGlzdGFu
Y2UpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoZGlzdGFuY2Ug
PCBzaG9ydGVzdERpc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgdGlsZXNUb0NyZWF0ZS5jbGVh
cigpOwotICAgICAgICAgICAgICAgIHNob3J0ZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRpbGVzVG9DcmVhdGUuYXBwZW5kKGN1cnJlbnRDb29yZGlu
YXRlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdyBjb25zdHJ1Y3QgdGhlIHRpbGUo
cykgd2l0aGluIHRoZSBzaG9ydGVzdCBkaXN0YW5jZS4KLSAgICB1bnNpZ25lZCB0aWxlc1RvQ3Jl
YXRlQ291bnQgPSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAw
OyBuIDwgdGlsZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKLSAgICAgICAgVGlsZTo6Q29vcmRpbmF0
ZSBjb29yZGluYXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgc2V0VGlsZShjb29yZGlu
YXRlLCBtX2JhY2tlbmQtPmNyZWF0ZVRpbGUodGhpcywgY29vcmRpbmF0ZSkpOwotICAgIH0KLSAg
ICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7Ci0KLSAgICAvLyBQYWlu
dCB0aGUgY29udGVudCBvZiB0aGUgbmV3bHkgY3JlYXRlZCB0aWxlcyBvciByZXNpemVkIHRpbGVz
LgotICAgIGlmICh0aWxlc1RvQ3JlYXRlQ291bnQgfHwgZGlkUmVzaXplVGlsZXMpCi0gICAgICAg
IHVwZGF0ZVRpbGVCdWZmZXJzKCk7Ci0KLSAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEg
dGltZXIgdG8gY292ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3Qg
ZGlzdGFuY2UuCi0gICAgbV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVxdWlyZWRUaWxlQ291bnQ7
Ci0gICAgaWYgKG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKLSAgICAgICAgbV9jbGllbnQtPnRpbGVk
QmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpOwotfQotCi12b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjphZGp1c3RGb3JDb250ZW50c1JlY3QoSW50UmVjdCYgcmVjdCkgY29uc3QKLXsK
LSAgICBJbnRSZWN0IGJvdW5kcyA9IG1fcmVjdDsKLSAgICBJbnRTaXplIGNhbmRpZGF0ZVNpemUg
PSByZWN0LnNpemUoKTsKLQotICAgIHJlY3QuaW50ZXJzZWN0KGJvdW5kcyk7Ci0KLSAgICBpZiAo
cmVjdC5zaXplKCkgPT0gY2FuZGlkYXRlU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLyoK
LSAgICAgKiBJbiB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBv
ZiB0aGUgY29udGVudHMgcmVjdCBhbmQgdGhlIGNvdmVyIHJlY3QuCi0gICAgICogVGh1cyB0aGUg
bGF0dGVyIHNob3VsZCBub3QgYmUgaW5mbGF0ZWQuCi0gICAgICoKLSAgICAgKiAgKy0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgKiAgfCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgKy0tLS0tLS0tLS0t
LS0tLSsKLSAgICAgKgotICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotICAgICAqICAgICAgICAgIHwgICAgICAgICAgY292ZXIgcmVjdCAgICAgICAgICAg
fAotICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAg
ICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUgfCAgICAgICAgICAgfAotICAgICAqICAg
ICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAgICAgICAgfAotICAgICAqICAgICAgICAg
IHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAgICAqICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAqLwotICAgIGlmIChyZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRvIGNyZWF0ZSBhIGNvdmVyIHJl
Y3Qgb2YgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgY2FuZGlkYXRlLCBidXQgd2l0aGluIGNvbnRlbnQg
Ym91bmRzLgotICAgIGludCBwaXhlbHNDb3ZlcmVkID0gY2FuZGlkYXRlU2l6ZS53aWR0aCgpICog
Y2FuZGlkYXRlU2l6ZS5oZWlnaHQoKTsKLQotICAgIGlmIChyZWN0LndpZHRoKCkgPCBjYW5kaWRh
dGVTaXplLndpZHRoKCkpCi0gICAgICAgIHJlY3QuaW5mbGF0ZVkoKChwaXhlbHNDb3ZlcmVkIC8g
cmVjdC53aWR0aCgpKSAtIHJlY3QuaGVpZ2h0KCkpIC8gMik7Ci0gICAgaWYgKHJlY3QuaGVpZ2h0
KCkgPCBjYW5kaWRhdGVTaXplLmhlaWdodCgpKQotICAgICAgICByZWN0LmluZmxhdGVYKCgocGl4
ZWxzQ292ZXJlZCAvIHJlY3QuaGVpZ2h0KCkpIC0gcmVjdC53aWR0aCgpKSAvIDIpOwotCi0gICAg
cmVjdC5pbnRlcnNlY3QoYm91bmRzKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y29t
cHV0ZUNvdmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIEludFJlY3Qm
IGNvdmVyUmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0Ci17Ci0gICAgY292ZXJSZWN0ID0g
dmlzaWJsZVJlY3Q7Ci0gICAga2VlcFJlY3QgPSB2aXNpYmxlUmVjdDsKLQotICAgIC8vIElmIHdl
IGNvdmVyIG1vcmUgdGhhdCB0aGUgYWN0dWFsIHZpZXdwb3J0IHdlIGNhbiBiZSBzbWFydCBhYm91
dCB3aGljaCB0aWxlcyB3ZSBjaG9vc2UgdG8gcmVuZGVyLgotICAgIGlmIChtX2NvdmVyQXJlYU11
bHRpcGxpZXIgPiAxKSB7Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsIGNvdmVyIGFyZWEgY292ZXJz
IGVxdWFsbHkgaW4gZWFjaCBkaXJlY3Rpb24sIGFjY29yZGluZyB0byB0aGUgY292ZXJBcmVhTXVs
dGlwbGllci4KLSAgICAgICAgY292ZXJSZWN0LmluZmxhdGVYKHZpc2libGVSZWN0LndpZHRoKCkg
KiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkgLyAyKTsKLSAgICAgICAgY292ZXJSZWN0Lmlu
ZmxhdGVZKHZpc2libGVSZWN0LmhlaWdodCgpICogKG1fY292ZXJBcmVhTXVsdGlwbGllciAtIDEp
IC8gMik7Ci0gICAgICAgIGtlZXBSZWN0ID0gY292ZXJSZWN0OwotCi0gICAgICAgIGlmIChtX3Ry
YWplY3RvcnlWZWN0b3IgIT0gRmxvYXRQb2ludDo6emVybygpKSB7Ci0gICAgICAgICAgICAvLyBB
IG51bGwgdHJhamVjdG9yeSB2ZWN0b3IgKG5vIG1vdGlvbikgbWVhbnMgdGhhdCB0aWxlcyBmb3Ig
dGhlIGNvdmVyQXJlYSB3aWxsIGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAvLyBBIG5vbi1udWxs
IHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgc2hyaW5rIHRoZSBjb3ZlcmVkIHJlY3QgdG8gdmlzaWJs
ZVJlY3QgcGx1cyBpdHMgZXhwYW5zaW9uIGZyb20gaXRzCi0gICAgICAgICAgICAvLyBjZW50ZXIg
dG93YXJkIHRoZSBjb3ZlciBhcmVhIGVkZ2VzIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGdpdmVu
IHZlY3Rvci4KLQotICAgICAgICAgICAgLy8gRS5nLiBpZiB2aXNpYmxlUmVjdCA9PSAoMTAsMTAp
NXg1IGFuZCBjb3ZlckFyZWFNdWx0aXBsaWVyID09IDMuMDoKLSAgICAgICAgICAgIC8vIGEgKDAs
MCkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICg1LDUp
MTV4MTUsCi0gICAgICAgICAgICAvLyBhICgxLDApIHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgY3Jl
YXRlIHRpbGVzIGludGVyc2VjdGluZyAoMTAsMTApMTB4NSwKLSAgICAgICAgICAgIC8vIGFuZCBh
ICgxLDEpIHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgY3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAo
MTAsMTApMTB4MTAuCi0KLSAgICAgICAgICAgIC8vIE11bHRpcGx5IHRoZSB2ZWN0b3IgYnkgdGhl
IGRpc3RhbmNlIHRvIHRoZSBlZGdlIG9mIHRoZSBjb3ZlciBhcmVhLgotICAgICAgICAgICAgZmxv
YXQgdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIgPSAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0g
MSkgLyAyOwotCi0gICAgICAgICAgICAvLyBVbml0ZSB0aGUgdmlzaWJsZSByZWN0IHdpdGggYSAi
Z2hvc3QiIG9mIHRoZSB2aXNpYmxlIHJlY3QgbW92ZWQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUg
dHJhamVjdG9yeSB2ZWN0b3IuCi0gICAgICAgICAgICBjb3ZlclJlY3QgPSB2aXNpYmxlUmVjdDsK
LSAgICAgICAgICAgIGNvdmVyUmVjdC5tb3ZlKGNvdmVyUmVjdC53aWR0aCgpICogbV90cmFqZWN0
b3J5VmVjdG9yLngoKSAqIHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY292ZXJSZWN0LmhlaWdodCgpICogbV90cmFqZWN0b3J5VmVjdG9yLnko
KSAqIHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyKTsKLQotICAgICAgICAgICAgY292ZXJSZWN0
LnVuaXRlKHZpc2libGVSZWN0KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoa2VlcFJlY3Qu
Y29udGFpbnMoY292ZXJSZWN0KSk7Ci0gICAgfQotCi0gICAgYWRqdXN0Rm9yQ29udGVudHNSZWN0
KGNvdmVyUmVjdCk7Ci0KLSAgICAvLyBUaGUga2VlcCByZWN0IGlzIGFuIGluZmxhdGVkIHZlcnNp
b24gb2YgdGhlIGNvdmVyIHJlY3QsIGluZmxhdGVkIGluIHRpbGUgZGltZW5zaW9ucy4KLSAgICBr
ZWVwUmVjdC51bml0ZShjb3ZlclJlY3QpOwotICAgIGtlZXBSZWN0LmluZmxhdGVYKG1fdGlsZVNp
emUud2lkdGgoKSAvIDIpOwotICAgIGtlZXBSZWN0LmluZmxhdGVZKG1fdGlsZVNpemUuaGVpZ2h0
KCkgLyAyKTsKLSAgICBrZWVwUmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKLQotICAgIEFTU0VSVChj
b3ZlclJlY3QuaXNFbXB0eSgpIHx8IGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVjdCkpOwotfQot
Ci1ib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKQotewotICAgIGJvb2wg
d2FzUmVzaXplZCA9IGZhbHNlOwotICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRlPiB0aWxlc1Rv
UmVtb3ZlOwotICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKLSAgICAg
ICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IHRpbGUtPmNvb3JkaW5hdGUoKTsK
LSAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKLSAgICAgICAgSW50UmVj
dCBleHBlY3RlZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRl
KTsKLSAgICAgICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAg
dGlsZXNUb1JlbW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOwotICAgICAgICBlbHNlIGlmIChl
eHBlY3RlZFRpbGVSZWN0ICE9IHRpbGVSZWN0KSB7Ci0gICAgICAgICAgICB0aWxlLT5yZXNpemUo
ZXhwZWN0ZWRUaWxlUmVjdC5zaXplKCkpOwotICAgICAgICAgICAgd2FzUmVzaXplZCA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdW5zaWduZWQgcmVtb3ZlQ291bnQgPSB0aWxlc1RvUmVt
b3ZlLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3ZlQ291bnQ7ICsr
bikKLSAgICAgICAgcmVtb3ZlVGlsZSh0aWxlc1RvUmVtb3ZlW25dKTsKLSAgICByZXR1cm4gd2Fz
UmVzaXplZDsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJlY3QoY29uc3Qg
SW50UmVjdCYga2VlcFJlY3QpCi17Ci0gICAgLy8gRHJvcCB0aWxlcyBvdXRzaWRlIHRoZSBuZXcg
a2VlcFJlY3QuCi0KLSAgICBGbG9hdFJlY3Qga2VlcFJlY3RGID0ga2VlcFJlY3Q7Ci0KLSAgICBW
ZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiB0aWxlIDog
bV90aWxlcy52YWx1ZXMoKSkgewotICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUg
PSB0aWxlLT5jb29yZGluYXRlKCk7Ci0gICAgICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGUt
PnJlY3QoKTsKLSAgICAgICAgaWYgKCF0aWxlUmVjdC5pbnRlcnNlY3RzKGtlZXBSZWN0RikpCi0g
ICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoY29vcmRpbmF0ZSk7Ci0gICAgfQotICAgIHVuc2ln
bmVkIHJlbW92ZUNvdW50ID0gdG9SZW1vdmUuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgbiA9
IDA7IG4gPCByZW1vdmVDb3VudDsgKytuKQotICAgICAgICByZW1vdmVUaWxlKHRvUmVtb3ZlW25d
KTsKLQotICAgIG1fa2VlcFJlY3QgPSBrZWVwUmVjdDsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKLXsKLSAgICBJbnRSZWN0IGJvdW5kZWRW
aXNpYmxlUmVjdCA9IG1hcEZyb21Db250ZW50cyhpbnRlcnNlY3Rpb24obV9jbGllbnQtPnRpbGVk
QmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29u
dGVudHNSZWN0KCkpKTsKLSAgICBzZXRLZWVwUmVjdChib3VuZGVkVmlzaWJsZVJlY3QpOwotfQot
Ci1QYXNzUmVmUHRyPFRpbGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQXQoY29uc3QgVGlsZTo6
Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aWxlcy5nZXQo
Y29vcmRpbmF0ZSk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGUoY29uc3Qg
VGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKQotewot
ICAgIG1fdGlsZXMuc2V0KGNvb3JkaW5hdGUsIHRpbGUpOwotfQotCi12b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjpyZW1vdmVUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUpCi17
Ci0gICAgbV90aWxlcy5yZW1vdmUoY29vcmRpbmF0ZSk7Ci19Ci0KLUludFJlY3QgVGlsZWRCYWNr
aW5nU3RvcmU6Om1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QocmVjdC54KCkgLyBtX2NvbnRlbnRz
U2NhbGUsCi0gICAgICAgIHJlY3QueSgpIC8gbV9jb250ZW50c1NjYWxlLAotICAgICAgICByZWN0
LndpZHRoKCkgLyBtX2NvbnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3QuaGVpZ2h0KCkgLyBtX2Nv
bnRlbnRzU2NhbGUpKTsKLX0KLQotSW50UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6bWFwRnJvbUNv
bnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpICogbV9jb250ZW50c1NjYWxlLAotICAgICAgICBy
ZWN0LnkoKSAqIG1fY29udGVudHNTY2FsZSwKLSAgICAgICAgcmVjdC53aWR0aCgpICogbV9jb250
ZW50c1NjYWxlLAotICAgICAgICByZWN0LmhlaWdodCgpICogbV9jb250ZW50c1NjYWxlKSk7Ci19
Ci0KLUludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25z
dCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKSBjb25zdAotewotICAgIEludFJlY3QgcmVj
dChjb29yZGluYXRlLngoKSAqIG1fdGlsZVNpemUud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAg
Y29vcmRpbmF0ZS55KCkgKiBtX3RpbGVTaXplLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICBt
X3RpbGVTaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgIG1fdGlsZVNpemUuaGVpZ2h0KCkp
OwotCi0gICAgcmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKLSAgICByZXR1cm4gcmVjdDsKLX0KLQot
VGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaW50IHggPSBwb2ludC54KCkg
LyBtX3RpbGVTaXplLndpZHRoKCk7Ci0gICAgaW50IHkgPSBwb2ludC55KCkgLyBtX3RpbGVTaXpl
LmhlaWdodCgpOwotICAgIHJldHVybiBUaWxlOjpDb29yZGluYXRlKHN0ZDo6bWF4KHgsIDApLCBz
dGQ6Om1heCh5LCAwKSk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFN1cHBvcnRz
QWxwaGEoYm9vbCBhKQotewotICAgIGlmIChhID09IG1fc3VwcG9ydHNBbHBoYSkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fc3VwcG9ydHNBbHBoYSA9IGE7Ci0gICAgaW52YWxpZGF0ZShtX3JlY3Qp
OwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVhYjE2ZjUwMzBmZjcwNWFiYTVjYmVkMTliY2M5MTliMmE4OTQ5YzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCww
IEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIAotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAK
LSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZu
ZGVmIFRpbGVkQmFja2luZ1N0b3JlX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVfaAotCi0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0j
aW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVGls
ZS5oIgotI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKLWNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50OwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZSB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+KTsKLSAg
ICB+VGlsZWRCYWNraW5nU3RvcmUoKTsKLQotICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQotCi0gICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVj
dG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQo
KTsKLQotICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7
IH0KLSAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwotCi0gICAgdm9pZCB1cGRhdGVU
aWxlQnVmZmVycygpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCk7Ci0KLSAgICBJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQot
ICAgIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgSW50UmVjdCBtYXBU
b0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IG1hcEZyb21Db250
ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0KLSAgICBJbnRSZWN0IHRpbGVSZWN0Rm9yQ29v
cmRpbmF0ZShjb25zdCBUaWxlOjpDb29yZGluYXRlJikgY29uc3Q7Ci0gICAgVGlsZTo6Q29vcmRp
bmF0ZSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAg
ZG91YmxlIHRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6
Q29vcmRpbmF0ZSYpIGNvbnN0OwotCi0gICAgSW50UmVjdCBjb3ZlclJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2NvdmVyUmVjdDsgfQotICAgIGJvb2wgdmlzaWJsZUFyZWFJc0NvdmVyZWQoKSBjb25z
dDsKLSAgICB2b2lkIHJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpOwotCi0gICAgdm9pZCBzZXRT
dXBwb3J0c0FscGhhKGJvb2wpOwotCi1wcml2YXRlOgotICAgIHZvaWQgY3JlYXRlVGlsZXMoKTsK
LSAgICB2b2lkIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVS
ZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25zdDsKLQotICAg
IGJvb2wgcmVzaXplRWRnZVRpbGVzKCk7Ci0gICAgdm9pZCBzZXRDb3ZlclJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkgeyBtX2NvdmVyUmVjdCA9IHJlY3Q7IH0KLSAgICB2b2lkIHNldEtlZXBSZWN0
KGNvbnN0IEludFJlY3QmKTsKLQotICAgIFBhc3NSZWZQdHI8VGlsZT4gdGlsZUF0KGNvbnN0IFRp
bGU6OkNvb3JkaW5hdGUmKSBjb25zdDsKLSAgICB2b2lkIHNldFRpbGUoY29uc3QgVGlsZTo6Q29v
cmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKTsKLSAgICB2b2lkIHJl
bW92ZVRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSk7Ci0KLSAgICBJbnRS
ZWN0IHZpc2libGVSZWN0KCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjb3ZlcmFnZVJhdGlvKGNvbnN0
IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0
JikgY29uc3Q7Ci0KLSAgICB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKLQotcHJpdmF0ZToK
LSAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gbV9iYWNrZW5kOwotCi0gICAgdHlwZWRlZiBI
YXNoTWFwPFRpbGU6OkNvb3JkaW5hdGUsIFJlZlB0cjxUaWxlPiA+IFRpbGVNYXA7Ci0gICAgVGls
ZU1hcCBtX3RpbGVzOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGZsb2F0IG1fY292
ZXJBcmVhTXVsdGlwbGllcjsKLQotICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOwot
ICAgIEZsb2F0UG9pbnQgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKLSAgICBJbnRSZWN0IG1f
dmlzaWJsZVJlY3Q7Ci0KLSAgICBJbnRSZWN0IG1fY292ZXJSZWN0OwotICAgIEludFJlY3QgbV9r
ZWVwUmVjdDsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIGZsb2F0IG1fY29udGVudHNTY2Fs
ZTsKLQotICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOwotICAgIGJvb2wgbV9wZW5kaW5nVGlsZUNy
ZWF0aW9uOwotCi0gICAgZnJpZW5kIGNsYXNzIFRpbGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlQmFja2VuZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NzI2YmI5ZjMzZWFiMWQ5N2IxNDljMTQ4MmNkMzYxMTlkMzFmOWJjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMg
KzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVCYWNr
ZW5kX2gKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotCi0jaW5jbHVkZSAiVGlsZS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwotCi1j
bGFzcyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIHZpcnR1YWwgflRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCgpIHsg
fQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaWxlPiBjcmVhdGVUaWxlKFRpbGVkQmFja2luZ1N0
b3JlKiwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7
Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjlhN2Q5MzI3MjQxNTFjY2U0NzU3Njk2N2UyZDQxZDNl
NWQzZTE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAKLSBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudF9oCi0jZGVm
aW5lIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLWNsYXNzIENvbG9yOwotY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVj
dG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIEludFJl
Y3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCBDb2xv
ciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKLX07Ci0KLSNl
bHNlCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7fTsKLSNlbmRpZgotCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VGlsZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UaWxl
Q2Fpcm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcyZmZiMjNiMTJkOTEzZDhi
ODgwNzRjYWY3ZGJiM2FhN2I3Mjg5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UaWxl
Q2Fpcm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVGlsZUNhaXJvX2gK
LSNkZWZpbmUgVGlsZUNhaXJvX2gKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBV
U0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIK
LSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgIlRpbGUuaCIKLSNpbmNsdWRlIDxj
YWlyby5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9y
ZTsKLQotY2xhc3MgVGlsZUNhaXJvIDogcHVibGljIFRpbGUgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRpbGU+IGNyZWF0ZShUaWxlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
LCBjb25zdCBDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGlsZUNhaXJvKGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpKTsK
LSAgICB9Ci0gICAgdmlydHVhbCB+VGlsZUNhaXJvKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNE
aXJ0eSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVCYWNrQnVmZmVyKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOwotICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWR5VG9QYWludCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFRpbGU6OkNvb3Jk
aW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdGU7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLQotcHJvdGVj
dGVkOgotICAgIFRpbGVDYWlybyhUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5hdGUm
KTsKLQotICAgIFRpbGVkQmFja2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKLSAgICBDb29yZGlu
YXRlIG1fY29vcmRpbmF0ZTsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IG1fYnVmZmVyOwotICAgIFJlZlB0cjxjYWlyb19yZWdpb25fdD4gbV9kaXJ0
eVJlZ2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBVU0UoQ0FJUk8pCi0KLSNlbmRpZiAvLyBUaWxlQ2Fpcm9f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9UaWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFiOWIwZDljZDVkYmIxZmM4YjliYjg1
ZjZiYWRmMWJmZTFhZDlhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZV9o
CisjZGVmaW5lIFRpbGVfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5j
bHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKKyNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
CitjbGFzcyBUaWxlIDogcHVibGljIFJlZkNvdW50ZWQ8VGlsZT4geworcHVibGljOgorICAgIHR5
cGVkZWYgSW50UG9pbnQgQ29vcmRpbmF0ZTsKKworICAgIHZpcnR1YWwgflRpbGUoKSB7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8SW50UmVj
dD4gdXBkYXRlQmFja0J1ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJhY2tCdWZm
ZXJUb0Zyb250KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWR5VG9QYWludCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRp
bmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
PSAwOworfTsKKworfQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MmMxOTkzOWE2MmVlZmNmNzgzYjBj
MTgwMGUzZDYwNGFhNjI3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBA
IC0wLDAgKzEsNDY5IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIAorIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUu
aCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZURpbWVuc2lvbiA9
IDUxMjsKKworc3RhdGljIEludFBvaW50IGlubmVyQm90dG9tUmlnaHQoY29uc3QgSW50UmVjdCYg
cmVjdCkKK3sKKyAgICAvLyBBY3R1YWxseSwgdGhlIHJlY3QgZG9lcyBub3QgY29udGFpbiByZWN0
Lm1heFgoKS4gUmVmZXIgdG8gSW50UmVjdDo6Y29udGFpbi4KKyAgICByZXR1cm4gSW50UG9pbnQo
cmVjdC5tYXhYKCkgLSAxLCByZWN0Lm1heFkoKSAtIDEpOworfQorCitUaWxlZEJhY2tpbmdTdG9y
ZTo6VGlsZWRCYWNraW5nU3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gYmFja2VuZCkKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKKyAgICAsIG1fYmFja2VuZChXVEY6Om1vdmUoYmFja2VuZCkpCisgICAg
LCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikK
KyAgICAsIG1fY292ZXJBcmVhTXVsdGlwbGllcigyLjBmKQorICAgICwgbV9jb250ZW50c1NjYWxl
KDEuZikKKyAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVD
cmVhdGlvbihmYWxzZSkKK3sKK30KKworVGlsZWRCYWNraW5nU3RvcmU6On5UaWxlZEJhY2tpbmdT
dG9yZSgpCit7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgbV90aWxlU2l6ZSA9IHNpemU7CisgICAgbV90aWxlcy5j
bGVhcigpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9y
KGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit7CisgICAgbV9wZW5kaW5nVHJh
amVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5kaW5nVHJhamVjdG9y
eVZlY3Rvci5ub3JtYWxpemUoKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJX
aXRoVGlsZXNJZk5lZWRlZCgpCit7CisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZp
c2libGVSZWN0KCk7CisgICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50
LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdl
ID0gbV90cmFqZWN0b3J5VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgfHwgbV92
aXNpYmxlUmVjdCAhPSB2aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKKyAgICBpZiAoZGlk
Q2hhbmdlIHx8IG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsK
K30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50c0RpcnR5UmVjdCkKK3sKKyAgICBJbnRSZWN0IGRpcnR5UmVjdChtYXBGcm9tQ29udGVu
dHMoY29udGVudHNEaXJ0eVJlY3QpKTsKKyAgICBJbnRSZWN0IGtlZXBSZWN0Rml0VG9UaWxlU2l6
ZSA9IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZUZvclBvaW50KG1fa2VlcFJl
Y3QubG9jYXRpb24oKSkpOworICAgIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZS51bml0ZSh0aWxlUmVj
dEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KG1f
a2VlcFJlY3QpKSkpOworCisgICAgLy8gT25seSBpdGVyYXRlIG9uIHRoZSBwYXJ0IG9mIHRoZSBy
ZWN0IHRoYXQgd2Uga25vdyB3ZSBtaWdodCBoYXZlIHRpbGVzLgorICAgIEludFJlY3QgY292ZXJl
ZERpcnR5UmVjdCA9IGludGVyc2VjdGlvbihkaXJ0eVJlY3QsIGtlZXBSZWN0Rml0VG9UaWxlU2l6
ZSk7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2lu
dChjb3ZlcmVkRGlydHlSZWN0LmxvY2F0aW9uKCkpOworICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90
dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQoY292ZXJl
ZERpcnR5UmVjdCkpOworCisgICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0LnkoKTsg
eUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7CisgICAgICAg
IGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRlIDw9IGJvdHRv
bVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbGU+IGN1
cnJlbnRUaWxlID0gdGlsZUF0KFRpbGU6OkNvb3JkaW5hdGUoeENvb3JkaW5hdGUsIHlDb29yZGlu
YXRlKSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRUaWxlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgLy8gUGFzcyB0aGUgZnVsbCByZWN0IHRvIGVhY2ggdGlsZSBh
cyBjb3ZlcmVkRGlydHlSZWN0IG1pZ2h0IG5vdAorICAgICAgICAgICAgLy8gY29udGFpbiB0aGVt
IGNvbXBsZXRlbHkgYW5kIHdlIGRvbid0IHdhbnQgcGFydGlhbCB0aWxlIHJlZHJhd3MuCisgICAg
ICAgICAgICBjdXJyZW50VGlsZS0+aW52YWxpZGF0ZShkaXJ0eVJlY3QpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCit7
CisgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOworCisgICAgVmVj
dG9yPEludFJlY3Q+IHBhaW50ZWRBcmVhOworICAgIFZlY3RvcjxSZWZQdHI8VGlsZT4gPiBkaXJ0
eVRpbGVzOworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKKyAgICAg
ICAgaWYgKCF0aWxlLT5pc0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ZGlydHlUaWxlcy5hcHBlbmQodGlsZSk7CisgICAgfQorCisgICAgaWYgKGRpcnR5VGlsZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKHBh
aW50ZWRBcmVhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJbiBz
aW5nbGUgdGhyZWFkZWQgY2FzZSwgdGlsZSBiYWNrIGJ1ZmZlcnMgY291bGQgYmUgdXBkYXRlZCBh
c3luY2hyb25vdXNseSAKKyAgICAvLyBvbmUgYnkgb25lIGFuZCB0aGVuIHN3YXBwZWQgdG8gZnJv
bnQgaW4gb25lIGdvLiBUaGlzIHdvdWxkIG1pbmltaXplIHRoZSB0aW1lIHNwZW50CisgICAgLy8g
YmxvY2tpbmcgb24gdGlsZSB1cGRhdGVzLgorICAgIHVuc2lnbmVkIHNpemUgPSBkaXJ0eVRpbGVz
LnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgKytuKSB7CisgICAg
ICAgIFZlY3RvcjxJbnRSZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0eVRpbGVzW25dLT51cGRhdGVC
YWNrQnVmZmVyKCk7CisgICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3RvcihwYWludGVkUmVj
dHMpOworICAgICAgICBkaXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKKyAg
ICB9CisKKyAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChwYWludGVkQXJl
YSk7Cit9CisKK0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6OnZpc2libGVSZWN0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9y
ZVZpc2libGVSZWN0KCkpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb250ZW50
c1NjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIGlmIChzY2FsZSA9PSBtX2NvbnRlbnRzU2NhbGUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOworICAgIG1f
dGlsZXMuY2xlYXIoKTsKKyAgICBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7Cit9CisKK2RvdWJs
ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0
LCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkgY29uc3QKK3sKKyAgICBp
ZiAodmlld3BvcnQuaW50ZXJzZWN0cyh0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5h
dGUpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBJbnRQb2ludCB2aWV3Q2VudGVyID0gdmll
d3BvcnQubG9jYXRpb24oKSArIEludFNpemUodmlld3BvcnQud2lkdGgoKSAvIDIsIHZpZXdwb3J0
LmhlaWdodCgpIC8gMik7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSBjZW50ZXJDb29yZGluYXRlID0g
dGlsZUNvb3JkaW5hdGVGb3JQb2ludCh2aWV3Q2VudGVyKTsKKworICAgIHJldHVybiBzdGQ6Om1h
eChhYnMoY2VudGVyQ29vcmRpbmF0ZS55KCkgLSB0aWxlQ29vcmRpbmF0ZS55KCkpLCBhYnMoY2Vu
dGVyQ29vcmRpbmF0ZS54KCkgLSB0aWxlQ29vcmRpbmF0ZS54KCkpKTsKK30KKworLy8gUmV0dXJu
cyBhIHJhdGlvIGJldHdlZW4gMC4wZiBhbmQgMS4wZiBvZiB0aGUgc3VyZmFjZSBvZiBjb250ZW50
c1JlY3QgY292ZXJlZCBieSByZW5kZXJlZCB0aWxlcy4KK2Zsb2F0IFRpbGVkQmFja2luZ1N0b3Jl
Ojpjb3ZlcmFnZVJhdGlvKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvbnRlbnRzUmVjdCkgY29u
c3QKK3sKKyAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IG1hcEZyb21Db250ZW50cyhjb250ZW50c1Jl
Y3QpOworICAgIGZsb2F0IHJlY3RBcmVhID0gZGlydHlSZWN0LndpZHRoKCkgKiBkaXJ0eVJlY3Qu
aGVpZ2h0KCk7CisgICAgZmxvYXQgY292ZXJBcmVhID0gMC4wZjsKKworICAgIFRpbGU6OkNvb3Jk
aW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoZGlydHlSZWN0LmxvY2F0aW9u
KCkpOworICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZv
clBvaW50KGlubmVyQm90dG9tUmlnaHQoZGlydHlSZWN0KSk7CisKKyAgICBmb3IgKGludCB5Q29v
cmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsr
eUNvb3JkaW5hdGUpIHsKKyAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0Lngo
KTsgeENvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7CisgICAg
ICAgICAgICBUaWxlOjpDb29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5
Q29vcmRpbmF0ZSk7CisgICAgICAgICAgICBSZWZQdHI8VGlsZT4gY3VycmVudFRpbGUgPSB0aWxl
QXQoY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRUaWxlICYmIGN1
cnJlbnRUaWxlLT5pc1JlYWR5VG9QYWludCgpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBj
b3ZlclJlY3QgPSBpbnRlcnNlY3Rpb24oZGlydHlSZWN0LCBjdXJyZW50VGlsZS0+cmVjdCgpKTsK
KyAgICAgICAgICAgICAgICBjb3ZlckFyZWEgKz0gY292ZXJSZWN0LndpZHRoKCkgKiBjb3ZlclJl
Y3QuaGVpZ2h0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGNvdmVyQXJlYSAvIHJlY3RBcmVhOworfQorCitib29sIFRpbGVkQmFja2luZ1N0b3JlOjp2aXNp
YmxlQXJlYUlzQ292ZXJlZCgpIGNvbnN0Cit7CisgICAgSW50UmVjdCBib3VuZGVkVmlzaWJsZUNv
bnRlbnRzUmVjdCA9IGludGVyc2VjdGlvbihtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVWaXNp
YmxlUmVjdCgpLCBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Cisg
ICAgcmV0dXJuIGNvdmVyYWdlUmF0aW8oYm91bmRlZFZpc2libGVDb250ZW50c1JlY3QpID09IDEu
MGY7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKK3sKKyAgICAv
LyBVcGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgZ2VvbWV0cnkuCisgICAgY29uc3QgSW50UmVjdCBw
cmV2aW91c1JlY3QgPSBtX3JlY3Q7CisgICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xp
ZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBtX3RyYWplY3RvcnlW
ZWN0b3IgPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOworICAgIG1fdmlzaWJsZVJlY3QgPSB2
aXNpYmxlUmVjdCgpOworCisgICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0
Q292ZXJSZWN0KEludFJlY3QoKSk7CisgICAgICAgIHNldEtlZXBSZWN0KEludFJlY3QoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBXZSBtdXN0IGNvbXB1dGUgY292ZXIgYW5k
IGtlZXAgcmVjdHMgdXNpbmcgdGhlIHZpc2libGVSZWN0LCBpbnN0ZWFkIG9mIHRoZSByZWN0IGlu
dGVyc2VjdGluZyB0aGUgdmlzaWJsZVJlY3Qgd2l0aCBtX3JlY3QsCisgICAgICogYmVjYXVzZSBU
QlMgY2FuIGJlIHVzZWQgYXMgYSBiYWNraW5nIHN0b3JlIG9mIEdyYXBoaWNzTGF5ZXIgYW5kIHRo
ZSB2aXNpYmxlIHJlY3QgdXN1YWxseSBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCBtX3JlY3QuCisg
ICAgICogSW4gdGhlIGJlbG93IGNhc2UsIHRoZSBpbnRlcnNlY3RpbmcgcmVjdCBpcyBhbiBlbXB0
eS4KKyAgICAgKgorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgICAgICAg
ICAgICAgfAorICAgICAqICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICB8ICAgICAgICstLS0t
LS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgICAgIHwgSEVSRSAgfCAg
Y292ZXIgb3Iga2VlcCAgICAgICAgfAorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKyAgICAgIHJl
Y3QgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAg
ICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUgfCAgICAgICAg
ICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAgICAgICAgfAor
ICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAorICAgICAq
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAqCisgICAgICogV2UgbXVzdCBj
cmVhdGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgorICAgICAqLworCisg
ICAgSW50UmVjdCBjb3ZlclJlY3Q7CisgICAgSW50UmVjdCBrZWVwUmVjdDsKKyAgICBjb21wdXRl
Q292ZXJBbmRLZWVwUmVjdChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKKwor
ICAgIHNldENvdmVyUmVjdChjb3ZlclJlY3QpOworICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsK
KworICAgIGlmIChjb3ZlclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBSZXNpemUgdGlsZXMgYXQgdGhlIGVkZ2UgaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBoYXMg
Y2hhbmdlZCwgYnV0IG9ubHkgZG8gc28KKyAgICAvLyBhZnRlciBoYXZpbmcgZHJvcHBlZCB0aWxl
cyBvdXRzaWRlIHRoZSBrZWVwIHJlY3QuCisgICAgYm9vbCBkaWRSZXNpemVUaWxlcyA9IGZhbHNl
OworICAgIGlmIChwcmV2aW91c1JlY3QgIT0gbV9yZWN0KQorICAgICAgICBkaWRSZXNpemVUaWxl
cyA9IHJlc2l6ZUVkZ2VUaWxlcygpOworCisgICAgLy8gU2VhcmNoIGZvciB0aGUgdGlsZSBwb3Np
dGlvbiBjbG9zZXN0IHRvIHRoZSB2aWV3cG9ydCBjZW50ZXIgdGhhdCBkb2VzIG5vdCB5ZXQgY29u
dGFpbiBhIHRpbGUuCisgICAgLy8gV2hpY2ggcG9zaXRpb24gaXMgY29uc2lkZXJlZCB0aGUgY2xv
c2VzdCBkZXBlbmRzIG9uIHRoZSB0aWxlRGlzdGFuY2UgZnVuY3Rpb24uCisgICAgZG91YmxlIHNo
b3J0ZXN0RGlzdGFuY2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7
CisgICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRpbGVzVG9DcmVhdGU7CisgICAgdW5zaWdu
ZWQgcmVxdWlyZWRUaWxlQ291bnQgPSAwOworCisgICAgLy8gQ292ZXIgYXJlYXMgKGluIHRpbGVz
KSB3aXRoIG1pbmltdW0gZGlzdGFuY2UgZnJvbSB0aGUgdmlzaWJsZSByZWN0LiBJZiB0aGUgdmlz
aWJsZSByZWN0IGlzCisgICAgLy8gbm90IGNvdmVyZWQgYWxyZWFkeSBpdCB3aWxsIGJlIGNvdmVy
ZWQgZmlyc3QgaW4gb25lIGdvLCBkdWUgdG8gdGhlIGRpc3RhbmNlIGJlaW5nIDAgZm9yIHRpbGVz
CisgICAgLy8gaW5zaWRlIHRoZSB2aXNpYmxlIHJlY3QuCisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0
b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb3ZlclJlY3QubG9jYXRpb24oKSk7Cisg
ICAgVGlsZTo6Q29vcmRpbmF0ZSBib3R0b21SaWdodCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQo
aW5uZXJCb3R0b21SaWdodChjb3ZlclJlY3QpKTsKKyAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9
IHRvcExlZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5h
dGUpIHsKKyAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3Jk
aW5hdGUgPD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7CisgICAgICAgICAgICBU
aWxlOjpDb29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0
ZSk7CisgICAgICAgICAgICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7CisgICAg
ICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3Vy
cmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0
YW5jZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChkaXN0YW5j
ZSA8IHNob3J0ZXN0RGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICB0aWxlc1RvQ3JlYXRlLmNs
ZWFyKCk7CisgICAgICAgICAgICAgICAgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdGlsZXNUb0NyZWF0ZS5hcHBlbmQoY3VycmVudENvb3Jk
aW5hdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGNvbnN0cnVjdCB0aGUgdGls
ZShzKSB3aXRoaW4gdGhlIHNob3J0ZXN0IGRpc3RhbmNlLgorICAgIHVuc2lnbmVkIHRpbGVzVG9D
cmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbiA9
IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgeworICAgICAgICBUaWxlOjpDb29yZGlu
YXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOworICAgICAgICBzZXRUaWxlKGNvb3Jk
aW5hdGUsIG1fYmFja2VuZC0+Y3JlYXRlVGlsZSh0aGlzLCBjb29yZGluYXRlKSk7CisgICAgfQor
ICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsKKworICAgIC8vIFBh
aW50IHRoZSBjb250ZW50IG9mIHRoZSBuZXdseSBjcmVhdGVkIHRpbGVzIG9yIHJlc2l6ZWQgdGls
ZXMuCisgICAgaWYgKHRpbGVzVG9DcmVhdGVDb3VudCB8fCBkaWRSZXNpemVUaWxlcykKKyAgICAg
ICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKKworICAgIC8vIFJlLWNhbGwgY3JlYXRlVGlsZXMgb24g
YSB0aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5ld2VzdCBzaG9ydGVz
dCBkaXN0YW5jZS4KKyAgICBtX3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJlZFRpbGVDb3Vu
dDsKKyAgICBpZiAobV9wZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAgICBtX2NsaWVudC0+dGls
ZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCk7Cit9CisKK3ZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdAor
eworICAgIEludFJlY3QgYm91bmRzID0gbV9yZWN0OworICAgIEludFNpemUgY2FuZGlkYXRlU2l6
ZSA9IHJlY3Quc2l6ZSgpOworCisgICAgcmVjdC5pbnRlcnNlY3QoYm91bmRzKTsKKworICAgIGlm
IChyZWN0LnNpemUoKSA9PSBjYW5kaWRhdGVTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICAv
KgorICAgICAqIEluIHRoZSBmb2xsb3dpbmcgY2FzZSwgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9u
IG9mIHRoZSBjb250ZW50cyByZWN0IGFuZCB0aGUgY292ZXIgcmVjdC4KKyAgICAgKiBUaHVzIHRo
ZSBsYXR0ZXIgc2hvdWxkIG5vdCBiZSBpbmZsYXRlZC4KKyAgICAgKgorICAgICAqICArLS0tLS0t
LS0tLS0tLS0tKworICAgICAqICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICArLS0tLS0tLS0t
LS0tLS0tKworICAgICAqCisgICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICogICAgICAgICAgfCAgICAgICAgICBjb3ZlciByZWN0ICAgICAgICAg
ICB8CisgICAgICogICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8Cisg
ICAgICogICAgICAgICAgfCAgICAgICAgIHwgdmlzaWJsZSB8ICAgICAgICAgICB8CisgICAgICog
ICAgICAgICAgfCAgICAgICAgIHwgIHJlY3QgICB8ICAgICAgICAgICB8CisgICAgICogICAgICAg
ICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8CisgICAgICogICAgICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICovCisgICAgaWYgKHJlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUcnkgdG8gY3JlYXRlIGEgY292ZXIg
cmVjdCBvZiB0aGUgc2FtZSBzaXplIGFzIHRoZSBjYW5kaWRhdGUsIGJ1dCB3aXRoaW4gY29udGVu
dCBib3VuZHMuCisgICAgaW50IHBpeGVsc0NvdmVyZWQgPSBjYW5kaWRhdGVTaXplLndpZHRoKCkg
KiBjYW5kaWRhdGVTaXplLmhlaWdodCgpOworCisgICAgaWYgKHJlY3Qud2lkdGgoKSA8IGNhbmRp
ZGF0ZVNpemUud2lkdGgoKSkKKyAgICAgICAgcmVjdC5pbmZsYXRlWSgoKHBpeGVsc0NvdmVyZWQg
LyByZWN0LndpZHRoKCkpIC0gcmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAgICBpZiAocmVjdC5oZWln
aHQoKSA8IGNhbmRpZGF0ZVNpemUuaGVpZ2h0KCkpCisgICAgICAgIHJlY3QuaW5mbGF0ZVgoKChw
aXhlbHNDb3ZlcmVkIC8gcmVjdC5oZWlnaHQoKSkgLSByZWN0LndpZHRoKCkpIC8gMik7CisKKyAg
ICByZWN0LmludGVyc2VjdChib3VuZHMpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpj
b21wdXRlQ292ZXJBbmRLZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgSW50UmVj
dCYgY292ZXJSZWN0LCBJbnRSZWN0JiBrZWVwUmVjdCkgY29uc3QKK3sKKyAgICBjb3ZlclJlY3Qg
PSB2aXNpYmxlUmVjdDsKKyAgICBrZWVwUmVjdCA9IHZpc2libGVSZWN0OworCisgICAgLy8gSWYg
d2UgY292ZXIgbW9yZSB0aGF0IHRoZSBhY3R1YWwgdmlld3BvcnQgd2UgY2FuIGJlIHNtYXJ0IGFi
b3V0IHdoaWNoIHRpbGVzIHdlIGNob29zZSB0byByZW5kZXIuCisgICAgaWYgKG1fY292ZXJBcmVh
TXVsdGlwbGllciA+IDEpIHsKKyAgICAgICAgLy8gVGhlIGluaXRpYWwgY292ZXIgYXJlYSBjb3Zl
cnMgZXF1YWxseSBpbiBlYWNoIGRpcmVjdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlckFyZWFN
dWx0aXBsaWVyLgorICAgICAgICBjb3ZlclJlY3QuaW5mbGF0ZVgodmlzaWJsZVJlY3Qud2lkdGgo
KSAqIChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAgICAgICBjb3ZlclJlY3Qu
aW5mbGF0ZVkodmlzaWJsZVJlY3QuaGVpZ2h0KCkgKiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0g
MSkgLyAyKTsKKyAgICAgICAga2VlcFJlY3QgPSBjb3ZlclJlY3Q7CisKKyAgICAgICAgaWYgKG1f
dHJhamVjdG9yeVZlY3RvciAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKKyAgICAgICAgICAgIC8v
IEEgbnVsbCB0cmFqZWN0b3J5IHZlY3RvciAobm8gbW90aW9uKSBtZWFucyB0aGF0IHRpbGVzIGZv
ciB0aGUgY292ZXJBcmVhIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgIC8vIEEgbm9uLW51
bGwgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBzaHJpbmsgdGhlIGNvdmVyZWQgcmVjdCB0byB2aXNp
YmxlUmVjdCBwbHVzIGl0cyBleHBhbnNpb24gZnJvbSBpdHMKKyAgICAgICAgICAgIC8vIGNlbnRl
ciB0b3dhcmQgdGhlIGNvdmVyIGFyZWEgZWRnZXMgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZ2l2
ZW4gdmVjdG9yLgorCisgICAgICAgICAgICAvLyBFLmcuIGlmIHZpc2libGVSZWN0ID09ICgxMCwx
MCk1eDUgYW5kIGNvdmVyQXJlYU11bHRpcGxpZXIgPT0gMy4wOgorICAgICAgICAgICAgLy8gYSAo
MCwwKSB0cmFqZWN0b3J5IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBpbnRlcnNlY3RpbmcgKDUs
NSkxNXgxNSwKKyAgICAgICAgICAgIC8vIGEgKDEsMCkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBj
cmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICgxMCwxMCkxMHg1LAorICAgICAgICAgICAgLy8gYW5k
IGEgKDEsMSkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5n
ICgxMCwxMCkxMHgxMC4KKworICAgICAgICAgICAgLy8gTXVsdGlwbHkgdGhlIHZlY3RvciBieSB0
aGUgZGlzdGFuY2UgdG8gdGhlIGVkZ2Ugb2YgdGhlIGNvdmVyIGFyZWEuCisgICAgICAgICAgICBm
bG9hdCB0cmFqZWN0b3J5VmVjdG9yTXVsdGlwbGllciA9IChtX2NvdmVyQXJlYU11bHRpcGxpZXIg
LSAxKSAvIDI7CisKKyAgICAgICAgICAgIC8vIFVuaXRlIHRoZSB2aXNpYmxlIHJlY3Qgd2l0aCBh
ICJnaG9zdCIgb2YgdGhlIHZpc2libGUgcmVjdCBtb3ZlZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRo
ZSB0cmFqZWN0b3J5IHZlY3Rvci4KKyAgICAgICAgICAgIGNvdmVyUmVjdCA9IHZpc2libGVSZWN0
OworICAgICAgICAgICAgY292ZXJSZWN0Lm1vdmUoY292ZXJSZWN0LndpZHRoKCkgKiBtX3RyYWpl
Y3RvcnlWZWN0b3IueCgpICogdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIsCisgICAgICAgICAg
ICAgICAgY292ZXJSZWN0LmhlaWdodCgpICogbV90cmFqZWN0b3J5VmVjdG9yLnkoKSAqIHRyYWpl
Y3RvcnlWZWN0b3JNdWx0aXBsaWVyKTsKKworICAgICAgICAgICAgY292ZXJSZWN0LnVuaXRlKHZp
c2libGVSZWN0KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoa2VlcFJlY3QuY29udGFpbnMo
Y292ZXJSZWN0KSk7CisgICAgfQorCisgICAgYWRqdXN0Rm9yQ29udGVudHNSZWN0KGNvdmVyUmVj
dCk7CisKKyAgICAvLyBUaGUga2VlcCByZWN0IGlzIGFuIGluZmxhdGVkIHZlcnNpb24gb2YgdGhl
IGNvdmVyIHJlY3QsIGluZmxhdGVkIGluIHRpbGUgZGltZW5zaW9ucy4KKyAgICBrZWVwUmVjdC51
bml0ZShjb3ZlclJlY3QpOworICAgIGtlZXBSZWN0LmluZmxhdGVYKG1fdGlsZVNpemUud2lkdGgo
KSAvIDIpOworICAgIGtlZXBSZWN0LmluZmxhdGVZKG1fdGlsZVNpemUuaGVpZ2h0KCkgLyAyKTsK
KyAgICBrZWVwUmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKKworICAgIEFTU0VSVChjb3ZlclJlY3Qu
aXNFbXB0eSgpIHx8IGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVjdCkpOworfQorCitib29sIFRp
bGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKQoreworICAgIGJvb2wgd2FzUmVzaXpl
ZCA9IGZhbHNlOworICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRlPiB0aWxlc1RvUmVtb3ZlOwor
ICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKKyAgICAgICAgVGlsZTo6
Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IHRpbGUtPmNvb3JkaW5hdGUoKTsKKyAgICAgICAg
SW50UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKKyAgICAgICAgSW50UmVjdCBleHBlY3Rl
ZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlKTsKKyAgICAg
ICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgdGlsZXNUb1Jl
bW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOworICAgICAgICBlbHNlIGlmIChleHBlY3RlZFRp
bGVSZWN0ICE9IHRpbGVSZWN0KSB7CisgICAgICAgICAgICB0aWxlLT5yZXNpemUoZXhwZWN0ZWRU
aWxlUmVjdC5zaXplKCkpOworICAgICAgICAgICAgd2FzUmVzaXplZCA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgdW5zaWduZWQgcmVtb3ZlQ291bnQgPSB0aWxlc1RvUmVtb3ZlLnNpemUo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3ZlQ291bnQ7ICsrbikKKyAgICAg
ICAgcmVtb3ZlVGlsZSh0aWxlc1RvUmVtb3ZlW25dKTsKKyAgICByZXR1cm4gd2FzUmVzaXplZDsK
K30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJlY3QoY29uc3QgSW50UmVjdCYg
a2VlcFJlY3QpCit7CisgICAgLy8gRHJvcCB0aWxlcyBvdXRzaWRlIHRoZSBuZXcga2VlcFJlY3Qu
CisKKyAgICBGbG9hdFJlY3Qga2VlcFJlY3RGID0ga2VlcFJlY3Q7CisKKyAgICBWZWN0b3I8VGls
ZTo6Q29vcmRpbmF0ZT4gdG9SZW1vdmU7CisgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52
YWx1ZXMoKSkgeworICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlLT5j
b29yZGluYXRlKCk7CisgICAgICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsK
KyAgICAgICAgaWYgKCF0aWxlUmVjdC5pbnRlcnNlY3RzKGtlZXBSZWN0RikpCisgICAgICAgICAg
ICB0b1JlbW92ZS5hcHBlbmQoY29vcmRpbmF0ZSk7CisgICAgfQorICAgIHVuc2lnbmVkIHJlbW92
ZUNvdW50ID0gdG9SZW1vdmUuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBy
ZW1vdmVDb3VudDsgKytuKQorICAgICAgICByZW1vdmVUaWxlKHRvUmVtb3ZlW25dKTsKKworICAg
IG1fa2VlcFJlY3QgPSBrZWVwUmVjdDsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVt
b3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKK3sKKyAgICBJbnRSZWN0IGJvdW5kZWRWaXNpYmxlUmVj
dCA9IG1hcEZyb21Db250ZW50cyhpbnRlcnNlY3Rpb24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0
b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0
KCkpKTsKKyAgICBzZXRLZWVwUmVjdChib3VuZGVkVmlzaWJsZVJlY3QpOworfQorCitQYXNzUmVm
UHRyPFRpbGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQXQoY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYgY29vcmRpbmF0ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aWxlcy5nZXQoY29vcmRpbmF0
ZSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGUoY29uc3QgVGlsZTo6Q29v
cmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKQoreworICAgIG1fdGls
ZXMuc2V0KGNvb3JkaW5hdGUsIHRpbGUpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpy
ZW1vdmVUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUpCit7CisgICAgbV90
aWxlcy5yZW1vdmUoY29vcmRpbmF0ZSk7Cit9CisKK0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6
Om1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QocmVjdC54KCkgLyBtX2NvbnRlbnRzU2NhbGUsCisg
ICAgICAgIHJlY3QueSgpIC8gbV9jb250ZW50c1NjYWxlLAorICAgICAgICByZWN0LndpZHRoKCkg
LyBtX2NvbnRlbnRzU2NhbGUsCisgICAgICAgIHJlY3QuaGVpZ2h0KCkgLyBtX2NvbnRlbnRzU2Nh
bGUpKTsKK30KKworSW50UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6bWFwRnJvbUNvbnRlbnRzKGNv
bnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qo
RmxvYXRSZWN0KHJlY3QueCgpICogbV9jb250ZW50c1NjYWxlLAorICAgICAgICByZWN0LnkoKSAq
IG1fY29udGVudHNTY2FsZSwKKyAgICAgICAgcmVjdC53aWR0aCgpICogbV9jb250ZW50c1NjYWxl
LAorICAgICAgICByZWN0LmhlaWdodCgpICogbV9jb250ZW50c1NjYWxlKSk7Cit9CisKK0ludFJl
Y3QgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBUaWxlOjpD
b29yZGluYXRlJiBjb29yZGluYXRlKSBjb25zdAoreworICAgIEludFJlY3QgcmVjdChjb29yZGlu
YXRlLngoKSAqIG1fdGlsZVNpemUud2lkdGgoKSwgY29vcmRpbmF0ZS55KCkgKiBtX3RpbGVTaXpl
LmhlaWdodCgpLCBtX3RpbGVTaXplLndpZHRoKCksIG1fdGlsZVNpemUuaGVpZ2h0KCkpOworCisg
ICAgcmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKKyAgICByZXR1cm4gcmVjdDsKK30KKworVGlsZTo6
Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25z
dCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaW50IHggPSBwb2ludC54KCkgLyBtX3Rp
bGVTaXplLndpZHRoKCk7CisgICAgaW50IHkgPSBwb2ludC55KCkgLyBtX3RpbGVTaXplLmhlaWdo
dCgpOworICAgIHJldHVybiBUaWxlOjpDb29yZGluYXRlKHN0ZDo6bWF4KHgsIDApLCBzdGQ6Om1h
eCh5LCAwKSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFN1cHBvcnRzQWxwaGEo
Ym9vbCBhKQoreworICAgIGlmIChhID09IG1fc3VwcG9ydHNBbHBoYSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fc3VwcG9ydHNBbHBoYSA9IGE7CisgICAgaW52YWxpZGF0ZShtX3JlY3QpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZWNmMTEzMTllMWU2OGU5MWQwOWEwNmIyMzhkNTc5NjMyYmFhY2Y1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZWRC
YWNraW5nU3RvcmVfaAorI2RlZmluZSBUaWxlZEJhY2tpbmdTdG9yZV9oCisKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAi
SW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiVGlsZS5oIgorI2lu
Y2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKK2NsYXNzIFRpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50OworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGlsZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCos
IHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+KTsKKyAgICB+VGlsZWRC
YWNraW5nU3RvcmUoKTsKKworICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7
IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0
IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKworICAg
IGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KKyAgICB2
b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworCisgICAgdm9pZCB1cGRhdGVUaWxlQnVmZmVy
cygpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisK
KyAgICBJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQorICAgIHZvaWQg
c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpOworCisgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRz
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25z
dCBJbnRSZWN0JikgY29uc3Q7CisKKyAgICBJbnRSZWN0IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShj
b25zdCBUaWxlOjpDb29yZGluYXRlJikgY29uc3Q7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxl
Q29vcmRpbmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgZG91YmxlIHRp
bGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYpIGNvbnN0OworCisgICAgSW50UmVjdCBjb3ZlclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Nv
dmVyUmVjdDsgfQorICAgIGJvb2wgdmlzaWJsZUFyZWFJc0NvdmVyZWQoKSBjb25zdDsKKyAgICB2
b2lkIHJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpOworCisgICAgdm9pZCBzZXRTdXBwb3J0c0Fs
cGhhKGJvb2wpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlVGlsZXMoKTsKKyAgICB2b2lk
IGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRS
ZWN0JiBjb3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25zdDsKKworICAgIGJvb2wgcmVz
aXplRWRnZVRpbGVzKCk7CisgICAgdm9pZCBzZXRDb3ZlclJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkgeyBtX2NvdmVyUmVjdCA9IHJlY3Q7IH0KKyAgICB2b2lkIHNldEtlZXBSZWN0KGNvbnN0IElu
dFJlY3QmKTsKKworICAgIFBhc3NSZWZQdHI8VGlsZT4gdGlsZUF0KGNvbnN0IFRpbGU6OkNvb3Jk
aW5hdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYs
IFBhc3NSZWZQdHI8VGlsZT4pOworICAgIHZvaWQgcmVtb3ZlVGlsZShjb25zdCBUaWxlOjpDb29y
ZGluYXRlJik7CisKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Q7CisKKyAgICBmbG9h
dCBjb3ZlcmFnZVJhdGlvKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIGFkanVzdEZv
ckNvbnRlbnRzUmVjdChJbnRSZWN0JikgY29uc3Q7CisKKyAgICB2b2lkIHBhaW50Q2hlY2tlclBh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRpbGU6OkNvb3Jk
aW5hdGUmKTsKKworcHJpdmF0ZToKKyAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogbV9jbGll
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gbV9iYWNr
ZW5kOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFRpbGU6OkNvb3JkaW5hdGUsIFJlZlB0cjxUaWxl
PiA+IFRpbGVNYXA7CisgICAgVGlsZU1hcCBtX3RpbGVzOworCisgICAgSW50U2l6ZSBtX3RpbGVT
aXplOworICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsKKworICAgIEZsb2F0UG9pbnQg
bV90cmFqZWN0b3J5VmVjdG9yOworICAgIEZsb2F0UG9pbnQgbV9wZW5kaW5nVHJhamVjdG9yeVZl
Y3RvcjsKKyAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CisKKyAgICBJbnRSZWN0IG1fY292ZXJS
ZWN0OworICAgIEludFJlY3QgbV9rZWVwUmVjdDsKKyAgICBJbnRSZWN0IG1fcmVjdDsKKworICAg
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKworICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOworICAg
IGJvb2wgbV9wZW5kaW5nVGlsZUNyZWF0aW9uOworCisgICAgZnJpZW5kIGNsYXNzIFRpbGU7Cit9
OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk0YmY3MWJmOGNmMTU2ODUy
YWYwNTI2OTAxNjQ0YWQ3ZWQ4NTMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUJh
Y2tlbmQuaApAQCAtMCwwICsxLDQzIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmRfaAorI2RlZmluZSBUaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmRfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
CisjaW5jbHVkZSAiVGlsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbGVk
QmFja2luZ1N0b3JlOworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgflRpbGVkQmFja2lu
Z1N0b3JlQmFja2VuZCgpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaWxlPiBjcmVhdGVU
aWxlKFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDlmMDg0OTIzNjc1OGJiNzM1OTFjZDIyODk3ODA1YjJjMDc5ZGM1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50X2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnRfaAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKK2NsYXNzIENvbG9y
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFp
bnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KKyAg
ICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7Cisg
ICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0
ID0gMDsKK307CisKKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAzODQyMjEyNDNkY2Zj
YmNlZTRkNzA2YTM0MWY5ZTI3NTg0NTdlZDA4Li4xNjAwOWQxMGY3Y2VmZTM4NzYxZjFjNTYxY2Y0
MjVlZWI3ZGY4YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTM0LDEwICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgLy8g
dG8gZG8gYW4gZWFnZXIgbGF5b3V0IGJlZm9yZSB0aGUgZHJhd2luZy4KICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKIAotI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CmluZGV4IDljNzFmOTE4ZGU0ZjMxZWExZWZiOGRjNTc1YTM2OGRhMjRlOTAzMmYuLmNhNTFiZDNh
ZTMxOGJkMDJkYTNkNDI2Y2YyYzk5NzM4OGQ5MThmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlKGNvbnN0IENvb3JkaW4KICAgICB9KTsKIAogICAgIHVwZGF0ZVZpZXdwb3J0KCk7
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLmRpZFJlbmRlckZyYW1lKGdyYXBo
aWNzU3RhdGUuY29udGVudHNTaXplLCBncmFwaGljc1N0YXRlLmNvdmVyZWRSZWN0KTsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDk0NGZlNmQ0ZWRkNGEwMGQ4NmYwMDIy
N2JkY2QxMGNkM2I0YWZjZjUuLmI3OTZmMmMxOGRmODZhZjJiYWRkNzlkYjIxMTc3NTRmNTYwMTA0
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0JiBzY3JvbGxSZQogICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2Nyb2xsKGludGVy
c2VjdGlvbihzY3JvbGxSZWN0LCBjbGlwUmVjdCksIHNjcm9sbERlbHRhKTsKIH0KIAotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9p
bnQmIHNjcm9sbE9mZnNldCkKIHsKICAgICBtX3BhZ2UtPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHNj
cm9sbE9mZnNldCk7CkBAIC05NTgsNyArOTU4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRp
c3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnQK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9wYWdlLT52aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFu
Z2Uodmlld3BvcnRBcmd1bWVudHMpOwogI2VuZGlmCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9wYWdlLT51c2VG
aXhlZExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IGZmZjQ5YjM3MjI3ZmVlODkxYzYzYjU2M2Y2YWQyYWU3MTNlYTFmM2IuLjg0NTk0NThmYWNjMWVk
NjVkNjM4ZGYwMjZmODNjMmMyZWU5ZTkwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTEy
LDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50
c0FuZFJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOwotI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGY0NmM3
MDdlNGFiYmI0MWEzOTUyMDQ0YTMxMTEzMzJiMDNiMWZmYmUuLjMxNjhjMDg5MTJlZDNkOTZmNGQ2
NmExZGVkMTUxZWVjNTNiYzc1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogICAgICAgICB9CiAjZW5kaWYK
IAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICAgICAgLy8gTWFrZSBzdXJlIHZpZXdwb3J0IHByb3BlcnRpZXMgYXJlIGRpc3Bh
dGNoZWQgb24gdGhlIG1haW4gZnJhbWUgYnkgdGhlIHRpbWUgdGhlIGZpcnN0IGxheW91dCBoYXBw
ZW5zLgogICAgICAgICBBU1NFUlQoIXdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkgfHwgbV9mcmFt
ZSAhPSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJGcmFtZSgpIHx8IG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT5kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoKSk7
CiAjZW5kaWYKQEAgLTEyNTAsNyArMTI1MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGJvb2wgc2hvdWxkSGlkZVNj
cm9sbGJhcnMgPSBzaG91bGRVc2VGaXhlZExheW91dCB8fCBzaG91bGREaXNhYmxlU2Nyb2xsaW5n
OwogICAgIEludFJlY3QgZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7CiAKLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIGZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QoKTsKICNlbmRpZgpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKHdlYlBhZ2Ut
PnNjcm9sbFBpbm5pbmdCZWhhdmlvcigpICE9IERvTm90UGluKQogICAgICAgICBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+dmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Iod2ViUGFnZS0+c2Ny
b2xsUGlubmluZ0JlaGF2aW9yKCkpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChzaG91bGRVc2VGaXhlZExheW91
dCkgewogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXREZWxlZ2F0ZXNT
Y3JvbGxpbmcoc2hvdWxkVXNlRml4ZWRMYXlvdXQpOwogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhzaG91bGRVc2VGaXhlZExheW91
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNWQwYWI2NmFjNWUzNzIzMWIyNGUzNTBmMzVhNzIzZDdmNGJhMzYxMC4uMjNjODQ2OWQzYTU2
ZGI0NGVkNDI1MDk0OTlkYzMxZDRhMTI5ZWE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTIwNSwxMyArMTIwNSwxMyBAQCB2b2lkIFdl
YlBhZ2U6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCiAgICAgCiAg
ICAgbV92aWV3U2l6ZSA9IHZpZXdTaXplOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICh2aWV3LT51c2VGaXhlZExh
eW91dCgpKQogICAgICAgICBzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpOwogI2VuZGlm
CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiB2b2lkIFdlYlBhZ2U6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKG1fdXNlRml4ZWRMYXlvdXQpOwpAQCAtMTQ2
Myw3ICsxNDYzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVk
KQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQo
Zml4ZWQpOwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgJiYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKICAgICAvLyBEZWxlZ2F0ZWQgc2Nyb2xsaW5nIHdpbGwgYmUg
ZW5hYmxlZCB3aGVuIHRoZSBGcmFtZVZpZXcgaXMgY3JlYXRlZCBpZiBmaXhlZCBsYXlvdXQgaXMg
ZW5hYmxlZC4KICAgICAvLyBFbnN1cmUgd2UgZG9uJ3QgZG8gYW5pbWF0ZWQgc2Nyb2xsaW5nIGlu
IHRoZSBXZWJQcm9jZXNzIGluIHRoYXQgY2FzZS4KICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0
U2Nyb2xsQW5pbWF0b3JFbmFibGVkKCFmaXhlZCk7CkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlldy0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGZp
eGVkKTsKICAgICB2aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhmaXhlZCk7CiAjZW5kaWYK
QEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOwogfQogCi0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
dm9pZCBXZWJQYWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKQEAgLTIyNTUs
NyArMjI1NSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQoKQog
CiBpbmxpbmUgYm9vbCBXZWJQYWdlOjpjYW5IYW5kbGVVc2VyRXZlbnRzKCkgY29uc3QKIHsKLSNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgLy8gU2hvdWxkIGFwcGx5IG9ubHkgaWYgdGhlIGFyZWEgd2FzIGZyb3plbiBieSBkaWRT
dGFydFBhZ2VUcmFuc2l0aW9uKCkuCiAgICAgcmV0dXJuICFtX2RyYXdpbmdBcmVhLT5sYXllclRy
ZWVTdGF0ZUlzRnJvemVuKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZmM2FkMGJmOGIxOTU0NWNkZDM1ZGY2ZGUzOTRiY2NiZWMz
Y2ExNWIuLmQ2YzQ4ZjZkZGY3OTQ3MWVmMWMzNzRhNWJjMjQ5MzkwMmE5N2RhZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTQyLDcgKzU0Miw3
IEBAIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwogCiAgICAgdm9pZCBwYWdlRGlk
U2Nyb2xsKCk7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFu
Z2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDQ0NGEzYjNkZmQ4ZWFkMDAxOTY1MjY5ZmFl
MmEyZGEwYmEwNDJkMzAuLmNhY2I5OWQ5MzA1NjBjZTgyODk5YWVjZDY1ZTc3ZWZlYjYzMDA2Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0yMjgsNyArMjI4LDYgQEAgZW5kaWYgKCkKIGFkZF9k
ZWZpbml0aW9ucygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1M9MSkKIGFkZF9kZWZpbml0
aW9ucygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTPTEpCiBhZGRf
ZGVmaW5pdGlvbnMoLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEpCi1hZGRfZGVmaW5pdGlvbnMo
LURXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkU9MSkKIAogc2V0KFdURl9VU0VfM0RfR1JBUEhJ
Q1MgMSkKIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfM0RfR1JBUEhJQ1M9MSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggMTkwYzM4MDdhZDZiMzdmNTYyM2JkYzJmMjE3MDA1MDBmMDliMWZiNC4u
N2VmYjFhOTg5NzNkYzMyYzZlMTZjNjQzMmIxYTczMDc1MzljY2ZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTM4OSw3ICszODksNiBAQCBpZiAoKE9QRU5HTF9GT1VORCBPUiBPUEVOR0xFUzJf
Rk9VTkQpIEFORCAoR0xYX0ZPVU5EIE9SIEVHTF9GT1VORCkpCiAgICAgZW5kaWYgKCkKIAogICAg
IGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKLSAgICAgICAgYWRkX2RlZmluaXRpb25z
KC1EV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFPTEpCiAgICAgICAgIGFkZF9kZWZpbml0aW9u
cygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1M9MSkKICAgICAgICAgYWRkX2RlZmluaXRp
b25zKC1EV1RGX1VTRV9DT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRD0xKQogICAgIGVuZGlm
ICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NDg5NWI1ZTFlYzYyNGFiOTNiNWI0OGU4OWUyNGIxYzY0MTE4NjFlOS4uN2M0ZGU4M2ZhNjU2MmJh
YzZiOThkZDJiMmRjNjRjOWFhZWVhOTg1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAzLTI0ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRlZEdy
YXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFURURf
R1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnNo
b3VsZFVzZUZpeGVkTGF5b3V0KToKKwogMjAxNS0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIxODEyNTcpOiBXVEZfV29ya1F1
ZXVlLlNpbXBsZSBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA5MzhjMmI3YWIxMGU4N2JlYmVlYWYxMDljMTM4Y2FlNjY4YTEyMmQ2Li5mNDI4
MDhiMjVjZTg2MGRhMzEzYjc0MzkxZmUzODVjNTczOTI1YjYyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNzQyLDcgKzc0Miw3IEBAIHN0YXRpYyBib29s
IHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpICYm
IFBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIFBMQVRGT1JN
KEVGTCkKICAgICBpZiAodGVzdC51cmxDb250YWlucygic3RpY2t5LyIpIHx8IHRlc3QudXJsQ29u
dGFpbnMoInN0aWNreVxcIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjRlODY1NmM2ZWY4YjYyYmE3YTk1MDIw
ZWY1NDcxNTlhNTQwMWJjOS4uNTdhODY3Zjk3MzQzOTRkN2I1NWFiNzM3NWViMzk0ZmExMWEyYjRl
ZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTAzLTI0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisg
ICAgICAgIFtDb29yZGluYXRlZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1
YXJkIHdpdGggQ09PUkRJTkFURURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6IFJl
bW92ZWQgVElMRURfQkFDS0lOR19TVE9SRSBkZWZpbml0aW9uLgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlOiBEaXR0by4KKwogMjAxNS0wMy0yMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGEgY29u
ZmlndXJlIG9wdGlvbiB0byBidWlsZCB3aXRob3V0IFJlZGlyZWN0ZWQgWENvbXBvc2l0ZSBXaW5k
b3cK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251900</attachid>
            <date>2015-04-28 17:01:28 -0700</date>
            <delta_ts>2015-04-28 21:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143001-20150429090017.patch</filename>
            <type>text/plain</type>
            <size>93371</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5NjM0OWFiYWJiZmQ2
NjVkN2ZiN2Q1MDA2MDM2NzYxNDYwMjZmMy4uOGJjNTZkNjBjODU3YWY3NTk0NmRiYzMyMTYyMWRl
NDZkZWMwMTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTA0LTI4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRl
ZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFU
RURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRpbGVkQmFja2luZ1N0b3JlIGlzIG9ubHkgdXNlZCB3aXRoIENvb3JkaW5hdGVkIEdyYXBo
aWNzIHNpbmNlIFF0IGFuZCBXZWJLaXQxL0VmbCB3YXMgZHJvcHBlZC4KKyAgICAgICAgU28sIHRo
aXMgcGF0Y2ggcmVwbGFjZSBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgdG8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKSB0byBtZXJnZSB0aGVtLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGlz
IG1vdmVzIFRpbGVkQmFja2luZ1N0b3JlIGFuZCByZWxhdGVkIGZpbGVzIGZyb20gcGxhdGZvcm0g
dG8gcGxhdGZvcm0vdGV4bWFwL2Nvb3JkaW5hdGVkCisgICAgICAgIHdoZXJlIG90aGVyIGNvb3Jk
aW5hdGVkIGdyYXBoaWNzIGZpbGVzIGFyZSBsb2NhdGVkLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IE1vdmUgVGlsZWRCYWNraW5nU3RvcmUuY3BwIGJlY2F1c2UgdGhpcyBpcyBub3QgY29t
bW9uIGZpbGUuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgRm9sbG93IG5ldyBUaWxlZEJhY2tpbmdTdG9yZSouIEluIGFkZGl0aW9uLCBleGNs
dWRlIFRpbGVkQmFja2luZ1NUb3JlLmNwcCBmcm9tIHRoZSBidWlsZCBiZWNhdXNlIGl0IGlzIG5v
dCB1c2VkIGluIHdpbmRvd3MgYnVpbGQuCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZVZpZXcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL0hvc3RXaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplSW5jbHVkaW5nT2JzY3VyZWRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVuc2NhbGVkVW5vYnNjdXJlZFZpc2libGVDb250ZW50U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxUbyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RpbGVDYWly
by5oOiBSZW1vdmVkIGJlY2F1c2UgaXQgaXMgZGVhZCBjb2RlIHNpbmNlIHIxNjkzMjgKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZS5oLgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6flRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAuCisgICAgICAg
IChXZWJDb3JlOjppbm5lckJvdHRvbVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6flRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OmNvdmVyYWdlUmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OnZpc2libGVBcmVhSXNDb3ZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0Rm9yQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjpjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzZXRLZWVwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdT
dG9yZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjp0aWxlQXQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OnNldFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJlbW92
ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om1hcFRvQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om1hcEZyb21Db250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29y
ZGluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQ29vcmRp
bmF0ZUZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRT
dXBwb3J0c0FscGhhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmguCisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjp0aWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292
ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb3ZlclJl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oLgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kOjp+VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudDo6flRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Ojp0aWxlZEJhY2tpbmdTdG9yZUhhc1Bl
bmRpbmdUaWxlQ3JlYXRpb24pOgorCiAyMDE1LTA0LTI3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3JtIGNvbnRyb2wgbWF5IGJlIGFzc29jaWF0ZWQgd2l0
aCB0aGUgd3JvbmcgSFRNTCBGb3JtIGVsZW1lbnQgYWZ0ZXIgZm9ybSBpZCBjaGFuZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBmYTVkZDMyMGU0ODBjY2ZhYTM4MGExZWJhOTQ3MWJkNzM1NzA2ZWIyLi5k
ZjQ1MmFjMzQzNzFmOWM2ZWYwNmQ5ZTUyMjU1YjU4MGViMGE1MTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDQtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5h
dmVyY29ycC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIE1lcmdlIFRJTEVE
X0JBQ0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBDT09SRElOQVRFRF9HUkFQSElDUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMDAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Ny
b2xsUmVxdWVzdGVkKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIFdJTiBkb2VzIG5vdCB1c2Ug
Q29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKIDIwMTUtMDQtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxODM0
MDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCAwYTMyMzM0YWFkOGYwNjA2ZTM4MTNhYjk1Y2IyMzc1ZWIyYTljYjU0
Li4xNTI3MzVkMmZiMWEyZjI4ZjliODhlYzFhNTkxZmY4ZGE3NzljNDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTUtMDQtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVy
Y29ycC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIE1lcmdlIFRJTEVEX0JB
Q0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBDT09SRElOQVRFRF9HUkFQSElDUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMDAxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkaXNwYXRj
aFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVzZUZp
eGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuSGFuZGxlVXNlckV2ZW50
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNS0wNC0y
NyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVuYW1lIFdURl9VU0VfM0RfR1JBUEhJQ1MgdG8gRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRfM0QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2M4NDg1YzUwZDUwNGZlODY4YWI5MDM2MjUwMDgwOGU5
YzNiMzY2YS4uMzk1MjY3NGI3YTEzN2ZiMWI2MTJiMjc2NTliNmJkZjcyOTM1MmE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIxNTcsNyArMjE1Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1RleHRSdW4uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggY2Y3ZDcxODNjNmNlY2NmMWIyYTg5NzY1MzQyNjYz
ZmFlM2VlMzViOC4uMGI5MTQ5OTkxOTJlNTUzYTJhMjI1ZWQ1MGViYjIyMGM5ZDU4MDFjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE5Miw2ICsxOTIsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCiAKICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDg3ZmUzNWJlZTc3OTRlMzIwNDQ5NzFkZWUxOWExZWQ2MTQyMDM4M2MuLjk1
NzAwODkyMTU0NWJiNmQwZTIyN2E0ZWU2MDE5MjU5MjJjNDk4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0zOTgsMTMgKzM5OCwxMyBAQCBpZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBP
U0lUT1IpCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKICAgICAg
ICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiAgICAgICAgIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAotICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0FyZWFBbGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuY3BwCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCisgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0
ZUF0bGFzLmNwcAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA5NmQ4OTU0MGIzZjQ4ZTk0YzA2MjU1YTBiMGJj
NzAwMWE4MjJmZmEyLi40MDc0MzJkOTJkZjlmMTJmZjMxNjUxMGU5MGY4YmNhMmFmZjllYzQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAg
LTc4MzgsNyArNzgzOCw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmUuY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVk
XFRpbGVkQmFja2luZ1N0b3JlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblxHcmFwaGljc0NvbnRleHQzRFdpbi5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
QEAgLTE5ODc3LDkgKzE5ODc3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyVGlsZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcVGlsZWRCYWNraW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZS5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRp
bmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5n
U3RvcmVDbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXFRyYWNrQmFzZVByaXZhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZmU5ZmI2NDJhZDYxMGE2NWMxMzcy
MmQxYTI4M2FiMjE3NjY0MDczYi4uMjFjMDk2NWU5MmQwOGE2MjMzMWZmODc5M2NkOWQwMjViOGMw
ODI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjc2Niw4ICs2NzY2LDggQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVk
QmFja2luZ1N0b3JlLmNwcCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0
ZXI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBc
Y29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZv
cm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXHNjcm9sbGluZ1xTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlXHNjcm9sbGluZzwvRmlsdGVyPgpA
QCAtMTQxOTIsMTQgKzE0MTkyLDE0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmcuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZS5oIj4KLSAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZS5o
Ij4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCI+Ci0gICAgICA8RmlsdGVy
PnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVCYWNr
ZW5kLmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0
ZWQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiPgotICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50LmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRp
bmF0ZWQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhZ2Vcc2Nyb2xsaW5nXFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiPgogICAgICAgPEZp
bHRlcj5wYWdlXHNjcm9sbGluZzwvRmlsdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCmluZGV4IDFkZmUyYTI4Mjk1NjllNjg4OWNhOTZmZTE3Y2MwODA1MzhmYzA0MmQuLjg3ZDE0
YTdmMTcwNjAwY2ZhZDlkZmEyZjJmMzcyY2Y4ZTNmZGEwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25z
dCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZSB7IH0K
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQ
b2ludCYpIHsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAm
JiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CmluZGV4IDEzZTZkMDUwMmI5MTM1ZjkwOWNkN2YwMGJhYzFmZmNlMDIzNDNiYTEuLmJlMjg1ZmQx
ZmViNjk0NzJlOWY3MjU4MjNmMjQzNWM0ZTU5Y2U5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDaHJvbWU6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb24KICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFNjcm9sbChtX3BhZ2UpOwogfQogCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBDaHJvbWU6
OmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7
CiAgICAgbV9jbGllbnQuZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKHNjcm9sbFBvaW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCmluZGV4IDk4YWI3NDVlNmU3MjM2MDEzMDA2ZTk2YjBlM2M0Y2E3MDhlODNj
MjguLmIxNTcyNjIwZTM1MzM3MTI3ZDAzYWQzYTA3YzllMDA0Mzc0ZmJhMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2
b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQp
IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAppbmRleCA1MzY5NTlmMDcyZGFlZGE1ZmMyYzM0OGYxYTljOTQ0ZmRkYjljMzg3Li41Mjg0
ZGQ0NjkxMzBkNzlkYThlN2U5ZDQyOTljNjE0MWFlNmM4ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50UmVjdCYpID0gMDsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRlbGVn
YXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2ludCYpID0gMDsKICNlbmRpZgogICAgIHZp
cnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKQEAgLTM0NCw3ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RG
dWxsU2NyZWVuTGF5ZXIoR3JhcGhpY3NMYXllciopIHsgfQogI2VuZGlmCiAKLSNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmly
dHVhbCBJbnRSZWN0IHZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDQyMTlj
ZjdhNjliODM2NmZmY2ZkZjMwOWRlYzBmMzIwMzJhODRmMDcuLmU1OTFjZjQzOTZkNDJmZDlkNzQw
ZDU2NGJkNzAyNmQ1NDYzNmJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04OTUsNyArODk1
LDcgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUs
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAg
ICAgICAgZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKnRoaXMsIHZpZXdwb3J0U2l6ZSk7
CiAgICAgICAgIGZyYW1lVmlldy0+c2V0Rml4ZWRMYXlvdXRTaXplKGZpeGVkTGF5b3V0U2l6ZSk7
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogICAgICAgICBmcmFtZVZpZXctPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShmaXhlZFZp
c2libGVDb250ZW50UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggY2Q5ZTY0
MWZlMmQ5ZmI5NmNmZmVkZGJkMjIyMmIyNmQ4ZjBlNGJjMi4uODI1MjJiOGVlMjY2OGViY2JmNTg5
ZTE0M2Q4ZjkwNzNhM2UxMTM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtOTIs
NyArOTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5
Q2hhbmdlLmg+CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNlbmRpZgog
CkBAIC0yMDU0LDcgKzIwNTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGVsZWdhdGVzU2Nyb2xsaW5n
RGlkQ2hhbmdlKCkKICAgICAgICAgY2xlYXJCYWNraW5nU3RvcmVzKCk7CiB9CiAKLSNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lk
IEZyYW1lVmlldzo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlz
aWJsZUNvbnRlbnRSZWN0KQogewogICAgIGJvb2wgdmlzaWJsZUNvbnRlbnRTaXplRGlkQ2hhbmdl
ID0gZmFsc2U7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNj
cm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKICAgICAgICAgdGls
ZWRCYWNraW5nLT5wcmVwb3B1bGF0ZVJlY3QoRmxvYXRSZWN0KHBvc2l0aW9uLCB2aXNpYmxlQ29u
dGVudFJlY3QoKS5zaXplKCkpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykgfHwgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0
ZSgqdGhpcywgcG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMDZhNzIyOTBh
NzhmNDk4ZDZmY2JjNDVkMGEzMWYxZTNlNjVmN2JjMi4uOWM4OTIyMDA0Y2ZlMzk0MWM0NjE3ZDc4
MjMyNzQ4ZDQ5MzJkMTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yMzMsNyArMjMz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2lu
dCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNWYwYjgxMzZhNGIzMzFlNjNiZmE3
ZDY1ZTBkMmUyN2ViNTM3M2MxZi4uZDY5OWVhYWFjOGYwNzIyMjA0YTA5YjdjMDlkOTBmYjlkZTcw
Mjc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBQYWdlOjpz
ZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4sIGJv
b2wgaW5TdGFibGUKIAogICAgICAgICAgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmco
KSkKICAgICAgICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOwotI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2aWV3LT5yZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUob3JpZ2luKTsKICNlbmRpZgpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgUGFn
ZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2lu
LCBib29sIGluU3RhYmxlCiAKICAgICAgICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmco
KSkKICAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKG9yaWdpbik7Ci0jaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB2aWV3LT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUo
b3JpZ2luKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9z
dFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDM4
MGExNWM0NWNiYmI5NWU1NzgxZWExNGVhNjA2ZTQ2NjRhZjI1M2EuLjA4MjkyOGI0YmIwMjViZTU2
OTQyMGU2M2ZjYzFhMzc5NjVjZGVmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJlcXVlc3RzIHRoZSBob3N0IGlu
dmFsaWRhdGUgdGhlIGNvbnRlbnRzLCBub3QgdGhlIHJvb3Qgdmlldy4gVGhpcyBpcyB0aGUgc2xv
dyBwYXRoIGZvciBzY3JvbGxpbmcuCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50
c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgPSAwOwogCi0jaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IC8vIFJlcXVlc3RzIHRoZSBob3N0IHRvIGRvIHRoZSBhY3R1YWwgc2Nyb2xsaW5nLiBUaGlzIGlz
IG9ubHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZS4KICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb2ludCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCmluZGV4IDNjODI2N2E0MzU1ZmQ3ZGViMTcyYjcxODVlZGNmNTkwOGI3NWY4YTguLmNlZDk0
MmE4YWM4MTI2MmQ5Y2VjNWQ0YTZiM2RmMzRkZmZhMzg4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgSW50U2l6ZSBTY3JvbGxWaWV3
Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ09ic2N1cmVkQXJlYShWaXNpYmxl
Q29udGUKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3Jt
VmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nT2JzY3VyZWRBcmVhKHNjcm9sbGJhckluY2x1c2lv
biA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVu
dFJlY3Quc2l6ZSgpOwogI2VuZGlmCkBAIC0yOTYsNyArMjk2LDcgQEAgSW50U2l6ZSBTY3JvbGxW
aWV3Ojp1bnNjYWxlZFVub2JzY3VyZWRWaXNpYmxlQ29udGVudFNpemUoVmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHUKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRm
b3JtVmlzaWJsZUNvbnRlbnRTaXplKHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xs
YmFycyk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHZpc2libGVDb250ZW50U2l6ZTsKICNlbmRpZgpAQCAtMzIyLDcg
KzMyMiw3IEBAIEludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwo
VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiCiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0
KCkpCiAgICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChzY3JvbGxiYXJJ
bmNsdXNpb24gPT0gSW5jbHVkZVNjcm9sbGJhcnMpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9maXhlZFZp
c2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0OwogI2VuZGlmCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBTY3JvbGxWaWV3
OjpzY3JvbGxUbyhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpCiAgICAgaWYgKHNjcm9sbGJhcnNT
dXBwcmVzc2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoZGVsZWdhdGVzU2Ny
b2xsaW5nKCkpIHsKICAgICAgICAgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEludFBvaW50
KG5ld09mZnNldCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKaW5kZXggYjdlODk5ZDU4MjM4OTdmZjdkMjE4ODVjN2RmZDQ2MDMwMDE4ZGI1ZS4uYTBj
ZmZjNDBkNjBmYzY5NTc4YTIxZjE2YmRhNjQ2YzdhMzA5ZjVlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGlj
aCB1c3VhbGx5IHdpbGwgaGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9u
IGVuZHMsIG9yIHdoZW4gc2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCiAg
ICAgdmlydHVhbCBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsg
fQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpIHsgbV9maXhlZFZpc2libGVDb250ZW50UmVj
dCA9IHZpc2libGVDb250ZW50UmVjdDsgfQogICAgIEludFJlY3QgZml4ZWRWaXNpYmxlQ29udGVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OyB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTAwZGJhY2NiZWVlMDZjYmZiOTE1MzAwNmRhOThmY2M1OThlMmNjOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCww
IEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKLSAKLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotIAotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBU
aWxlX2gKLSNkZWZpbmUgVGlsZV9oCi0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLQot
I2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UG9pbnRIYXNoLmgiCi0jaW5jbHVk
ZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLQotY2xhc3MgVGlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRpbGU+IHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEludFBvaW50IENvb3JkaW5hdGU7Ci0KLSAgICB2aXJ0dWFsIH5UaWxlKCkgeyB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPElu
dFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCYWNr
QnVmZmVyVG9Gcm9udCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNv
b3JkaW5hdGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBJbnRSZWN0JiByZWN0KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpID0gMDsKLX07Ci0KLX0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRjNDI2Yzc4MTgyMWY1ZTI5MGZiMjg4YTljZjljZGEwNDNmMjM4
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDcyICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gCi0gVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotIAotIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tp
bmdTdG9yZS5oIgotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVEaW1l
bnNpb24gPSA1MTI7Ci0KLXN0YXRpYyBJbnRQb2ludCBpbm5lckJvdHRvbVJpZ2h0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gQWN0dWFsbHksIHRoZSByZWN0IGRvZXMgbm90IGNvbnRh
aW4gcmVjdC5tYXhYKCkuIFJlZmVyIHRvIEludFJlY3Q6OmNvbnRhaW4uCi0gICAgcmV0dXJuIElu
dFBvaW50KHJlY3QubWF4WCgpIC0gMSwgcmVjdC5tYXhZKCkgLSAxKTsKLX0KLQotVGlsZWRCYWNr
aW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGll
bnQsIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IGJhY2tlbmQpCi0g
ICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2JhY2tlbmQoV1RGOjptb3ZlKGJhY2tlbmQp
KQotICAgICwgbV90aWxlU2l6ZShkZWZhdWx0VGlsZURpbWVuc2lvbiwgZGVmYXVsdFRpbGVEaW1l
bnNpb24pCi0gICAgLCBtX2NvdmVyQXJlYU11bHRpcGxpZXIoMi4wZikKLSAgICAsIG1fY29udGVu
dHNTY2FsZSgxLmYpCi0gICAgLCBtX3N1cHBvcnRzQWxwaGEoZmFsc2UpCi0gICAgLCBtX3BlbmRp
bmdUaWxlQ3JlYXRpb24oZmFsc2UpCi17Ci19Ci0KLVRpbGVkQmFja2luZ1N0b3JlOjp+VGlsZWRC
YWNraW5nU3RvcmUoKQotewotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIG1fdGlsZVNpemUgPSBzaXplOwotICAgIG1f
dGlsZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VHJhamVjdG9y
eVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIG1fcGVu
ZGluZ1RyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAgIG1fcGVuZGluZ1Ry
YWplY3RvcnlWZWN0b3Iubm9ybWFsaXplKCk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKQotewotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0
aGlzLT52aXNpYmxlUmVjdCgpOwotICAgIEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyht
X2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Ci0KLSAgICBib29sIGRp
ZENoYW5nZSA9IG1fdHJhamVjdG9yeVZlY3RvciAhPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9y
IHx8IG1fdmlzaWJsZVJlY3QgIT0gdmlzaWJsZVJlY3QgfHwgbV9yZWN0ICE9IHJlY3Q7Ci0gICAg
aWYgKGRpZENoYW5nZSB8fCBtX3BlbmRpbmdUaWxlQ3JlYXRpb24pCi0gICAgICAgIGNyZWF0ZVRp
bGVzKCk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudHNEaXJ0eVJlY3QpCi17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QobWFwRnJv
bUNvbnRlbnRzKGNvbnRlbnRzRGlydHlSZWN0KSk7Ci0gICAgSW50UmVjdCBrZWVwUmVjdEZpdFRv
VGlsZVNpemUgPSB0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGVGb3JQb2ludCht
X2tlZXBSZWN0LmxvY2F0aW9uKCkpKTsKLSAgICBrZWVwUmVjdEZpdFRvVGlsZVNpemUudW5pdGUo
dGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21S
aWdodChtX2tlZXBSZWN0KSkpKTsKLQotICAgIC8vIE9ubHkgaXRlcmF0ZSBvbiB0aGUgcGFydCBv
ZiB0aGUgcmVjdCB0aGF0IHdlIGtub3cgd2UgbWlnaHQgaGF2ZSB0aWxlcy4KLSAgICBJbnRSZWN0
IGNvdmVyZWREaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oZGlydHlSZWN0LCBrZWVwUmVjdEZpdFRv
VGlsZVNpemUpOwotICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRl
Rm9yUG9pbnQoY292ZXJlZERpcnR5UmVjdC5sb2NhdGlvbigpKTsKLSAgICBUaWxlOjpDb29yZGlu
YXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0
KGNvdmVyZWREaXJ0eVJlY3QpKTsKLQotICAgIGZvciAoaW50IHlDb29yZGluYXRlID0gdG9wTGVm
dC55KCk7IHlDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LnkoKTsgKyt5Q29vcmRpbmF0ZSkgewot
ICAgICAgICBmb3IgKGludCB4Q29vcmRpbmF0ZSA9IHRvcExlZnQueCgpOyB4Q29vcmRpbmF0ZSA8
PSBib3R0b21SaWdodC54KCk7ICsreENvb3JkaW5hdGUpIHsKLSAgICAgICAgICAgIFJlZlB0cjxU
aWxlPiBjdXJyZW50VGlsZSA9IHRpbGVBdChUaWxlOjpDb29yZGluYXRlKHhDb29yZGluYXRlLCB5
Q29vcmRpbmF0ZSkpOwotICAgICAgICAgICAgaWYgKCFjdXJyZW50VGlsZSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIC8vIFBhc3MgdGhlIGZ1bGwgcmVjdCB0byBlYWNo
IHRpbGUgYXMgY292ZXJlZERpcnR5UmVjdCBtaWdodCBub3QKLSAgICAgICAgICAgIC8vIGNvbnRh
aW4gdGhlbSBjb21wbGV0ZWx5IGFuZCB3ZSBkb24ndCB3YW50IHBhcnRpYWwgdGlsZSByZWRyYXdz
LgotICAgICAgICAgICAgY3VycmVudFRpbGUtPmludmFsaWRhdGUoZGlydHlSZWN0KTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZl
cnMoKQotewotICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKLQot
ICAgIFZlY3RvcjxJbnRSZWN0PiBwYWludGVkQXJlYTsKLSAgICBWZWN0b3I8UmVmUHRyPFRpbGU+
ID4gZGlydHlUaWxlczsKLSAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7
Ci0gICAgICAgIGlmICghdGlsZS0+aXNEaXJ0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGRpcnR5VGlsZXMuYXBwZW5kKHRpbGUpOwotICAgIH0KLQotICAgIGlmIChkaXJ0eVRp
bGVzLmlzRW1wdHkoKSkgewotICAgICAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWlu
dEVuZChwYWludGVkQXJlYSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogSW4gc2luZ2xlIHRocmVhZGVkIGNhc2UsIHRpbGUgYmFjayBidWZmZXJzIGNvdWxkIGJlIHVw
ZGF0ZWQgYXN5bmNocm9ub3VzbHkgCi0gICAgLy8gb25lIGJ5IG9uZSBhbmQgdGhlbiBzd2FwcGVk
IHRvIGZyb250IGluIG9uZSBnby4gVGhpcyB3b3VsZCBtaW5pbWl6ZSB0aGUgdGltZSBzcGVudAot
ICAgIC8vIGJsb2NraW5nIG9uIHRpbGUgdXBkYXRlcy4KLSAgICB1bnNpZ25lZCBzaXplID0gZGly
dHlUaWxlcy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikg
ewotICAgICAgICBWZWN0b3I8SW50UmVjdD4gcGFpbnRlZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+
dXBkYXRlQmFja0J1ZmZlcigpOwotICAgICAgICBwYWludGVkQXJlYS5hcHBlbmRWZWN0b3IocGFp
bnRlZFJlY3RzKTsKLSAgICAgICAgZGlydHlUaWxlc1tuXS0+c3dhcEJhY2tCdWZmZXJUb0Zyb250
KCk7Ci0gICAgfQotCi0gICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQocGFp
bnRlZEFyZWEpOwotfQotCi1JbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjp2aXNpYmxlUmVjdCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0
Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKLXsKLSAgICBpZiAoc2NhbGUgPT0gbV9jb250ZW50
c1NjYWxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsK
LSAgICBtX3RpbGVzLmNsZWFyKCk7Ci0gICAgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOwotfQot
Ci1kb3VibGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2
aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNvbnN0Ci17
Ci0gICAgaWYgKHZpZXdwb3J0LmludGVyc2VjdHModGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVD
b29yZGluYXRlKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgSW50UG9pbnQgdmlld0NlbnRl
ciA9IHZpZXdwb3J0LmxvY2F0aW9uKCkgKyBJbnRTaXplKHZpZXdwb3J0LndpZHRoKCkgLyAyLCB2
aWV3cG9ydC5oZWlnaHQoKSAvIDIpOwotICAgIFRpbGU6OkNvb3JkaW5hdGUgY2VudGVyQ29vcmRp
bmF0ZSA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQodmlld0NlbnRlcik7Ci0KLSAgICByZXR1cm4g
c3RkOjptYXgoYWJzKGNlbnRlckNvb3JkaW5hdGUueSgpIC0gdGlsZUNvb3JkaW5hdGUueSgpKSwg
YWJzKGNlbnRlckNvb3JkaW5hdGUueCgpIC0gdGlsZUNvb3JkaW5hdGUueCgpKSk7Ci19Ci0KLS8v
IFJldHVybnMgYSByYXRpbyBiZXR3ZWVuIDAuMGYgYW5kIDEuMGYgb2YgdGhlIHN1cmZhY2Ugb2Yg
Y29udGVudHNSZWN0IGNvdmVyZWQgYnkgcmVuZGVyZWQgdGlsZXMuCi1mbG9hdCBUaWxlZEJhY2tp
bmdTdG9yZTo6Y292ZXJhZ2VSYXRpbyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50c1Jl
Y3QpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBtYXBGcm9tQ29udGVudHMoY29u
dGVudHNSZWN0KTsKLSAgICBmbG9hdCByZWN0QXJlYSA9IGRpcnR5UmVjdC53aWR0aCgpICogZGly
dHlSZWN0LmhlaWdodCgpOwotICAgIGZsb2F0IGNvdmVyQXJlYSA9IDAuMGY7Ci0KLSAgICBUaWxl
OjpDb29yZGluYXRlIHRvcExlZnQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGRpcnR5UmVjdC5s
b2NhdGlvbigpKTsKLSAgICBUaWxlOjpDb29yZGluYXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNvb3Jk
aW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KGRpcnR5UmVjdCkpOwotCi0gICAgZm9yIChp
bnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQu
eSgpOyArK3lDb29yZGluYXRlKSB7Ci0gICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9w
TGVmdC54KCk7IHhDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkg
ewotICAgICAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjdXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRp
bmF0ZSwgeUNvb3JkaW5hdGUpOwotICAgICAgICAgICAgUmVmUHRyPFRpbGU+IGN1cnJlbnRUaWxl
ID0gdGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50VGls
ZSAmJiBjdXJyZW50VGlsZS0+aXNSZWFkeVRvUGFpbnQoKSkgewotICAgICAgICAgICAgICAgIElu
dFJlY3QgY292ZXJSZWN0ID0gaW50ZXJzZWN0aW9uKGRpcnR5UmVjdCwgY3VycmVudFRpbGUtPnJl
Y3QoKSk7Ci0gICAgICAgICAgICAgICAgY292ZXJBcmVhICs9IGNvdmVyUmVjdC53aWR0aCgpICog
Y292ZXJSZWN0LmhlaWdodCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBjb3ZlckFyZWEgLyByZWN0QXJlYTsKLX0KLQotYm9vbCBUaWxlZEJhY2tpbmdTdG9y
ZTo6dmlzaWJsZUFyZWFJc0NvdmVyZWQoKSBjb25zdAotewotICAgIEludFJlY3QgYm91bmRlZFZp
c2libGVDb250ZW50c1JlY3QgPSBpbnRlcnNlY3Rpb24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0
b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0
KCkpOwotICAgIHJldHVybiBjb3ZlcmFnZVJhdGlvKGJvdW5kZWRWaXNpYmxlQ29udGVudHNSZWN0
KSA9PSAxLjBmOwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCi17
Ci0gICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgotICAgIGNvbnN0IElu
dFJlY3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwotICAgIG1fcmVjdCA9IG1hcEZyb21Db250ZW50
cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Ci0gICAgbV90cmFq
ZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKLSAgICBtX3Zpc2libGVS
ZWN0ID0gdmlzaWJsZVJlY3QoKTsKLQotICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwotICAgICAgICBzZXRLZWVwUmVjdChJbnRSZWN0
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLyogV2UgbXVzdCBjb21wdXRlIGNv
dmVyIGFuZCBrZWVwIHJlY3RzIHVzaW5nIHRoZSB2aXNpYmxlUmVjdCwgaW5zdGVhZCBvZiB0aGUg
cmVjdCBpbnRlcnNlY3RpbmcgdGhlIHZpc2libGVSZWN0IHdpdGggbV9yZWN0LAotICAgICAqIGJl
Y2F1c2UgVEJTIGNhbiBiZSB1c2VkIGFzIGEgYmFja2luZyBzdG9yZSBvZiBHcmFwaGljc0xheWVy
IGFuZCB0aGUgdmlzaWJsZSByZWN0IHVzdWFsbHkgZG9lcyBub3QgaW50ZXJzZWN0IHdpdGggbV9y
ZWN0LgotICAgICAqIEluIHRoZSBiZWxvdyBjYXNlLCB0aGUgaW50ZXJzZWN0aW5nIHJlY3QgaXMg
YW4gZW1wdHkuCi0gICAgICoKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAg
ICAgICAgICAgICAgIHwKLSAgICAgKiAgfCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgfCAgICAg
ICArLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgICAgICB8IEhF
UkUgIHwgIGNvdmVyIG9yIGtlZXAgICAgICAgIHwKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsg
ICAgICByZWN0ICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgKy0tLS0t
LS0tLSsgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgfCB2aXNpYmxlIHwg
ICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgfCAgcmVjdCAgIHwgICAgICAg
ICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgIHwK
LSAgICAgKiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAg
KiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgKiAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKgotICAgICAqIFdl
IG11c3QgY3JlYXRlIG9yIGtlZXAgdGhlIHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KLSAgICAg
Ki8KLQotICAgIEludFJlY3QgY292ZXJSZWN0OwotICAgIEludFJlY3Qga2VlcFJlY3Q7Ci0gICAg
Y29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVj
dCk7Ci0KLSAgICBzZXRDb3ZlclJlY3QoY292ZXJSZWN0KTsKLSAgICBzZXRLZWVwUmVjdChrZWVw
UmVjdCk7Ci0KLSAgICBpZiAoY292ZXJSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gUmVzaXplIHRpbGVzIGF0IHRoZSBlZGdlIGluIGNhc2UgdGhlIGNvbnRlbnRzIHNp
emUgaGFzIGNoYW5nZWQsIGJ1dCBvbmx5IGRvIHNvCi0gICAgLy8gYWZ0ZXIgaGF2aW5nIGRyb3Bw
ZWQgdGlsZXMgb3V0c2lkZSB0aGUga2VlcCByZWN0LgotICAgIGJvb2wgZGlkUmVzaXplVGlsZXMg
PSBmYWxzZTsKLSAgICBpZiAocHJldmlvdXNSZWN0ICE9IG1fcmVjdCkKLSAgICAgICAgZGlkUmVz
aXplVGlsZXMgPSByZXNpemVFZGdlVGlsZXMoKTsKLQotICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRp
bGUgcG9zaXRpb24gY2xvc2VzdCB0byB0aGUgdmlld3BvcnQgY2VudGVyIHRoYXQgZG9lcyBub3Qg
eWV0IGNvbnRhaW4gYSB0aWxlLgotICAgIC8vIFdoaWNoIHBvc2l0aW9uIGlzIGNvbnNpZGVyZWQg
dGhlIGNsb3Nlc3QgZGVwZW5kcyBvbiB0aGUgdGlsZURpc3RhbmNlIGZ1bmN0aW9uLgotICAgIGRv
dWJsZSBzaG9ydGVzdERpc3RhbmNlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpOwotICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRlPiB0aWxlc1RvQ3JlYXRlOwotICAg
IHVuc2lnbmVkIHJlcXVpcmVkVGlsZUNvdW50ID0gMDsKLQotICAgIC8vIENvdmVyIGFyZWFzIChp
biB0aWxlcykgd2l0aCBtaW5pbXVtIGRpc3RhbmNlIGZyb20gdGhlIHZpc2libGUgcmVjdC4gSWYg
dGhlIHZpc2libGUgcmVjdCBpcwotICAgIC8vIG5vdCBjb3ZlcmVkIGFscmVhZHkgaXQgd2lsbCBi
ZSBjb3ZlcmVkIGZpcnN0IGluIG9uZSBnbywgZHVlIHRvIHRoZSBkaXN0YW5jZSBiZWluZyAwIGZv
ciB0aWxlcwotICAgIC8vIGluc2lkZSB0aGUgdmlzaWJsZSByZWN0LgotICAgIFRpbGU6OkNvb3Jk
aW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoY292ZXJSZWN0LmxvY2F0aW9u
KCkpOwotICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZv
clBvaW50KGlubmVyQm90dG9tUmlnaHQoY292ZXJSZWN0KSk7Ci0gICAgZm9yIChpbnQgeUNvb3Jk
aW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lD
b29yZGluYXRlKSB7Ci0gICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7
IHhDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgewotICAgICAg
ICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjdXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNv
b3JkaW5hdGUpOwotICAgICAgICAgICAgaWYgKHRpbGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50
OwotICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJl
Y3QsIGN1cnJlbnRDb29yZGluYXRlKTsKLSAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0
ZXN0RGlzdGFuY2UpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
ZGlzdGFuY2UgPCBzaG9ydGVzdERpc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgdGlsZXNUb0Ny
ZWF0ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIHNob3J0ZXN0RGlzdGFuY2UgPSBkaXN0YW5j
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRpbGVzVG9DcmVhdGUuYXBwZW5kKGN1cnJl
bnRDb29yZGluYXRlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5vdyBjb25zdHJ1Y3Qg
dGhlIHRpbGUocykgd2l0aGluIHRoZSBzaG9ydGVzdCBkaXN0YW5jZS4KLSAgICB1bnNpZ25lZCB0
aWxlc1RvQ3JlYXRlQ291bnQgPSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKLSAgICBmb3IgKHVuc2ln
bmVkIG4gPSAwOyBuIDwgdGlsZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKLSAgICAgICAgVGlsZTo6
Q29vcmRpbmF0ZSBjb29yZGluYXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgc2V0VGls
ZShjb29yZGluYXRlLCBtX2JhY2tlbmQtPmNyZWF0ZVRpbGUodGhpcywgY29vcmRpbmF0ZSkpOwot
ICAgIH0KLSAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7Ci0KLSAg
ICAvLyBQYWludCB0aGUgY29udGVudCBvZiB0aGUgbmV3bHkgY3JlYXRlZCB0aWxlcyBvciByZXNp
emVkIHRpbGVzLgotICAgIGlmICh0aWxlc1RvQ3JlYXRlQ291bnQgfHwgZGlkUmVzaXplVGlsZXMp
Ci0gICAgICAgIHVwZGF0ZVRpbGVCdWZmZXJzKCk7Ci0KLSAgICAvLyBSZS1jYWxsIGNyZWF0ZVRp
bGVzIG9uIGEgdGltZXIgdG8gY292ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qg
c2hvcnRlc3QgZGlzdGFuY2UuCi0gICAgbV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVxdWlyZWRU
aWxlQ291bnQ7Ci0gICAgaWYgKG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKLSAgICAgICAgbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpOwotfQotCi12b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3RGb3JDb250ZW50c1JlY3QoSW50UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICBJbnRSZWN0IGJvdW5kcyA9IG1fcmVjdDsKLSAgICBJbnRTaXplIGNhbmRp
ZGF0ZVNpemUgPSByZWN0LnNpemUoKTsKLQotICAgIHJlY3QuaW50ZXJzZWN0KGJvdW5kcyk7Ci0K
LSAgICBpZiAocmVjdC5zaXplKCkgPT0gY2FuZGlkYXRlU2l6ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLyoKLSAgICAgKiBJbiB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGlzIG5vIGludGVy
c2VjdGlvbiBvZiB0aGUgY29udGVudHMgcmVjdCBhbmQgdGhlIGNvdmVyIHJlY3QuCi0gICAgICog
VGh1cyB0aGUgbGF0dGVyIHNob3VsZCBub3QgYmUgaW5mbGF0ZWQuCi0gICAgICoKLSAgICAgKiAg
Ky0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgKy0t
LS0tLS0tLS0tLS0tLSsKLSAgICAgKgotICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAqICAgICAgICAgIHwgICAgICAgICAgY292ZXIgcmVjdCAg
ICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAg
ICAgfAotICAgICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUgfCAgICAgICAgICAgfAot
ICAgICAqICAgICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAgICAgICAgfAotICAgICAq
ICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAgICAqICAgICAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAqLwotICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRvIGNyZWF0ZSBh
IGNvdmVyIHJlY3Qgb2YgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgY2FuZGlkYXRlLCBidXQgd2l0aGlu
IGNvbnRlbnQgYm91bmRzLgotICAgIGludCBwaXhlbHNDb3ZlcmVkID0gY2FuZGlkYXRlU2l6ZS53
aWR0aCgpICogY2FuZGlkYXRlU2l6ZS5oZWlnaHQoKTsKLQotICAgIGlmIChyZWN0LndpZHRoKCkg
PCBjYW5kaWRhdGVTaXplLndpZHRoKCkpCi0gICAgICAgIHJlY3QuaW5mbGF0ZVkoKChwaXhlbHND
b3ZlcmVkIC8gcmVjdC53aWR0aCgpKSAtIHJlY3QuaGVpZ2h0KCkpIC8gMik7Ci0gICAgaWYgKHJl
Y3QuaGVpZ2h0KCkgPCBjYW5kaWRhdGVTaXplLmhlaWdodCgpKQotICAgICAgICByZWN0LmluZmxh
dGVYKCgocGl4ZWxzQ292ZXJlZCAvIHJlY3QuaGVpZ2h0KCkpIC0gcmVjdC53aWR0aCgpKSAvIDIp
OwotCi0gICAgcmVjdC5pbnRlcnNlY3QoYm91bmRzKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6Y29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qs
IEludFJlY3QmIGNvdmVyUmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0Ci17Ci0gICAgY292
ZXJSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0gICAga2VlcFJlY3QgPSB2aXNpYmxlUmVjdDsKLQotICAg
IC8vIElmIHdlIGNvdmVyIG1vcmUgdGhhdCB0aGUgYWN0dWFsIHZpZXdwb3J0IHdlIGNhbiBiZSBz
bWFydCBhYm91dCB3aGljaCB0aWxlcyB3ZSBjaG9vc2UgdG8gcmVuZGVyLgotICAgIGlmIChtX2Nv
dmVyQXJlYU11bHRpcGxpZXIgPiAxKSB7Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsIGNvdmVyIGFy
ZWEgY292ZXJzIGVxdWFsbHkgaW4gZWFjaCBkaXJlY3Rpb24sIGFjY29yZGluZyB0byB0aGUgY292
ZXJBcmVhTXVsdGlwbGllci4KLSAgICAgICAgY292ZXJSZWN0LmluZmxhdGVYKHZpc2libGVSZWN0
LndpZHRoKCkgKiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkgLyAyKTsKLSAgICAgICAgY292
ZXJSZWN0LmluZmxhdGVZKHZpc2libGVSZWN0LmhlaWdodCgpICogKG1fY292ZXJBcmVhTXVsdGlw
bGllciAtIDEpIC8gMik7Ci0gICAgICAgIGtlZXBSZWN0ID0gY292ZXJSZWN0OwotCi0gICAgICAg
IGlmIChtX3RyYWplY3RvcnlWZWN0b3IgIT0gRmxvYXRQb2ludDo6emVybygpKSB7Ci0gICAgICAg
ICAgICAvLyBBIG51bGwgdHJhamVjdG9yeSB2ZWN0b3IgKG5vIG1vdGlvbikgbWVhbnMgdGhhdCB0
aWxlcyBmb3IgdGhlIGNvdmVyQXJlYSB3aWxsIGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAvLyBB
IG5vbi1udWxsIHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgc2hyaW5rIHRoZSBjb3ZlcmVkIHJlY3Qg
dG8gdmlzaWJsZVJlY3QgcGx1cyBpdHMgZXhwYW5zaW9uIGZyb20gaXRzCi0gICAgICAgICAgICAv
LyBjZW50ZXIgdG93YXJkIHRoZSBjb3ZlciBhcmVhIGVkZ2VzIGluIHRoZSBkaXJlY3Rpb24gb2Yg
dGhlIGdpdmVuIHZlY3Rvci4KLQotICAgICAgICAgICAgLy8gRS5nLiBpZiB2aXNpYmxlUmVjdCA9
PSAoMTAsMTApNXg1IGFuZCBjb3ZlckFyZWFNdWx0aXBsaWVyID09IDMuMDoKLSAgICAgICAgICAg
IC8vIGEgKDAsMCkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0
aW5nICg1LDUpMTV4MTUsCi0gICAgICAgICAgICAvLyBhICgxLDApIHRyYWplY3RvcnkgdmVjdG9y
IHdpbGwgY3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAoMTAsMTApMTB4NSwKLSAgICAgICAgICAg
IC8vIGFuZCBhICgxLDEpIHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgY3JlYXRlIHRpbGVzIGludGVy
c2VjdGluZyAoMTAsMTApMTB4MTAuCi0KLSAgICAgICAgICAgIC8vIE11bHRpcGx5IHRoZSB2ZWN0
b3IgYnkgdGhlIGRpc3RhbmNlIHRvIHRoZSBlZGdlIG9mIHRoZSBjb3ZlciBhcmVhLgotICAgICAg
ICAgICAgZmxvYXQgdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIgPSAobV9jb3ZlckFyZWFNdWx0
aXBsaWVyIC0gMSkgLyAyOwotCi0gICAgICAgICAgICAvLyBVbml0ZSB0aGUgdmlzaWJsZSByZWN0
IHdpdGggYSAiZ2hvc3QiIG9mIHRoZSB2aXNpYmxlIHJlY3QgbW92ZWQgaW4gdGhlIGRpcmVjdGlv
biBvZiB0aGUgdHJhamVjdG9yeSB2ZWN0b3IuCi0gICAgICAgICAgICBjb3ZlclJlY3QgPSB2aXNp
YmxlUmVjdDsKLSAgICAgICAgICAgIGNvdmVyUmVjdC5tb3ZlKGNvdmVyUmVjdC53aWR0aCgpICog
bV90cmFqZWN0b3J5VmVjdG9yLngoKSAqIHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJSZWN0LmhlaWdodCgpICogbV90cmFqZWN0b3J5
VmVjdG9yLnkoKSAqIHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyKTsKLQotICAgICAgICAgICAg
Y292ZXJSZWN0LnVuaXRlKHZpc2libGVSZWN0KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQo
a2VlcFJlY3QuY29udGFpbnMoY292ZXJSZWN0KSk7Ci0gICAgfQotCi0gICAgYWRqdXN0Rm9yQ29u
dGVudHNSZWN0KGNvdmVyUmVjdCk7Ci0KLSAgICAvLyBUaGUga2VlcCByZWN0IGlzIGFuIGluZmxh
dGVkIHZlcnNpb24gb2YgdGhlIGNvdmVyIHJlY3QsIGluZmxhdGVkIGluIHRpbGUgZGltZW5zaW9u
cy4KLSAgICBrZWVwUmVjdC51bml0ZShjb3ZlclJlY3QpOwotICAgIGtlZXBSZWN0LmluZmxhdGVY
KG1fdGlsZVNpemUud2lkdGgoKSAvIDIpOwotICAgIGtlZXBSZWN0LmluZmxhdGVZKG1fdGlsZVNp
emUuaGVpZ2h0KCkgLyAyKTsKLSAgICBrZWVwUmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKLQotICAg
IEFTU0VSVChjb3ZlclJlY3QuaXNFbXB0eSgpIHx8IGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVj
dCkpOwotfQotCi1ib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKQotewot
ICAgIGJvb2wgd2FzUmVzaXplZCA9IGZhbHNlOwotICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRl
PiB0aWxlc1RvUmVtb3ZlOwotICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkp
IHsKLSAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IHRpbGUtPmNvb3Jk
aW5hdGUoKTsKLSAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKLSAgICAg
ICAgSW50UmVjdCBleHBlY3RlZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVD
b29yZGluYXRlKTsKLSAgICAgICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgdGlsZXNUb1JlbW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOwotICAgICAgICBl
bHNlIGlmIChleHBlY3RlZFRpbGVSZWN0ICE9IHRpbGVSZWN0KSB7Ci0gICAgICAgICAgICB0aWxl
LT5yZXNpemUoZXhwZWN0ZWRUaWxlUmVjdC5zaXplKCkpOwotICAgICAgICAgICAgd2FzUmVzaXpl
ZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdW5zaWduZWQgcmVtb3ZlQ291bnQgPSB0
aWxlc1RvUmVtb3ZlLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3Zl
Q291bnQ7ICsrbikKLSAgICAgICAgcmVtb3ZlVGlsZSh0aWxlc1RvUmVtb3ZlW25dKTsKLSAgICBy
ZXR1cm4gd2FzUmVzaXplZDsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJl
Y3QoY29uc3QgSW50UmVjdCYga2VlcFJlY3QpCi17Ci0gICAgLy8gRHJvcCB0aWxlcyBvdXRzaWRl
IHRoZSBuZXcga2VlcFJlY3QuCi0KLSAgICBGbG9hdFJlY3Qga2VlcFJlY3RGID0ga2VlcFJlY3Q7
Ci0KLSAgICBWZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdG9SZW1vdmU7Ci0gICAgZm9yIChhdXRv
JiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgewotICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNv
b3JkaW5hdGUgPSB0aWxlLT5jb29yZGluYXRlKCk7Ci0gICAgICAgIEZsb2F0UmVjdCB0aWxlUmVj
dCA9IHRpbGUtPnJlY3QoKTsKLSAgICAgICAgaWYgKCF0aWxlUmVjdC5pbnRlcnNlY3RzKGtlZXBS
ZWN0RikpCi0gICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoY29vcmRpbmF0ZSk7Ci0gICAgfQot
ICAgIHVuc2lnbmVkIHJlbW92ZUNvdW50ID0gdG9SZW1vdmUuc2l6ZSgpOwotICAgIGZvciAodW5z
aWduZWQgbiA9IDA7IG4gPCByZW1vdmVDb3VudDsgKytuKQotICAgICAgICByZW1vdmVUaWxlKHRv
UmVtb3ZlW25dKTsKLQotICAgIG1fa2VlcFJlY3QgPSBrZWVwUmVjdDsKLX0KLQotdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKLXsKLSAgICBJbnRSZWN0
IGJvdW5kZWRWaXNpYmxlUmVjdCA9IG1hcEZyb21Db250ZW50cyhpbnRlcnNlY3Rpb24obV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2lu
Z1N0b3JlQ29udGVudHNSZWN0KCkpKTsKLSAgICBzZXRLZWVwUmVjdChib3VuZGVkVmlzaWJsZVJl
Y3QpOwotfQotCi1QYXNzUmVmUHRyPFRpbGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQXQoY29u
c3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
aWxlcy5nZXQoY29vcmRpbmF0ZSk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRp
bGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0
aWxlKQotewotICAgIG1fdGlsZXMuc2V0KGNvb3JkaW5hdGUsIHRpbGUpOwotfQotCi12b2lkIFRp
bGVkQmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3Jk
aW5hdGUpCi17Ci0gICAgbV90aWxlcy5yZW1vdmUoY29vcmRpbmF0ZSk7Ci19Ci0KLUludFJlY3Qg
VGlsZWRCYWNraW5nU3RvcmU6Om1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QocmVjdC54KCkgLyBt
X2NvbnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3QueSgpIC8gbV9jb250ZW50c1NjYWxlLAotICAg
ICAgICByZWN0LndpZHRoKCkgLyBtX2NvbnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3QuaGVpZ2h0
KCkgLyBtX2NvbnRlbnRzU2NhbGUpKTsKLX0KLQotSW50UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6
bWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpICogbV9jb250ZW50c1NjYWxlLAot
ICAgICAgICByZWN0LnkoKSAqIG1fY29udGVudHNTY2FsZSwKLSAgICAgICAgcmVjdC53aWR0aCgp
ICogbV9jb250ZW50c1NjYWxlLAotICAgICAgICByZWN0LmhlaWdodCgpICogbV9jb250ZW50c1Nj
YWxlKSk7Ci19Ci0KLUludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRp
bmF0ZShjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKSBjb25zdAotewotICAgIElu
dFJlY3QgcmVjdChjb29yZGluYXRlLngoKSAqIG1fdGlsZVNpemUud2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgY29vcmRpbmF0ZS55KCkgKiBtX3RpbGVTaXplLmhlaWdodCgpLAotICAgICAgICAg
ICAgICAgICBtX3RpbGVTaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgIG1fdGlsZVNpemUu
aGVpZ2h0KCkpOwotCi0gICAgcmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKLSAgICByZXR1cm4gcmVj
dDsKLX0KLQotVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5h
dGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaW50IHggPSBw
b2ludC54KCkgLyBtX3RpbGVTaXplLndpZHRoKCk7Ci0gICAgaW50IHkgPSBwb2ludC55KCkgLyBt
X3RpbGVTaXplLmhlaWdodCgpOwotICAgIHJldHVybiBUaWxlOjpDb29yZGluYXRlKHN0ZDo6bWF4
KHgsIDApLCBzdGQ6Om1heCh5LCAwKSk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNl
dFN1cHBvcnRzQWxwaGEoYm9vbCBhKQotewotICAgIGlmIChhID09IG1fc3VwcG9ydHNBbHBoYSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fc3VwcG9ydHNBbHBoYSA9IGE7Ci0gICAgaW52YWxpZGF0
ZShtX3JlY3QpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVhYjE2ZjUwMzBmZjcwNWFiYTVjYmVkMTliY2M5MTliMmE4OTQ5YzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEyMyArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIAotIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAKLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5nU3Rv
cmVfaAotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiVGlsZS5oIgotI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsK
LWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50OwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9y
ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tl
bmQ+KTsKLSAgICB+VGlsZWRCYWNraW5nU3RvcmUoKTsKLQotICAgIFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQotCi0gICAgdm9pZCBzZXRUcmFq
ZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGNvdmVyV2l0aFRpbGVz
SWZOZWVkZWQoKTsKLQotICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRl
bnRzU2NhbGU7IH0KLSAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwotCi0gICAgdm9p
ZCB1cGRhdGVUaWxlQnVmZmVycygpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCk7Ci0KLSAgICBJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gbV90aWxl
U2l6ZTsgfQotICAgIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgSW50
UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IG1h
cEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0KLSAgICBJbnRSZWN0IHRpbGVS
ZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBUaWxlOjpDb29yZGluYXRlJikgY29uc3Q7Ci0gICAgVGls
ZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29u
c3Q7Ci0gICAgZG91YmxlIHRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29u
c3QgVGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0OwotCi0gICAgSW50UmVjdCBjb3ZlclJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2NvdmVyUmVjdDsgfQotICAgIGJvb2wgdmlzaWJsZUFyZWFJc0NvdmVy
ZWQoKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpOwotCi0gICAg
dm9pZCBzZXRTdXBwb3J0c0FscGhhKGJvb2wpOwotCi1wcml2YXRlOgotICAgIHZvaWQgY3JlYXRl
VGlsZXMoKTsKLSAgICB2b2lkIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25z
dDsKLQotICAgIGJvb2wgcmVzaXplRWRnZVRpbGVzKCk7Ci0gICAgdm9pZCBzZXRDb3ZlclJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX2NvdmVyUmVjdCA9IHJlY3Q7IH0KLSAgICB2b2lkIHNl
dEtlZXBSZWN0KGNvbnN0IEludFJlY3QmKTsKLQotICAgIFBhc3NSZWZQdHI8VGlsZT4gdGlsZUF0
KGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdDsKLSAgICB2b2lkIHNldFRpbGUoY29uc3Qg
VGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKTsKLSAg
ICB2b2lkIHJlbW92ZVRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSk7Ci0K
LSAgICBJbnRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjb3ZlcmFnZVJh
dGlvKGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdEZvckNvbnRlbnRzUmVj
dChJbnRSZWN0JikgY29uc3Q7Ci0KLSAgICB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKLQot
cHJpdmF0ZToKLSAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gbV9iYWNrZW5kOwotCi0gICAg
dHlwZWRlZiBIYXNoTWFwPFRpbGU6OkNvb3JkaW5hdGUsIFJlZlB0cjxUaWxlPiA+IFRpbGVNYXA7
Ci0gICAgVGlsZU1hcCBtX3RpbGVzOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGZs
b2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsKLQotICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5
VmVjdG9yOwotICAgIEZsb2F0UG9pbnQgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKLSAgICBJ
bnRSZWN0IG1fdmlzaWJsZVJlY3Q7Ci0KLSAgICBJbnRSZWN0IG1fY292ZXJSZWN0OwotICAgIElu
dFJlY3QgbV9rZWVwUmVjdDsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKLQotICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOwotICAgIGJvb2wgbV9wZW5k
aW5nVGlsZUNyZWF0aW9uOwotCi0gICAgZnJpZW5kIGNsYXNzIFRpbGU7Ci19OwotCi19Ci0KLSNl
bmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NzI2YmI5ZjMzZWFiMWQ5N2IxNDljMTQ4MmNkMzYxMTlkMzFmOWJjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDMgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpZm5kZWYgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5n
U3RvcmVCYWNrZW5kX2gKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotCi0jaW5jbHVk
ZSAiVGlsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRpbGVkQmFja2luZ1N0
b3JlOwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHZpcnR1YWwgflRpbGVkQmFja2luZ1N0b3JlQmFj
a2VuZCgpIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaWxlPiBjcmVhdGVUaWxlKFRpbGVk
QmFja2luZ1N0b3JlKiwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSA9IDA7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjlhN2Q5MzI3MjQxNTFjY2U0NzU3Njk2
N2UyZDQxZDNlNWQzZTE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAK
LSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAot
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dF9oCi0jZGVmaW5lIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLWNsYXNzIENvbG9yOwotY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQo
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KLSAgICB2aXJ0
dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7Ci0gICAgdmly
dHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsK
LX07Ci0KLSNlbHNlCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7fTsKLSNlbmRpZgot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vVGlsZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9UaWxlQ2Fpcm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcyZmZiMjNi
MTJkOTEzZDhiODgwNzRjYWY3ZGJiM2FhN2I3Mjg5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9UaWxlQ2Fpcm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVGls
ZUNhaXJvX2gKLSNkZWZpbmUgVGlsZUNhaXJvX2gKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKSAmJiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgIlRpbGUuaCIKLSNp
bmNsdWRlIDxjYWlyby5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUaWxlZEJh
Y2tpbmdTdG9yZTsKLQotY2xhc3MgVGlsZUNhaXJvIDogcHVibGljIFRpbGUgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbGU+IGNyZWF0ZShUaWxlZEJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlLCBjb25zdCBDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGlsZUNhaXJvKGJhY2tpbmdTdG9yZSwgdGlsZUNvb3Jk
aW5hdGUpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VGlsZUNhaXJvKCk7Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNEaXJ0eSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0
IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVCYWNrQnVmZmVy
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWR5VG9QYWludCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFRp
bGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdGU7
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
LQotcHJvdGVjdGVkOgotICAgIFRpbGVDYWlybyhUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENv
b3JkaW5hdGUmKTsKLQotICAgIFRpbGVkQmFja2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKLSAg
ICBDb29yZGluYXRlIG1fY29vcmRpbmF0ZTsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fYnVmZmVyOwotICAgIFJlZlB0cjxjYWlyb19yZWdpb25f
dD4gbV9kaXJ0eVJlZ2lvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBVU0UoQ0FJUk8pCi0KLSNlbmRpZiAvLyBU
aWxlQ2Fpcm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFiOWIwZDljZDVkYmIx
ZmM4YjliYjg1ZjZiYWRmMWJmZTFhZDlhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgVGlsZV9oCisjZGVmaW5lIFRpbGVfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKKyNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworCitjbGFzcyBUaWxlIDogcHVibGljIFJlZkNvdW50ZWQ8VGlsZT4geworcHVibGlj
OgorICAgIHR5cGVkZWYgSW50UG9pbnQgQ29vcmRpbmF0ZTsKKworICAgIHZpcnR1YWwgflRpbGUo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBWZWN0
b3I8SW50UmVjdD4gdXBkYXRlQmFja0J1ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dh
cEJhY2tCdWZmZXJUb0Zyb250KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWR5VG9QYWlu
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYgY29vcmRpbmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJl
Y3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJikgPSAwOworfTsKKworfQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZWZkNmUyZGFkZDE2
YmRjNTkyNTU3NDAzMmI0MDU5YWFlZDZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3Rv
cmUuY3BwCkBAIC0wLDAgKzEsNDcxIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIAorIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGlsZWRCYWNr
aW5nU3RvcmUuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZURp
bWVuc2lvbiA9IDUxMjsKKworc3RhdGljIEludFBvaW50IGlubmVyQm90dG9tUmlnaHQoY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyAgICAvLyBBY3R1YWxseSwgdGhlIHJlY3QgZG9lcyBub3QgY29u
dGFpbiByZWN0Lm1heFgoKS4gUmVmZXIgdG8gSW50UmVjdDo6Y29udGFpbi4KKyAgICByZXR1cm4g
SW50UG9pbnQocmVjdC5tYXhYKCkgLSAxLCByZWN0Lm1heFkoKSAtIDEpOworfQorCitUaWxlZEJh
Y2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNs
aWVudCwgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gYmFja2VuZCkK
KyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fYmFja2VuZChXVEY6Om1vdmUoYmFja2Vu
ZCkpCisgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURp
bWVuc2lvbikKKyAgICAsIG1fY292ZXJBcmVhTXVsdGlwbGllcigyLjBmKQorICAgICwgbV9jb250
ZW50c1NjYWxlKDEuZikKKyAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAsIG1fcGVu
ZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkKK3sKK30KKworVGlsZWRCYWNraW5nU3RvcmU6On5UaWxl
ZEJhY2tpbmdTdG9yZSgpCit7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVT
aXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgbV90aWxlU2l6ZSA9IHNpemU7CisgICAg
bV90aWxlcy5jbGVhcigpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0
b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit7CisgICAgbV9w
ZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5kaW5n
VHJhamVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpCit7CisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9
IHRoaXMtPnZpc2libGVSZWN0KCk7CisgICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRz
KG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKworICAgIGJvb2wg
ZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0
b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKKyAg
ICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKKyAgICAgICAgY3JlYXRl
VGlsZXMoKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKK3sKKyAgICBJbnRSZWN0IGRpcnR5UmVjdChtYXBG
cm9tQ29udGVudHMoY29udGVudHNEaXJ0eVJlY3QpKTsKKyAgICBJbnRSZWN0IGtlZXBSZWN0Rml0
VG9UaWxlU2l6ZSA9IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZUZvclBvaW50
KG1fa2VlcFJlY3QubG9jYXRpb24oKSkpOworICAgIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZS51bml0
ZSh0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRv
bVJpZ2h0KG1fa2VlcFJlY3QpKSkpOworCisgICAgLy8gT25seSBpdGVyYXRlIG9uIHRoZSBwYXJ0
IG9mIHRoZSByZWN0IHRoYXQgd2Uga25vdyB3ZSBtaWdodCBoYXZlIHRpbGVzLgorICAgIEludFJl
Y3QgY292ZXJlZERpcnR5UmVjdCA9IGludGVyc2VjdGlvbihkaXJ0eVJlY3QsIGtlZXBSZWN0Rml0
VG9UaWxlU2l6ZSk7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5h
dGVGb3JQb2ludChjb3ZlcmVkRGlydHlSZWN0LmxvY2F0aW9uKCkpOworICAgIFRpbGU6OkNvb3Jk
aW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmln
aHQoY292ZXJlZERpcnR5UmVjdCkpOworCisgICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BM
ZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7
CisgICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRl
IDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgeworICAgICAgICAgICAgUmVmUHRy
PFRpbGU+IGN1cnJlbnRUaWxlID0gdGlsZUF0KFRpbGU6OkNvb3JkaW5hdGUoeENvb3JkaW5hdGUs
IHlDb29yZGluYXRlKSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRUaWxlKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgLy8gUGFzcyB0aGUgZnVsbCByZWN0IHRvIGVh
Y2ggdGlsZSBhcyBjb3ZlcmVkRGlydHlSZWN0IG1pZ2h0IG5vdAorICAgICAgICAgICAgLy8gY29u
dGFpbiB0aGVtIGNvbXBsZXRlbHkgYW5kIHdlIGRvbid0IHdhbnQgcGFydGlhbCB0aWxlIHJlZHJh
d3MuCisgICAgICAgICAgICBjdXJyZW50VGlsZS0+aW52YWxpZGF0ZShkaXJ0eVJlY3QpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVm
ZmVycygpCit7CisgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwor
CisgICAgVmVjdG9yPEludFJlY3Q+IHBhaW50ZWRBcmVhOworICAgIFZlY3RvcjxSZWZQdHI8VGls
ZT4gPiBkaXJ0eVRpbGVzOworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKCF0aWxlLT5pc0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgZGlydHlUaWxlcy5hcHBlbmQodGlsZSk7CisgICAgfQorCisgICAgaWYgKGRpcnR5
VGlsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBh
aW50RW5kKHBhaW50ZWRBcmVhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBJbiBzaW5nbGUgdGhyZWFkZWQgY2FzZSwgdGlsZSBiYWNrIGJ1ZmZlcnMgY291bGQgYmUg
dXBkYXRlZCBhc3luY2hyb25vdXNseSAKKyAgICAvLyBvbmUgYnkgb25lIGFuZCB0aGVuIHN3YXBw
ZWQgdG8gZnJvbnQgaW4gb25lIGdvLiBUaGlzIHdvdWxkIG1pbmltaXplIHRoZSB0aW1lIHNwZW50
CisgICAgLy8gYmxvY2tpbmcgb24gdGlsZSB1cGRhdGVzLgorICAgIHVuc2lnbmVkIHNpemUgPSBk
aXJ0eVRpbGVzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgKytu
KSB7CisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0eVRpbGVzW25d
LT51cGRhdGVCYWNrQnVmZmVyKCk7CisgICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3Rvcihw
YWludGVkUmVjdHMpOworICAgICAgICBkaXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJv
bnQoKTsKKyAgICB9CisKKyAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChw
YWludGVkQXJlYSk7Cit9CisKK0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6OnZpc2libGVSZWN0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJh
Y2tpbmdTdG9yZVZpc2libGVSZWN0KCkpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpz
ZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIGlmIChzY2FsZSA9PSBtX2NvbnRl
bnRzU2NhbGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxl
OworICAgIG1fdGlsZXMuY2xlYXIoKTsKKyAgICBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7Cit9
CisKK2RvdWJsZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3Qm
IHZpZXdwb3J0LCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkgY29uc3QK
K3sKKyAgICBpZiAodmlld3BvcnQuaW50ZXJzZWN0cyh0aWxlUmVjdEZvckNvb3JkaW5hdGUodGls
ZUNvb3JkaW5hdGUpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBJbnRQb2ludCB2aWV3Q2Vu
dGVyID0gdmlld3BvcnQubG9jYXRpb24oKSArIEludFNpemUodmlld3BvcnQud2lkdGgoKSAvIDIs
IHZpZXdwb3J0LmhlaWdodCgpIC8gMik7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSBjZW50ZXJDb29y
ZGluYXRlID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludCh2aWV3Q2VudGVyKTsKKworICAgIHJldHVy
biBzdGQ6Om1heChhYnMoY2VudGVyQ29vcmRpbmF0ZS55KCkgLSB0aWxlQ29vcmRpbmF0ZS55KCkp
LCBhYnMoY2VudGVyQ29vcmRpbmF0ZS54KCkgLSB0aWxlQ29vcmRpbmF0ZS54KCkpKTsKK30KKwor
Ly8gUmV0dXJucyBhIHJhdGlvIGJldHdlZW4gMC4wZiBhbmQgMS4wZiBvZiB0aGUgc3VyZmFjZSBv
ZiBjb250ZW50c1JlY3QgY292ZXJlZCBieSByZW5kZXJlZCB0aWxlcy4KK2Zsb2F0IFRpbGVkQmFj
a2luZ1N0b3JlOjpjb3ZlcmFnZVJhdGlvKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvbnRlbnRz
UmVjdCkgY29uc3QKK3sKKyAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IG1hcEZyb21Db250ZW50cyhj
b250ZW50c1JlY3QpOworICAgIGZsb2F0IHJlY3RBcmVhID0gZGlydHlSZWN0LndpZHRoKCkgKiBk
aXJ0eVJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgY292ZXJBcmVhID0gMC4wZjsKKworICAgIFRp
bGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoZGlydHlSZWN0
LmxvY2F0aW9uKCkpOworICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29v
cmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQoZGlydHlSZWN0KSk7CisKKyAgICBmb3Ig
KGludCB5Q29vcmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdo
dC55KCk7ICsreUNvb3JkaW5hdGUpIHsKKyAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0
b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRl
KSB7CisgICAgICAgICAgICBUaWxlOjpDb29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29y
ZGluYXRlLCB5Q29vcmRpbmF0ZSk7CisgICAgICAgICAgICBSZWZQdHI8VGlsZT4gY3VycmVudFRp
bGUgPSB0aWxlQXQoY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRU
aWxlICYmIGN1cnJlbnRUaWxlLT5pc1JlYWR5VG9QYWludCgpKSB7CisgICAgICAgICAgICAgICAg
SW50UmVjdCBjb3ZlclJlY3QgPSBpbnRlcnNlY3Rpb24oZGlydHlSZWN0LCBjdXJyZW50VGlsZS0+
cmVjdCgpKTsKKyAgICAgICAgICAgICAgICBjb3ZlckFyZWEgKz0gY292ZXJSZWN0LndpZHRoKCkg
KiBjb3ZlclJlY3QuaGVpZ2h0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGNvdmVyQXJlYSAvIHJlY3RBcmVhOworfQorCitib29sIFRpbGVkQmFja2luZ1N0
b3JlOjp2aXNpYmxlQXJlYUlzQ292ZXJlZCgpIGNvbnN0Cit7CisgICAgSW50UmVjdCBib3VuZGVk
VmlzaWJsZUNvbnRlbnRzUmVjdCA9IGludGVyc2VjdGlvbihtX2NsaWVudC0+dGlsZWRCYWNraW5n
U3RvcmVWaXNpYmxlUmVjdCgpLCBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1Jl
Y3QoKSk7CisgICAgcmV0dXJuIGNvdmVyYWdlUmF0aW8oYm91bmRlZFZpc2libGVDb250ZW50c1Jl
Y3QpID09IDEuMGY7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkK
K3sKKyAgICAvLyBVcGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgZ2VvbWV0cnkuCisgICAgY29uc3Qg
SW50UmVjdCBwcmV2aW91c1JlY3QgPSBtX3JlY3Q7CisgICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRl
bnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBtX3Ry
YWplY3RvcnlWZWN0b3IgPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOworICAgIG1fdmlzaWJs
ZVJlY3QgPSB2aXNpYmxlUmVjdCgpOworCisgICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgc2V0Q292ZXJSZWN0KEludFJlY3QoKSk7CisgICAgICAgIHNldEtlZXBSZWN0KEludFJl
Y3QoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBXZSBtdXN0IGNvbXB1dGUg
Y292ZXIgYW5kIGtlZXAgcmVjdHMgdXNpbmcgdGhlIHZpc2libGVSZWN0LCBpbnN0ZWFkIG9mIHRo
ZSByZWN0IGludGVyc2VjdGluZyB0aGUgdmlzaWJsZVJlY3Qgd2l0aCBtX3JlY3QsCisgICAgICog
YmVjYXVzZSBUQlMgY2FuIGJlIHVzZWQgYXMgYSBiYWNraW5nIHN0b3JlIG9mIEdyYXBoaWNzTGF5
ZXIgYW5kIHRoZSB2aXNpYmxlIHJlY3QgdXN1YWxseSBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCBt
X3JlY3QuCisgICAgICogSW4gdGhlIGJlbG93IGNhc2UsIHRoZSBpbnRlcnNlY3RpbmcgcmVjdCBp
cyBhbiBlbXB0eS4KKyAgICAgKgorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8
ICAgICAgICAgICAgICAgfAorICAgICAqICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICB8ICAg
ICAgICstLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgICAgIHwg
SEVSRSAgfCAgY292ZXIgb3Iga2VlcCAgICAgICAgfAorICAgICAqICArLS0tLS0tLS0tLS0tLS0t
KyAgICAgIHJlY3QgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0t
LS0tLS0tKyAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUg
fCAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAg
ICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAg
fAorICAgICAqICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAqICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAqCisgICAgICog
V2UgbXVzdCBjcmVhdGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgorICAg
ICAqLworCisgICAgSW50UmVjdCBjb3ZlclJlY3Q7CisgICAgSW50UmVjdCBrZWVwUmVjdDsKKyAg
ICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBS
ZWN0KTsKKworICAgIHNldENvdmVyUmVjdChjb3ZlclJlY3QpOworICAgIHNldEtlZXBSZWN0KGtl
ZXBSZWN0KTsKKworICAgIGlmIChjb3ZlclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBSZXNpemUgdGlsZXMgYXQgdGhlIGVkZ2UgaW4gY2FzZSB0aGUgY29udGVudHMg
c2l6ZSBoYXMgY2hhbmdlZCwgYnV0IG9ubHkgZG8gc28KKyAgICAvLyBhZnRlciBoYXZpbmcgZHJv
cHBlZCB0aWxlcyBvdXRzaWRlIHRoZSBrZWVwIHJlY3QuCisgICAgYm9vbCBkaWRSZXNpemVUaWxl
cyA9IGZhbHNlOworICAgIGlmIChwcmV2aW91c1JlY3QgIT0gbV9yZWN0KQorICAgICAgICBkaWRS
ZXNpemVUaWxlcyA9IHJlc2l6ZUVkZ2VUaWxlcygpOworCisgICAgLy8gU2VhcmNoIGZvciB0aGUg
dGlsZSBwb3NpdGlvbiBjbG9zZXN0IHRvIHRoZSB2aWV3cG9ydCBjZW50ZXIgdGhhdCBkb2VzIG5v
dCB5ZXQgY29udGFpbiBhIHRpbGUuCisgICAgLy8gV2hpY2ggcG9zaXRpb24gaXMgY29uc2lkZXJl
ZCB0aGUgY2xvc2VzdCBkZXBlbmRzIG9uIHRoZSB0aWxlRGlzdGFuY2UgZnVuY3Rpb24uCisgICAg
ZG91YmxlIHNob3J0ZXN0RGlzdGFuY2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCk7CisgICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRpbGVzVG9DcmVhdGU7Cisg
ICAgdW5zaWduZWQgcmVxdWlyZWRUaWxlQ291bnQgPSAwOworCisgICAgLy8gQ292ZXIgYXJlYXMg
KGluIHRpbGVzKSB3aXRoIG1pbmltdW0gZGlzdGFuY2UgZnJvbSB0aGUgdmlzaWJsZSByZWN0LiBJ
ZiB0aGUgdmlzaWJsZSByZWN0IGlzCisgICAgLy8gbm90IGNvdmVyZWQgYWxyZWFkeSBpdCB3aWxs
IGJlIGNvdmVyZWQgZmlyc3QgaW4gb25lIGdvLCBkdWUgdG8gdGhlIGRpc3RhbmNlIGJlaW5nIDAg
Zm9yIHRpbGVzCisgICAgLy8gaW5zaWRlIHRoZSB2aXNpYmxlIHJlY3QuCisgICAgVGlsZTo6Q29v
cmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb3ZlclJlY3QubG9jYXRp
b24oKSk7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSBib3R0b21SaWdodCA9IHRpbGVDb29yZGluYXRl
Rm9yUG9pbnQoaW5uZXJCb3R0b21SaWdodChjb3ZlclJlY3QpKTsKKyAgICBmb3IgKGludCB5Q29v
cmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsr
eUNvb3JkaW5hdGUpIHsKKyAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0Lngo
KTsgeENvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7CisgICAg
ICAgICAgICBUaWxlOjpDb29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5
Q29vcmRpbmF0ZSk7CisgICAgICAgICAgICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291
bnQ7CisgICAgICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxl
UmVjdCwgY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hv
cnRlc3REaXN0YW5jZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlm
IChkaXN0YW5jZSA8IHNob3J0ZXN0RGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICB0aWxlc1Rv
Q3JlYXRlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3Rh
bmNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGlsZXNUb0NyZWF0ZS5hcHBlbmQoY3Vy
cmVudENvb3JkaW5hdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGNvbnN0cnVj
dCB0aGUgdGlsZShzKSB3aXRoaW4gdGhlIHNob3J0ZXN0IGRpc3RhbmNlLgorICAgIHVuc2lnbmVk
IHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOworICAgIGZvciAodW5z
aWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgeworICAgICAgICBUaWxl
OjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOworICAgICAgICBzZXRU
aWxlKGNvb3JkaW5hdGUsIG1fYmFja2VuZC0+Y3JlYXRlVGlsZSh0aGlzLCBjb29yZGluYXRlKSk7
CisgICAgfQorICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsKKwor
ICAgIC8vIFBhaW50IHRoZSBjb250ZW50IG9mIHRoZSBuZXdseSBjcmVhdGVkIHRpbGVzIG9yIHJl
c2l6ZWQgdGlsZXMuCisgICAgaWYgKHRpbGVzVG9DcmVhdGVDb3VudCB8fCBkaWRSZXNpemVUaWxl
cykKKyAgICAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKKworICAgIC8vIFJlLWNhbGwgY3JlYXRl
VGlsZXMgb24gYSB0aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5ld2Vz
dCBzaG9ydGVzdCBkaXN0YW5jZS4KKyAgICBtX3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJl
ZFRpbGVDb3VudDsKKyAgICBpZiAobV9wZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAgICBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCk7Cit9CisKK3Zv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIEludFJlY3QgYm91bmRzID0gbV9yZWN0OworICAgIEludFNpemUgY2Fu
ZGlkYXRlU2l6ZSA9IHJlY3Quc2l6ZSgpOworCisgICAgcmVjdC5pbnRlcnNlY3QoYm91bmRzKTsK
KworICAgIGlmIChyZWN0LnNpemUoKSA9PSBjYW5kaWRhdGVTaXplKQorICAgICAgICByZXR1cm47
CisKKyAgICAvKgorICAgICAqIEluIHRoZSBmb2xsb3dpbmcgY2FzZSwgdGhlcmUgaXMgbm8gaW50
ZXJzZWN0aW9uIG9mIHRoZSBjb250ZW50cyByZWN0IGFuZCB0aGUgY292ZXIgcmVjdC4KKyAgICAg
KiBUaHVzIHRoZSBsYXR0ZXIgc2hvdWxkIG5vdCBiZSBpbmZsYXRlZC4KKyAgICAgKgorICAgICAq
ICArLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICAr
LS0tLS0tLS0tLS0tLS0tKworICAgICAqCisgICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICogICAgICAgICAgfCAgICAgICAgICBjb3ZlciByZWN0
ICAgICAgICAgICB8CisgICAgICogICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAg
ICAgICB8CisgICAgICogICAgICAgICAgfCAgICAgICAgIHwgdmlzaWJsZSB8ICAgICAgICAgICB8
CisgICAgICogICAgICAgICAgfCAgICAgICAgIHwgIHJlY3QgICB8ICAgICAgICAgICB8CisgICAg
ICogICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8CisgICAgICogICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICovCisgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUcnkgdG8gY3JlYXRl
IGEgY292ZXIgcmVjdCBvZiB0aGUgc2FtZSBzaXplIGFzIHRoZSBjYW5kaWRhdGUsIGJ1dCB3aXRo
aW4gY29udGVudCBib3VuZHMuCisgICAgaW50IHBpeGVsc0NvdmVyZWQgPSBjYW5kaWRhdGVTaXpl
LndpZHRoKCkgKiBjYW5kaWRhdGVTaXplLmhlaWdodCgpOworCisgICAgaWYgKHJlY3Qud2lkdGgo
KSA8IGNhbmRpZGF0ZVNpemUud2lkdGgoKSkKKyAgICAgICAgcmVjdC5pbmZsYXRlWSgoKHBpeGVs
c0NvdmVyZWQgLyByZWN0LndpZHRoKCkpIC0gcmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAgICBpZiAo
cmVjdC5oZWlnaHQoKSA8IGNhbmRpZGF0ZVNpemUuaGVpZ2h0KCkpCisgICAgICAgIHJlY3QuaW5m
bGF0ZVgoKChwaXhlbHNDb3ZlcmVkIC8gcmVjdC5oZWlnaHQoKSkgLSByZWN0LndpZHRoKCkpIC8g
Mik7CisKKyAgICByZWN0LmludGVyc2VjdChib3VuZHMpOworfQorCit2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjpjb21wdXRlQ292ZXJBbmRLZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgSW50UmVjdCYgY292ZXJSZWN0LCBJbnRSZWN0JiBrZWVwUmVjdCkgY29uc3QKK3sKKyAgICBj
b3ZlclJlY3QgPSB2aXNpYmxlUmVjdDsKKyAgICBrZWVwUmVjdCA9IHZpc2libGVSZWN0OworCisg
ICAgLy8gSWYgd2UgY292ZXIgbW9yZSB0aGF0IHRoZSBhY3R1YWwgdmlld3BvcnQgd2UgY2FuIGJl
IHNtYXJ0IGFib3V0IHdoaWNoIHRpbGVzIHdlIGNob29zZSB0byByZW5kZXIuCisgICAgaWYgKG1f
Y292ZXJBcmVhTXVsdGlwbGllciA+IDEpIHsKKyAgICAgICAgLy8gVGhlIGluaXRpYWwgY292ZXIg
YXJlYSBjb3ZlcnMgZXF1YWxseSBpbiBlYWNoIGRpcmVjdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBj
b3ZlckFyZWFNdWx0aXBsaWVyLgorICAgICAgICBjb3ZlclJlY3QuaW5mbGF0ZVgodmlzaWJsZVJl
Y3Qud2lkdGgoKSAqIChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAgICAgICBj
b3ZlclJlY3QuaW5mbGF0ZVkodmlzaWJsZVJlY3QuaGVpZ2h0KCkgKiAobV9jb3ZlckFyZWFNdWx0
aXBsaWVyIC0gMSkgLyAyKTsKKyAgICAgICAga2VlcFJlY3QgPSBjb3ZlclJlY3Q7CisKKyAgICAg
ICAgaWYgKG1fdHJhamVjdG9yeVZlY3RvciAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKKyAgICAg
ICAgICAgIC8vIEEgbnVsbCB0cmFqZWN0b3J5IHZlY3RvciAobm8gbW90aW9uKSBtZWFucyB0aGF0
IHRpbGVzIGZvciB0aGUgY292ZXJBcmVhIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgIC8v
IEEgbm9uLW51bGwgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBzaHJpbmsgdGhlIGNvdmVyZWQgcmVj
dCB0byB2aXNpYmxlUmVjdCBwbHVzIGl0cyBleHBhbnNpb24gZnJvbSBpdHMKKyAgICAgICAgICAg
IC8vIGNlbnRlciB0b3dhcmQgdGhlIGNvdmVyIGFyZWEgZWRnZXMgaW4gdGhlIGRpcmVjdGlvbiBv
ZiB0aGUgZ2l2ZW4gdmVjdG9yLgorCisgICAgICAgICAgICAvLyBFLmcuIGlmIHZpc2libGVSZWN0
ID09ICgxMCwxMCk1eDUgYW5kIGNvdmVyQXJlYU11bHRpcGxpZXIgPT0gMy4wOgorICAgICAgICAg
ICAgLy8gYSAoMCwwKSB0cmFqZWN0b3J5IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBpbnRlcnNl
Y3RpbmcgKDUsNSkxNXgxNSwKKyAgICAgICAgICAgIC8vIGEgKDEsMCkgdHJhamVjdG9yeSB2ZWN0
b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICgxMCwxMCkxMHg1LAorICAgICAgICAg
ICAgLy8gYW5kIGEgKDEsMSkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50
ZXJzZWN0aW5nICgxMCwxMCkxMHgxMC4KKworICAgICAgICAgICAgLy8gTXVsdGlwbHkgdGhlIHZl
Y3RvciBieSB0aGUgZGlzdGFuY2UgdG8gdGhlIGVkZ2Ugb2YgdGhlIGNvdmVyIGFyZWEuCisgICAg
ICAgICAgICBmbG9hdCB0cmFqZWN0b3J5VmVjdG9yTXVsdGlwbGllciA9IChtX2NvdmVyQXJlYU11
bHRpcGxpZXIgLSAxKSAvIDI7CisKKyAgICAgICAgICAgIC8vIFVuaXRlIHRoZSB2aXNpYmxlIHJl
Y3Qgd2l0aCBhICJnaG9zdCIgb2YgdGhlIHZpc2libGUgcmVjdCBtb3ZlZCBpbiB0aGUgZGlyZWN0
aW9uIG9mIHRoZSB0cmFqZWN0b3J5IHZlY3Rvci4KKyAgICAgICAgICAgIGNvdmVyUmVjdCA9IHZp
c2libGVSZWN0OworICAgICAgICAgICAgY292ZXJSZWN0Lm1vdmUoY292ZXJSZWN0LndpZHRoKCkg
KiBtX3RyYWplY3RvcnlWZWN0b3IueCgpICogdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIsIGNv
dmVyUmVjdC5oZWlnaHQoKSAqIG1fdHJhamVjdG9yeVZlY3Rvci55KCkgKiB0cmFqZWN0b3J5VmVj
dG9yTXVsdGlwbGllcik7CisKKyAgICAgICAgICAgIGNvdmVyUmVjdC51bml0ZSh2aXNpYmxlUmVj
dCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVj
dCkpOworICAgIH0KKworICAgIGFkanVzdEZvckNvbnRlbnRzUmVjdChjb3ZlclJlY3QpOworCisg
ICAgLy8gVGhlIGtlZXAgcmVjdCBpcyBhbiBpbmZsYXRlZCB2ZXJzaW9uIG9mIHRoZSBjb3ZlciBy
ZWN0LCBpbmZsYXRlZCBpbiB0aWxlIGRpbWVuc2lvbnMuCisgICAga2VlcFJlY3QudW5pdGUoY292
ZXJSZWN0KTsKKyAgICBrZWVwUmVjdC5pbmZsYXRlWChtX3RpbGVTaXplLndpZHRoKCkgLyAyKTsK
KyAgICBrZWVwUmVjdC5pbmZsYXRlWShtX3RpbGVTaXplLmhlaWdodCgpIC8gMik7CisgICAga2Vl
cFJlY3QuaW50ZXJzZWN0KG1fcmVjdCk7CisKKyAgICBBU1NFUlQoY292ZXJSZWN0LmlzRW1wdHko
KSB8fCBrZWVwUmVjdC5jb250YWlucyhjb3ZlclJlY3QpKTsKK30KKworYm9vbCBUaWxlZEJhY2tp
bmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKCkKK3sKKyAgICBib29sIHdhc1Jlc2l6ZWQgPSBmYWxz
ZTsKKyAgICBWZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdGlsZXNUb1JlbW92ZTsKKyAgICBmb3Ig
KGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7CisgICAgICAgIFRpbGU6OkNvb3JkaW5h
dGUgdGlsZUNvb3JkaW5hdGUgPSB0aWxlLT5jb29yZGluYXRlKCk7CisgICAgICAgIEludFJlY3Qg
dGlsZVJlY3QgPSB0aWxlLT5yZWN0KCk7CisgICAgICAgIEludFJlY3QgZXhwZWN0ZWRUaWxlUmVj
dCA9IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZSk7CisgICAgICAgIGlmIChl
eHBlY3RlZFRpbGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHRpbGVzVG9SZW1vdmUuYXBw
ZW5kKHRpbGVDb29yZGluYXRlKTsKKyAgICAgICAgZWxzZSBpZiAoZXhwZWN0ZWRUaWxlUmVjdCAh
PSB0aWxlUmVjdCkgeworICAgICAgICAgICAgdGlsZS0+cmVzaXplKGV4cGVjdGVkVGlsZVJlY3Qu
c2l6ZSgpKTsKKyAgICAgICAgICAgIHdhc1Jlc2l6ZWQgPSB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIHVuc2lnbmVkIHJlbW92ZUNvdW50ID0gdGlsZXNUb1JlbW92ZS5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHJlbW92ZUNvdW50OyArK24pCisgICAgICAgIHJlbW92
ZVRpbGUodGlsZXNUb1JlbW92ZVtuXSk7CisgICAgcmV0dXJuIHdhc1Jlc2l6ZWQ7Cit9CisKK3Zv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIGtlZXBSZWN0
KQoreworICAgIC8vIERyb3AgdGlsZXMgb3V0c2lkZSB0aGUgbmV3IGtlZXBSZWN0LgorCisgICAg
RmxvYXRSZWN0IGtlZXBSZWN0RiA9IGtlZXBSZWN0OworCisgICAgVmVjdG9yPFRpbGU6OkNvb3Jk
aW5hdGU+IHRvUmVtb3ZlOworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkp
IHsKKyAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjb29yZGluYXRlID0gdGlsZS0+Y29vcmRpbmF0
ZSgpOworICAgICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlLT5yZWN0KCk7CisgICAgICAg
IGlmICghdGlsZVJlY3QuaW50ZXJzZWN0cyhrZWVwUmVjdEYpKQorICAgICAgICAgICAgdG9SZW1v
dmUuYXBwZW5kKGNvb3JkaW5hdGUpOworICAgIH0KKyAgICB1bnNpZ25lZCByZW1vdmVDb3VudCA9
IHRvUmVtb3ZlLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3ZlQ291
bnQ7ICsrbikKKyAgICAgICAgcmVtb3ZlVGlsZSh0b1JlbW92ZVtuXSk7CisKKyAgICBtX2tlZXBS
ZWN0ID0ga2VlcFJlY3Q7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbE5v
blZpc2libGVUaWxlcygpCit7CisgICAgSW50UmVjdCBib3VuZGVkVmlzaWJsZVJlY3QgPSBtYXBG
cm9tQ29udGVudHMoaW50ZXJzZWN0aW9uKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVZpc2li
bGVSZWN0KCksIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKSk7Cisg
ICAgc2V0S2VlcFJlY3QoYm91bmRlZFZpc2libGVSZWN0KTsKK30KKworUGFzc1JlZlB0cjxUaWxl
PiBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUF0KGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3Jk
aW5hdGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGlsZXMuZ2V0KGNvb3JkaW5hdGUpOworfQor
Cit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUm
IGNvb3JkaW5hdGUsIFBhc3NSZWZQdHI8VGlsZT4gdGlsZSkKK3sKKyAgICBtX3RpbGVzLnNldChj
b29yZGluYXRlLCB0aWxlKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlVGls
ZShjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKQoreworICAgIG1fdGlsZXMucmVt
b3ZlKGNvb3JkaW5hdGUpOworfQorCitJbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjptYXBUb0Nv
bnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpIC8gbV9jb250ZW50c1NjYWxlLAorICAgICAgICBy
ZWN0LnkoKSAvIG1fY29udGVudHNTY2FsZSwKKyAgICAgICAgcmVjdC53aWR0aCgpIC8gbV9jb250
ZW50c1NjYWxlLAorICAgICAgICByZWN0LmhlaWdodCgpIC8gbV9jb250ZW50c1NjYWxlKSk7Cit9
CisKK0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6Om1hcEZyb21Db250ZW50cyhjb25zdCBJbnRS
ZWN0JiByZWN0KSBjb25zdAoreworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVj
dChyZWN0LngoKSAqIG1fY29udGVudHNTY2FsZSwKKyAgICAgICAgcmVjdC55KCkgKiBtX2NvbnRl
bnRzU2NhbGUsCisgICAgICAgIHJlY3Qud2lkdGgoKSAqIG1fY29udGVudHNTY2FsZSwKKyAgICAg
ICAgcmVjdC5oZWlnaHQoKSAqIG1fY29udGVudHNTY2FsZSkpOworfQorCitJbnRSZWN0IFRpbGVk
QmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYgY29vcmRpbmF0ZSkgY29uc3QKK3sKKyAgICBJbnRSZWN0IHJlY3QoY29vcmRpbmF0ZS54KCkg
KiBtX3RpbGVTaXplLndpZHRoKCksCisgICAgICAgIGNvb3JkaW5hdGUueSgpICogbV90aWxlU2l6
ZS5oZWlnaHQoKSwKKyAgICAgICAgbV90aWxlU2l6ZS53aWR0aCgpLAorICAgICAgICBtX3RpbGVT
aXplLmhlaWdodCgpKTsKKworICAgIHJlY3QuaW50ZXJzZWN0KG1fcmVjdCk7CisgICAgcmV0dXJu
IHJlY3Q7Cit9CisKK1RpbGU6OkNvb3JkaW5hdGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVDb29y
ZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGludCB4
ID0gcG9pbnQueCgpIC8gbV90aWxlU2l6ZS53aWR0aCgpOworICAgIGludCB5ID0gcG9pbnQueSgp
IC8gbV90aWxlU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gVGlsZTo6Q29vcmRpbmF0ZShzdGQ6
Om1heCh4LCAwKSwgc3RkOjptYXgoeSwgMCkpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
OjpzZXRTdXBwb3J0c0FscGhhKGJvb2wgYSkKK3sKKyAgICBpZiAoYSA9PSBtX3N1cHBvcnRzQWxw
aGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N1cHBvcnRzQWxwaGEgPSBhOworICAgIGludmFs
aWRhdGUobV9yZWN0KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1RpbGVkQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVjZjExMzE5ZTFlNjhlOTFkMDlhMDZi
MjM4ZDU3OTYzMmJhYWNmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlX2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3Rv
cmVfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIlRpbGUuaCIKKyNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCIKKyNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7
CitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDsKKworY2xhc3MgVGlsZWRCYWNraW5nU3Rv
cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGVkQmFja2luZ1N0b3JlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVGlsZWRCYWNraW5nU3RvcmUoVGlsZWRC
YWNraW5nU3RvcmVDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8VGlsZWRCYWNraW5nU3RvcmVCYWNr
ZW5kPik7CisgICAgflRpbGVkQmFja2luZ1N0b3JlKCk7CisKKyAgICBUaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZvaWQgc2V0VHJh
amVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBjb3ZlcldpdGhUaWxl
c0lmTmVlZGVkKCk7CisKKyAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250
ZW50c1NjYWxlOyB9CisgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKKworICAgIHZv
aWQgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpOworCisgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGls
ZVNpemU7IH0KKyAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKKworICAgIElu
dFJlY3QgbWFwVG9Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgSW50UmVjdCBt
YXBGcm9tQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OworCisgICAgSW50UmVjdCB0aWxl
UmVjdEZvckNvb3JkaW5hdGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0OworICAgIFRp
bGU6OkNvb3JkaW5hdGUgdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIGRvdWJsZSB0aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNv
bnN0IFRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdDsKKworICAgIEludFJlY3QgY292ZXJSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb3ZlclJlY3Q7IH0KKyAgICBib29sIHZpc2libGVBcmVhSXNDb3Zl
cmVkKCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKTsKKworICAg
IHZvaWQgc2V0U3VwcG9ydHNBbHBoYShib29sKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0
ZVRpbGVzKCk7CisgICAgdm9pZCBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdChjb25zdCBJbnRSZWN0
JiB2aXNpYmxlUmVjdCwgSW50UmVjdCYgY292ZXJSZWN0LCBJbnRSZWN0JiBrZWVwUmVjdCkgY29u
c3Q7CisKKyAgICBib29sIHJlc2l6ZUVkZ2VUaWxlcygpOworICAgIHZvaWQgc2V0Q292ZXJSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9jb3ZlclJlY3QgPSByZWN0OyB9CisgICAgdm9pZCBz
ZXRLZWVwUmVjdChjb25zdCBJbnRSZWN0Jik7CisKKyAgICBQYXNzUmVmUHRyPFRpbGU+IHRpbGVB
dChjb25zdCBUaWxlOjpDb29yZGluYXRlJikgY29uc3Q7CisgICAgdm9pZCBzZXRUaWxlKGNvbnN0
IFRpbGU6OkNvb3JkaW5hdGUmLCBQYXNzUmVmUHRyPFRpbGU+KTsKKyAgICB2b2lkIHJlbW92ZVRp
bGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpOworCisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgp
IGNvbnN0OworCisgICAgZmxvYXQgY292ZXJhZ2VSYXRpbyhjb25zdCBJbnRSZWN0JikgY29uc3Q7
CisgICAgdm9pZCBhZGp1c3RGb3JDb250ZW50c1JlY3QoSW50UmVjdCYpIGNvbnN0OworCisgICAg
dm9pZCBwYWludENoZWNrZXJQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBUaWxlOjpDb29yZGluYXRlJik7CisKK3ByaXZhdGU6CisgICAgVGlsZWRCYWNraW5n
U3RvcmVDbGllbnQqIG1fY2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQ+IG1fYmFja2VuZDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxUaWxlOjpDb29y
ZGluYXRlLCBSZWZQdHI8VGlsZT4gPiBUaWxlTWFwOworICAgIFRpbGVNYXAgbV90aWxlczsKKwor
ICAgIEludFNpemUgbV90aWxlU2l6ZTsKKyAgICBmbG9hdCBtX2NvdmVyQXJlYU11bHRpcGxpZXI7
CisKKyAgICBGbG9hdFBvaW50IG1fdHJhamVjdG9yeVZlY3RvcjsKKyAgICBGbG9hdFBvaW50IG1f
cGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CisgICAgSW50UmVjdCBtX3Zpc2libGVSZWN0OworCisg
ICAgSW50UmVjdCBtX2NvdmVyUmVjdDsKKyAgICBJbnRSZWN0IG1fa2VlcFJlY3Q7CisgICAgSW50
UmVjdCBtX3JlY3Q7CisKKyAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisKKyAgICBib29sIG1f
c3VwcG9ydHNBbHBoYTsKKyAgICBib29sIG1fcGVuZGluZ1RpbGVDcmVhdGlvbjsKKworICAgIGZy
aWVuZCBjbGFzcyBUaWxlOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVk
QmFja2luZ1N0b3JlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ5NGJmNzFiZjhjZjE1Njg1MmFmMDUyNjkwMTY0NGFkN2VkODUzMGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZWRCYWNraW5nU3RvcmVCYWNr
ZW5kX2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIlRpbGUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKKworY2xhc3MgVGlsZWRCYWNraW5nU3Rv
cmVCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5UaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQoKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VGlsZT4gY3JlYXRlVGlsZShUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IFRpbGU6OkNv
b3JkaW5hdGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOworfTsKKworfQorCisjZW5kaWYK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZjA4NDkyMzY3NThiYjczNTkxY2QyMjg5NzgwNWIyYzA3
OWRjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMCwwICsx
LDQ2IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudF9oCisjZGVmaW5lIFRpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorCitjbGFzcyBDb2xvcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflRpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFp
bnRCZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFy
ZWEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGls
ZUNyZWF0aW9uKCkgeyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29u
dGVudHNSZWN0KCkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZp
c2libGVSZWN0KCkgPSAwOworICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7Cit9OworCisjZW5kaWYKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggMTliYjRhODhjYzlkZTljZmFkOGUzYjU1NmJmMzVhZGFhZTdlNTJmMi4uYjBkOGM4OGQz
MzUzZGViNDhhMzY5MzJhNDVmNmY2ODhhMDgwZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEzNCwxMCArMTM0LDYg
QEAgcHVibGljOgogICAgIC8vIHRvIGRvIGFuIGVhZ2VyIGxheW91dCBiZWZvcmUgdGhlIGRyYXdp
bmcuCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiAK
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVk
U2Nyb2xsUmVxdWVzdGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgeyB9Ci0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCA5YzcxZjkxOGRlNGYzMWVhMWVmYjhkYzU3NWEzNjhk
YTI0ZTkwMzJmLi5jYTUxYmQzYWUzMThiZDAyZGEzZDQyNmNmMmM5OTczODhkOTE4ZjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNv
bW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBDb29yZGluCiAgICAgfSk7CiAKICAg
ICB1cGRhdGVWaWV3cG9ydCgpOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS5k
aWRSZW5kZXJGcmFtZShncmFwaGljc1N0YXRlLmNvbnRlbnRzU2l6ZSwgZ3JhcGhpY3NTdGF0ZS5j
b3ZlcmVkUmVjdCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxN2Ex
Y2U3ZWY4MGJkMzQ1MDE4NjhkNmFmOWQ5MjRmZWJmZWExNTJiLi45MDE3ZTI5NjhlZjU4ZGU1OWQ0
ZDRhOGI1NGRjMWU0YTMwMWM1OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00NzUs
NyArNDc1LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNjcm9sbChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsUmUKICAgICBtX3BhZ2UtPmRyYXdpbmdB
cmVhKCktPnNjcm9sbChpbnRlcnNlY3Rpb24oc2Nyb2xsUmVjdCwgY2xpcFJlY3QpLCBzY3JvbGxE
ZWx0YSk7CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Nyb2xsUmVx
dWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxPZmZzZXQpCiB7CiAgICAgbV9wYWdlLT5wYWdl
RGlkUmVxdWVzdFNjcm9sbChzY3JvbGxPZmZzZXQpOwpAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25z
dCBWaWV3cG9ydEFyZ3VtZW50CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1fcGFnZS0+dmlld3Bv
cnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHZpZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICBpZiAoIW1fcGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCAxZTU5NmNiOWY0MWUxNmQ0MjcxZGYwYWJhZjE1NjAyZTNiY2Ey
OWJhLi4wOTE4Yjk2NDMwNDM4MTE0ZWI0YmFhNDBkNGE4MTYyODEyNmE0YjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBv
dmVycmlkZTsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA0MmQxMTE3NDM2Y2ZlYTFkYWVlNGNlMmJmMTVjZjk0YjI1NzMxMWEzLi4z
NzUxN2JmZDg3NjZiYTNlNDAxYmNlZWIyNTJiM2E0YTIwOWMxOTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykK
ICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBw
cm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRo
ZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KICAgICAgICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhl
ZExheW91dCgpIHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSB8
fCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGlkRGlzcGF0Y2hWaWV3cG9ydFBy
b3BlcnRpZXNDaGFuZ2VkKCkpOwogI2VuZGlmCkBAIC0xMjYwLDcgKzEyNjAsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAg
ICBib29sIHNob3VsZEhpZGVTY3JvbGxiYXJzID0gc2hvdWxkRGlzYWJsZVNjcm9sbGluZzsKICAg
ICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+dmlldygpKQogICAgICAgICBmaXhlZFZpc2libGVDb250ZW50UmVjdCA9
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7
CiAgICAgaWYgKHNob3VsZFVzZUZpeGVkTGF5b3V0KQpAQCAtMTI5Niw3ICsxMjk2LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
CiAgICAgaWYgKHdlYlBhZ2UtPnNjcm9sbFBpbm5pbmdCZWhhdmlvcigpICE9IERvTm90UGluKQog
ICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVo
YXZpb3Iod2ViUGFnZS0+c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkpOwogCi0jaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChz
aG91bGRVc2VGaXhlZExheW91dCkgewogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcoc2hvdWxkVXNlRml4ZWRMYXlvdXQpOwogICAgICAg
ICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhz
aG91bGRVc2VGaXhlZExheW91dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZDVlYmEwNDRiY2VlNjg4YTVjNWJmNGJkODVmYTNiMjJkYWQy
Njk3Yy4uZTQ3MmZmY2U0NGVjNTg2OGFjNjhjODkwMWVkOTNlOWE3M2I0NWQ4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTIxMCwxMyAr
MTIxMCwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
dmlld1NpemUpCiAgICAgCiAgICAgbV92aWV3U2l6ZSA9IHZpZXdTaXplOwogCi0jaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlm
ICh2aWV3LT51c2VGaXhlZExheW91dCgpKQogICAgICAgICBzZW5kVmlld3BvcnRBdHRyaWJ1dGVz
Q2hhbmdlZCgpOwogI2VuZGlmCiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIFdlYlBhZ2U6OnNldEZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKG1fdXNlRml4
ZWRMYXlvdXQpOwpAQCAtMTQ5MSw3ICsxNDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhl
ZExheW91dChib29sIGZpeGVkKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JvbGxpbmdD
b29yZGluYXRvckVuYWJsZWQoZml4ZWQpOwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKSAmJiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICAvLyBEZWxlZ2F0ZWQg
c2Nyb2xsaW5nIHdpbGwgYmUgZW5hYmxlZCB3aGVuIHRoZSBGcmFtZVZpZXcgaXMgY3JlYXRlZCBp
ZiBmaXhlZCBsYXlvdXQgaXMgZW5hYmxlZC4KICAgICAvLyBFbnN1cmUgd2UgZG9uJ3QgZG8gYW5p
bWF0ZWQgc2Nyb2xsaW5nIGluIHRoZSBXZWJQcm9jZXNzIGluIHRoYXQgY2FzZS4KICAgICBtX3Bh
Z2UtPnNldHRpbmdzKCkuc2V0U2Nyb2xsQW5pbWF0b3JFbmFibGVkKCFmaXhlZCk7CkBAIC0xNTAx
LDcgKzE1MDEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQp
CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlldy0+c2V0RGVs
ZWdhdGVzU2Nyb2xsaW5nKGZpeGVkKTsKICAgICB2aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50
cyhmaXhlZCk7CiAjZW5kaWYKQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGFn
ZURpZFNjcm9sbCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Ny
b2xsKCkpOwogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogdm9pZCBXZWJQYWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25z
dCBJbnRQb2ludCYgcG9pbnQpCiB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJ
UFJPQ0VTUykKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q2FuU3RhcnRN
ZWRpYVRpbWVyRmlyZWQoKQogCiBpbmxpbmUgYm9vbCBXZWJQYWdlOjpjYW5IYW5kbGVVc2VyRXZl
bnRzKCkgY29uc3QKIHsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgLy8gU2hvdWxkIGFwcGx5IG9ubHkgaWYgdGhlIGFyZWEg
d2FzIGZyb3plbiBieSBkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkuCiAgICAgcmV0dXJuICFtX2Ry
YXdpbmdBcmVhLT5sYXllclRyZWVTdGF0ZUlzRnJvemVuKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDhmZmMxMzA2OWM1OGU1ZDIy
Yjk4OGI0ZDM2NDI4MTU1ZGExMGY0ZjIuLjhiZWU1ZjdiOTg3YmFmOGM4ODM3OTBiMjc2NDhlM2Q5
ZDYyMjcxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNTQ5LDcgKzU0OSw3IEBAIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwog
CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHNldEZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHNlbmRWaWV3
cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGU2NWEwMzIx
ODFkNzg1NGM2NzRiN2VkZDA4MzIyNDMzNGRiMzI3M2QuLjA2MmM5ZTg5MjBjZGIxNzQ2YjNiMGVi
OTRhODljZWRlNDAzZWJhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0yMzAsNyArMjMwLDYg
QEAgZW5kaWYgKCkKIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJ
Q1M9MSkKIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVM
VElQUk9DRVNTPTEpCiBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEp
Ci1hZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkU9MSkKIAogc2V0
KEVOQUJMRV9HUkFQSElDU19DT05URVhUXzNEIDEpCiBhZGRfZGVmaW5pdGlvbnMoLURFTkFCTEVf
R1JBUEhJQ1NfQ09OVEVYVF8zRD0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBlZDcwZWRmMjRm
YmQ2MzRjYmRlZDk1ZDEzNWY1YTEyYzlhZjM3YWJhLi4zN2FiZWI3OWMxNmQ4NjhhNWUxZWI2N2Nl
NjFkZDNmZWJkMTRiNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzQzLDcgKzM0Myw2IEBA
IGlmICgoT1BFTkdMX0ZPVU5EIE9SIE9QRU5HTEVTMl9GT1VORCkgQU5EIChHTFhfRk9VTkQgT1Ig
RUdMX0ZPVU5EKSkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfVVNFX0VHTCAke0VH
TF9GT1VORH0pCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX1VTRV9HTFggJHtHTFhf
Rk9VTkR9KQogCi0gICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX1VTRV9USUxFRF9CQUNL
SU5HX1NUT1JFICR7RU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1J9KQogICAgIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MgJHtFTkFCTEVfVEhSRUFE
RURfQ09NUE9TSVRPUn0pCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX1VTRV9DT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCAke0VOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SfSkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBl
ZjBjOWJmMDU1ZjhiNWMxMDBiOGY1YzZiNDUzOWQwM2YzYWQyZDguLmMwMTliMWY0MmNiNTJjZDI1
NWE4NGJmZjE5MTU1NDRjMzlkNDcxY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNC0yOCAgUnl1YW4gQ2hv
aSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbQ29vcmRpbmF0ZWRHcmFw
aGljc10gTWVyZ2UgVElMRURfQkFDS0lOR19TVE9SRSBndWFyZCB3aXRoIENPT1JESU5BVEVEX0dS
QVBISUNTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDMwMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpzaG91
bGRVc2VGaXhlZExheW91dCk6CisKIDIwMTUtMDQtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDM0Mjc1MWFjYmIwOGMwMzY4ZWVhODVlZTM0
MWQyOWFjOGNiOWVhYTMuLjUzNDQyYWRkZGYwOTI5ZTQ4YzI0Nzg5ODUyNTUzMGQxZGNmNmMyOTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC03NjQsNyAr
NzY0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQoY29uc3QgVGVzdEludm9j
YXRpb24mIHRlc3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkgJiYgUExBVEZPUk0oRUZMKQorI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykgJiYgUExBVEZPUk0oRUZMKQogICAgIGlmICh0ZXN0LnVybENvbnRhaW5zKCJzdGlj
a3kvIikgfHwgdGVzdC51cmxDb250YWlucygic3RpY2t5XFwiKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyZmNi
Mzg3ZGI4Y2VlMDgxY2NjMzQ0MGNmMTM0OWNkYjZlYmRjZTZiLi4yZjNjYThlNGNlMGE4ZDNlY2E5
NmYzODljNWE0YWJjNGMxZTllMjdkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDQtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIE1lcmdlIFRJ
TEVEX0JBQ0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBDT09SRElOQVRFRF9HUkFQSElDUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMDAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZTogUmVtb3ZlZCBUSUxFRF9CQUNLSU5HX1NUT1JFIGRlZmluaXRpb24u
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IERpdHRvLgorCiAyMDE1
LTA0LTI3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgV1RGX1VTRV8zRF9HUkFQSElDUyB0byBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVY
VF8zRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251923</attachid>
            <date>2015-04-28 21:44:01 -0700</date>
            <delta_ts>2015-04-28 21:51:56 -0700</delta_ts>
            <desc>fixed_typo</desc>
            <filename>bug-143001-20150429134248.patch</filename>
            <type>text/plain</type>
            <size>93324</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlmZTQ4YWJiMWZlZmM2
Y2U1ZmQyN2ZjM2JmYWY1ZjZlN2Q4ZDYwNC4uNThkMjcyNjM0NDI0OGZhMTQzNzg2MTRhNWIwZWQ0
MWE1YmM0NWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTA0LTI4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRl
ZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFU
RURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAg
ICBUaWxlZEJhY2tpbmdTdG9yZSBoYXMgb25seSBiZWVuIHVzZWQgYnkgQ29vcmRpbmF0ZWQgR3Jh
cGhpY3Mgc2luY2UgUXQgYW5kIFdlYktpdDEvRWZsIHdlcmUgZHJvcHBlZC4KKyAgICAgICAgU28s
IHRoaXMgcGF0Y2ggcmVwbGFjZXMgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpIHdpdGggVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKSB0byBtZXJnZSB0aGUgZmVhdHVyZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHRoaXMgbW92ZXMgVGlsZWRCYWNraW5nU3RvcmUgYW5kIHJlbGF0ZWQgZmlsZXMg
ZnJvbSBwbGF0Zm9ybSB0byBwbGF0Zm9ybS90ZXhtYXAvY29vcmRpbmF0ZWQKKyAgICAgICAgd2hl
cmUgb3RoZXIgY29vcmRpbmF0ZWQgZ3JhcGhpY3MgZmlsZXMgYXJlIGxvY2F0ZWQuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogTW92ZSBUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYmVjYXVzZSB0
aGlzIGlzIG5vdCBjb21tb24gZmlsZS4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICBGb2xsb3cgbmV3IFRpbGVkQmFja2luZ1N0b3JlKi4gSW4g
YWRkaXRpb24sIGV4Y2x1ZGUgVGlsZWRCYWNraW5nU1RvcmUuY3BwIGZyb20gdGhlIGJ1aWxkIGJl
Y2F1c2UgaXQgaXMgbm90IHVzZWQgaW4gd2luZG93cyBidWlsZC4KKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBhZ2VT
Y2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemVJbmNsdWRpbmdPYnNjdXJlZEFyZWEpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dW5zY2FsZWRVbm9ic2N1cmVkVmlzaWJsZUNvbnRlbnRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vVGlsZUNhaXJvLmg6IFJlbW92ZWQgYmVjYXVzZSBpdCBpcyBkZWFkIGNvZGUgc2luY2Ug
cjE2OTMyOAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
LmguCisgICAgICAgIChXZWJDb3JlOjpUaWxlOjp+VGlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3Jl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmlubmVyQm90dG9tUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp+VGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJhZ2VSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZTo6dmlzaWJsZUFyZWFJc0NvdmVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjphZGp1c3RGb3JDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OmNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldEtlZXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVBdCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9y
ZTo6bWFwVG9Db250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6
bWFwRnJvbUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlUmVjdEZvckNvb3JkaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNr
aW5nU3RvcmU6OnNldFN1cHBvcnRzQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpjb3ZlclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OnNldENvdmVyUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmguCisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ6On5UaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaC4KKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Ojp+VGlsZWRCYWNraW5nU3RvcmVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFj
a2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbik6CisKIDIwMTUtMDQtMjggIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigxODAwNzYp
OiBbTWFjLCBpT1NdIENvcnJlY3QgcG9zc2libGUgbnVsbCBkZXJlZmVyZW5jZSBpbiBwcmludGlu
ZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZTExNmY5OGJiZjFkMjEyOThjOGVhYmZjMDdkYmRl
ZTI5MjIwNWU0Mi4uMGVlZjM5YThlMGVmZjk0MjViZjI5NWUzZWI4Y2Q5ZjZmZTFmODBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA0LTI4ICBSeXVhbiBDaG9pICA8
cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRlZEdyYXBoaWNz
XSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzAw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpk
ZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgV0lOIGRv
ZXMgbm90IHVzZSBDb29yZGluYXRlZCBHcmFwaGljcy4KKwogMjAxNS0wNC0yOCAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjb21tb24gdHlwbyAi
dGFyZ2V0dGluZyIgPT4gInRhcmdldGluZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmN2ZlMzhhM2FlNzAyMGE5
ZWMxM2VhNDIyYmFlMWQzZTQ0MTkzOGM3Li4yNGUyODNhZGRjMzJkYzQxZGQwY2VmNDUxOGM2ZDZi
ZDNmYzgwZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDQtMjggIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVk
R3JhcGhpY3NdIE1lcmdlIFRJTEVEX0JBQ0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBDT09SRElOQVRF
RF9HUkFQSElDUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNhbkhhbmRsZVVzZXJFdmVudHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMTUtMDQtMjggIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtUZXh0SW5kaWNhdG9yXSBZZWxsb3cgaGlnaGxpZ2h0IHRh
a2VzIHRvbyBsb25nIHRvIGZhZGUgb3V0IG9uIHNjcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA3Yzg0ODVjNTBkNTA0ZmU4NjhhYjkwMzYyNTAwODA4ZTljM2IzNjZhLi4zOTUyNjc0YjdhMTM3
ZmIxYjYxMmIyNzY1OWI2YmRmNzI5MzUyYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjE1
Nyw3ICsyMTU3LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1N0cmluZ1RydW5jYXRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCBjZjdkNzE4M2M2Y2VjY2YxYjJhODk3NjUzNDI2NjNmYWUzZWUzNWI4Li4wYjkxNDk5OTE5
MmU1NTNhMmEyMjVlZDUwZWJiMjIwYzlkNTgwMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtMTkyLDYgKzE5Miw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2lu
Zy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRTdXJmYWNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZFRpbGUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKIAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYTY5MmY5YjFm
Y2ZkMWE0ZjQ2ODRhOWNjYzZjOTlmZmVmODA3NGE1ZC4uZjMwNmE5YjM0MTAwYjM1NmY5ZGRiNzRk
YzZlNjNkZDI1ZjE1ZWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTM5OCwxMyAr
Mzk4LDEzIEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKICAgICAgICAgcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAogICAgICAgICBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlTm9kZS5jcHAKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0
b3JlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQXJl
YUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkU3VyZmFjZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCiAgICAgKQogZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CmluZGV4IGFmNGQyMGQ0YzU2MjI5ZjNkNDZlYWY5OTEwM2Q5NTMxMWQ2YzA0NTcuLmZiN2U1NDMw
MjA2Y2U1OGZjZTJhN2M1ZGQyMDg5YWY1MDY2MjQ1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzgzOCw3ICs3ODM4LDcgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xUaWxlZEJhY2tpbmdTdG9yZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEdy
YXBoaWNzQ29udGV4dDNEV2luLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTk4NzcsOSArMTk4NzcsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRl
eHR1cmVNYXBwZXJUaWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmcu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVk
QmFja2luZ1N0b3JlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29v
cmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9y
ZUJhY2tlbmQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVHJhY2tCYXNlUHJpdmF0
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVmlk
ZW9UcmFja1ByaXZhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCA5NmJkYTRkYWNkNzY5OTU4NTIwNGM2M2Q2NDA1MGY5YWExODZmZDAxLi5m
NTFhOTY0MzMyOGI4ZWFlZTdiYWUyMzAwMjIzOWYyYTczZjk2M2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC02NzY2LDggKzY3NjYsOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmUuY3BwIj4KLSAg
ICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxUaWxlZEJhY2tp
bmdTdG9yZS5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29v
cmRpbmF0ZWQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBhZ2Vcc2Nyb2xsaW5nXFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnBhZ2Vcc2Nyb2xsaW5nPC9GaWx0ZXI+CkBAIC0xNDE4MCwxNCArMTQxODAsMTQg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFj
a2luZy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFRpbGVkQmFja2luZ1N0b3JlLmgiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4
bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlLmgiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZC5oIj4KLSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1h
cFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCI+CisgICAgICA8RmlsdGVy
PnBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZDwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNz
PC9GaWx0ZXI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0
ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCI+CisgICAgICA8Rmls
dGVyPnBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZDwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxzY3JvbGxpbmdcU2Ny
b2xsaW5nU3RhdGVGaXhlZE5vZGUuaCI+CiAgICAgICA8RmlsdGVyPnBhZ2Vcc2Nyb2xsaW5nPC9G
aWx0ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggMWRmZTJhMjgyOTU2
OWU2ODg5Y2E5NmZlMTdjYzA4MDUzOGZjMDQyZC4uODdkMTRhN2YxNzA2MDBjZmFkOWRmYTJmMmYz
NzJjZjhlM2ZkYTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTMy
LDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRz
QW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQotI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JikgeyB9CiAjZW5kaWYKICNp
ZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfVElNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMTNlNmQwNTAyYjkxMzVm
OTA5Y2Q3ZjAwYmFjMWZmY2UwMjM0M2JhMS4uYmUyODVmZDFmZWI2OTQ3MmU5ZjcyNTgyM2YyNDM1
YzRlNTljZTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IENocm9tZTo6c2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Ny
b2xsKG1fcGFnZSk7CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIENocm9tZTo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVz
dGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAgICBtX2NsaWVudC5kZWxlZ2F0
ZWRTY3JvbGxSZXF1ZXN0ZWQoc2Nyb2xsUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggOThh
Yjc0NWU2ZTcyMzYwMTMwMDZlOTZiMGUzYzRjYTcwOGU4M2MyOC4uYjE1NzI2MjBlMzUzMzcxMjdk
MDNhZDNhMDdjOWUwMDQzNzRmYmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZp
ZXcoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVx
dWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDUzNjk1OWYwNzJk
YWVkYTVmYzJjMzQ4ZjFhOWM5NDRmZGRiOWMzODcuLjUyODRkZDQ2OTEzMGQ3OWRhOGU3ZTlkNDI5
OWM2MTQxYWU2YzhlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTYyLDcg
KzE2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5k
Um9vdFZpZXcoY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgPSAwOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNv
bnN0IEludFBvaW50JikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwpAQCAtMzQ0LDcgKzM0NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdEZ1bGxTY3JlZW5MYXllcihHcmFwaGlj
c0xheWVyKikgeyB9CiAjZW5kaWYKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJl
Y3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNDIxOWNmN2E2OWI4MzY2ZmZjZmRmMzA5ZGVj
MGYzMjAzMmE4NGYwNy4uZTU5MWNmNDM5NmQ0MmZkOWQ3NDBkNTY0YmQ3MDI2ZDU0NjM2YmQ4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIEZyYW1lOjpjcmVh
dGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvcgogICAgIGlmIChpc01haW5GcmFtZSkgewogICAgICAgICBmcmFtZVZpZXcgPSBGcmFt
ZVZpZXc6OmNyZWF0ZSgqdGhpcywgdmlld3BvcnRTaXplKTsKICAgICAgICAgZnJhbWVWaWV3LT5z
ZXRGaXhlZExheW91dFNpemUoZml4ZWRMYXlvdXRTaXplKTsKLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIGZyYW1lVmll
dy0+c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoZml4ZWRWaXNpYmxlQ29udGVudFJlY3QpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA4ZTQyYTYwYWMzZjA3NGU0NjllZmE3N2NkNmFi
MTI4YWVjZjFmMTMyLi4xYjFhOWE1MmQ0ZTZmMjdhNzFjNzMyMjQ2NTc1NDgyODc1YmZlN2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC05Miw3ICs5Miw3IEBACiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAotI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNs
dWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2VuZGlmCiAKQEAgLTIwNTQsNyArMjA1NCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKQogICAgICAgICBj
bGVhckJhY2tpbmdTdG9yZXMoKTsKIH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIHZvaWQgRnJhbWVWaWV3OjpzZXRGaXhlZFZp
c2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpCiB7CiAg
ICAgYm9vbCB2aXNpYmxlQ29udGVudFNpemVEaWRDaGFuZ2UgPSBmYWxzZTsKQEAgLTIyMzcsNyAr
MjIzNyw3IEBAIGJvb2wgRnJhbWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29u
c3QgSW50UG9pbnQmIHBvc2l0aW9uKQogICAgICAgICB0aWxlZEJhY2tpbmctPnByZXBvcHVsYXRl
UmVjdChGbG9hdFJlY3QocG9zaXRpb24sIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSkpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29y
ZGluYXRvci0+cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCp0aGlzLCBwb3NpdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAwNmE3MjI5MGE3OGY0OThkNmZjYmM0NWQwYTMxZjFl
M2U2NWY3YmMyLi45Yzg5MjIwMDRjZmUzOTQxYzQ2MTdkNzgyMzI3NDhkNDkzMmQxNDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIzMyw3ICsyMzMsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
IAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA1ZjBiODEzNmE0YjMzMWU2M2JmYTdkNjVlMGQyZTI3ZWI1MzczYzFmLi5k
Njk5ZWFhYWM4ZjA3MjIyMDRhMDliN2MwOWQ5MGZiOWRlNzAyNzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9h
dCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCBpblN0YWJsZQogCiAgICAgICAg
ICAgICBpZiAoIXZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKQogICAgICAgICAgICAgICAgIHZp
ZXctPnNldFNjcm9sbFBvc2l0aW9uKG9yaWdpbik7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHZpZXctPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShvcmlnaW4pOwog
I2VuZGlmCkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3Io
ZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4sIGJvb2wgaW5TdGFibGUKIAogICAg
ICAgICBpZiAoIXZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKQogICAgICAgICAgICAgdmlldy0+
c2V0U2Nyb2xsUG9zaXRpb24ob3JpZ2luKTsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHZpZXctPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShvcmlnaW4pOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggMzgwYTE1YzQ1Y2JiYjk1ZTU3ODFlYTE0
ZWE2MDZlNDY2NGFmMjUzYS4uMDgyOTI4YjRiYjAyNWJlNTY5NDIwZTYzZmNjMWEzNzk2NWNkZWY1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gUmVxdWVzdHMgdGhlIGhvc3QgaW52YWxpZGF0ZSB0aGUgY29udGVudHMs
IG5vdCB0aGUgcm9vdCB2aWV3LiBUaGlzIGlzIHRoZSBzbG93IHBhdGggZm9yIHNjcm9sbGluZy4K
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0KSA9IDA7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgLy8gUmVxdWVzdHMgdGhlIGhvc3Qg
dG8gZG8gdGhlIGFjdHVhbCBzY3JvbGxpbmcuIFRoaXMgaXMgb25seSB1c2VkIGluIGNvbWJpbmF0
aW9uIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlLgogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0
ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSA9IDA7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggY2QwZTEzYjlhMmEw
YjBiNDE4ZTAyNWRkOGYwNzAxZjI2YzE1MTFjMi4uNjdlYTdkMjY2NjVlYmIzNTI4N2MxYjliNjc5
MDNhMjI3YmE4Y2JjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJsZUNvbnRl
bnRTaXplSW5jbHVkaW5nT2JzY3VyZWRBcmVhKFZpc2libGVDb250ZQogICAgIGlmIChwbGF0Zm9y
bVdpZGdldCgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFNpemVJbmNs
dWRpbmdPYnNjdXJlZEFyZWEoc2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJz
KTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5zaXplKCk7CiAjZW5kaWYK
QEAgLTI5Niw3ICsyOTYsNyBAQCBJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2NhbGVkVW5vYnNjdXJl
ZFZpc2libGVDb250ZW50U2l6ZShWaXNpYmxlQ29udGVudFJlY3RJbmNsdQogICAgIGlmIChwbGF0
Zm9ybVdpZGdldCgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFNpemUo
c2Nyb2xsYmFySW5jbHVzaW9uID09IEluY2x1ZGVTY3JvbGxiYXJzKTsKIAotI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAo
IW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmlz
aWJsZUNvbnRlbnRTaXplOwogI2VuZGlmCkBAIC0zMjIsNyArMzIyLDcgQEAgSW50UmVjdCBTY3Jv
bGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNs
dWRlc1Njcm9sbGIKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBs
YXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Ny
b2xsYmFycyk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7CiAjZW5kaWYK
QEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFNp
emUmIG5ld09mZnNldCkKICAgICBpZiAoc2Nyb2xsYmFyc1N1cHByZXNzZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogICAgIGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgewogICAgICAgICBy
ZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoSW50UG9pbnQobmV3T2Zmc2V0KSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCAyOGU4Njc2MzVm
ZmUzOGU0NGE1YTlkMTcxMzI4Njk0YTdjYWZiY2ZhLi5mY2ZlMzczNGQxYzg0NmVmNDgyOGIxMTY4
MzdmZmZkYjlmZGQwMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0x
NzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBoYXBwZW4g
d2hlbiBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBzY2FsZSBv
ciBwb3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KICAgICB2aXJ0dWFsIEludFNpemUgdmlz
aWJsZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVn
YWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CiAKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2
b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVDb250
ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0
OyB9CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBkYmFj
Y2JlZWUwNmNiZmI5MTUzMDA2ZGE5OGZjYzU5OGUyY2M4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIAot
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0g
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFRpbGVfaAotI2RlZmluZSBUaWxlX2gK
LQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIK
LSNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotCi1jbGFzcyBUaWxlIDogcHVi
bGljIFJlZkNvdW50ZWQ8VGlsZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgSW50UG9pbnQgQ29v
cmRpbmF0ZTsKLQotICAgIHZpcnR1YWwgflRpbGUoKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBp
c0RpcnR5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IElu
dFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8SW50UmVjdD4gdXBkYXRlQmFja0J1ZmZl
cigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJhY2tCdWZmZXJUb0Zyb250KCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWR5VG9QYWludCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0gMDsKLQotICAg
IHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwotfTsKLQotfQotI2Vu
ZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0
MjZjNzgxODIxZjVlMjkwZmIyODhhOWNmOWNkYTA0M2YyMzhiYS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzIgKzAsMCBA
QAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAKLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0g
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCi0KLSNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZURpbWVuc2lvbiA9IDUxMjsKLQotc3RhdGlj
IEludFBvaW50IGlubmVyQm90dG9tUmlnaHQoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICAv
LyBBY3R1YWxseSwgdGhlIHJlY3QgZG9lcyBub3QgY29udGFpbiByZWN0Lm1heFgoKS4gUmVmZXIg
dG8gSW50UmVjdDo6Y29udGFpbi4KLSAgICByZXR1cm4gSW50UG9pbnQocmVjdC5tYXhYKCkgLSAx
LCByZWN0Lm1heFkoKSAtIDEpOwotfQotCi1UaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5n
U3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCwgc3RkOjp1bmlxdWVfcHRyPFRp
bGVkQmFja2luZ1N0b3JlQmFja2VuZD4gYmFja2VuZCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkK
LSAgICAsIG1fYmFja2VuZChXVEY6Om1vdmUoYmFja2VuZCkpCi0gICAgLCBtX3RpbGVTaXplKGRl
ZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikKLSAgICAsIG1fY292ZXJB
cmVhTXVsdGlwbGllcigyLjBmKQotICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKLSAgICAsIG1f
c3VwcG9ydHNBbHBoYShmYWxzZSkKLSAgICAsIG1fcGVuZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkK
LXsKLX0KLQotVGlsZWRCYWNraW5nU3RvcmU6On5UaWxlZEJhY2tpbmdTdG9yZSgpCi17Ci19Ci0K
LXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Ci17Ci0gICAgbV90aWxlU2l6ZSA9IHNpemU7Ci0gICAgbV90aWxlcy5jbGVhcigpOwotfQotCi12
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9p
bnQmIHRyYWplY3RvcnlWZWN0b3IpCi17Ci0gICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9
IHRyYWplY3RvcnlWZWN0b3I7Ci0gICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxp
emUoKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRl
ZCgpCi17Ci0gICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Ci0g
ICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdT
dG9yZUNvbnRlbnRzUmVjdCgpKTsKLQotICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5
VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2
aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKLSAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVu
ZGluZ1RpbGVDcmVhdGlvbikKLSAgICAgICAgY3JlYXRlVGlsZXMoKTsKLX0KLQotdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVj
dCkKLXsKLSAgICBJbnRSZWN0IGRpcnR5UmVjdChtYXBGcm9tQ29udGVudHMoY29udGVudHNEaXJ0
eVJlY3QpKTsKLSAgICBJbnRSZWN0IGtlZXBSZWN0Rml0VG9UaWxlU2l6ZSA9IHRpbGVSZWN0Rm9y
Q29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZUZvclBvaW50KG1fa2VlcFJlY3QubG9jYXRpb24oKSkp
OwotICAgIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZS51bml0ZSh0aWxlUmVjdEZvckNvb3JkaW5hdGUo
dGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KG1fa2VlcFJlY3QpKSkpOwot
Ci0gICAgLy8gT25seSBpdGVyYXRlIG9uIHRoZSBwYXJ0IG9mIHRoZSByZWN0IHRoYXQgd2Uga25v
dyB3ZSBtaWdodCBoYXZlIHRpbGVzLgotICAgIEludFJlY3QgY292ZXJlZERpcnR5UmVjdCA9IGlu
dGVyc2VjdGlvbihkaXJ0eVJlY3QsIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZSk7Ci0gICAgVGlsZTo6
Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb3ZlcmVkRGlydHlS
ZWN0LmxvY2F0aW9uKCkpOwotICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxl
Q29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQoY292ZXJlZERpcnR5UmVjdCkpOwot
Ci0gICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0g
Ym90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7Ci0gICAgICAgIGZvciAoaW50IHhDb29y
ZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4
Q29vcmRpbmF0ZSkgewotICAgICAgICAgICAgUmVmUHRyPFRpbGU+IGN1cnJlbnRUaWxlID0gdGls
ZUF0KFRpbGU6OkNvb3JkaW5hdGUoeENvb3JkaW5hdGUsIHlDb29yZGluYXRlKSk7Ci0gICAgICAg
ICAgICBpZiAoIWN1cnJlbnRUaWxlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgLy8gUGFzcyB0aGUgZnVsbCByZWN0IHRvIGVhY2ggdGlsZSBhcyBjb3ZlcmVkRGlydHlS
ZWN0IG1pZ2h0IG5vdAotICAgICAgICAgICAgLy8gY29udGFpbiB0aGVtIGNvbXBsZXRlbHkgYW5k
IHdlIGRvbid0IHdhbnQgcGFydGlhbCB0aWxlIHJlZHJhd3MuCi0gICAgICAgICAgICBjdXJyZW50
VGlsZS0+aW52YWxpZGF0ZShkaXJ0eVJlY3QpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCi17Ci0gICAgbV9jbGllbnQt
PnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwotCi0gICAgVmVjdG9yPEludFJlY3Q+IHBh
aW50ZWRBcmVhOwotICAgIFZlY3RvcjxSZWZQdHI8VGlsZT4gPiBkaXJ0eVRpbGVzOwotICAgIGZv
ciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCF0aWxlLT5p
c0RpcnR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZGlydHlUaWxlcy5hcHBl
bmQodGlsZSk7Ci0gICAgfQotCi0gICAgaWYgKGRpcnR5VGlsZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKHBhaW50ZWRBcmVhKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBJbiBzaW5nbGUgdGhyZWFkZWQg
Y2FzZSwgdGlsZSBiYWNrIGJ1ZmZlcnMgY291bGQgYmUgdXBkYXRlZCBhc3luY2hyb25vdXNseSAK
LSAgICAvLyBvbmUgYnkgb25lIGFuZCB0aGVuIHN3YXBwZWQgdG8gZnJvbnQgaW4gb25lIGdvLiBU
aGlzIHdvdWxkIG1pbmltaXplIHRoZSB0aW1lIHNwZW50Ci0gICAgLy8gYmxvY2tpbmcgb24gdGls
ZSB1cGRhdGVzLgotICAgIHVuc2lnbmVkIHNpemUgPSBkaXJ0eVRpbGVzLnNpemUoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgKytuKSB7Ci0gICAgICAgIFZlY3RvcjxJbnRS
ZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0eVRpbGVzW25dLT51cGRhdGVCYWNrQnVmZmVyKCk7Ci0g
ICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3RvcihwYWludGVkUmVjdHMpOwotICAgICAgICBk
aXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKLSAgICB9Ci0KLSAgICBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChwYWludGVkQXJlYSk7Ci19Ci0KLUludFJl
Y3QgVGlsZWRCYWNraW5nU3RvcmU6OnZpc2libGVSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkp
OwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNj
YWxlKQotewotICAgIGlmIChzY2FsZSA9PSBtX2NvbnRlbnRzU2NhbGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIG1fdGlsZXMuY2xlYXIoKTsK
LSAgICBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7Ci19Ci0KLWRvdWJsZSBUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0LCBjb25zdCBUaWxlOjpD
b29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkgY29uc3QKLXsKLSAgICBpZiAodmlld3BvcnQuaW50
ZXJzZWN0cyh0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBJbnRQb2ludCB2aWV3Q2VudGVyID0gdmlld3BvcnQubG9jYXRpb24o
KSArIEludFNpemUodmlld3BvcnQud2lkdGgoKSAvIDIsIHZpZXdwb3J0LmhlaWdodCgpIC8gMik7
Ci0gICAgVGlsZTo6Q29vcmRpbmF0ZSBjZW50ZXJDb29yZGluYXRlID0gdGlsZUNvb3JkaW5hdGVG
b3JQb2ludCh2aWV3Q2VudGVyKTsKLQotICAgIHJldHVybiBzdGQ6Om1heChhYnMoY2VudGVyQ29v
cmRpbmF0ZS55KCkgLSB0aWxlQ29vcmRpbmF0ZS55KCkpLCBhYnMoY2VudGVyQ29vcmRpbmF0ZS54
KCkgLSB0aWxlQ29vcmRpbmF0ZS54KCkpKTsKLX0KLQotLy8gUmV0dXJucyBhIHJhdGlvIGJldHdl
ZW4gMC4wZiBhbmQgMS4wZiBvZiB0aGUgc3VyZmFjZSBvZiBjb250ZW50c1JlY3QgY292ZXJlZCBi
eSByZW5kZXJlZCB0aWxlcy4KLWZsb2F0IFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcmFnZVJhdGlv
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvbnRlbnRzUmVjdCkgY29uc3QKLXsKLSAgICBJbnRS
ZWN0IGRpcnR5UmVjdCA9IG1hcEZyb21Db250ZW50cyhjb250ZW50c1JlY3QpOwotICAgIGZsb2F0
IHJlY3RBcmVhID0gZGlydHlSZWN0LndpZHRoKCkgKiBkaXJ0eVJlY3QuaGVpZ2h0KCk7Ci0gICAg
ZmxvYXQgY292ZXJBcmVhID0gMC4wZjsKLQotICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9
IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoZGlydHlSZWN0LmxvY2F0aW9uKCkpOwotICAgIFRpbGU6
OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90
dG9tUmlnaHQoZGlydHlSZWN0KSk7Ci0KLSAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9IHRvcExl
ZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5hdGUpIHsK
LSAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUg
PD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7Ci0gICAgICAgICAgICBUaWxlOjpD
b29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSk7Ci0g
ICAgICAgICAgICBSZWZQdHI8VGlsZT4gY3VycmVudFRpbGUgPSB0aWxlQXQoY3VycmVudENvb3Jk
aW5hdGUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRUaWxlICYmIGN1cnJlbnRUaWxlLT5pc1Jl
YWR5VG9QYWludCgpKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBjb3ZlclJlY3QgPSBpbnRl
cnNlY3Rpb24oZGlydHlSZWN0LCBjdXJyZW50VGlsZS0+cmVjdCgpKTsKLSAgICAgICAgICAgICAg
ICBjb3ZlckFyZWEgKz0gY292ZXJSZWN0LndpZHRoKCkgKiBjb3ZlclJlY3QuaGVpZ2h0KCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNvdmVyQXJlYSAvIHJl
Y3RBcmVhOwotfQotCi1ib29sIFRpbGVkQmFja2luZ1N0b3JlOjp2aXNpYmxlQXJlYUlzQ292ZXJl
ZCgpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCBib3VuZGVkVmlzaWJsZUNvbnRlbnRzUmVjdCA9IGlu
dGVyc2VjdGlvbihtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpLCBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7Ci0gICAgcmV0dXJuIGNvdmVy
YWdlUmF0aW8oYm91bmRlZFZpc2libGVDb250ZW50c1JlY3QpID09IDEuMGY7Ci19Ci0KLXZvaWQg
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKLXsKLSAgICAvLyBVcGRhdGUgb3VyIGJh
Y2tpbmcgc3RvcmUgZ2VvbWV0cnkuCi0gICAgY29uc3QgSW50UmVjdCBwcmV2aW91c1JlY3QgPSBt
X3JlY3Q7Ci0gICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tp
bmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKLSAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBtX3BlbmRp
bmdUcmFqZWN0b3J5VmVjdG9yOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdCgpOwot
Ci0gICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2V0Q292ZXJSZWN0KEludFJl
Y3QoKSk7Ci0gICAgICAgIHNldEtlZXBSZWN0KEludFJlY3QoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvKiBXZSBtdXN0IGNvbXB1dGUgY292ZXIgYW5kIGtlZXAgcmVjdHMgdXNp
bmcgdGhlIHZpc2libGVSZWN0LCBpbnN0ZWFkIG9mIHRoZSByZWN0IGludGVyc2VjdGluZyB0aGUg
dmlzaWJsZVJlY3Qgd2l0aCBtX3JlY3QsCi0gICAgICogYmVjYXVzZSBUQlMgY2FuIGJlIHVzZWQg
YXMgYSBiYWNraW5nIHN0b3JlIG9mIEdyYXBoaWNzTGF5ZXIgYW5kIHRoZSB2aXNpYmxlIHJlY3Qg
dXN1YWxseSBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCBtX3JlY3QuCi0gICAgICogSW4gdGhlIGJl
bG93IGNhc2UsIHRoZSBpbnRlcnNlY3RpbmcgcmVjdCBpcyBhbiBlbXB0eS4KLSAgICAgKgotICAg
ICAqICArLS0tLS0tLS0tLS0tLS0tKwotICAgICAqICB8ICAgICAgICAgICAgICAgfAotICAgICAq
ICB8ICAgbV9yZWN0ICAgICAgfAotICAgICAqICB8ICAgICAgICstLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotICAgICAqICB8ICAgICAgIHwgSEVSRSAgfCAgY292ZXIgb3Iga2VlcCAg
ICAgICAgfAotICAgICAqICArLS0tLS0tLS0tLS0tLS0tKyAgICAgIHJlY3QgICAgICAgICAgICAg
fAotICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAg
ICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUgfCAgICAgICAgICAgfAotICAgICAqICAg
ICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAgICAgICAgfAotICAgICAqICAgICAgICAg
IHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAotICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAqCi0gICAgICogV2UgbXVzdCBjcmVhdGUgb3Iga2VlcCB0
aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgotICAgICAqLwotCi0gICAgSW50UmVjdCBjb3Zl
clJlY3Q7Ci0gICAgSW50UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVj
dChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKLQotICAgIHNldENvdmVyUmVj
dChjb3ZlclJlY3QpOwotICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsKLQotICAgIGlmIChjb3Zl
clJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBSZXNpemUgdGlsZXMg
YXQgdGhlIGVkZ2UgaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBoYXMgY2hhbmdlZCwgYnV0IG9u
bHkgZG8gc28KLSAgICAvLyBhZnRlciBoYXZpbmcgZHJvcHBlZCB0aWxlcyBvdXRzaWRlIHRoZSBr
ZWVwIHJlY3QuCi0gICAgYm9vbCBkaWRSZXNpemVUaWxlcyA9IGZhbHNlOwotICAgIGlmIChwcmV2
aW91c1JlY3QgIT0gbV9yZWN0KQotICAgICAgICBkaWRSZXNpemVUaWxlcyA9IHJlc2l6ZUVkZ2VU
aWxlcygpOwotCi0gICAgLy8gU2VhcmNoIGZvciB0aGUgdGlsZSBwb3NpdGlvbiBjbG9zZXN0IHRv
IHRoZSB2aWV3cG9ydCBjZW50ZXIgdGhhdCBkb2VzIG5vdCB5ZXQgY29udGFpbiBhIHRpbGUuCi0g
ICAgLy8gV2hpY2ggcG9zaXRpb24gaXMgY29uc2lkZXJlZCB0aGUgY2xvc2VzdCBkZXBlbmRzIG9u
IHRoZSB0aWxlRGlzdGFuY2UgZnVuY3Rpb24uCi0gICAgZG91YmxlIHNob3J0ZXN0RGlzdGFuY2Ug
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7Ci0gICAgVmVjdG9yPFRp
bGU6OkNvb3JkaW5hdGU+IHRpbGVzVG9DcmVhdGU7Ci0gICAgdW5zaWduZWQgcmVxdWlyZWRUaWxl
Q291bnQgPSAwOwotCi0gICAgLy8gQ292ZXIgYXJlYXMgKGluIHRpbGVzKSB3aXRoIG1pbmltdW0g
ZGlzdGFuY2UgZnJvbSB0aGUgdmlzaWJsZSByZWN0LiBJZiB0aGUgdmlzaWJsZSByZWN0IGlzCi0g
ICAgLy8gbm90IGNvdmVyZWQgYWxyZWFkeSBpdCB3aWxsIGJlIGNvdmVyZWQgZmlyc3QgaW4gb25l
IGdvLCBkdWUgdG8gdGhlIGRpc3RhbmNlIGJlaW5nIDAgZm9yIHRpbGVzCi0gICAgLy8gaW5zaWRl
IHRoZSB2aXNpYmxlIHJlY3QuCi0gICAgVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNv
b3JkaW5hdGVGb3JQb2ludChjb3ZlclJlY3QubG9jYXRpb24oKSk7Ci0gICAgVGlsZTo6Q29vcmRp
bmF0ZSBib3R0b21SaWdodCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21SaWdo
dChjb3ZlclJlY3QpKTsKLSAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5
Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5hdGUpIHsKLSAgICAgICAg
Zm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUgPD0gYm90dG9t
UmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7Ci0gICAgICAgICAgICBUaWxlOjpDb29yZGluYXRl
IGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSk7Ci0gICAgICAgICAg
ICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7Ci0gICAgICAgICAgICBkb3VibGUg
ZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUp
OwotICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5jZSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHNob3J0ZXN0RGlz
dGFuY2UpIHsKLSAgICAgICAgICAgICAgICB0aWxlc1RvQ3JlYXRlLmNsZWFyKCk7Ci0gICAgICAg
ICAgICAgICAgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGlsZXNUb0NyZWF0ZS5hcHBlbmQoY3VycmVudENvb3JkaW5hdGUpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gTm93IGNvbnN0cnVjdCB0aGUgdGlsZShzKSB3aXRoaW4gdGhl
IHNob3J0ZXN0IGRpc3RhbmNlLgotICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRp
bGVzVG9DcmVhdGUuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1Rv
Q3JlYXRlQ291bnQ7ICsrbikgewotICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUg
PSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAgICBzZXRUaWxlKGNvb3JkaW5hdGUsIG1fYmFja2Vu
ZC0+Y3JlYXRlVGlsZSh0aGlzLCBjb29yZGluYXRlKSk7Ci0gICAgfQotICAgIHJlcXVpcmVkVGls
ZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsKLQotICAgIC8vIFBhaW50IHRoZSBjb250ZW50
IG9mIHRoZSBuZXdseSBjcmVhdGVkIHRpbGVzIG9yIHJlc2l6ZWQgdGlsZXMuCi0gICAgaWYgKHRp
bGVzVG9DcmVhdGVDb3VudCB8fCBkaWRSZXNpemVUaWxlcykKLSAgICAgICAgdXBkYXRlVGlsZUJ1
ZmZlcnMoKTsKLQotICAgIC8vIFJlLWNhbGwgY3JlYXRlVGlsZXMgb24gYSB0aW1lciB0byBjb3Zl
ciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5ld2VzdCBzaG9ydGVzdCBkaXN0YW5jZS4KLSAg
ICBtX3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJlZFRpbGVDb3VudDsKLSAgICBpZiAobV9w
ZW5kaW5nVGlsZUNyZWF0aW9uKQotICAgICAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVI
YXNQZW5kaW5nVGlsZUNyZWF0aW9uKCk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmFk
anVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdAotewotICAgIEludFJlY3Qg
Ym91bmRzID0gbV9yZWN0OwotICAgIEludFNpemUgY2FuZGlkYXRlU2l6ZSA9IHJlY3Quc2l6ZSgp
OwotCi0gICAgcmVjdC5pbnRlcnNlY3QoYm91bmRzKTsKLQotICAgIGlmIChyZWN0LnNpemUoKSA9
PSBjYW5kaWRhdGVTaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvKgotICAgICAqIEluIHRo
ZSBmb2xsb3dpbmcgY2FzZSwgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIG9mIHRoZSBjb250ZW50
cyByZWN0IGFuZCB0aGUgY292ZXIgcmVjdC4KLSAgICAgKiBUaHVzIHRoZSBsYXR0ZXIgc2hvdWxk
IG5vdCBiZSBpbmZsYXRlZC4KLSAgICAgKgotICAgICAqICArLS0tLS0tLS0tLS0tLS0tKwotICAg
ICAqICB8ICAgbV9yZWN0ICAgICAgfAotICAgICAqICArLS0tLS0tLS0tLS0tLS0tKwotICAgICAq
Ci0gICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAg
ICogICAgICAgICAgfCAgICAgICAgICBjb3ZlciByZWN0ICAgICAgICAgICB8Ci0gICAgICogICAg
ICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8Ci0gICAgICogICAgICAgICAg
fCAgICAgICAgIHwgdmlzaWJsZSB8ICAgICAgICAgICB8Ci0gICAgICogICAgICAgICAgfCAgICAg
ICAgIHwgIHJlY3QgICB8ICAgICAgICAgICB8Ci0gICAgICogICAgICAgICAgfCAgICAgICAgICst
LS0tLS0tLS0rICAgICAgICAgICB8Ci0gICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi0gICAgICovCi0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBUcnkgdG8gY3JlYXRlIGEgY292ZXIgcmVjdCBvZiB0aGUgc2Ft
ZSBzaXplIGFzIHRoZSBjYW5kaWRhdGUsIGJ1dCB3aXRoaW4gY29udGVudCBib3VuZHMuCi0gICAg
aW50IHBpeGVsc0NvdmVyZWQgPSBjYW5kaWRhdGVTaXplLndpZHRoKCkgKiBjYW5kaWRhdGVTaXpl
LmhlaWdodCgpOwotCi0gICAgaWYgKHJlY3Qud2lkdGgoKSA8IGNhbmRpZGF0ZVNpemUud2lkdGgo
KSkKLSAgICAgICAgcmVjdC5pbmZsYXRlWSgoKHBpeGVsc0NvdmVyZWQgLyByZWN0LndpZHRoKCkp
IC0gcmVjdC5oZWlnaHQoKSkgLyAyKTsKLSAgICBpZiAocmVjdC5oZWlnaHQoKSA8IGNhbmRpZGF0
ZVNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHJlY3QuaW5mbGF0ZVgoKChwaXhlbHNDb3ZlcmVkIC8g
cmVjdC5oZWlnaHQoKSkgLSByZWN0LndpZHRoKCkpIC8gMik7Ci0KLSAgICByZWN0LmludGVyc2Vj
dChib3VuZHMpOwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb21wdXRlQ292ZXJBbmRL
ZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgSW50UmVjdCYgY292ZXJSZWN0LCBJ
bnRSZWN0JiBrZWVwUmVjdCkgY29uc3QKLXsKLSAgICBjb3ZlclJlY3QgPSB2aXNpYmxlUmVjdDsK
LSAgICBrZWVwUmVjdCA9IHZpc2libGVSZWN0OwotCi0gICAgLy8gSWYgd2UgY292ZXIgbW9yZSB0
aGF0IHRoZSBhY3R1YWwgdmlld3BvcnQgd2UgY2FuIGJlIHNtYXJ0IGFib3V0IHdoaWNoIHRpbGVz
IHdlIGNob29zZSB0byByZW5kZXIuCi0gICAgaWYgKG1fY292ZXJBcmVhTXVsdGlwbGllciA+IDEp
IHsKLSAgICAgICAgLy8gVGhlIGluaXRpYWwgY292ZXIgYXJlYSBjb3ZlcnMgZXF1YWxseSBpbiBl
YWNoIGRpcmVjdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlckFyZWFNdWx0aXBsaWVyLgotICAg
ICAgICBjb3ZlclJlY3QuaW5mbGF0ZVgodmlzaWJsZVJlY3Qud2lkdGgoKSAqIChtX2NvdmVyQXJl
YU11bHRpcGxpZXIgLSAxKSAvIDIpOwotICAgICAgICBjb3ZlclJlY3QuaW5mbGF0ZVkodmlzaWJs
ZVJlY3QuaGVpZ2h0KCkgKiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkgLyAyKTsKLSAgICAg
ICAga2VlcFJlY3QgPSBjb3ZlclJlY3Q7Ci0KLSAgICAgICAgaWYgKG1fdHJhamVjdG9yeVZlY3Rv
ciAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKLSAgICAgICAgICAgIC8vIEEgbnVsbCB0cmFqZWN0
b3J5IHZlY3RvciAobm8gbW90aW9uKSBtZWFucyB0aGF0IHRpbGVzIGZvciB0aGUgY292ZXJBcmVh
IHdpbGwgYmUgY3JlYXRlZC4KLSAgICAgICAgICAgIC8vIEEgbm9uLW51bGwgdHJhamVjdG9yeSB2
ZWN0b3Igd2lsbCBzaHJpbmsgdGhlIGNvdmVyZWQgcmVjdCB0byB2aXNpYmxlUmVjdCBwbHVzIGl0
cyBleHBhbnNpb24gZnJvbSBpdHMKLSAgICAgICAgICAgIC8vIGNlbnRlciB0b3dhcmQgdGhlIGNv
dmVyIGFyZWEgZWRnZXMgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZ2l2ZW4gdmVjdG9yLgotCi0g
ICAgICAgICAgICAvLyBFLmcuIGlmIHZpc2libGVSZWN0ID09ICgxMCwxMCk1eDUgYW5kIGNvdmVy
QXJlYU11bHRpcGxpZXIgPT0gMy4wOgotICAgICAgICAgICAgLy8gYSAoMCwwKSB0cmFqZWN0b3J5
IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBpbnRlcnNlY3RpbmcgKDUsNSkxNXgxNSwKLSAgICAg
ICAgICAgIC8vIGEgKDEsMCkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50
ZXJzZWN0aW5nICgxMCwxMCkxMHg1LAotICAgICAgICAgICAgLy8gYW5kIGEgKDEsMSkgdHJhamVj
dG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICgxMCwxMCkxMHgxMC4K
LQotICAgICAgICAgICAgLy8gTXVsdGlwbHkgdGhlIHZlY3RvciBieSB0aGUgZGlzdGFuY2UgdG8g
dGhlIGVkZ2Ugb2YgdGhlIGNvdmVyIGFyZWEuCi0gICAgICAgICAgICBmbG9hdCB0cmFqZWN0b3J5
VmVjdG9yTXVsdGlwbGllciA9IChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDI7Ci0KLSAg
ICAgICAgICAgIC8vIFVuaXRlIHRoZSB2aXNpYmxlIHJlY3Qgd2l0aCBhICJnaG9zdCIgb2YgdGhl
IHZpc2libGUgcmVjdCBtb3ZlZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSB0cmFqZWN0b3J5IHZl
Y3Rvci4KLSAgICAgICAgICAgIGNvdmVyUmVjdCA9IHZpc2libGVSZWN0OwotICAgICAgICAgICAg
Y292ZXJSZWN0Lm1vdmUoY292ZXJSZWN0LndpZHRoKCkgKiBtX3RyYWplY3RvcnlWZWN0b3IueCgp
ICogdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3ZlclJlY3QuaGVpZ2h0KCkgKiBtX3RyYWplY3RvcnlWZWN0b3IueSgpICogdHJhamVjdG9y
eVZlY3Rvck11bHRpcGxpZXIpOwotCi0gICAgICAgICAgICBjb3ZlclJlY3QudW5pdGUodmlzaWJs
ZVJlY3QpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChrZWVwUmVjdC5jb250YWlucyhjb3Zl
clJlY3QpKTsKLSAgICB9Ci0KLSAgICBhZGp1c3RGb3JDb250ZW50c1JlY3QoY292ZXJSZWN0KTsK
LQotICAgIC8vIFRoZSBrZWVwIHJlY3QgaXMgYW4gaW5mbGF0ZWQgdmVyc2lvbiBvZiB0aGUgY292
ZXIgcmVjdCwgaW5mbGF0ZWQgaW4gdGlsZSBkaW1lbnNpb25zLgotICAgIGtlZXBSZWN0LnVuaXRl
KGNvdmVyUmVjdCk7Ci0gICAga2VlcFJlY3QuaW5mbGF0ZVgobV90aWxlU2l6ZS53aWR0aCgpIC8g
Mik7Ci0gICAga2VlcFJlY3QuaW5mbGF0ZVkobV90aWxlU2l6ZS5oZWlnaHQoKSAvIDIpOwotICAg
IGtlZXBSZWN0LmludGVyc2VjdChtX3JlY3QpOwotCi0gICAgQVNTRVJUKGNvdmVyUmVjdC5pc0Vt
cHR5KCkgfHwga2VlcFJlY3QuY29udGFpbnMoY292ZXJSZWN0KSk7Ci19Ci0KLWJvb2wgVGlsZWRC
YWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCi17Ci0gICAgYm9vbCB3YXNSZXNpemVkID0g
ZmFsc2U7Ci0gICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRpbGVzVG9SZW1vdmU7Ci0gICAg
Zm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgewotICAgICAgICBUaWxlOjpDb29y
ZGluYXRlIHRpbGVDb29yZGluYXRlID0gdGlsZS0+Y29vcmRpbmF0ZSgpOwotICAgICAgICBJbnRS
ZWN0IHRpbGVSZWN0ID0gdGlsZS0+cmVjdCgpOwotICAgICAgICBJbnRSZWN0IGV4cGVjdGVkVGls
ZVJlY3QgPSB0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpOwotICAgICAgICBp
ZiAoZXhwZWN0ZWRUaWxlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aWxlc1RvUmVtb3Zl
LmFwcGVuZCh0aWxlQ29vcmRpbmF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGV4cGVjdGVkVGlsZVJl
Y3QgIT0gdGlsZVJlY3QpIHsKLSAgICAgICAgICAgIHRpbGUtPnJlc2l6ZShleHBlY3RlZFRpbGVS
ZWN0LnNpemUoKSk7Ci0gICAgICAgICAgICB3YXNSZXNpemVkID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICB1bnNpZ25lZCByZW1vdmVDb3VudCA9IHRpbGVzVG9SZW1vdmUuc2l6ZSgpOwot
ICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCByZW1vdmVDb3VudDsgKytuKQotICAgICAgICBy
ZW1vdmVUaWxlKHRpbGVzVG9SZW1vdmVbbl0pOwotICAgIHJldHVybiB3YXNSZXNpemVkOwotfQot
Ci12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRLZWVwUmVjdChjb25zdCBJbnRSZWN0JiBrZWVw
UmVjdCkKLXsKLSAgICAvLyBEcm9wIHRpbGVzIG91dHNpZGUgdGhlIG5ldyBrZWVwUmVjdC4KLQot
ICAgIEZsb2F0UmVjdCBrZWVwUmVjdEYgPSBrZWVwUmVjdDsKLQotICAgIFZlY3RvcjxUaWxlOjpD
b29yZGluYXRlPiB0b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVl
cygpKSB7Ci0gICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGUtPmNvb3Jk
aW5hdGUoKTsKLSAgICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZS0+cmVjdCgpOwotICAg
ICAgICBpZiAoIXRpbGVSZWN0LmludGVyc2VjdHMoa2VlcFJlY3RGKSkKLSAgICAgICAgICAgIHRv
UmVtb3ZlLmFwcGVuZChjb29yZGluYXRlKTsKLSAgICB9Ci0gICAgdW5zaWduZWQgcmVtb3ZlQ291
bnQgPSB0b1JlbW92ZS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHJlbW92
ZUNvdW50OyArK24pCi0gICAgICAgIHJlbW92ZVRpbGUodG9SZW1vdmVbbl0pOwotCi0gICAgbV9r
ZWVwUmVjdCA9IGtlZXBSZWN0OwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVB
bGxOb25WaXNpYmxlVGlsZXMoKQotewotICAgIEludFJlY3QgYm91bmRlZFZpc2libGVSZWN0ID0g
bWFwRnJvbUNvbnRlbnRzKGludGVyc2VjdGlvbihtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpLCBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSkp
OwotICAgIHNldEtlZXBSZWN0KGJvdW5kZWRWaXNpYmxlUmVjdCk7Ci19Ci0KLVBhc3NSZWZQdHI8
VGlsZT4gVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVBdChjb25zdCBUaWxlOjpDb29yZGluYXRlJiBj
b29yZGluYXRlKSBjb25zdAotewotICAgIHJldHVybiBtX3RpbGVzLmdldChjb29yZGluYXRlKTsK
LX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZShjb25zdCBUaWxlOjpDb29yZGlu
YXRlJiBjb29yZGluYXRlLCBQYXNzUmVmUHRyPFRpbGU+IHRpbGUpCi17Ci0gICAgbV90aWxlcy5z
ZXQoY29vcmRpbmF0ZSwgdGlsZSk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnJlbW92
ZVRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkKLXsKLSAgICBtX3RpbGVz
LnJlbW92ZShjb29yZGluYXRlKTsKLX0KLQotSW50UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6bWFw
VG9Db250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAotewotICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KEZsb2F0UmVjdChyZWN0LngoKSAvIG1fY29udGVudHNTY2FsZSwKLSAgICAg
ICAgcmVjdC55KCkgLyBtX2NvbnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3Qud2lkdGgoKSAvIG1f
Y29udGVudHNTY2FsZSwKLSAgICAgICAgcmVjdC5oZWlnaHQoKSAvIG1fY29udGVudHNTY2FsZSkp
OwotfQotCi1JbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjptYXBGcm9tQ29udGVudHMoY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9h
dFJlY3QocmVjdC54KCkgKiBtX2NvbnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3QueSgpICogbV9j
b250ZW50c1NjYWxlLAotICAgICAgICByZWN0LndpZHRoKCkgKiBtX2NvbnRlbnRzU2NhbGUsCi0g
ICAgICAgIHJlY3QuaGVpZ2h0KCkgKiBtX2NvbnRlbnRzU2NhbGUpKTsKLX0KLQotSW50UmVjdCBU
aWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFRpbGU6OkNvb3Jk
aW5hdGUmIGNvb3JkaW5hdGUpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCByZWN0KGNvb3JkaW5hdGUu
eCgpICogbV90aWxlU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICBjb29yZGluYXRlLnko
KSAqIG1fdGlsZVNpemUuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgIG1fdGlsZVNpemUud2lk
dGgoKSwKLSAgICAgICAgICAgICAgICAgbV90aWxlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICByZWN0
LmludGVyc2VjdChtX3JlY3QpOwotICAgIHJldHVybiByZWN0OwotfQotCi1UaWxlOjpDb29yZGlu
YXRlIFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBpbnQgeCA9IHBvaW50LngoKSAvIG1fdGlsZVNpemUu
d2lkdGgoKTsKLSAgICBpbnQgeSA9IHBvaW50LnkoKSAvIG1fdGlsZVNpemUuaGVpZ2h0KCk7Ci0g
ICAgcmV0dXJuIFRpbGU6OkNvb3JkaW5hdGUoc3RkOjptYXgoeCwgMCksIHN0ZDo6bWF4KHksIDAp
KTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0U3VwcG9ydHNBbHBoYShib29sIGEp
Ci17Ci0gICAgaWYgKGEgPT0gbV9zdXBwb3J0c0FscGhhKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9zdXBwb3J0c0FscGhhID0gYTsKLSAgICBpbnZhbGlkYXRlKG1fcmVjdCk7Ci19Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFiMTZmNTAzMGZm
NzA1YWJhNWNiZWQxOWJjYzkxOWIyYTg5NDljOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmdTdG9yZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAKLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgVGlsZWRCYWNr
aW5nU3RvcmVfaAotI2RlZmluZSBUaWxlZEJhY2tpbmdTdG9yZV9oCi0KLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLQotI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRQ
b2ludC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJUaWxlLmgiCi0jaW5jbHVk
ZSAiVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwotY2xhc3MgVGlsZWRCYWNraW5nU3Rv
cmVDbGllbnQ7Ci0KLWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaWxlZEJhY2tpbmdTdG9yZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Kiwgc3Rk
Ojp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4pOwotICAgIH5UaWxlZEJhY2tp
bmdTdG9yZSgpOwotCi0gICAgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCgpIHsgcmV0
dXJuIG1fY2xpZW50OyB9Ci0KLSAgICB2b2lkIHNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxv
YXRQb2ludCYpOwotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOwotCi0gICAgZmxv
YXQgY29udGVudHNTY2FsZSgpIHsgcmV0dXJuIG1fY29udGVudHNTY2FsZTsgfQotICAgIHZvaWQg
c2V0Q29udGVudHNTY2FsZShmbG9hdCk7Ci0KLSAgICB2b2lkIHVwZGF0ZVRpbGVCdWZmZXJzKCk7
Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKLQotICAg
IEludFNpemUgdGlsZVNpemUoKSB7IHJldHVybiBtX3RpbGVTaXplOyB9Ci0gICAgdm9pZCBzZXRU
aWxlU2l6ZShjb25zdCBJbnRTaXplJik7Ci0KLSAgICBJbnRSZWN0IG1hcFRvQ29udGVudHMoY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLQotICAgIEludFJlY3QgdGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0
IFRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdDsKLSAgICBUaWxlOjpDb29yZGluYXRlIHRpbGVDb29y
ZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBkb3VibGUgdGlsZURp
c3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0LCBjb25zdCBUaWxlOjpDb29yZGluYXRlJikg
Y29uc3Q7Ci0KLSAgICBJbnRSZWN0IGNvdmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY292ZXJS
ZWN0OyB9Ci0gICAgYm9vbCB2aXNpYmxlQXJlYUlzQ292ZXJlZCgpIGNvbnN0OwotICAgIHZvaWQg
cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCk7Ci0KLSAgICB2b2lkIHNldFN1cHBvcnRzQWxwaGEo
Ym9vbCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVUaWxlcygpOwotICAgIHZvaWQgY29t
cHV0ZUNvdmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIEludFJlY3Qm
IGNvdmVyUmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0OwotCi0gICAgYm9vbCByZXNpemVF
ZGdlVGlsZXMoKTsKLSAgICB2b2lkIHNldENvdmVyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7
IG1fY292ZXJSZWN0ID0gcmVjdDsgfQotICAgIHZvaWQgc2V0S2VlcFJlY3QoY29uc3QgSW50UmVj
dCYpOwotCi0gICAgUGFzc1JlZlB0cjxUaWxlPiB0aWxlQXQoY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0VGlsZShjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29y
ZGluYXRlLCBQYXNzUmVmUHRyPFRpbGU+IHRpbGUpOwotICAgIHZvaWQgcmVtb3ZlVGlsZShjb25z
dCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKTsKLQotICAgIEludFJlY3QgdmlzaWJsZVJl
Y3QoKSBjb25zdDsKLQotICAgIGZsb2F0IGNvdmVyYWdlUmF0aW8oY29uc3QgSW50UmVjdCYpIGNv
bnN0OwotICAgIHZvaWQgYWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJlY3QmKSBjb25zdDsKLQot
ICAgIHZvaWQgcGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpOwotCi1wcml2YXRlOgotICAgIFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50KiBtX2NsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGlsZWRCYWNr
aW5nU3RvcmVCYWNrZW5kPiBtX2JhY2tlbmQ7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZTo6
Q29vcmRpbmF0ZSwgUmVmUHRyPFRpbGU+ID4gVGlsZU1hcDsKLSAgICBUaWxlTWFwIG1fdGlsZXM7
Ci0KLSAgICBJbnRTaXplIG1fdGlsZVNpemU7Ci0gICAgZmxvYXQgbV9jb3ZlckFyZWFNdWx0aXBs
aWVyOwotCi0gICAgRmxvYXRQb2ludCBtX3RyYWplY3RvcnlWZWN0b3I7Ci0gICAgRmxvYXRQb2lu
dCBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOwotICAgIEludFJlY3QgbV92aXNpYmxlUmVjdDsK
LQotICAgIEludFJlY3QgbV9jb3ZlclJlY3Q7Ci0gICAgSW50UmVjdCBtX2tlZXBSZWN0OwotICAg
IEludFJlY3QgbV9yZWN0OwotCi0gICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwotCi0gICAgYm9v
bCBtX3N1cHBvcnRzQWxwaGE7Ci0gICAgYm9vbCBtX3BlbmRpbmdUaWxlQ3JlYXRpb247Ci0KLSAg
ICBmcmllbmQgY2xhc3MgVGlsZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3Rv
cmVCYWNrZW5kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MjZiYjlmMzNlYWIx
ZDk3YjE0OWMxNDgyY2QzNjExOWQzMWY5YmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmVCYWNrZW5kLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmRfaAotI2RlZmluZSBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmRfaAotCi0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJUaWxlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7Ci0KLWNsYXNzIFRpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kKCkgeyB9Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRpbGU+IGNyZWF0ZVRpbGUoVGlsZWRCYWNraW5nU3RvcmUqLCBjb25zdCBU
aWxlOjpDb29yZGluYXRlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENoZWNrZXJQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKLX07Ci0KLX0KLQot
I2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGViOWE3ZDkzMjcyNDE1MWNjZTQ3NTc2OTY3ZTJkNDFkM2U1ZDNlMTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotIAotIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAKLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50X2gKLSNkZWZpbmUgVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnRfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLQotY2xhc3MgQ29sb3I7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0K
LWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tp
bmdTdG9yZVBhaW50QmVnaW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0
b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhaW50ZWRBcmVhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlSGFz
UGVuZGluZ1RpbGVDcmVhdGlvbigpIHsgfQotICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tp
bmdTdG9yZUNvbnRlbnRzUmVjdCgpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpID0gMDsKLSAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFja2lu
Z1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwotfTsKLQotI2Vsc2UKLWNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50IHt9OwotI2VuZGlmCi0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UaWxlQ2Fpcm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RpbGVDYWlyby5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzJmZmIyM2IxMmQ5MTNkOGI4ODA3NGNhZjdkYmIz
YWE3YjcyODlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RpbGVDYWlyby5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUaWxlQ2Fpcm9faAotI2RlZmluZSBUaWxl
Q2Fpcm9faAotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIFVTRShDQUlSTykKLQot
I2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSAiVGlsZS5oIgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwotCi1jbGFzcyBU
aWxlQ2Fpcm8gOiBwdWJsaWMgVGlsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGlsZT4gY3JlYXRlKFRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IENvb3Jk
aW5hdGUmIHRpbGVDb29yZGluYXRlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUaWxlQ2Fpcm8oYmFja2luZ1N0b3JlLCB0aWxlQ29vcmRpbmF0ZSkpOwotICAgIH0KLSAgICB2
aXJ0dWFsIH5UaWxlQ2Fpcm8oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZHlUb1BhaW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKLQotICAgIHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRp
bmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0ZTsgfQotICAgIHZpcnR1YWwgY29uc3Qg
SW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgVGls
ZUNhaXJvKFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgQ29vcmRpbmF0ZSYpOwotCi0gICAgVGls
ZWRCYWNraW5nU3RvcmUqIG1fYmFja2luZ1N0b3JlOwotICAgIENvb3JkaW5hdGUgbV9jb29yZGlu
YXRlOwotICAgIEludFJlY3QgbV9yZWN0OwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9idWZmZXI7Ci0gICAgUmVmUHRyPGNhaXJvX3JlZ2lvbl90PiBtX2RpcnR5UmVnaW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpICYmIFVTRShDQUlSTykKLQotI2VuZGlmIC8vIFRpbGVDYWlyb19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1RpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMWI5YjBkOWNkNWRiYjFmYzhiOWJiODVmNmJhZGYxYmZlMWFk
OWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBUaWxlX2gKKyNkZWZpbmUgVGls
ZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJJbnRQb2lu
dC5oIgorI2luY2x1ZGUgIkludFBvaW50SGFzaC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisKK2NsYXNzIFRpbGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxUaWxlPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRQb2lu
dCBDb29yZGluYXRlOworCisgICAgdmlydHVhbCB+VGlsZSgpIHsgfQorCisgICAgdmlydHVhbCBi
b29sIGlzRGlydHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoY29u
c3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVCYWNr
QnVmZmVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQmFja0J1ZmZlclRvRnJvbnQoKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVhZHlUb1BhaW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwor
CisgICAgdmlydHVhbCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgY29uc3QgSW50UmVjdCYgcmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7Cit9OworCit9
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlZmQ2ZTJkYWRkMTZiZGM1OTI1NTc0MDMyYjQwNTlhYWVk
NmU3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTAsMCArMSw0NzEg
QEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlRGltZW5zaW9uID0gNTEyOworCitzdGF0
aWMgSW50UG9pbnQgaW5uZXJCb3R0b21SaWdodChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IC8vIEFjdHVhbGx5LCB0aGUgcmVjdCBkb2VzIG5vdCBjb250YWluIHJlY3QubWF4WCgpLiBSZWZl
ciB0byBJbnRSZWN0Ojpjb250YWluLgorICAgIHJldHVybiBJbnRQb2ludChyZWN0Lm1heFgoKSAt
IDEsIHJlY3QubWF4WSgpIC0gMSk7Cit9CisKK1RpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tp
bmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kPiBiYWNrZW5kKQorICAgIDogbV9jbGllbnQoY2xpZW50
KQorICAgICwgbV9iYWNrZW5kKFdURjo6bW92ZShiYWNrZW5kKSkKKyAgICAsIG1fdGlsZVNpemUo
ZGVmYXVsdFRpbGVEaW1lbnNpb24sIGRlZmF1bHRUaWxlRGltZW5zaW9uKQorICAgICwgbV9jb3Zl
ckFyZWFNdWx0aXBsaWVyKDIuMGYpCisgICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5mKQorICAgICwg
bV9zdXBwb3J0c0FscGhhKGZhbHNlKQorICAgICwgbV9wZW5kaW5nVGlsZUNyZWF0aW9uKGZhbHNl
KQoreworfQorCitUaWxlZEJhY2tpbmdTdG9yZTo6flRpbGVkQmFja2luZ1N0b3JlKCkKK3sKK30K
Kwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK3sKKyAgICBtX3RpbGVTaXplID0gc2l6ZTsKKyAgICBtX3RpbGVzLmNsZWFyKCk7Cit9CisK
K3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3sKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9y
ID0gdHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yLm5vcm1h
bGl6ZSgpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxlc0lmTmVl
ZGVkKCkKK3sKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsK
KyAgICBJbnRSZWN0IHJlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGllbnQtPnRpbGVkQmFja2lu
Z1N0b3JlQ29udGVudHNSZWN0KCkpOworCisgICAgYm9vbCBkaWRDaGFuZ2UgPSBtX3RyYWplY3Rv
cnlWZWN0b3IgIT0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciB8fCBtX3Zpc2libGVSZWN0ICE9
IHZpc2libGVSZWN0IHx8IG1fcmVjdCAhPSByZWN0OworICAgIGlmIChkaWRDaGFuZ2UgfHwgbV9w
ZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAgICBjcmVhdGVUaWxlcygpOworfQorCit2b2lkIFRp
bGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRzRGlydHlS
ZWN0KQoreworICAgIEludFJlY3QgZGlydHlSZWN0KG1hcEZyb21Db250ZW50cyhjb250ZW50c0Rp
cnR5UmVjdCkpOworICAgIEludFJlY3Qga2VlcFJlY3RGaXRUb1RpbGVTaXplID0gdGlsZVJlY3RG
b3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlRm9yUG9pbnQobV9rZWVwUmVjdC5sb2NhdGlvbigp
KSk7CisgICAga2VlcFJlY3RGaXRUb1RpbGVTaXplLnVuaXRlKHRpbGVSZWN0Rm9yQ29vcmRpbmF0
ZSh0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQobV9rZWVwUmVjdCkpKSk7
CisKKyAgICAvLyBPbmx5IGl0ZXJhdGUgb24gdGhlIHBhcnQgb2YgdGhlIHJlY3QgdGhhdCB3ZSBr
bm93IHdlIG1pZ2h0IGhhdmUgdGlsZXMuCisgICAgSW50UmVjdCBjb3ZlcmVkRGlydHlSZWN0ID0g
aW50ZXJzZWN0aW9uKGRpcnR5UmVjdCwga2VlcFJlY3RGaXRUb1RpbGVTaXplKTsKKyAgICBUaWxl
OjpDb29yZGluYXRlIHRvcExlZnQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGNvdmVyZWREaXJ0
eVJlY3QubG9jYXRpb24oKSk7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSBib3R0b21SaWdodCA9IHRp
bGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21SaWdodChjb3ZlcmVkRGlydHlSZWN0KSk7
CisKKyAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5Q29vcmRpbmF0ZSA8
PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5hdGUpIHsKKyAgICAgICAgZm9yIChpbnQgeENv
b3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueCgpOyAr
K3hDb29yZGluYXRlKSB7CisgICAgICAgICAgICBSZWZQdHI8VGlsZT4gY3VycmVudFRpbGUgPSB0
aWxlQXQoVGlsZTo6Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNvb3JkaW5hdGUpKTsKKyAgICAg
ICAgICAgIGlmICghY3VycmVudFRpbGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAvLyBQYXNzIHRoZSBmdWxsIHJlY3QgdG8gZWFjaCB0aWxlIGFzIGNvdmVyZWREaXJ0
eVJlY3QgbWlnaHQgbm90CisgICAgICAgICAgICAvLyBjb250YWluIHRoZW0gY29tcGxldGVseSBh
bmQgd2UgZG9uJ3Qgd2FudCBwYXJ0aWFsIHRpbGUgcmVkcmF3cy4KKyAgICAgICAgICAgIGN1cnJl
bnRUaWxlLT5pbnZhbGlkYXRlKGRpcnR5UmVjdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKK3sKKyAgICBtX2NsaWVu
dC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4g
cGFpbnRlZEFyZWE7CisgICAgVmVjdG9yPFJlZlB0cjxUaWxlPiA+IGRpcnR5VGlsZXM7CisgICAg
Zm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXRpbGUt
PmlzRGlydHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkaXJ0eVRpbGVzLmFw
cGVuZCh0aWxlKTsKKyAgICB9CisKKyAgICBpZiAoZGlydHlUaWxlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQocGFpbnRlZEFyZWEpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEluIHNpbmdsZSB0aHJlYWRl
ZCBjYXNlLCB0aWxlIGJhY2sgYnVmZmVycyBjb3VsZCBiZSB1cGRhdGVkIGFzeW5jaHJvbm91c2x5
IAorICAgIC8vIG9uZSBieSBvbmUgYW5kIHRoZW4gc3dhcHBlZCB0byBmcm9udCBpbiBvbmUgZ28u
IFRoaXMgd291bGQgbWluaW1pemUgdGhlIHRpbWUgc3BlbnQKKyAgICAvLyBibG9ja2luZyBvbiB0
aWxlIHVwZGF0ZXMuCisgICAgdW5zaWduZWQgc2l6ZSA9IGRpcnR5VGlsZXMuc2l6ZSgpOworICAg
IGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBzaXplOyArK24pIHsKKyAgICAgICAgVmVjdG9yPElu
dFJlY3Q+IHBhaW50ZWRSZWN0cyA9IGRpcnR5VGlsZXNbbl0tPnVwZGF0ZUJhY2tCdWZmZXIoKTsK
KyAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kVmVjdG9yKHBhaW50ZWRSZWN0cyk7CisgICAgICAg
IGRpcnR5VGlsZXNbbl0tPnN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOworICAgIH0KKworICAgIG1f
Y2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKHBhaW50ZWRBcmVhKTsKK30KKworSW50
UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6dmlzaWJsZVJlY3QoKSBjb25zdAoreworICAgIHJldHVy
biBtYXBGcm9tQ29udGVudHMobV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3Qo
KSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
c2NhbGUpCit7CisgICAgaWYgKHNjYWxlID09IG1fY29udGVudHNTY2FsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7CisgICAgbV90aWxlcy5jbGVhcigp
OworICAgIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKK30KKworZG91YmxlIFRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6
OkNvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKSBjb25zdAoreworICAgIGlmICh2aWV3cG9ydC5p
bnRlcnNlY3RzKHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZSkpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEludFBvaW50IHZpZXdDZW50ZXIgPSB2aWV3cG9ydC5sb2NhdGlv
bigpICsgSW50U2l6ZSh2aWV3cG9ydC53aWR0aCgpIC8gMiwgdmlld3BvcnQuaGVpZ2h0KCkgLyAy
KTsKKyAgICBUaWxlOjpDb29yZGluYXRlIGNlbnRlckNvb3JkaW5hdGUgPSB0aWxlQ29vcmRpbmF0
ZUZvclBvaW50KHZpZXdDZW50ZXIpOworCisgICAgcmV0dXJuIHN0ZDo6bWF4KGFicyhjZW50ZXJD
b29yZGluYXRlLnkoKSAtIHRpbGVDb29yZGluYXRlLnkoKSksIGFicyhjZW50ZXJDb29yZGluYXRl
LngoKSAtIHRpbGVDb29yZGluYXRlLngoKSkpOworfQorCisvLyBSZXR1cm5zIGEgcmF0aW8gYmV0
d2VlbiAwLjBmIGFuZCAxLjBmIG9mIHRoZSBzdXJmYWNlIG9mIGNvbnRlbnRzUmVjdCBjb3ZlcmVk
IGJ5IHJlbmRlcmVkIHRpbGVzLgorZmxvYXQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyYWdlUmF0
aW8oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY29udGVudHNSZWN0KSBjb25zdAoreworICAgIElu
dFJlY3QgZGlydHlSZWN0ID0gbWFwRnJvbUNvbnRlbnRzKGNvbnRlbnRzUmVjdCk7CisgICAgZmxv
YXQgcmVjdEFyZWEgPSBkaXJ0eVJlY3Qud2lkdGgoKSAqIGRpcnR5UmVjdC5oZWlnaHQoKTsKKyAg
ICBmbG9hdCBjb3ZlckFyZWEgPSAwLjBmOworCisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0
ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChkaXJ0eVJlY3QubG9jYXRpb24oKSk7CisgICAgVGls
ZTo6Q29vcmRpbmF0ZSBib3R0b21SaWdodCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJC
b3R0b21SaWdodChkaXJ0eVJlY3QpKTsKKworICAgIGZvciAoaW50IHlDb29yZGluYXRlID0gdG9w
TGVmdC55KCk7IHlDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LnkoKTsgKyt5Q29vcmRpbmF0ZSkg
eworICAgICAgICBmb3IgKGludCB4Q29vcmRpbmF0ZSA9IHRvcExlZnQueCgpOyB4Q29vcmRpbmF0
ZSA8PSBib3R0b21SaWdodC54KCk7ICsreENvb3JkaW5hdGUpIHsKKyAgICAgICAgICAgIFRpbGU6
OkNvb3JkaW5hdGUgY3VycmVudENvb3JkaW5hdGUoeENvb3JkaW5hdGUsIHlDb29yZGluYXRlKTsK
KyAgICAgICAgICAgIFJlZlB0cjxUaWxlPiBjdXJyZW50VGlsZSA9IHRpbGVBdChjdXJyZW50Q29v
cmRpbmF0ZSk7CisgICAgICAgICAgICBpZiAoY3VycmVudFRpbGUgJiYgY3VycmVudFRpbGUtPmlz
UmVhZHlUb1BhaW50KCkpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IGNvdmVyUmVjdCA9IGlu
dGVyc2VjdGlvbihkaXJ0eVJlY3QsIGN1cnJlbnRUaWxlLT5yZWN0KCkpOworICAgICAgICAgICAg
ICAgIGNvdmVyQXJlYSArPSBjb3ZlclJlY3Qud2lkdGgoKSAqIGNvdmVyUmVjdC5oZWlnaHQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY292ZXJBcmVhIC8g
cmVjdEFyZWE7Cit9CisKK2Jvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnZpc2libGVBcmVhSXNDb3Zl
cmVkKCkgY29uc3QKK3sKKyAgICBJbnRSZWN0IGJvdW5kZWRWaXNpYmxlQ29udGVudHNSZWN0ID0g
aW50ZXJzZWN0aW9uKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCksIG1f
Y2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICByZXR1cm4gY292
ZXJhZ2VSYXRpbyhib3VuZGVkVmlzaWJsZUNvbnRlbnRzUmVjdCkgPT0gMS4wZjsKK30KKwordm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQoreworICAgIC8vIFVwZGF0ZSBvdXIg
YmFja2luZyBzdG9yZSBnZW9tZXRyeS4KKyAgICBjb25zdCBJbnRSZWN0IHByZXZpb3VzUmVjdCA9
IG1fcmVjdDsKKyAgICBtX3JlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGllbnQtPnRpbGVkQmFj
a2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOworICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IG1fcGVu
ZGluZ1RyYWplY3RvcnlWZWN0b3I7CisgICAgbV92aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0KCk7
CisKKyAgICBpZiAobV9yZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBzZXRDb3ZlclJlY3QoSW50
UmVjdCgpKTsKKyAgICAgICAgc2V0S2VlcFJlY3QoSW50UmVjdCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8qIFdlIG11c3QgY29tcHV0ZSBjb3ZlciBhbmQga2VlcCByZWN0cyB1
c2luZyB0aGUgdmlzaWJsZVJlY3QsIGluc3RlYWQgb2YgdGhlIHJlY3QgaW50ZXJzZWN0aW5nIHRo
ZSB2aXNpYmxlUmVjdCB3aXRoIG1fcmVjdCwKKyAgICAgKiBiZWNhdXNlIFRCUyBjYW4gYmUgdXNl
ZCBhcyBhIGJhY2tpbmcgc3RvcmUgb2YgR3JhcGhpY3NMYXllciBhbmQgdGhlIHZpc2libGUgcmVj
dCB1c3VhbGx5IGRvZXMgbm90IGludGVyc2VjdCB3aXRoIG1fcmVjdC4KKyAgICAgKiBJbiB0aGUg
YmVsb3cgY2FzZSwgdGhlIGludGVyc2VjdGluZyByZWN0IGlzIGFuIGVtcHR5LgorICAgICAqCisg
ICAgICogICstLS0tLS0tLS0tLS0tLS0rCisgICAgICogIHwgICAgICAgICAgICAgICB8CisgICAg
ICogIHwgICBtX3JlY3QgICAgICB8CisgICAgICogIHwgICAgICAgKy0tLS0tLS18LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisgICAgICogIHwgICAgICAgfCBIRVJFICB8ICBjb3ZlciBvciBrZWVw
ICAgICAgICB8CisgICAgICogICstLS0tLS0tLS0tLS0tLS0rICAgICAgcmVjdCAgICAgICAgICAg
ICB8CisgICAgICogICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8Cisg
ICAgICogICAgICAgICAgfCAgICAgICAgIHwgdmlzaWJsZSB8ICAgICAgICAgICB8CisgICAgICog
ICAgICAgICAgfCAgICAgICAgIHwgIHJlY3QgICB8ICAgICAgICAgICB8CisgICAgICogICAgICAg
ICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8CisgICAgICogICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICoKKyAgICAgKiBXZSBtdXN0IGNyZWF0ZSBvciBrZWVw
IHRoZSB0aWxlcyBpbiB0aGUgSEVSRSByZWdpb24uCisgICAgICovCisKKyAgICBJbnRSZWN0IGNv
dmVyUmVjdDsKKyAgICBJbnRSZWN0IGtlZXBSZWN0OworICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBS
ZWN0KG1fdmlzaWJsZVJlY3QsIGNvdmVyUmVjdCwga2VlcFJlY3QpOworCisgICAgc2V0Q292ZXJS
ZWN0KGNvdmVyUmVjdCk7CisgICAgc2V0S2VlcFJlY3Qoa2VlcFJlY3QpOworCisgICAgaWYgKGNv
dmVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJlc2l6ZSB0aWxl
cyBhdCB0aGUgZWRnZSBpbiBjYXNlIHRoZSBjb250ZW50cyBzaXplIGhhcyBjaGFuZ2VkLCBidXQg
b25seSBkbyBzbworICAgIC8vIGFmdGVyIGhhdmluZyBkcm9wcGVkIHRpbGVzIG91dHNpZGUgdGhl
IGtlZXAgcmVjdC4KKyAgICBib29sIGRpZFJlc2l6ZVRpbGVzID0gZmFsc2U7CisgICAgaWYgKHBy
ZXZpb3VzUmVjdCAhPSBtX3JlY3QpCisgICAgICAgIGRpZFJlc2l6ZVRpbGVzID0gcmVzaXplRWRn
ZVRpbGVzKCk7CisKKyAgICAvLyBTZWFyY2ggZm9yIHRoZSB0aWxlIHBvc2l0aW9uIGNsb3Nlc3Qg
dG8gdGhlIHZpZXdwb3J0IGNlbnRlciB0aGF0IGRvZXMgbm90IHlldCBjb250YWluIGEgdGlsZS4K
KyAgICAvLyBXaGljaCBwb3NpdGlvbiBpcyBjb25zaWRlcmVkIHRoZSBjbG9zZXN0IGRlcGVuZHMg
b24gdGhlIHRpbGVEaXN0YW5jZSBmdW5jdGlvbi4KKyAgICBkb3VibGUgc2hvcnRlc3REaXN0YW5j
ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBWZWN0b3I8
VGlsZTo6Q29vcmRpbmF0ZT4gdGlsZXNUb0NyZWF0ZTsKKyAgICB1bnNpZ25lZCByZXF1aXJlZFRp
bGVDb3VudCA9IDA7CisKKyAgICAvLyBDb3ZlciBhcmVhcyAoaW4gdGlsZXMpIHdpdGggbWluaW11
bSBkaXN0YW5jZSBmcm9tIHRoZSB2aXNpYmxlIHJlY3QuIElmIHRoZSB2aXNpYmxlIHJlY3QgaXMK
KyAgICAvLyBub3QgY292ZXJlZCBhbHJlYWR5IGl0IHdpbGwgYmUgY292ZXJlZCBmaXJzdCBpbiBv
bmUgZ28sIGR1ZSB0byB0aGUgZGlzdGFuY2UgYmVpbmcgMCBmb3IgdGlsZXMKKyAgICAvLyBpbnNp
ZGUgdGhlIHZpc2libGUgcmVjdC4KKyAgICBUaWxlOjpDb29yZGluYXRlIHRvcExlZnQgPSB0aWxl
Q29vcmRpbmF0ZUZvclBvaW50KGNvdmVyUmVjdC5sb2NhdGlvbigpKTsKKyAgICBUaWxlOjpDb29y
ZGluYXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJp
Z2h0KGNvdmVyUmVjdCkpOworICAgIGZvciAoaW50IHlDb29yZGluYXRlID0gdG9wTGVmdC55KCk7
IHlDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LnkoKTsgKyt5Q29vcmRpbmF0ZSkgeworICAgICAg
ICBmb3IgKGludCB4Q29vcmRpbmF0ZSA9IHRvcExlZnQueCgpOyB4Q29vcmRpbmF0ZSA8PSBib3R0
b21SaWdodC54KCk7ICsreENvb3JkaW5hdGUpIHsKKyAgICAgICAgICAgIFRpbGU6OkNvb3JkaW5h
dGUgY3VycmVudENvb3JkaW5hdGUoeENvb3JkaW5hdGUsIHlDb29yZGluYXRlKTsKKyAgICAgICAg
ICAgIGlmICh0aWxlQXQoY3VycmVudENvb3JkaW5hdGUpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgKytyZXF1aXJlZFRpbGVDb3VudDsKKyAgICAgICAgICAgIGRvdWJs
ZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5jZShtX3Zpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0
ZSk7CisgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBzaG9ydGVzdERpc3RhbmNlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgc2hvcnRlc3RE
aXN0YW5jZSkgeworICAgICAgICAgICAgICAgIHRpbGVzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBzaG9ydGVzdERpc3RhbmNlID0gZGlzdGFuY2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0aWxlc1RvQ3JlYXRlLmFwcGVuZChjdXJyZW50Q29vcmRpbmF0ZSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3cgY29uc3RydWN0IHRoZSB0aWxlKHMpIHdpdGhpbiB0
aGUgc2hvcnRlc3QgZGlzdGFuY2UuCisgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0g
dGlsZXNUb0NyZWF0ZS5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVz
VG9DcmVhdGVDb3VudDsgKytuKSB7CisgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0
ZSA9IHRpbGVzVG9DcmVhdGVbbl07CisgICAgICAgIHNldFRpbGUoY29vcmRpbmF0ZSwgbV9iYWNr
ZW5kLT5jcmVhdGVUaWxlKHRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICB9CisgICAgcmVxdWlyZWRU
aWxlQ291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OworCisgICAgLy8gUGFpbnQgdGhlIGNvbnRl
bnQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgdGlsZXMgb3IgcmVzaXplZCB0aWxlcy4KKyAgICBpZiAo
dGlsZXNUb0NyZWF0ZUNvdW50IHx8IGRpZFJlc2l6ZVRpbGVzKQorICAgICAgICB1cGRhdGVUaWxl
QnVmZmVycygpOworCisgICAgLy8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRvIGNv
dmVyIHRoZSB2aXNpYmxlIGFyZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNlLgor
ICAgIG1fcGVuZGluZ1RpbGVDcmVhdGlvbiA9IHJlcXVpcmVkVGlsZUNvdW50OworICAgIGlmICht
X3BlbmRpbmdUaWxlQ3JlYXRpb24pCisgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9y
ZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgSW50UmVj
dCBib3VuZHMgPSBtX3JlY3Q7CisgICAgSW50U2l6ZSBjYW5kaWRhdGVTaXplID0gcmVjdC5zaXpl
KCk7CisKKyAgICByZWN0LmludGVyc2VjdChib3VuZHMpOworCisgICAgaWYgKHJlY3Quc2l6ZSgp
ID09IGNhbmRpZGF0ZVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogSW4g
dGhlIGZvbGxvd2luZyBjYXNlLCB0aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24gb2YgdGhlIGNvbnRl
bnRzIHJlY3QgYW5kIHRoZSBjb3ZlciByZWN0LgorICAgICAqIFRodXMgdGhlIGxhdHRlciBzaG91
bGQgbm90IGJlIGluZmxhdGVkLgorICAgICAqCisgICAgICogICstLS0tLS0tLS0tLS0tLS0rCisg
ICAgICogIHwgICBtX3JlY3QgICAgICB8CisgICAgICogICstLS0tLS0tLS0tLS0tLS0rCisgICAg
ICoKKyAgICAgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAg
ICAgKiAgICAgICAgICB8ICAgICAgICAgIGNvdmVyIHJlY3QgICAgICAgICAgIHwKKyAgICAgKiAg
ICAgICAgICB8ICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAg
ICB8ICAgICAgICAgfCB2aXNpYmxlIHwgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICB8ICAg
ICAgICAgfCAgcmVjdCAgIHwgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICB8ICAgICAgICAg
Ky0tLS0tLS0tLSsgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgKi8KKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRyeSB0byBjcmVhdGUgYSBjb3ZlciByZWN0IG9mIHRoZSBz
YW1lIHNpemUgYXMgdGhlIGNhbmRpZGF0ZSwgYnV0IHdpdGhpbiBjb250ZW50IGJvdW5kcy4KKyAg
ICBpbnQgcGl4ZWxzQ292ZXJlZCA9IGNhbmRpZGF0ZVNpemUud2lkdGgoKSAqIGNhbmRpZGF0ZVNp
emUuaGVpZ2h0KCk7CisKKyAgICBpZiAocmVjdC53aWR0aCgpIDwgY2FuZGlkYXRlU2l6ZS53aWR0
aCgpKQorICAgICAgICByZWN0LmluZmxhdGVZKCgocGl4ZWxzQ292ZXJlZCAvIHJlY3Qud2lkdGgo
KSkgLSByZWN0LmhlaWdodCgpKSAvIDIpOworICAgIGlmIChyZWN0LmhlaWdodCgpIDwgY2FuZGlk
YXRlU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgcmVjdC5pbmZsYXRlWCgoKHBpeGVsc0NvdmVyZWQg
LyByZWN0LmhlaWdodCgpKSAtIHJlY3Qud2lkdGgoKSkgLyAyKTsKKworICAgIHJlY3QuaW50ZXJz
ZWN0KGJvdW5kcyk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvbXB1dGVDb3ZlckFu
ZEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3Qs
IEludFJlY3QmIGtlZXBSZWN0KSBjb25zdAoreworICAgIGNvdmVyUmVjdCA9IHZpc2libGVSZWN0
OworICAgIGtlZXBSZWN0ID0gdmlzaWJsZVJlY3Q7CisKKyAgICAvLyBJZiB3ZSBjb3ZlciBtb3Jl
IHRoYXQgdGhlIGFjdHVhbCB2aWV3cG9ydCB3ZSBjYW4gYmUgc21hcnQgYWJvdXQgd2hpY2ggdGls
ZXMgd2UgY2hvb3NlIHRvIHJlbmRlci4KKyAgICBpZiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyID4g
MSkgeworICAgICAgICAvLyBUaGUgaW5pdGlhbCBjb3ZlciBhcmVhIGNvdmVycyBlcXVhbGx5IGlu
IGVhY2ggZGlyZWN0aW9uLCBhY2NvcmRpbmcgdG8gdGhlIGNvdmVyQXJlYU11bHRpcGxpZXIuCisg
ICAgICAgIGNvdmVyUmVjdC5pbmZsYXRlWCh2aXNpYmxlUmVjdC53aWR0aCgpICogKG1fY292ZXJB
cmVhTXVsdGlwbGllciAtIDEpIC8gMik7CisgICAgICAgIGNvdmVyUmVjdC5pbmZsYXRlWSh2aXNp
YmxlUmVjdC5oZWlnaHQoKSAqIChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAg
ICAgICBrZWVwUmVjdCA9IGNvdmVyUmVjdDsKKworICAgICAgICBpZiAobV90cmFqZWN0b3J5VmVj
dG9yICE9IEZsb2F0UG9pbnQ6Onplcm8oKSkgeworICAgICAgICAgICAgLy8gQSBudWxsIHRyYWpl
Y3RvcnkgdmVjdG9yIChubyBtb3Rpb24pIG1lYW5zIHRoYXQgdGlsZXMgZm9yIHRoZSBjb3ZlckFy
ZWEgd2lsbCBiZSBjcmVhdGVkLgorICAgICAgICAgICAgLy8gQSBub24tbnVsbCB0cmFqZWN0b3J5
IHZlY3RvciB3aWxsIHNocmluayB0aGUgY292ZXJlZCByZWN0IHRvIHZpc2libGVSZWN0IHBsdXMg
aXRzIGV4cGFuc2lvbiBmcm9tIGl0cworICAgICAgICAgICAgLy8gY2VudGVyIHRvd2FyZCB0aGUg
Y292ZXIgYXJlYSBlZGdlcyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBnaXZlbiB2ZWN0b3IuCisK
KyAgICAgICAgICAgIC8vIEUuZy4gaWYgdmlzaWJsZVJlY3QgPT0gKDEwLDEwKTV4NSBhbmQgY292
ZXJBcmVhTXVsdGlwbGllciA9PSAzLjA6CisgICAgICAgICAgICAvLyBhICgwLDApIHRyYWplY3Rv
cnkgdmVjdG9yIHdpbGwgY3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAoNSw1KTE1eDE1LAorICAg
ICAgICAgICAgLy8gYSAoMSwwKSB0cmFqZWN0b3J5IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBp
bnRlcnNlY3RpbmcgKDEwLDEwKTEweDUsCisgICAgICAgICAgICAvLyBhbmQgYSAoMSwxKSB0cmFq
ZWN0b3J5IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBpbnRlcnNlY3RpbmcgKDEwLDEwKTEweDEw
LgorCisgICAgICAgICAgICAvLyBNdWx0aXBseSB0aGUgdmVjdG9yIGJ5IHRoZSBkaXN0YW5jZSB0
byB0aGUgZWRnZSBvZiB0aGUgY292ZXIgYXJlYS4KKyAgICAgICAgICAgIGZsb2F0IHRyYWplY3Rv
cnlWZWN0b3JNdWx0aXBsaWVyID0gKG1fY292ZXJBcmVhTXVsdGlwbGllciAtIDEpIC8gMjsKKwor
ICAgICAgICAgICAgLy8gVW5pdGUgdGhlIHZpc2libGUgcmVjdCB3aXRoIGEgImdob3N0IiBvZiB0
aGUgdmlzaWJsZSByZWN0IG1vdmVkIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHRyYWplY3Rvcnkg
dmVjdG9yLgorICAgICAgICAgICAgY292ZXJSZWN0ID0gdmlzaWJsZVJlY3Q7CisgICAgICAgICAg
ICBjb3ZlclJlY3QubW92ZShjb3ZlclJlY3Qud2lkdGgoKSAqIG1fdHJhamVjdG9yeVZlY3Rvci54
KCkgKiB0cmFqZWN0b3J5VmVjdG9yTXVsdGlwbGllciwgY292ZXJSZWN0LmhlaWdodCgpICogbV90
cmFqZWN0b3J5VmVjdG9yLnkoKSAqIHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyKTsKKworICAg
ICAgICAgICAgY292ZXJSZWN0LnVuaXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQoa2VlcFJlY3QuY29udGFpbnMoY292ZXJSZWN0KSk7CisgICAgfQorCisgICAgYWRq
dXN0Rm9yQ29udGVudHNSZWN0KGNvdmVyUmVjdCk7CisKKyAgICAvLyBUaGUga2VlcCByZWN0IGlz
IGFuIGluZmxhdGVkIHZlcnNpb24gb2YgdGhlIGNvdmVyIHJlY3QsIGluZmxhdGVkIGluIHRpbGUg
ZGltZW5zaW9ucy4KKyAgICBrZWVwUmVjdC51bml0ZShjb3ZlclJlY3QpOworICAgIGtlZXBSZWN0
LmluZmxhdGVYKG1fdGlsZVNpemUud2lkdGgoKSAvIDIpOworICAgIGtlZXBSZWN0LmluZmxhdGVZ
KG1fdGlsZVNpemUuaGVpZ2h0KCkgLyAyKTsKKyAgICBrZWVwUmVjdC5pbnRlcnNlY3QobV9yZWN0
KTsKKworICAgIEFTU0VSVChjb3ZlclJlY3QuaXNFbXB0eSgpIHx8IGtlZXBSZWN0LmNvbnRhaW5z
KGNvdmVyUmVjdCkpOworfQorCitib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGls
ZXMoKQoreworICAgIGJvb2wgd2FzUmVzaXplZCA9IGZhbHNlOworICAgIFZlY3RvcjxUaWxlOjpD
b29yZGluYXRlPiB0aWxlc1RvUmVtb3ZlOworICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IHRp
bGUtPmNvb3JkaW5hdGUoKTsKKyAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3Qo
KTsKKyAgICAgICAgSW50UmVjdCBleHBlY3RlZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGlu
YXRlKHRpbGVDb29yZGluYXRlKTsKKyAgICAgICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0
eSgpKQorICAgICAgICAgICAgdGlsZXNUb1JlbW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOwor
ICAgICAgICBlbHNlIGlmIChleHBlY3RlZFRpbGVSZWN0ICE9IHRpbGVSZWN0KSB7CisgICAgICAg
ICAgICB0aWxlLT5yZXNpemUoZXhwZWN0ZWRUaWxlUmVjdC5zaXplKCkpOworICAgICAgICAgICAg
d2FzUmVzaXplZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgdW5zaWduZWQgcmVtb3Zl
Q291bnQgPSB0aWxlc1RvUmVtb3ZlLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBu
IDwgcmVtb3ZlQ291bnQ7ICsrbikKKyAgICAgICAgcmVtb3ZlVGlsZSh0aWxlc1RvUmVtb3ZlW25d
KTsKKyAgICByZXR1cm4gd2FzUmVzaXplZDsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
c2V0S2VlcFJlY3QoY29uc3QgSW50UmVjdCYga2VlcFJlY3QpCit7CisgICAgLy8gRHJvcCB0aWxl
cyBvdXRzaWRlIHRoZSBuZXcga2VlcFJlY3QuCisKKyAgICBGbG9hdFJlY3Qga2VlcFJlY3RGID0g
a2VlcFJlY3Q7CisKKyAgICBWZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdG9SZW1vdmU7CisgICAg
Zm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgeworICAgICAgICBUaWxlOjpDb29y
ZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlLT5jb29yZGluYXRlKCk7CisgICAgICAgIEZsb2F0UmVj
dCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKKyAgICAgICAgaWYgKCF0aWxlUmVjdC5pbnRlcnNl
Y3RzKGtlZXBSZWN0RikpCisgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoY29vcmRpbmF0ZSk7
CisgICAgfQorICAgIHVuc2lnbmVkIHJlbW92ZUNvdW50ID0gdG9SZW1vdmUuc2l6ZSgpOworICAg
IGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCByZW1vdmVDb3VudDsgKytuKQorICAgICAgICByZW1v
dmVUaWxlKHRvUmVtb3ZlW25dKTsKKworICAgIG1fa2VlcFJlY3QgPSBrZWVwUmVjdDsKK30KKwor
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKK3sKKyAg
ICBJbnRSZWN0IGJvdW5kZWRWaXNpYmxlUmVjdCA9IG1hcEZyb21Db250ZW50cyhpbnRlcnNlY3Rp
b24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGllbnQtPnRp
bGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpKTsKKyAgICBzZXRLZWVwUmVjdChib3VuZGVk
VmlzaWJsZVJlY3QpOworfQorCitQYXNzUmVmUHRyPFRpbGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlQXQoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90aWxlcy5nZXQoY29vcmRpbmF0ZSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3Rv
cmU6OnNldFRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0
cjxUaWxlPiB0aWxlKQoreworICAgIG1fdGlsZXMuc2V0KGNvb3JkaW5hdGUsIHRpbGUpOworfQor
Cit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5h
dGUmIGNvb3JkaW5hdGUpCit7CisgICAgbV90aWxlcy5yZW1vdmUoY29vcmRpbmF0ZSk7Cit9CisK
K0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6Om1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QocmVj
dC54KCkgLyBtX2NvbnRlbnRzU2NhbGUsCisgICAgICAgIHJlY3QueSgpIC8gbV9jb250ZW50c1Nj
YWxlLAorICAgICAgICByZWN0LndpZHRoKCkgLyBtX2NvbnRlbnRzU2NhbGUsCisgICAgICAgIHJl
Y3QuaGVpZ2h0KCkgLyBtX2NvbnRlbnRzU2NhbGUpKTsKK30KKworSW50UmVjdCBUaWxlZEJhY2tp
bmdTdG9yZTo6bWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpICogbV9jb250ZW50
c1NjYWxlLAorICAgICAgICByZWN0LnkoKSAqIG1fY29udGVudHNTY2FsZSwKKyAgICAgICAgcmVj
dC53aWR0aCgpICogbV9jb250ZW50c1NjYWxlLAorICAgICAgICByZWN0LmhlaWdodCgpICogbV9j
b250ZW50c1NjYWxlKSk7Cit9CisKK0ludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0
Rm9yQ29vcmRpbmF0ZShjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKSBjb25zdAor
eworICAgIEludFJlY3QgcmVjdChjb29yZGluYXRlLngoKSAqIG1fdGlsZVNpemUud2lkdGgoKSwK
KyAgICAgICAgY29vcmRpbmF0ZS55KCkgKiBtX3RpbGVTaXplLmhlaWdodCgpLAorICAgICAgICBt
X3RpbGVTaXplLndpZHRoKCksCisgICAgICAgIG1fdGlsZVNpemUuaGVpZ2h0KCkpOworCisgICAg
cmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKKyAgICByZXR1cm4gcmVjdDsKK30KKworVGlsZTo6Q29v
cmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaW50IHggPSBwb2ludC54KCkgLyBtX3RpbGVT
aXplLndpZHRoKCk7CisgICAgaW50IHkgPSBwb2ludC55KCkgLyBtX3RpbGVTaXplLmhlaWdodCgp
OworICAgIHJldHVybiBUaWxlOjpDb29yZGluYXRlKHN0ZDo6bWF4KHgsIDApLCBzdGQ6Om1heCh5
LCAwKSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFN1cHBvcnRzQWxwaGEoYm9v
bCBhKQoreworICAgIGlmIChhID09IG1fc3VwcG9ydHNBbHBoYSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fc3VwcG9ydHNBbHBoYSA9IGE7CisgICAgaW52YWxpZGF0ZShtX3JlY3QpOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZWNmMTEzMTllMWU2OGU5MWQwOWEwNmIyMzhkNTc5NjMyYmFhY2Y1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZWRCYWNr
aW5nU3RvcmVfaAorI2RlZmluZSBUaWxlZEJhY2tpbmdTdG9yZV9oCisKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50
UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiVGlsZS5oIgorI2luY2x1
ZGUgIlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKK2NsYXNzIFRpbGVkQmFja2luZ1N0
b3JlQ2xpZW50OworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVGlsZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCosIHN0
ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+KTsKKyAgICB+VGlsZWRCYWNr
aW5nU3RvcmUoKTsKKworICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZs
b2F0UG9pbnQmKTsKKyAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKworICAgIGZs
b2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KKyAgICB2b2lk
IHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworCisgICAgdm9pZCB1cGRhdGVUaWxlQnVmZmVycygp
OworCisgICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisKKyAg
ICBJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQorICAgIHZvaWQgc2V0
VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpOworCisgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNv
bnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJ
bnRSZWN0JikgY29uc3Q7CisKKyAgICBJbnRSZWN0IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25z
dCBUaWxlOjpDb29yZGluYXRlJikgY29uc3Q7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29v
cmRpbmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgZG91YmxlIHRpbGVE
aXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYp
IGNvbnN0OworCisgICAgSW50UmVjdCBjb3ZlclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvdmVy
UmVjdDsgfQorICAgIGJvb2wgdmlzaWJsZUFyZWFJc0NvdmVyZWQoKSBjb25zdDsKKyAgICB2b2lk
IHJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpOworCisgICAgdm9pZCBzZXRTdXBwb3J0c0FscGhh
KGJvb2wpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlVGlsZXMoKTsKKyAgICB2b2lkIGNv
bXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRSZWN0
JiBjb3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25zdDsKKworICAgIGJvb2wgcmVzaXpl
RWRnZVRpbGVzKCk7CisgICAgdm9pZCBzZXRDb3ZlclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
eyBtX2NvdmVyUmVjdCA9IHJlY3Q7IH0KKyAgICB2b2lkIHNldEtlZXBSZWN0KGNvbnN0IEludFJl
Y3QmKTsKKworICAgIFBhc3NSZWZQdHI8VGlsZT4gdGlsZUF0KGNvbnN0IFRpbGU6OkNvb3JkaW5h
dGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYsIFBh
c3NSZWZQdHI8VGlsZT4pOworICAgIHZvaWQgcmVtb3ZlVGlsZShjb25zdCBUaWxlOjpDb29yZGlu
YXRlJik7CisKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Q7CisKKyAgICBmbG9hdCBj
b3ZlcmFnZVJhdGlvKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIGFkanVzdEZvckNv
bnRlbnRzUmVjdChJbnRSZWN0JikgY29uc3Q7CisKKyAgICB2b2lkIHBhaW50Q2hlY2tlclBhdHRl
cm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRpbGU6OkNvb3JkaW5h
dGUmKTsKKworcHJpdmF0ZToKKyAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogbV9jbGllbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZD4gbV9iYWNrZW5k
OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFRpbGU6OkNvb3JkaW5hdGUsIFJlZlB0cjxUaWxlPiA+
IFRpbGVNYXA7CisgICAgVGlsZU1hcCBtX3RpbGVzOworCisgICAgSW50U2l6ZSBtX3RpbGVTaXpl
OworICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsKKworICAgIEZsb2F0UG9pbnQgbV90
cmFqZWN0b3J5VmVjdG9yOworICAgIEZsb2F0UG9pbnQgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rv
cjsKKyAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CisKKyAgICBJbnRSZWN0IG1fY292ZXJSZWN0
OworICAgIEludFJlY3QgbV9rZWVwUmVjdDsKKyAgICBJbnRSZWN0IG1fcmVjdDsKKworICAgIGZs
b2F0IG1fY29udGVudHNTY2FsZTsKKworICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOworICAgIGJv
b2wgbV9wZW5kaW5nVGlsZUNyZWF0aW9uOworCisgICAgZnJpZW5kIGNsYXNzIFRpbGU7Cit9Owor
Cit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk0YmY3MWJmOGNmMTU2ODUyYWYw
NTI2OTAxNjQ0YWQ3ZWQ4NTMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUJhY2tl
bmQuaApAQCAtMCwwICsxLDQzIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmRfaAorI2RlZmluZSBUaWxlZEJh
Y2tpbmdTdG9yZUJhY2tlbmRfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisj
aW5jbHVkZSAiVGlsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbGVkQmFj
a2luZ1N0b3JlOworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgflRpbGVkQmFja2luZ1N0
b3JlQmFja2VuZCgpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaWxlPiBjcmVhdGVUaWxl
KFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDlmMDg0OTIzNjc1OGJiNzM1OTFjZDIyODk3ODA1YjJjMDc5ZGM1MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
IAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
CisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50X2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnRfaAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKK2NsYXNzIENvbG9yOwor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRF
bmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KKyAgICB2
aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7CisgICAg
dmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7CisgICAg
dmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0g
MDsKK307CisKKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAxOWJiNGE4OGNjOWRlOWNm
YWQ4ZTNiNTU2YmYzNWFkYWFlN2U1MmYyLi5iMGQ4Yzg4ZDMzNTNkZWI0OGEzNjkzMmE0NWY2ZjY4
OGEwODBlNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaApAQCAtMTM0LDEwICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgLy8gdG8g
ZG8gYW4gZWFnZXIgbGF5b3V0IGJlZm9yZSB0aGUgZHJhd2luZy4KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSB7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFw
dGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmlu
ZGV4IDljNzFmOTE4ZGU0ZjMxZWExZWZiOGRjNTc1YTM2OGRhMjRlOTAzMmYuLmNhNTFiZDNhZTMx
OGJkMDJkYTNkNDI2Y2YyYzk5NzM4OGQ5MThmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlKGNvbnN0IENvb3JkaW4KICAgICB9KTsKIAogICAgIHVwZGF0ZVZpZXdwb3J0KCk7Ci0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLmRpZFJlbmRlckZyYW1lKGdyYXBoaWNz
U3RhdGUuY29udGVudHNTaXplLCBncmFwaGljc1N0YXRlLmNvdmVyZWRSZWN0KTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE3YTFjZTdlZjgwYmQzNDUwMTg2OGQ2YWY5
ZDkyNGZlYmZlYTE1MmIuLjkwMTdlMjk2OGVmNThkZTU5ZDRkNGE4YjU0ZGMxZTRhMzAxYzU5MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiBzY3JvbGxSZQogICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2Nyb2xsKGludGVyc2Vj
dGlvbihzY3JvbGxSZWN0LCBjbGlwUmVjdCksIHNjcm9sbERlbHRhKTsKIH0KIAotI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQm
IHNjcm9sbE9mZnNldCkKIHsKICAgICBtX3BhZ2UtPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHNjcm9s
bE9mZnNldCk7CkBAIC05NjIsNyArOTYyLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3Bh
dGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnQKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgbV9wYWdlLT52aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uo
dmlld3BvcnRBcmd1bWVudHMpOwogI2VuZGlmCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9wYWdlLT51c2VGaXhl
ZExheW91dCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDFl
NTk2Y2I5ZjQxZTE2ZDQyNzFkZjBhYmFmMTU2MDJlM2JjYTI5YmEuLjA5MThiOTY0MzA0MzgxMTRl
YjRiYWE0MGQ0YTgxNjI4MTI2YTRiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTEyLDcg
KzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOwotI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDlhNDc0ZTAz
ZmY3ZmNkYmY1MWUzNmYwMDNmZTMxMjFiOWU2NmJhNDkuLjY0MjM4YmY2ODRlZWM3YWFhNTI3YzY2
YjE1NGY4MGYwMjliMDc1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRM
YXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogICAgICAgICB9CiAjZW5kaWYKIAot
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICAgICAgLy8gTWFrZSBzdXJlIHZpZXdwb3J0IHByb3BlcnRpZXMgYXJlIGRpc3BhdGNo
ZWQgb24gdGhlIG1haW4gZnJhbWUgYnkgdGhlIHRpbWUgdGhlIGZpcnN0IGxheW91dCBoYXBwZW5z
LgogICAgICAgICBBU1NFUlQoIXdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkgfHwgbV9mcmFtZSAh
PSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJGcmFtZSgpIHx8IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLT5kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoKSk7CiAj
ZW5kaWYKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9s
bGJhcnMgPSBzaG91bGREaXNhYmxlU2Nyb2xsaW5nOwogICAgIEludFJlY3QgZml4ZWRWaXNpYmxl
Q29udGVudFJlY3Q7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkp
CiAgICAgICAgIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKICAgICBpZiAoc2hvdWxkVXNlRml4
ZWRMYXlvdXQpCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBpZiAod2ViUGFnZS0+c2Ny
b2xsUGlubmluZ0JlaGF2aW9yKCkgIT0gRG9Ob3RQaW4pCiAgICAgICAgIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT52aWV3KCktPnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih3ZWJQYWdlLT5zY3JvbGxQ
aW5uaW5nQmVoYXZpb3IoKSk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKHNob3VsZFVzZUZpeGVkTGF5b3V0KSB7
CiAgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnNldERlbGVnYXRlc1Njcm9s
bGluZyhzaG91bGRVc2VGaXhlZExheW91dCk7CiAgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT52aWV3KCktPnNldFBhaW50c0VudGlyZUNvbnRlbnRzKHNob3VsZFVzZUZpeGVkTGF5b3V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
NWViYTA0NGJjZWU2ODhhNWM1YmY0YmQ4NWZhM2IyMmRhZDI2OTdjLi5lNDcyZmZjZTQ0ZWM1ODY4
YWM2OGM4OTAxZWQ5M2U5YTczYjQ1ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMjEwLDEzICsxMjEwLDEzIEBAIHZvaWQgV2ViUGFn
ZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSkKICAgICAKICAgICBt
X3ZpZXdTaXplID0gdmlld1NpemU7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKHZpZXctPnVzZUZpeGVkTGF5b3V0
KCkpCiAgICAgICAgIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCk7CiAjZW5kaWYKIH0K
IAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKIHZvaWQgV2ViUGFnZTo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7CkBAIC0xNDkxLDcg
KzE0OTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZChmaXhl
ZCk7CiAjZW5kaWYKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQogICAgIC8vIERlbGVnYXRlZCBzY3JvbGxpbmcgd2lsbCBiZSBlbmFi
bGVkIHdoZW4gdGhlIEZyYW1lVmlldyBpcyBjcmVhdGVkIGlmIGZpeGVkIGxheW91dCBpcyBlbmFi
bGVkLgogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBkbyBhbmltYXRlZCBzY3JvbGxpbmcgaW4gdGhl
IFdlYlByb2Nlc3MgaW4gdGhhdCBjYXNlLgogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3Jv
bGxBbmltYXRvckVuYWJsZWQoIWZpeGVkKTsKQEAgLTE1MDEsNyArMTUwMSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybjsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICAgICB2aWV3LT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcoZml4ZWQp
OwogICAgIHZpZXctPnNldFBhaW50c0VudGlyZUNvbnRlbnRzKGZpeGVkKTsKICNlbmRpZgpAQCAt
MTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRTY3JvbGwoKSk7CiB9CiAKLSNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lk
IFdlYlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsK
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQpAQCAtMjI5Miw3ICsy
MjkyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCgpCiAKIGlu
bGluZSBib29sIFdlYlBhZ2U6OmNhbkhhbmRsZVVzZXJFdmVudHMoKSBjb25zdAogewotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICAvLyBTaG91bGQgYXBwbHkgb25seSBpZiB0aGUgYXJlYSB3YXMgZnJvemVuIGJ5IGRpZFN0YXJ0
UGFnZVRyYW5zaXRpb24oKS4KICAgICByZXR1cm4gIW1fZHJhd2luZ0FyZWEtPmxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggMDVhNGM2NzNkM2EzNWNkYjcxMjE2MWNkN2MyZTNmMDM1MmNkYzUw
Mi4uYzMxNTZkNWZiNGU0MTYyNWJmZDE1MTE0MmU2NzQ1NTI0ODQ1YTI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01NTAsNyArNTUwLDcgQEAg
cHVibGljOgogICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogbm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CiAKICAgICB2b2lkIHBhZ2VEaWRTY3Jv
bGwoKTsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgc2VuZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggZTY1YTAzMjE4MWQ3ODU0YzY3NGI3ZWRkMDgzMjI0
MzM0ZGIzMjczZC4uMDYyYzllODkyMGNkYjE3NDZiM2IwZWI5NGE4OWNlZGU0MDNlYmEwMSAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2UKQEAgLTIzMCw3ICsyMzAsNiBAQCBlbmRpZiAoKQogYWRkX2RlZmlu
aXRpb25zKC1EV1RGX1VTRV9DT09SRElOQVRFRF9HUkFQSElDUz0xKQogYWRkX2RlZmluaXRpb25z
KC1EV1RGX1VTRV9DT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1M9MSkKIGFkZF9kZWZp
bml0aW9ucygtRFdURl9VU0VfVEVYVFVSRV9NQVBQRVI9MSkKLWFkZF9kZWZpbml0aW9ucygtRFdU
Rl9VU0VfVElMRURfQkFDS0lOR19TVE9SRT0xKQogCiBzZXQoRU5BQkxFX0dSQVBISUNTX0NPTlRF
WFRfM0QgMSkKIGFkZF9kZWZpbml0aW9ucygtREVOQUJMRV9HUkFQSElDU19DT05URVhUXzNEPTEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGJiZjVjMDcwM2JmMDNkMjUyM2FjYTIyY2QyYjRjMTcw
NjAyNjM4YTcuLmRhM2NiMjcxNWY1NTExNGI0NTBhMTZiZjcyZjRmOTlmMTU5YTkyZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCkBAIC0zMjYsNyArMzI2LDYgQEAgaWYgKEVOQUJMRV9PUEVOR0wpCiAg
ICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9VU0VfR0xYIFRSVUUpCiAgICAgZW5k
aWYgKCkKIAotICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9VU0VfVElMRURfQkFDS0lO
R19TVE9SRSAke0VOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SfSkKICAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChXVEZfVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTICR7RU5BQkxFX1RIUkVBREVE
X0NPTVBPU0lUT1J9KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9VU0VfQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQgJHtFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUn0pCiBl
bmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDcxNTQzZjFlYzA0ZjU4YzAzYjBjNmJjN2M4MTA5MTNkYWNkYTliOWQuLmVmZWI1NTFiYTUw
MDBmMmUyNDA1YjZiYjgwOWRlOGUzMmQ1NDYzMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNC0yOCAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbQ29vcmRpbmF0
ZWRHcmFwaGljc10gTWVyZ2UgVElMRURfQkFDS0lOR19TVE9SRSBndWFyZCB3aXRoIENPT1JESU5B
VEVEX0dSQVBISUNTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDMwMDEKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
c2hvdWxkVXNlRml4ZWRMYXlvdXQpOgorCiAyMDE1LTA0LTI4ICBEZXdlaSBaaHUgIDxkZXdlaV96
aHVAYXBwbGUuY29tPgogCiAgICAgICAgIEluY3JlYXNlIHN0YWJsaWxpdHkgb2YgcnVuLWJlbmNo
bWFyayBzY3JpcHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggMzQyNzUxYWNiYjA4YzAzNjhlZWE4NWVlMzQxZDI5YWM4Y2I5ZWFhMy4uNTM0NDJhZGRkZjA5
MjllNDhjMjQ3ODk4NTI1NTMwZDFkY2Y2YzI5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRV
c2VGaXhlZExheW91dChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBQTEFURk9S
TShFRkwpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBQTEFURk9STShFRkwpCiAg
ICAgaWYgKHRlc3QudXJsQ29udGFpbnMoInN0aWNreS8iKSB8fCB0ZXN0LnVybENvbnRhaW5zKCJz
dGlja3lcXCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGU1NDEwOTgzYzlkYTEwMjRmZmFkNjkwNmVjMjRhODU0
NGM0YzkyMzQuLmQzYzRlNTE5MjFlYzU4OWMzZGRkM2Y3YTgwMWQ2ZTAxZjhhMzU2NGUgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0w
NC0yOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBb
Q29vcmRpbmF0ZWRHcmFwaGljc10gTWVyZ2UgVElMRURfQkFDS0lOR19TVE9SRSBndWFyZCB3aXRo
IENPT1JESU5BVEVEX0dSQVBISUNTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDMwMDEKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
CisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZTogUmVtb3ZlZCBUSUxF
RF9CQUNLSU5HX1NUT1JFIGRlZmluaXRpb24uCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2U6IERpdHRvLgorCiAyMDE1LTA0LTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdHlwbyBpbiBw
cmV2aW91cyBjb21taXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251924</attachid>
            <date>2015-04-28 21:52:11 -0700</date>
            <delta_ts>2015-04-28 22:07:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-143001-20150429135053.patch</filename>
            <type>text/plain</type>
            <size>91213</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlmZTQ4YWJiMWZlZmM2
Y2U1ZmQyN2ZjM2JmYWY1ZjZlN2Q4ZDYwNC4uMDU0MTBhMTUxMTNjZGI3ZGQ2MGY1MGZkZjMzOWE0
OGMzNzJjN2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTA0LTI4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRl
ZEdyYXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFU
RURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAg
ICBUaWxlZEJhY2tpbmdTdG9yZSBoYXMgb25seSBiZWVuIHVzZWQgYnkgQ29vcmRpbmF0ZWQgR3Jh
cGhpY3Mgc2luY2UgUXQgYW5kIFdlYktpdDEvRWZsIHdlcmUgZHJvcHBlZC4KKyAgICAgICAgU28s
IHRoaXMgcGF0Y2ggcmVwbGFjZXMgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpIHdpdGggVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKSB0byBtZXJnZSB0aGUgZmVhdHVyZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHRoaXMgbW92ZXMgVGlsZWRCYWNraW5nU3RvcmUgYW5kIHJlbGF0ZWQgZmlsZXMg
ZnJvbSBwbGF0Zm9ybSB0byBwbGF0Zm9ybS90ZXhtYXAvY29vcmRpbmF0ZWQKKyAgICAgICAgd2hl
cmUgb3RoZXIgY29vcmRpbmF0ZWQgZ3JhcGhpY3MgZmlsZXMgYXJlIGxvY2F0ZWQuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogTW92ZSBUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYmVjYXVzZSB0
aGlzIGlzIG5vdCBjb21tb24gZmlsZS4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOiBGb2xsb3cgbmV3IGxvY2F0aW9uIG9mIFRpbGVkQmFja2luZ1N0b3JlKiBm
aWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6Y3JlYXRlVmlldyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0v
SG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemVJbmNsdWRp
bmdPYnNjdXJlZEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dW5zY2FsZWRV
bm9ic2N1cmVkVmlzaWJsZUNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGlsZUNhaXJvLmg6IFJlbW92ZWQgYmVjYXVz
ZSBpdCBpcyBkZWFkIGNvZGUgc2luY2UgcjE2OTMyOAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5n
U3RvcmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmguCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oLgorCiAyMDE1LTA0LTI4ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMTgwMDc2KTog
W01hYywgaU9TXSBDb3JyZWN0IHBvc3NpYmxlIG51bGwgZGVyZWZlcmVuY2UgaW4gcHJpbnRpbmcg
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGUxMTZmOThiYmYxZDIxMjk4YzhlYWJmYzA3ZGJkZWUy
OTIyMDVlNDIuLjBlZWYzOWE4ZTBlZmY5NDI1YmYyOTVlM2ViOGNkOWY2ZmUxZjgwYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNC0yOCAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10g
TWVyZ2UgVElMRURfQkFDS0lOR19TVE9SRSBndWFyZCB3aXRoIENPT1JESU5BVEVEX0dSQVBISUNT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwMDEK
KworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZGVs
ZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIFdJTiBkb2Vz
IG5vdCB1c2UgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKIDIwMTUtMDQtMjggIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY29tbW9uIHR5cG8gInRh
cmdldHRpbmciID0+ICJ0YXJnZXRpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjdmZTM4YTNhZTcwMjBhOWVj
MTNlYTQyMmJhZTFkM2U0NDE5MzhjNy4uMjRlMjgzYWRkYzMyZGM0MWRkMGNlZjQ1MThjNmQ2YmQz
ZmM4MGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA0LTI4ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtDb29yZGluYXRlZEdy
YXBoaWNzXSBNZXJnZSBUSUxFRF9CQUNLSU5HX1NUT1JFIGd1YXJkIHdpdGggQ09PUkRJTkFURURf
R1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5IYW5kbGVVc2VyRXZlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorCiAyMDE1LTA0LTI4ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBbVGV4dEluZGljYXRvcl0gWWVsbG93IGhpZ2hsaWdodCB0YWtl
cyB0b28gbG9uZyB0byBmYWRlIG91dCBvbiBzY3JvbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
N2M4NDg1YzUwZDUwNGZlODY4YWI5MDM2MjUwMDgwOGU5YzNiMzY2YS4uMzk1MjY3NGI3YTEzN2Zi
MWI2MTJiMjc2NTliNmJkZjcyOTM1MmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxNTcs
NyArMjE1Nyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
dHJpbmdUcnVuY2F0b3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3
YXJlVGV4dEl0ZXJhdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9h
cm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggY2Y3ZDcxODNjNmNlY2NmMWIyYTg5NzY1MzQyNjYzZmFlM2VlMzViOC4uMGI5MTQ5OTkxOTJl
NTUzYTJhMjI1ZWQ1MGViYjIyMGM5ZDU4MDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTE5Miw2ICsxOTIsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
U3VyZmFjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRUaWxlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCiAKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGE2OTJmOWIxZmNm
ZDFhNGY0Njg0YTljY2M2Yzk5ZmZlZjgwNzRhNWQuLmYzMDZhOWIzNDEwMGIzNTZmOWRkYjc0ZGM2
ZTYzZGQyNWYxNWVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zOTgsMTMgKzM5
OCwxMyBAQCBpZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCiAgICAgICAgIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0FyZWFB
bGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZFN1cmZhY2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAogICAgICkKIGVuZGlm
ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpp
bmRleCBhZjRkMjBkNGM1NjIyOWYzZDQ2ZWFmOTkxMDNkOTUzMTFkNmMwNDU3Li5mYjdlNTQzMDIw
NmNlNThmY2UyYTdjNWRkMjA4OWFmNTA2NjI0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTc4MzgsNyArNzgzOCw3IEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
VGlsZWRCYWNraW5nU3RvcmUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxHcmFw
aGljc0NvbnRleHQzRFdpbi5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5ODc3LDkgKzE5ODc3LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxUZXh0
dXJlTWFwcGVyVGlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcdGV4bWFwXFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVGlsZWRCYWNraW5nLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJh
Y2tpbmdTdG9yZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3Jk
aW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVC
YWNrZW5kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRyYWNrQmFzZVByaXZhdGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVv
VHJhY2tQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggOTZiZGE0ZGFjZDc2OTk1ODUyMDRjNjNkNjQwNTBmOWFhMTg2ZmQwMS4uZjUx
YTk2NDMzMjhiOGVhZWU3YmFlMjMwMDIyMzlmMmE3M2Y5NjNmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
Njc2Niw4ICs2NzY2LDggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZv
cm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVkQmFja2luZ1N0b3JlLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWRcVGlsZWRCYWNraW5n
U3RvcmUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3Jk
aW5hdGVkPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXHNjcm9sbGluZ1xTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHAiPgogICAgICAg
PEZpbHRlcj5wYWdlXHNjcm9sbGluZzwvRmlsdGVyPgpAQCAtMTQxODAsMTQgKzE0MTgwLDE0IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tp
bmcuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xU
aWxlZEJhY2tpbmdTdG9yZS5oIj4KLSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1h
cFxjb29yZGluYXRlZFxUaWxlZEJhY2tpbmdTdG9yZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZv
cm1cZ3JhcGhpY3NcdGV4bWFwXGNvb3JkaW5hdGVkPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUaWxlZEJhY2tp
bmdTdG9yZUJhY2tlbmQuaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0
ZXI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBc
Y29vcmRpbmF0ZWRcVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWQ8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRpbGVk
QmFja2luZ1N0b3JlQ2xpZW50LmgiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4
bWFwXGNvb3JkaW5hdGVkXFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiPgorICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcY29vcmRpbmF0ZWQ8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2Vcc2Nyb2xsaW5nXFNjcm9s
bGluZ1N0YXRlRml4ZWROb2RlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlXHNjcm9sbGluZzwvRmls
dGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDFkZmUyYTI4Mjk1Njll
Njg4OWNhOTZmZTE3Y2MwODA1MzhmYzA0MmQuLjg3ZDE0YTdmMTcwNjAwY2ZhZDlkZmEyZjJmMzcy
Y2Y4ZTNmZGEwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEzMiw3
ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0Fu
ZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZSB7IH0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRl
bGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2ludCYpIHsgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX1RJTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDEzZTZkMDUwMmI5MTM1Zjkw
OWNkN2YwMGJhYzFmZmNlMDIzNDNiYTEuLmJlMjg1ZmQxZmViNjk0NzJlOWY3MjU4MjNmMjQzNWM0
ZTU5Y2U5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBD
aHJvbWU6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYg
cmVjdFRvU2Nyb2xsLCBjb24KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9s
bChtX3BhZ2UpOwogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBDaHJvbWU6OmRlbGVnYXRlZFNjcm9sbFJlcXVlc3Rl
ZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgbV9jbGllbnQuZGVsZWdhdGVk
U2Nyb2xsUmVxdWVzdGVkKHNjcm9sbFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDk4YWI3
NDVlNmU3MjM2MDEzMDA2ZTk2YjBlM2M0Y2E3MDhlODNjMjguLmIxNTcyNjIwZTM1MzM3MTI3ZDAz
YWQzYTA3YzllMDA0Mzc0ZmJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNzQsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNv
bnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVl
c3RlZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAg
dmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA1MzY5NTlmMDcyZGFl
ZGE1ZmMyYzM0OGYxYTljOTQ0ZmRkYjljMzg3Li41Mjg0ZGQ0NjkxMzBkNzlkYThlN2U5ZDQyOTlj
NjE0MWFlNmM4ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE2Miw3ICsx
NjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJv
b3RWaWV3KGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVD
b250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYp
ID0gMDsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25z
dCBJbnRQb2ludCYpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9S
b290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKQEAgLTM0NCw3ICszNDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoR3JhcGhpY3NM
YXllciopIHsgfQogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVSZWN0
Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDQyMTljZjdhNjliODM2NmZmY2ZkZjMwOWRlYzBm
MzIwMzJhODRmMDcuLmU1OTFjZjQzOTZkNDJmZDlkNzQwZDU2NGJkNzAyNmQ1NDYzNmJkOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBGcmFtZTo6Y3JlYXRl
Vmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IKICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgZnJhbWVWaWV3ID0gRnJhbWVW
aWV3OjpjcmVhdGUoKnRoaXMsIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgIGZyYW1lVmlldy0+c2V0
Rml4ZWRMYXlvdXRTaXplKGZpeGVkTGF5b3V0U2l6ZSk7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBmcmFtZVZpZXct
PnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KTsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShmaXhlZFZpc2libGVDb250ZW50UmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOGU0MmE2MGFjM2YwNzRlNDY5ZWZhNzdjZDZhYjEy
OGFlY2YxZjEzMi4uMWIxYTlhNTJkNGU2ZjI3YTcxYzczMjI0NjU3NTQ4Mjg3NWJmZTdjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtOTIsNyArOTIsNyBAQAogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKLSNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVk
ZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNlbmRpZgogCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCB2
b2lkIEZyYW1lVmlldzo6ZGVsZWdhdGVzU2Nyb2xsaW5nRGlkQ2hhbmdlKCkKICAgICAgICAgY2xl
YXJCYWNraW5nU3RvcmVzKCk7CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIEZyYW1lVmlldzo6c2V0Rml4ZWRWaXNp
YmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KQogewogICAg
IGJvb2wgdmlzaWJsZUNvbnRlbnRTaXplRGlkQ2hhbmdlID0gZmFsc2U7CkBAIC0yMjM3LDcgKzIy
MzcsNyBAQCBib29sIEZyYW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbikKICAgICAgICAgdGlsZWRCYWNraW5nLT5wcmVwb3B1bGF0ZVJl
Y3QoRmxvYXRSZWN0KHBvc2l0aW9uLCB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpKTsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSgqdGhpcywgcG9zaXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMDZhNzIyOTBhNzhmNDk4ZDZmY2JjNDVkMGEzMWYxZTNl
NjVmN2JjMi4uOWM4OTIyMDA0Y2ZlMzk0MWM0NjE3ZDc4MjMyNzQ4ZDQ5MzJkMTQ0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggNWYwYjgxMzZhNGIzMzFlNjNiZmE3ZDY1ZTBkMmUyN2ViNTM3M2MxZi4uZDY5
OWVhYWFjOGYwNzIyMjA0YTA5YjdjMDlkOTBmYjlkZTcwMjc0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQg
c2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4sIGJvb2wgaW5TdGFibGUKIAogICAgICAgICAg
ICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKICAgICAgICAgICAgICAgICB2aWV3
LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB2aWV3LT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUob3JpZ2luKTsKICNl
bmRpZgpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZs
b2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBib29sIGluU3RhYmxlCiAKICAgICAg
ICAgaWYgKCF2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKICAgICAgICAgICAgIHZpZXctPnNl
dFNjcm9sbFBvc2l0aW9uKG9yaWdpbik7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2
aWV3LT5yZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUob3JpZ2luKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDM4MGExNWM0NWNiYmI5NWU1NzgxZWExNGVh
NjA2ZTQ2NjRhZjI1M2EuLjA4MjkyOGI0YmIwMjViZTU2OTQyMGU2M2ZjYzFhMzc5NjVjZGVmNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogICAgIC8vIFJlcXVlc3RzIHRoZSBob3N0IGludmFsaWRhdGUgdGhlIGNvbnRlbnRzLCBu
b3QgdGhlIHJvb3Qgdmlldy4gVGhpcyBpcyB0aGUgc2xvdyBwYXRoIGZvciBzY3JvbGxpbmcuCiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50
UmVjdCYgdXBkYXRlUmVjdCkgPSAwOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIC8vIFJlcXVlc3RzIHRoZSBob3N0IHRv
IGRvIHRoZSBhY3R1YWwgc2Nyb2xsaW5nLiBUaGlzIGlzIG9ubHkgdXNlZCBpbiBjb21iaW5hdGlv
biB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZS4KICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVk
U2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgPSAwOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGNkMGUxM2I5YTJhMGIw
YjQxOGUwMjVkZDhmMDcwMWYyNmMxNTExYzIuLjY3ZWE3ZDI2NjY1ZWJiMzUyODdjMWI5YjY3OTAz
YTIyN2JhOGNiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0y
NzEsNyArMjcxLDcgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50
U2l6ZUluY2x1ZGluZ09ic2N1cmVkQXJlYShWaXNpYmxlQ29udGUKICAgICBpZiAocGxhdGZvcm1X
aWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRTaXplSW5jbHVk
aW5nT2JzY3VyZWRBcmVhKHNjcm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7
CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Quc2l6ZSgpOwogI2VuZGlmCkBA
IC0yOTYsNyArMjk2LDcgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFVub2JzY3VyZWRW
aXNpYmxlQ29udGVudFNpemUoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHUKICAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRTaXplKHNj
cm9sbGJhckluY2x1c2lvbiA9PSBJbmNsdWRlU2Nyb2xsYmFycyk7CiAKLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFt
X2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHZpc2li
bGVDb250ZW50U2l6ZTsKICNlbmRpZgpAQCAtMzIyLDcgKzMyMiw3IEBAIEludFJlY3QgU2Nyb2xs
Vmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
ZXNTY3JvbGxiCiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBwbGF0
Zm9ybVZpc2libGVDb250ZW50UmVjdChzY3JvbGxiYXJJbmNsdXNpb24gPT0gSW5jbHVkZVNjcm9s
bGJhcnMpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OwogI2VuZGlmCkBA
IC01MDMsNyArNTAzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxUbyhjb25zdCBJbnRTaXpl
JiBuZXdPZmZzZXQpCiAgICAgaWYgKHNjcm9sbGJhcnNTdXBwcmVzc2VkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkpIHsKICAgICAgICAgcmVx
dWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEludFBvaW50KG5ld09mZnNldCkpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggMjhlODY3NjM1ZmZl
MzhlNDRhNWE5ZDE3MTMyODY5NGE3Y2FmYmNmYS4uZmNmZTM3MzRkMWM4NDZlZjQ4MjhiMTE2ODM3
ZmZmZGI5ZmRkMDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMTcy
LDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGljaCB1c3VhbGx5IHdpbGwgaGFwcGVuIHdo
ZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9yIHdoZW4gc2NhbGUgb3Ig
cG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCiAgICAgdmlydHVhbCBJbnRTaXplIHZpc2li
bGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KExlZ2Fj
eUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLnNpemUoKTsgfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVu
dFJlY3QpIHsgbV9maXhlZFZpc2libGVDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsg
fQogICAgIEludFJlY3QgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwZGJhY2Ni
ZWVlMDZjYmZiOTE1MzAwNmRhOThmY2M1OThlMmNjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAKLSBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUaWxlX2gKLSNkZWZpbmUgVGlsZV9oCi0K
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLQotI2luY2x1ZGUgIkludFBvaW50LmgiCi0j
aW5jbHVkZSAiSW50UG9pbnRIYXNoLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLQotY2xhc3MgVGlsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRpbGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludFBvaW50IENvb3Jk
aW5hdGU7Ci0KLSAgICB2aXJ0dWFsIH5UaWxlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNE
aXJ0eSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRS
ZWN0JikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKLX07Ci0KLX0KLSNlbmRp
ZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNDI2
Yzc4MTgyMWY1ZTI5MGZiMjg4YTljZjljZGEwNDNmMjM4YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcyICswLDAgQEAK
LS8qCi0gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAKLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgotCi0jaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNs
dWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVEaW1lbnNpb24gPSA1MTI7Ci0KLXN0YXRpYyBJ
bnRQb2ludCBpbm5lckJvdHRvbVJpZ2h0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8g
QWN0dWFsbHksIHRoZSByZWN0IGRvZXMgbm90IGNvbnRhaW4gcmVjdC5tYXhYKCkuIFJlZmVyIHRv
IEludFJlY3Q6OmNvbnRhaW4uCi0gICAgcmV0dXJuIEludFBvaW50KHJlY3QubWF4WCgpIC0gMSwg
cmVjdC5tYXhZKCkgLSAxKTsKLX0KLQotVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0
b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIHN0ZDo6dW5pcXVlX3B0cjxUaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IGJhY2tlbmQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0g
ICAgLCBtX2JhY2tlbmQoV1RGOjptb3ZlKGJhY2tlbmQpKQotICAgICwgbV90aWxlU2l6ZShkZWZh
dWx0VGlsZURpbWVuc2lvbiwgZGVmYXVsdFRpbGVEaW1lbnNpb24pCi0gICAgLCBtX2NvdmVyQXJl
YU11bHRpcGxpZXIoMi4wZikKLSAgICAsIG1fY29udGVudHNTY2FsZSgxLmYpCi0gICAgLCBtX3N1
cHBvcnRzQWxwaGEoZmFsc2UpCi0gICAgLCBtX3BlbmRpbmdUaWxlQ3JlYXRpb24oZmFsc2UpCi17
Ci19Ci0KLVRpbGVkQmFja2luZ1N0b3JlOjp+VGlsZWRCYWNraW5nU3RvcmUoKQotewotfQotCi12
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQot
ewotICAgIG1fdGlsZVNpemUgPSBzaXplOwotICAgIG1fdGlsZXMuY2xlYXIoKTsKLX0KLQotdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50
JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgPSB0
cmFqZWN0b3J5VmVjdG9yOwotICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3Iubm9ybWFsaXpl
KCk7Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQo
KQotewotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwotICAg
IEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3Rv
cmVDb250ZW50c1JlY3QoKSk7Ci0KLSAgICBib29sIGRpZENoYW5nZSA9IG1fdHJhamVjdG9yeVZl
Y3RvciAhPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yIHx8IG1fdmlzaWJsZVJlY3QgIT0gdmlz
aWJsZVJlY3QgfHwgbV9yZWN0ICE9IHJlY3Q7Ci0gICAgaWYgKGRpZENoYW5nZSB8fCBtX3BlbmRp
bmdUaWxlQ3JlYXRpb24pCi0gICAgICAgIGNyZWF0ZVRpbGVzKCk7Ci19Ci0KLXZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJlY3Qp
Ci17Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QobWFwRnJvbUNvbnRlbnRzKGNvbnRlbnRzRGlydHlS
ZWN0KSk7Ci0gICAgSW50UmVjdCBrZWVwUmVjdEZpdFRvVGlsZVNpemUgPSB0aWxlUmVjdEZvckNv
b3JkaW5hdGUodGlsZUNvb3JkaW5hdGVGb3JQb2ludChtX2tlZXBSZWN0LmxvY2F0aW9uKCkpKTsK
LSAgICBrZWVwUmVjdEZpdFRvVGlsZVNpemUudW5pdGUodGlsZVJlY3RGb3JDb29yZGluYXRlKHRp
bGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21SaWdodChtX2tlZXBSZWN0KSkpKTsKLQot
ICAgIC8vIE9ubHkgaXRlcmF0ZSBvbiB0aGUgcGFydCBvZiB0aGUgcmVjdCB0aGF0IHdlIGtub3cg
d2UgbWlnaHQgaGF2ZSB0aWxlcy4KLSAgICBJbnRSZWN0IGNvdmVyZWREaXJ0eVJlY3QgPSBpbnRl
cnNlY3Rpb24oZGlydHlSZWN0LCBrZWVwUmVjdEZpdFRvVGlsZVNpemUpOwotICAgIFRpbGU6OkNv
b3JkaW5hdGUgdG9wTGVmdCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoY292ZXJlZERpcnR5UmVj
dC5sb2NhdGlvbigpKTsKLSAgICBUaWxlOjpDb29yZGluYXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNv
b3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KGNvdmVyZWREaXJ0eVJlY3QpKTsKLQot
ICAgIGZvciAoaW50IHlDb29yZGluYXRlID0gdG9wTGVmdC55KCk7IHlDb29yZGluYXRlIDw9IGJv
dHRvbVJpZ2h0LnkoKTsgKyt5Q29vcmRpbmF0ZSkgewotICAgICAgICBmb3IgKGludCB4Q29vcmRp
bmF0ZSA9IHRvcExlZnQueCgpOyB4Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC54KCk7ICsreENv
b3JkaW5hdGUpIHsKLSAgICAgICAgICAgIFJlZlB0cjxUaWxlPiBjdXJyZW50VGlsZSA9IHRpbGVB
dChUaWxlOjpDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSkpOwotICAgICAgICAg
ICAgaWYgKCFjdXJyZW50VGlsZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIC8vIFBhc3MgdGhlIGZ1bGwgcmVjdCB0byBlYWNoIHRpbGUgYXMgY292ZXJlZERpcnR5UmVj
dCBtaWdodCBub3QKLSAgICAgICAgICAgIC8vIGNvbnRhaW4gdGhlbSBjb21wbGV0ZWx5IGFuZCB3
ZSBkb24ndCB3YW50IHBhcnRpYWwgdGlsZSByZWRyYXdzLgotICAgICAgICAgICAgY3VycmVudFRp
bGUtPmludmFsaWRhdGUoZGlydHlSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQotewotICAgIG1fY2xpZW50LT50
aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKLQotICAgIFZlY3RvcjxJbnRSZWN0PiBwYWlu
dGVkQXJlYTsKLSAgICBWZWN0b3I8UmVmUHRyPFRpbGU+ID4gZGlydHlUaWxlczsKLSAgICBmb3Ig
KGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghdGlsZS0+aXNE
aXJ0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRpcnR5VGlsZXMuYXBwZW5k
KHRpbGUpOwotICAgIH0KLQotICAgIGlmIChkaXJ0eVRpbGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChwYWludGVkQXJlYSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSW4gc2luZ2xlIHRocmVhZGVkIGNh
c2UsIHRpbGUgYmFjayBidWZmZXJzIGNvdWxkIGJlIHVwZGF0ZWQgYXN5bmNocm9ub3VzbHkgCi0g
ICAgLy8gb25lIGJ5IG9uZSBhbmQgdGhlbiBzd2FwcGVkIHRvIGZyb250IGluIG9uZSBnby4gVGhp
cyB3b3VsZCBtaW5pbWl6ZSB0aGUgdGltZSBzcGVudAotICAgIC8vIGJsb2NraW5nIG9uIHRpbGUg
dXBkYXRlcy4KLSAgICB1bnNpZ25lZCBzaXplID0gZGlydHlUaWxlcy5zaXplKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikgewotICAgICAgICBWZWN0b3I8SW50UmVj
dD4gcGFpbnRlZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+dXBkYXRlQmFja0J1ZmZlcigpOwotICAg
ICAgICBwYWludGVkQXJlYS5hcHBlbmRWZWN0b3IocGFpbnRlZFJlY3RzKTsKLSAgICAgICAgZGly
dHlUaWxlc1tuXS0+c3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7Ci0gICAgfQotCi0gICAgbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQocGFpbnRlZEFyZWEpOwotfQotCi1JbnRSZWN0
IFRpbGVkQmFja2luZ1N0b3JlOjp2aXNpYmxlUmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1h
cEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpKTsK
LX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2Fs
ZSkKLXsKLSAgICBpZiAoc2NhbGUgPT0gbV9jb250ZW50c1NjYWxlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKLSAgICBtX3RpbGVzLmNsZWFyKCk7Ci0g
ICAgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOwotfQotCi1kb3VibGUgVGlsZWRCYWNraW5nU3Rv
cmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29v
cmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNvbnN0Ci17Ci0gICAgaWYgKHZpZXdwb3J0LmludGVy
c2VjdHModGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlKSkpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgSW50UG9pbnQgdmlld0NlbnRlciA9IHZpZXdwb3J0LmxvY2F0aW9uKCkg
KyBJbnRTaXplKHZpZXdwb3J0LndpZHRoKCkgLyAyLCB2aWV3cG9ydC5oZWlnaHQoKSAvIDIpOwot
ICAgIFRpbGU6OkNvb3JkaW5hdGUgY2VudGVyQ29vcmRpbmF0ZSA9IHRpbGVDb29yZGluYXRlRm9y
UG9pbnQodmlld0NlbnRlcik7Ci0KLSAgICByZXR1cm4gc3RkOjptYXgoYWJzKGNlbnRlckNvb3Jk
aW5hdGUueSgpIC0gdGlsZUNvb3JkaW5hdGUueSgpKSwgYWJzKGNlbnRlckNvb3JkaW5hdGUueCgp
IC0gdGlsZUNvb3JkaW5hdGUueCgpKSk7Ci19Ci0KLS8vIFJldHVybnMgYSByYXRpbyBiZXR3ZWVu
IDAuMGYgYW5kIDEuMGYgb2YgdGhlIHN1cmZhY2Ugb2YgY29udGVudHNSZWN0IGNvdmVyZWQgYnkg
cmVuZGVyZWQgdGlsZXMuCi1mbG9hdCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJhZ2VSYXRpbyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50c1JlY3QpIGNvbnN0Ci17Ci0gICAgSW50UmVj
dCBkaXJ0eVJlY3QgPSBtYXBGcm9tQ29udGVudHMoY29udGVudHNSZWN0KTsKLSAgICBmbG9hdCBy
ZWN0QXJlYSA9IGRpcnR5UmVjdC53aWR0aCgpICogZGlydHlSZWN0LmhlaWdodCgpOwotICAgIGZs
b2F0IGNvdmVyQXJlYSA9IDAuMGY7Ci0KLSAgICBUaWxlOjpDb29yZGluYXRlIHRvcExlZnQgPSB0
aWxlQ29vcmRpbmF0ZUZvclBvaW50KGRpcnR5UmVjdC5sb2NhdGlvbigpKTsKLSAgICBUaWxlOjpD
b29yZGluYXRlIGJvdHRvbVJpZ2h0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRv
bVJpZ2h0KGRpcnR5UmVjdCkpOwotCi0gICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0
LnkoKTsgeUNvb3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7Ci0g
ICAgICAgIGZvciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRlIDw9
IGJvdHRvbVJpZ2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgewotICAgICAgICAgICAgVGlsZTo6Q29v
cmRpbmF0ZSBjdXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNvb3JkaW5hdGUpOwotICAg
ICAgICAgICAgUmVmUHRyPFRpbGU+IGN1cnJlbnRUaWxlID0gdGlsZUF0KGN1cnJlbnRDb29yZGlu
YXRlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50VGlsZSAmJiBjdXJyZW50VGlsZS0+aXNSZWFk
eVRvUGFpbnQoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgY292ZXJSZWN0ID0gaW50ZXJz
ZWN0aW9uKGRpcnR5UmVjdCwgY3VycmVudFRpbGUtPnJlY3QoKSk7Ci0gICAgICAgICAgICAgICAg
Y292ZXJBcmVhICs9IGNvdmVyUmVjdC53aWR0aCgpICogY292ZXJSZWN0LmhlaWdodCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBjb3ZlckFyZWEgLyByZWN0
QXJlYTsKLX0KLQotYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6dmlzaWJsZUFyZWFJc0NvdmVyZWQo
KSBjb25zdAotewotICAgIEludFJlY3QgYm91bmRlZFZpc2libGVDb250ZW50c1JlY3QgPSBpbnRl
cnNlY3Rpb24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSwgbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOwotICAgIHJldHVybiBjb3ZlcmFn
ZVJhdGlvKGJvdW5kZWRWaXNpYmxlQ29udGVudHNSZWN0KSA9PSAxLjBmOwotfQotCi12b2lkIFRp
bGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCi17Ci0gICAgLy8gVXBkYXRlIG91ciBiYWNr
aW5nIHN0b3JlIGdlb21ldHJ5LgotICAgIGNvbnN0IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9y
ZWN0OwotICAgIG1fcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5n
U3RvcmVDb250ZW50c1JlY3QoKSk7Ci0gICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5n
VHJhamVjdG9yeVZlY3RvcjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKLQot
ICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0
KCkpOwotICAgICAgICBzZXRLZWVwUmVjdChJbnRSZWN0KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLyogV2UgbXVzdCBjb21wdXRlIGNvdmVyIGFuZCBrZWVwIHJlY3RzIHVzaW5n
IHRoZSB2aXNpYmxlUmVjdCwgaW5zdGVhZCBvZiB0aGUgcmVjdCBpbnRlcnNlY3RpbmcgdGhlIHZp
c2libGVSZWN0IHdpdGggbV9yZWN0LAotICAgICAqIGJlY2F1c2UgVEJTIGNhbiBiZSB1c2VkIGFz
IGEgYmFja2luZyBzdG9yZSBvZiBHcmFwaGljc0xheWVyIGFuZCB0aGUgdmlzaWJsZSByZWN0IHVz
dWFsbHkgZG9lcyBub3QgaW50ZXJzZWN0IHdpdGggbV9yZWN0LgotICAgICAqIEluIHRoZSBiZWxv
dyBjYXNlLCB0aGUgaW50ZXJzZWN0aW5nIHJlY3QgaXMgYW4gZW1wdHkuCi0gICAgICoKLSAgICAg
KiAgKy0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgICAgICAgICAgICAgIHwKLSAgICAgKiAg
fCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgfCAgICAgICArLS0tLS0tLXwtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAgKiAgfCAgICAgICB8IEhFUkUgIHwgIGNvdmVyIG9yIGtlZXAgICAg
ICAgIHwKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICByZWN0ICAgICAgICAgICAgIHwK
LSAgICAgKiAgICAgICAgICB8ICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgIHwKLSAgICAg
KiAgICAgICAgICB8ICAgICAgICAgfCB2aXNpYmxlIHwgICAgICAgICAgIHwKLSAgICAgKiAgICAg
ICAgICB8ICAgICAgICAgfCAgcmVjdCAgIHwgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8
ICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKLSAgICAgKiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLSAgICAgKgotICAgICAqIFdlIG11c3QgY3JlYXRlIG9yIGtlZXAgdGhl
IHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KLSAgICAgKi8KLQotICAgIEludFJlY3QgY292ZXJS
ZWN0OwotICAgIEludFJlY3Qga2VlcFJlY3Q7Ci0gICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3Qo
bV92aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7Ci0KLSAgICBzZXRDb3ZlclJlY3Qo
Y292ZXJSZWN0KTsKLSAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7Ci0KLSAgICBpZiAoY292ZXJS
ZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUmVzaXplIHRpbGVzIGF0
IHRoZSBlZGdlIGluIGNhc2UgdGhlIGNvbnRlbnRzIHNpemUgaGFzIGNoYW5nZWQsIGJ1dCBvbmx5
IGRvIHNvCi0gICAgLy8gYWZ0ZXIgaGF2aW5nIGRyb3BwZWQgdGlsZXMgb3V0c2lkZSB0aGUga2Vl
cCByZWN0LgotICAgIGJvb2wgZGlkUmVzaXplVGlsZXMgPSBmYWxzZTsKLSAgICBpZiAocHJldmlv
dXNSZWN0ICE9IG1fcmVjdCkKLSAgICAgICAgZGlkUmVzaXplVGlsZXMgPSByZXNpemVFZGdlVGls
ZXMoKTsKLQotICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRpbGUgcG9zaXRpb24gY2xvc2VzdCB0byB0
aGUgdmlld3BvcnQgY2VudGVyIHRoYXQgZG9lcyBub3QgeWV0IGNvbnRhaW4gYSB0aWxlLgotICAg
IC8vIFdoaWNoIHBvc2l0aW9uIGlzIGNvbnNpZGVyZWQgdGhlIGNsb3Nlc3QgZGVwZW5kcyBvbiB0
aGUgdGlsZURpc3RhbmNlIGZ1bmN0aW9uLgotICAgIGRvdWJsZSBzaG9ydGVzdERpc3RhbmNlID0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotICAgIFZlY3RvcjxUaWxl
OjpDb29yZGluYXRlPiB0aWxlc1RvQ3JlYXRlOwotICAgIHVuc2lnbmVkIHJlcXVpcmVkVGlsZUNv
dW50ID0gMDsKLQotICAgIC8vIENvdmVyIGFyZWFzIChpbiB0aWxlcykgd2l0aCBtaW5pbXVtIGRp
c3RhbmNlIGZyb20gdGhlIHZpc2libGUgcmVjdC4gSWYgdGhlIHZpc2libGUgcmVjdCBpcwotICAg
IC8vIG5vdCBjb3ZlcmVkIGFscmVhZHkgaXQgd2lsbCBiZSBjb3ZlcmVkIGZpcnN0IGluIG9uZSBn
bywgZHVlIHRvIHRoZSBkaXN0YW5jZSBiZWluZyAwIGZvciB0aWxlcwotICAgIC8vIGluc2lkZSB0
aGUgdmlzaWJsZSByZWN0LgotICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9IHRpbGVDb29y
ZGluYXRlRm9yUG9pbnQoY292ZXJSZWN0LmxvY2F0aW9uKCkpOwotICAgIFRpbGU6OkNvb3JkaW5h
dGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQo
Y292ZXJSZWN0KSk7Ci0gICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNv
b3JkaW5hdGUgPD0gYm90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7Ci0gICAgICAgIGZv
ciAoaW50IHhDb29yZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRlIDw9IGJvdHRvbVJp
Z2h0LngoKTsgKyt4Q29vcmRpbmF0ZSkgewotICAgICAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBj
dXJyZW50Q29vcmRpbmF0ZSh4Q29vcmRpbmF0ZSwgeUNvb3JkaW5hdGUpOwotICAgICAgICAgICAg
aWYgKHRpbGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAgICAgZG91YmxlIGRp
c3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJlY3QsIGN1cnJlbnRDb29yZGluYXRlKTsK
LSAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0ZXN0RGlzdGFuY2UpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBzaG9ydGVzdERpc3Rh
bmNlKSB7Ci0gICAgICAgICAgICAgICAgdGlsZXNUb0NyZWF0ZS5jbGVhcigpOwotICAgICAgICAg
ICAgICAgIHNob3J0ZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRpbGVzVG9DcmVhdGUuYXBwZW5kKGN1cnJlbnRDb29yZGluYXRlKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIE5vdyBjb25zdHJ1Y3QgdGhlIHRpbGUocykgd2l0aGluIHRoZSBz
aG9ydGVzdCBkaXN0YW5jZS4KLSAgICB1bnNpZ25lZCB0aWxlc1RvQ3JlYXRlQ291bnQgPSB0aWxl
c1RvQ3JlYXRlLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgdGlsZXNUb0Ny
ZWF0ZUNvdW50OyArK24pIHsKLSAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjb29yZGluYXRlID0g
dGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgc2V0VGlsZShjb29yZGluYXRlLCBtX2JhY2tlbmQt
PmNyZWF0ZVRpbGUodGhpcywgY29vcmRpbmF0ZSkpOwotICAgIH0KLSAgICByZXF1aXJlZFRpbGVD
b3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7Ci0KLSAgICAvLyBQYWludCB0aGUgY29udGVudCBv
ZiB0aGUgbmV3bHkgY3JlYXRlZCB0aWxlcyBvciByZXNpemVkIHRpbGVzLgotICAgIGlmICh0aWxl
c1RvQ3JlYXRlQ291bnQgfHwgZGlkUmVzaXplVGlsZXMpCi0gICAgICAgIHVwZGF0ZVRpbGVCdWZm
ZXJzKCk7Ci0KLSAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEgdGltZXIgdG8gY292ZXIg
dGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3QgZGlzdGFuY2UuCi0gICAg
bV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVxdWlyZWRUaWxlQ291bnQ7Ci0gICAgaWYgKG1fcGVu
ZGluZ1RpbGVDcmVhdGlvbikKLSAgICAgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlSGFz
UGVuZGluZ1RpbGVDcmVhdGlvbigpOwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjphZGp1
c3RGb3JDb250ZW50c1JlY3QoSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGJv
dW5kcyA9IG1fcmVjdDsKLSAgICBJbnRTaXplIGNhbmRpZGF0ZVNpemUgPSByZWN0LnNpemUoKTsK
LQotICAgIHJlY3QuaW50ZXJzZWN0KGJvdW5kcyk7Ci0KLSAgICBpZiAocmVjdC5zaXplKCkgPT0g
Y2FuZGlkYXRlU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLyoKLSAgICAgKiBJbiB0aGUg
Zm9sbG93aW5nIGNhc2UsIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBvZiB0aGUgY29udGVudHMg
cmVjdCBhbmQgdGhlIGNvdmVyIHJlY3QuCi0gICAgICogVGh1cyB0aGUgbGF0dGVyIHNob3VsZCBu
b3QgYmUgaW5mbGF0ZWQuCi0gICAgICoKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsKLSAgICAg
KiAgfCAgIG1fcmVjdCAgICAgIHwKLSAgICAgKiAgKy0tLS0tLS0tLS0tLS0tLSsKLSAgICAgKgot
ICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAq
ICAgICAgICAgIHwgICAgICAgICAgY292ZXIgcmVjdCAgICAgICAgICAgfAotICAgICAqICAgICAg
ICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwg
ICAgICAgICB8IHZpc2libGUgfCAgICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwgICAgICAg
ICB8ICByZWN0ICAgfCAgICAgICAgICAgfAotICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0t
LS0tLS0tKyAgICAgICAgICAgfAotICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotICAgICAqLwotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVHJ5IHRvIGNyZWF0ZSBhIGNvdmVyIHJlY3Qgb2YgdGhlIHNhbWUg
c2l6ZSBhcyB0aGUgY2FuZGlkYXRlLCBidXQgd2l0aGluIGNvbnRlbnQgYm91bmRzLgotICAgIGlu
dCBwaXhlbHNDb3ZlcmVkID0gY2FuZGlkYXRlU2l6ZS53aWR0aCgpICogY2FuZGlkYXRlU2l6ZS5o
ZWlnaHQoKTsKLQotICAgIGlmIChyZWN0LndpZHRoKCkgPCBjYW5kaWRhdGVTaXplLndpZHRoKCkp
Ci0gICAgICAgIHJlY3QuaW5mbGF0ZVkoKChwaXhlbHNDb3ZlcmVkIC8gcmVjdC53aWR0aCgpKSAt
IHJlY3QuaGVpZ2h0KCkpIC8gMik7Ci0gICAgaWYgKHJlY3QuaGVpZ2h0KCkgPCBjYW5kaWRhdGVT
aXplLmhlaWdodCgpKQotICAgICAgICByZWN0LmluZmxhdGVYKCgocGl4ZWxzQ292ZXJlZCAvIHJl
Y3QuaGVpZ2h0KCkpIC0gcmVjdC53aWR0aCgpKSAvIDIpOwotCi0gICAgcmVjdC5pbnRlcnNlY3Qo
Ym91bmRzKTsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y29tcHV0ZUNvdmVyQW5kS2Vl
cFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIEludFJlY3QmIGNvdmVyUmVjdCwgSW50
UmVjdCYga2VlcFJlY3QpIGNvbnN0Ci17Ci0gICAgY292ZXJSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0g
ICAga2VlcFJlY3QgPSB2aXNpYmxlUmVjdDsKLQotICAgIC8vIElmIHdlIGNvdmVyIG1vcmUgdGhh
dCB0aGUgYWN0dWFsIHZpZXdwb3J0IHdlIGNhbiBiZSBzbWFydCBhYm91dCB3aGljaCB0aWxlcyB3
ZSBjaG9vc2UgdG8gcmVuZGVyLgotICAgIGlmIChtX2NvdmVyQXJlYU11bHRpcGxpZXIgPiAxKSB7
Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsIGNvdmVyIGFyZWEgY292ZXJzIGVxdWFsbHkgaW4gZWFj
aCBkaXJlY3Rpb24sIGFjY29yZGluZyB0byB0aGUgY292ZXJBcmVhTXVsdGlwbGllci4KLSAgICAg
ICAgY292ZXJSZWN0LmluZmxhdGVYKHZpc2libGVSZWN0LndpZHRoKCkgKiAobV9jb3ZlckFyZWFN
dWx0aXBsaWVyIC0gMSkgLyAyKTsKLSAgICAgICAgY292ZXJSZWN0LmluZmxhdGVZKHZpc2libGVS
ZWN0LmhlaWdodCgpICogKG1fY292ZXJBcmVhTXVsdGlwbGllciAtIDEpIC8gMik7Ci0gICAgICAg
IGtlZXBSZWN0ID0gY292ZXJSZWN0OwotCi0gICAgICAgIGlmIChtX3RyYWplY3RvcnlWZWN0b3Ig
IT0gRmxvYXRQb2ludDo6emVybygpKSB7Ci0gICAgICAgICAgICAvLyBBIG51bGwgdHJhamVjdG9y
eSB2ZWN0b3IgKG5vIG1vdGlvbikgbWVhbnMgdGhhdCB0aWxlcyBmb3IgdGhlIGNvdmVyQXJlYSB3
aWxsIGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAvLyBBIG5vbi1udWxsIHRyYWplY3RvcnkgdmVj
dG9yIHdpbGwgc2hyaW5rIHRoZSBjb3ZlcmVkIHJlY3QgdG8gdmlzaWJsZVJlY3QgcGx1cyBpdHMg
ZXhwYW5zaW9uIGZyb20gaXRzCi0gICAgICAgICAgICAvLyBjZW50ZXIgdG93YXJkIHRoZSBjb3Zl
ciBhcmVhIGVkZ2VzIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGdpdmVuIHZlY3Rvci4KLQotICAg
ICAgICAgICAgLy8gRS5nLiBpZiB2aXNpYmxlUmVjdCA9PSAoMTAsMTApNXg1IGFuZCBjb3ZlckFy
ZWFNdWx0aXBsaWVyID09IDMuMDoKLSAgICAgICAgICAgIC8vIGEgKDAsMCkgdHJhamVjdG9yeSB2
ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICg1LDUpMTV4MTUsCi0gICAgICAg
ICAgICAvLyBhICgxLDApIHRyYWplY3RvcnkgdmVjdG9yIHdpbGwgY3JlYXRlIHRpbGVzIGludGVy
c2VjdGluZyAoMTAsMTApMTB4NSwKLSAgICAgICAgICAgIC8vIGFuZCBhICgxLDEpIHRyYWplY3Rv
cnkgdmVjdG9yIHdpbGwgY3JlYXRlIHRpbGVzIGludGVyc2VjdGluZyAoMTAsMTApMTB4MTAuCi0K
LSAgICAgICAgICAgIC8vIE11bHRpcGx5IHRoZSB2ZWN0b3IgYnkgdGhlIGRpc3RhbmNlIHRvIHRo
ZSBlZGdlIG9mIHRoZSBjb3ZlciBhcmVhLgotICAgICAgICAgICAgZmxvYXQgdHJhamVjdG9yeVZl
Y3Rvck11bHRpcGxpZXIgPSAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkgLyAyOwotCi0gICAg
ICAgICAgICAvLyBVbml0ZSB0aGUgdmlzaWJsZSByZWN0IHdpdGggYSAiZ2hvc3QiIG9mIHRoZSB2
aXNpYmxlIHJlY3QgbW92ZWQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgdHJhamVjdG9yeSB2ZWN0
b3IuCi0gICAgICAgICAgICBjb3ZlclJlY3QgPSB2aXNpYmxlUmVjdDsKLSAgICAgICAgICAgIGNv
dmVyUmVjdC5tb3ZlKGNvdmVyUmVjdC53aWR0aCgpICogbV90cmFqZWN0b3J5VmVjdG9yLngoKSAq
IHRyYWplY3RvcnlWZWN0b3JNdWx0aXBsaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y292ZXJSZWN0LmhlaWdodCgpICogbV90cmFqZWN0b3J5VmVjdG9yLnkoKSAqIHRyYWplY3RvcnlW
ZWN0b3JNdWx0aXBsaWVyKTsKLQotICAgICAgICAgICAgY292ZXJSZWN0LnVuaXRlKHZpc2libGVS
ZWN0KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoa2VlcFJlY3QuY29udGFpbnMoY292ZXJS
ZWN0KSk7Ci0gICAgfQotCi0gICAgYWRqdXN0Rm9yQ29udGVudHNSZWN0KGNvdmVyUmVjdCk7Ci0K
LSAgICAvLyBUaGUga2VlcCByZWN0IGlzIGFuIGluZmxhdGVkIHZlcnNpb24gb2YgdGhlIGNvdmVy
IHJlY3QsIGluZmxhdGVkIGluIHRpbGUgZGltZW5zaW9ucy4KLSAgICBrZWVwUmVjdC51bml0ZShj
b3ZlclJlY3QpOwotICAgIGtlZXBSZWN0LmluZmxhdGVYKG1fdGlsZVNpemUud2lkdGgoKSAvIDIp
OwotICAgIGtlZXBSZWN0LmluZmxhdGVZKG1fdGlsZVNpemUuaGVpZ2h0KCkgLyAyKTsKLSAgICBr
ZWVwUmVjdC5pbnRlcnNlY3QobV9yZWN0KTsKLQotICAgIEFTU0VSVChjb3ZlclJlY3QuaXNFbXB0
eSgpIHx8IGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVjdCkpOwotfQotCi1ib29sIFRpbGVkQmFj
a2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKQotewotICAgIGJvb2wgd2FzUmVzaXplZCA9IGZh
bHNlOwotICAgIFZlY3RvcjxUaWxlOjpDb29yZGluYXRlPiB0aWxlc1RvUmVtb3ZlOwotICAgIGZv
ciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKLSAgICAgICAgVGlsZTo6Q29vcmRp
bmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IHRpbGUtPmNvb3JkaW5hdGUoKTsKLSAgICAgICAgSW50UmVj
dCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKLSAgICAgICAgSW50UmVjdCBleHBlY3RlZFRpbGVS
ZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29yZGluYXRlKTsKLSAgICAgICAgaWYg
KGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGlsZXNUb1JlbW92ZS5h
cHBlbmQodGlsZUNvb3JkaW5hdGUpOwotICAgICAgICBlbHNlIGlmIChleHBlY3RlZFRpbGVSZWN0
ICE9IHRpbGVSZWN0KSB7Ci0gICAgICAgICAgICB0aWxlLT5yZXNpemUoZXhwZWN0ZWRUaWxlUmVj
dC5zaXplKCkpOwotICAgICAgICAgICAgd2FzUmVzaXplZCA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgdW5zaWduZWQgcmVtb3ZlQ291bnQgPSB0aWxlc1RvUmVtb3ZlLnNpemUoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3ZlQ291bnQ7ICsrbikKLSAgICAgICAgcmVt
b3ZlVGlsZSh0aWxlc1RvUmVtb3ZlW25dKTsKLSAgICByZXR1cm4gd2FzUmVzaXplZDsKLX0KLQot
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJlY3QoY29uc3QgSW50UmVjdCYga2VlcFJl
Y3QpCi17Ci0gICAgLy8gRHJvcCB0aWxlcyBvdXRzaWRlIHRoZSBuZXcga2VlcFJlY3QuCi0KLSAg
ICBGbG9hdFJlY3Qga2VlcFJlY3RGID0ga2VlcFJlY3Q7Ci0KLSAgICBWZWN0b3I8VGlsZTo6Q29v
cmRpbmF0ZT4gdG9SZW1vdmU7Ci0gICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMo
KSkgewotICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlLT5jb29yZGlu
YXRlKCk7Ci0gICAgICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGUtPnJlY3QoKTsKLSAgICAg
ICAgaWYgKCF0aWxlUmVjdC5pbnRlcnNlY3RzKGtlZXBSZWN0RikpCi0gICAgICAgICAgICB0b1Jl
bW92ZS5hcHBlbmQoY29vcmRpbmF0ZSk7Ci0gICAgfQotICAgIHVuc2lnbmVkIHJlbW92ZUNvdW50
ID0gdG9SZW1vdmUuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCByZW1vdmVD
b3VudDsgKytuKQotICAgICAgICByZW1vdmVUaWxlKHRvUmVtb3ZlW25dKTsKLQotICAgIG1fa2Vl
cFJlY3QgPSBrZWVwUmVjdDsKLX0KLQotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxs
Tm9uVmlzaWJsZVRpbGVzKCkKLXsKLSAgICBJbnRSZWN0IGJvdW5kZWRWaXNpYmxlUmVjdCA9IG1h
cEZyb21Db250ZW50cyhpbnRlcnNlY3Rpb24obV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVmlz
aWJsZVJlY3QoKSwgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpKTsK
LSAgICBzZXRLZWVwUmVjdChib3VuZGVkVmlzaWJsZVJlY3QpOwotfQotCi1QYXNzUmVmUHRyPFRp
bGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQXQoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29v
cmRpbmF0ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aWxlcy5nZXQoY29vcmRpbmF0ZSk7Ci19
Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKQotewotICAgIG1fdGlsZXMuc2V0
KGNvb3JkaW5hdGUsIHRpbGUpOwotfQotCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVU
aWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUpCi17Ci0gICAgbV90aWxlcy5y
ZW1vdmUoY29vcmRpbmF0ZSk7Ci19Ci0KLUludFJlY3QgVGlsZWRCYWNraW5nU3RvcmU6Om1hcFRv
Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gZW5jbG9z
aW5nSW50UmVjdChGbG9hdFJlY3QocmVjdC54KCkgLyBtX2NvbnRlbnRzU2NhbGUsCi0gICAgICAg
IHJlY3QueSgpIC8gbV9jb250ZW50c1NjYWxlLAotICAgICAgICByZWN0LndpZHRoKCkgLyBtX2Nv
bnRlbnRzU2NhbGUsCi0gICAgICAgIHJlY3QuaGVpZ2h0KCkgLyBtX2NvbnRlbnRzU2NhbGUpKTsK
LX0KLQotSW50UmVjdCBUaWxlZEJhY2tpbmdTdG9yZTo6bWFwRnJvbUNvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRS
ZWN0KHJlY3QueCgpICogbV9jb250ZW50c1NjYWxlLAotICAgICAgICByZWN0LnkoKSAqIG1fY29u
dGVudHNTY2FsZSwKLSAgICAgICAgcmVjdC53aWR0aCgpICogbV9jb250ZW50c1NjYWxlLAotICAg
ICAgICByZWN0LmhlaWdodCgpICogbV9jb250ZW50c1NjYWxlKSk7Ci19Ci0KLUludFJlY3QgVGls
ZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBUaWxlOjpDb29yZGlu
YXRlJiBjb29yZGluYXRlKSBjb25zdAotewotICAgIEludFJlY3QgcmVjdChjb29yZGluYXRlLngo
KSAqIG1fdGlsZVNpemUud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZS55KCkg
KiBtX3RpbGVTaXplLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICBtX3RpbGVTaXplLndpZHRo
KCksCi0gICAgICAgICAgICAgICAgIG1fdGlsZVNpemUuaGVpZ2h0KCkpOwotCi0gICAgcmVjdC5p
bnRlcnNlY3QobV9yZWN0KTsKLSAgICByZXR1cm4gcmVjdDsKLX0KLQotVGlsZTo6Q29vcmRpbmF0
ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaW50IHggPSBwb2ludC54KCkgLyBtX3RpbGVTaXplLndp
ZHRoKCk7Ci0gICAgaW50IHkgPSBwb2ludC55KCkgLyBtX3RpbGVTaXplLmhlaWdodCgpOwotICAg
IHJldHVybiBUaWxlOjpDb29yZGluYXRlKHN0ZDo6bWF4KHgsIDApLCBzdGQ6Om1heCh5LCAwKSk7
Ci19Ci0KLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFN1cHBvcnRzQWxwaGEoYm9vbCBhKQot
ewotICAgIGlmIChhID09IG1fc3VwcG9ydHNBbHBoYSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
c3VwcG9ydHNBbHBoYSA9IGE7Ci0gICAgaW52YWxpZGF0ZShtX3JlY3QpOwotfQotCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYjE2ZjUwMzBmZjcw
NWFiYTVjYmVkMTliY2M5MTliMmE4OTQ5YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotIENvcHly
aWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotIAotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFRpbGVkQmFja2lu
Z1N0b3JlX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVfaAotCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi0KLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UG9p
bnQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVGlsZS5oIgotI2luY2x1ZGUg
IlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0Nv
bnRleHQ7Ci1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKLWNsYXNzIFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50OwotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGlsZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCosIHN0ZDo6
dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+KTsKLSAgICB+VGlsZWRCYWNraW5n
U3RvcmUoKTsKLQotICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVy
biBtX2NsaWVudDsgfQotCi0gICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0
UG9pbnQmKTsKLSAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKLQotICAgIGZsb2F0
IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KLSAgICB2b2lkIHNl
dENvbnRlbnRzU2NhbGUoZmxvYXQpOwotCi0gICAgdm9pZCB1cGRhdGVUaWxlQnVmZmVycygpOwot
Ci0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7Ci0KLSAgICBJ
bnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQotICAgIHZvaWQgc2V0VGls
ZVNpemUoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0
IEludFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRS
ZWN0JikgY29uc3Q7Ci0KLSAgICBJbnRSZWN0IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBU
aWxlOjpDb29yZGluYXRlJikgY29uc3Q7Ci0gICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRp
bmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgZG91YmxlIHRpbGVEaXN0
YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpIGNv
bnN0OwotCi0gICAgSW50UmVjdCBjb3ZlclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvdmVyUmVj
dDsgfQotICAgIGJvb2wgdmlzaWJsZUFyZWFJc0NvdmVyZWQoKSBjb25zdDsKLSAgICB2b2lkIHJl
bW92ZUFsbE5vblZpc2libGVUaWxlcygpOwotCi0gICAgdm9pZCBzZXRTdXBwb3J0c0FscGhhKGJv
b2wpOwotCi1wcml2YXRlOgotICAgIHZvaWQgY3JlYXRlVGlsZXMoKTsKLSAgICB2b2lkIGNvbXB1
dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRSZWN0JiBj
b3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25zdDsKLQotICAgIGJvb2wgcmVzaXplRWRn
ZVRpbGVzKCk7Ci0gICAgdm9pZCBzZXRDb3ZlclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBt
X2NvdmVyUmVjdCA9IHJlY3Q7IH0KLSAgICB2b2lkIHNldEtlZXBSZWN0KGNvbnN0IEludFJlY3Qm
KTsKLQotICAgIFBhc3NSZWZQdHI8VGlsZT4gdGlsZUF0KGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUm
KSBjb25zdDsKLSAgICB2b2lkIHNldFRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRp
bmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKTsKLSAgICB2b2lkIHJlbW92ZVRpbGUoY29uc3Qg
VGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSk7Ci0KLSAgICBJbnRSZWN0IHZpc2libGVSZWN0
KCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjb3ZlcmFnZVJhdGlvKGNvbnN0IEludFJlY3QmKSBjb25z
dDsKLSAgICB2b2lkIGFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JikgY29uc3Q7Ci0KLSAg
ICB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKLQotcHJpdmF0ZToKLSAgICBUaWxlZEJhY2tp
bmdTdG9yZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2lu
Z1N0b3JlQmFja2VuZD4gbV9iYWNrZW5kOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFRpbGU6OkNv
b3JkaW5hdGUsIFJlZlB0cjxUaWxlPiA+IFRpbGVNYXA7Ci0gICAgVGlsZU1hcCBtX3RpbGVzOwot
Ci0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGll
cjsKLQotICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOwotICAgIEZsb2F0UG9pbnQg
bV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKLSAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7Ci0K
LSAgICBJbnRSZWN0IG1fY292ZXJSZWN0OwotICAgIEludFJlY3QgbV9rZWVwUmVjdDsKLSAgICBJ
bnRSZWN0IG1fcmVjdDsKLQotICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKLQotICAgIGJvb2wg
bV9zdXBwb3J0c0FscGhhOwotICAgIGJvb2wgbV9wZW5kaW5nVGlsZUNyZWF0aW9uOwotCi0gICAg
ZnJpZW5kIGNsYXNzIFRpbGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3Jl
QmFja2VuZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzI2YmI5ZjMzZWFiMWQ5
N2IxNDljMTQ4MmNkMzYxMTlkMzFmOWJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgVGlsZWRCYWNraW5nU3Rv
cmVCYWNrZW5kX2gKLSNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKLQotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQotCi0jaW5jbHVkZSAiVGlsZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwotCi1jbGFzcyBUaWxlZEJhY2tp
bmdTdG9yZUJhY2tlbmQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIHZpcnR1YWwgflRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCgpIHsgfQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUaWxlPiBjcmVhdGVUaWxlKFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgVGls
ZTo6Q29vcmRpbmF0ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGVja2VyUGF0dGVy
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci19OwotCi19Ci0KLSNl
bmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlYjlhN2Q5MzI3MjQxNTFjY2U0NzU3Njk2N2UyZDQxZDNlNWQzZTE5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAKLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudF9oCi0jZGVmaW5lIFRpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi0KLWNsYXNzIENvbG9yOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotCi1j
bGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+VGls
ZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5n
U3RvcmVQYWludEJlZ2luKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9y
ZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBw
YWludGVkQXJlYSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1Bl
bmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5n
U3RvcmVDb250ZW50c1JlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2lu
Z1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdT
dG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKLX07Ci0KLSNlbHNlCi1jbGFzcyBUaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudCB7fTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGlsZUNhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UaWxlQ2Fpcm8uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcyZmZiMjNiMTJkOTEzZDhiODgwNzRjYWY3ZGJiM2Fh
N2I3Mjg5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UaWxlQ2Fpcm8uaAorKysgL2Rl
di9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3Vu
ZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVGlsZUNhaXJvX2gKLSNkZWZpbmUgVGlsZUNh
aXJvX2gKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBVU0UoQ0FJUk8pCi0KLSNp
bmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJSZWZQ
dHJDYWlyby5oIgotI2luY2x1ZGUgIlRpbGUuaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKLQotY2xhc3MgVGls
ZUNhaXJvIDogcHVibGljIFRpbGUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRp
bGU+IGNyZWF0ZShUaWxlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBjb25zdCBDb29yZGlu
YXRlJiB0aWxlQ29vcmRpbmF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGlsZUNhaXJvKGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpKTsKLSAgICB9Ci0gICAgdmly
dHVhbCB+VGlsZUNhaXJvKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVCYWNrQnVmZmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3
YXBCYWNrQnVmZmVyVG9Gcm9udCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWR5VG9QYWludCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5h
dGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdGU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IElu
dFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLQotcHJvdGVjdGVkOgotICAgIFRpbGVD
YWlybyhUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5hdGUmKTsKLQotICAgIFRpbGVk
QmFja2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKLSAgICBDb29yZGluYXRlIG1fY29vcmRpbmF0
ZTsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1f
YnVmZmVyOwotICAgIFJlZlB0cjxjYWlyb19yZWdpb25fdD4gbV9kaXJ0eVJlZ2lvbjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKSAmJiBVU0UoQ0FJUk8pCi0KLSNlbmRpZiAvLyBUaWxlQ2Fpcm9faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTFiOWIwZDljZDVkYmIxZmM4YjliYjg1ZjZiYWRmMWJmZTFhZDlh
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
CisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAK
KyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZV9oCisjZGVmaW5lIFRpbGVf
aAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBUaWxlIDog
cHVibGljIFJlZkNvdW50ZWQ8VGlsZT4geworcHVibGljOgorICAgIHR5cGVkZWYgSW50UG9pbnQg
Q29vcmRpbmF0ZTsKKworICAgIHZpcnR1YWwgflRpbGUoKSB7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBpc0RpcnR5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0
IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8SW50UmVjdD4gdXBkYXRlQmFja0J1
ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJhY2tCdWZmZXJUb0Zyb250KCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWR5VG9QYWludCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0gMDsKKwor
ICAgIHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOworfTsKKworfQor
I2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3Rv
cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiZWZkNmUyZGFkZDE2YmRjNTkyNTU3NDAzMmI0MDU5YWFlZDZl
NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAgKzEsNDcxIEBA
CisvKgorIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKKworI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZURpbWVuc2lvbiA9IDUxMjsKKworc3RhdGlj
IEludFBvaW50IGlubmVyQm90dG9tUmlnaHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICAv
LyBBY3R1YWxseSwgdGhlIHJlY3QgZG9lcyBub3QgY29udGFpbiByZWN0Lm1heFgoKS4gUmVmZXIg
dG8gSW50UmVjdDo6Y29udGFpbi4KKyAgICByZXR1cm4gSW50UG9pbnQocmVjdC5tYXhYKCkgLSAx
LCByZWN0Lm1heFkoKSAtIDEpOworfQorCitUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5n
U3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCwgc3RkOjp1bmlxdWVfcHRyPFRp
bGVkQmFja2luZ1N0b3JlQmFja2VuZD4gYmFja2VuZCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkK
KyAgICAsIG1fYmFja2VuZChXVEY6Om1vdmUoYmFja2VuZCkpCisgICAgLCBtX3RpbGVTaXplKGRl
ZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikKKyAgICAsIG1fY292ZXJB
cmVhTXVsdGlwbGllcigyLjBmKQorICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKKyAgICAsIG1f
c3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkK
K3sKK30KKworVGlsZWRCYWNraW5nU3RvcmU6On5UaWxlZEJhY2tpbmdTdG9yZSgpCit7Cit9CisK
K3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisgICAgbV90aWxlU2l6ZSA9IHNpemU7CisgICAgbV90aWxlcy5jbGVhcigpOworfQorCit2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9p
bnQmIHRyYWplY3RvcnlWZWN0b3IpCit7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9
IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxp
emUoKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRl
ZCgpCit7CisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Cisg
ICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdT
dG9yZUNvbnRlbnRzUmVjdCgpKTsKKworICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5
VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2
aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVu
ZGluZ1RpbGVDcmVhdGlvbikKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsKK30KKwordm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVj
dCkKK3sKKyAgICBJbnRSZWN0IGRpcnR5UmVjdChtYXBGcm9tQ29udGVudHMoY29udGVudHNEaXJ0
eVJlY3QpKTsKKyAgICBJbnRSZWN0IGtlZXBSZWN0Rml0VG9UaWxlU2l6ZSA9IHRpbGVSZWN0Rm9y
Q29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZUZvclBvaW50KG1fa2VlcFJlY3QubG9jYXRpb24oKSkp
OworICAgIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZS51bml0ZSh0aWxlUmVjdEZvckNvb3JkaW5hdGUo
dGlsZUNvb3JkaW5hdGVGb3JQb2ludChpbm5lckJvdHRvbVJpZ2h0KG1fa2VlcFJlY3QpKSkpOwor
CisgICAgLy8gT25seSBpdGVyYXRlIG9uIHRoZSBwYXJ0IG9mIHRoZSByZWN0IHRoYXQgd2Uga25v
dyB3ZSBtaWdodCBoYXZlIHRpbGVzLgorICAgIEludFJlY3QgY292ZXJlZERpcnR5UmVjdCA9IGlu
dGVyc2VjdGlvbihkaXJ0eVJlY3QsIGtlZXBSZWN0Rml0VG9UaWxlU2l6ZSk7CisgICAgVGlsZTo6
Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb3ZlcmVkRGlydHlS
ZWN0LmxvY2F0aW9uKCkpOworICAgIFRpbGU6OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxl
Q29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90dG9tUmlnaHQoY292ZXJlZERpcnR5UmVjdCkpOwor
CisgICAgZm9yIChpbnQgeUNvb3JkaW5hdGUgPSB0b3BMZWZ0LnkoKTsgeUNvb3JkaW5hdGUgPD0g
Ym90dG9tUmlnaHQueSgpOyArK3lDb29yZGluYXRlKSB7CisgICAgICAgIGZvciAoaW50IHhDb29y
ZGluYXRlID0gdG9wTGVmdC54KCk7IHhDb29yZGluYXRlIDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4
Q29vcmRpbmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbGU+IGN1cnJlbnRUaWxlID0gdGls
ZUF0KFRpbGU6OkNvb3JkaW5hdGUoeENvb3JkaW5hdGUsIHlDb29yZGluYXRlKSk7CisgICAgICAg
ICAgICBpZiAoIWN1cnJlbnRUaWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgLy8gUGFzcyB0aGUgZnVsbCByZWN0IHRvIGVhY2ggdGlsZSBhcyBjb3ZlcmVkRGlydHlS
ZWN0IG1pZ2h0IG5vdAorICAgICAgICAgICAgLy8gY29udGFpbiB0aGVtIGNvbXBsZXRlbHkgYW5k
IHdlIGRvbid0IHdhbnQgcGFydGlhbCB0aWxlIHJlZHJhd3MuCisgICAgICAgICAgICBjdXJyZW50
VGlsZS0+aW52YWxpZGF0ZShkaXJ0eVJlY3QpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCit7CisgICAgbV9jbGllbnQt
PnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOworCisgICAgVmVjdG9yPEludFJlY3Q+IHBh
aW50ZWRBcmVhOworICAgIFZlY3RvcjxSZWZQdHI8VGlsZT4gPiBkaXJ0eVRpbGVzOworICAgIGZv
ciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCF0aWxlLT5p
c0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGlydHlUaWxlcy5hcHBl
bmQodGlsZSk7CisgICAgfQorCisgICAgaWYgKGRpcnR5VGlsZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKHBhaW50ZWRBcmVhKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJbiBzaW5nbGUgdGhyZWFkZWQg
Y2FzZSwgdGlsZSBiYWNrIGJ1ZmZlcnMgY291bGQgYmUgdXBkYXRlZCBhc3luY2hyb25vdXNseSAK
KyAgICAvLyBvbmUgYnkgb25lIGFuZCB0aGVuIHN3YXBwZWQgdG8gZnJvbnQgaW4gb25lIGdvLiBU
aGlzIHdvdWxkIG1pbmltaXplIHRoZSB0aW1lIHNwZW50CisgICAgLy8gYmxvY2tpbmcgb24gdGls
ZSB1cGRhdGVzLgorICAgIHVuc2lnbmVkIHNpemUgPSBkaXJ0eVRpbGVzLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgKytuKSB7CisgICAgICAgIFZlY3RvcjxJbnRS
ZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0eVRpbGVzW25dLT51cGRhdGVCYWNrQnVmZmVyKCk7Cisg
ICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3RvcihwYWludGVkUmVjdHMpOworICAgICAgICBk
aXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKKyAgICB9CisKKyAgICBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChwYWludGVkQXJlYSk7Cit9CisKK0ludFJl
Y3QgVGlsZWRCYWNraW5nU3RvcmU6OnZpc2libGVSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkp
OworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNj
YWxlKQoreworICAgIGlmIChzY2FsZSA9PSBtX2NvbnRlbnRzU2NhbGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOworICAgIG1fdGlsZXMuY2xlYXIoKTsK
KyAgICBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7Cit9CisKK2RvdWJsZSBUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0LCBjb25zdCBUaWxlOjpD
b29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkgY29uc3QKK3sKKyAgICBpZiAodmlld3BvcnQuaW50
ZXJzZWN0cyh0aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBJbnRQb2ludCB2aWV3Q2VudGVyID0gdmlld3BvcnQubG9jYXRpb24o
KSArIEludFNpemUodmlld3BvcnQud2lkdGgoKSAvIDIsIHZpZXdwb3J0LmhlaWdodCgpIC8gMik7
CisgICAgVGlsZTo6Q29vcmRpbmF0ZSBjZW50ZXJDb29yZGluYXRlID0gdGlsZUNvb3JkaW5hdGVG
b3JQb2ludCh2aWV3Q2VudGVyKTsKKworICAgIHJldHVybiBzdGQ6Om1heChhYnMoY2VudGVyQ29v
cmRpbmF0ZS55KCkgLSB0aWxlQ29vcmRpbmF0ZS55KCkpLCBhYnMoY2VudGVyQ29vcmRpbmF0ZS54
KCkgLSB0aWxlQ29vcmRpbmF0ZS54KCkpKTsKK30KKworLy8gUmV0dXJucyBhIHJhdGlvIGJldHdl
ZW4gMC4wZiBhbmQgMS4wZiBvZiB0aGUgc3VyZmFjZSBvZiBjb250ZW50c1JlY3QgY292ZXJlZCBi
eSByZW5kZXJlZCB0aWxlcy4KK2Zsb2F0IFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcmFnZVJhdGlv
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvbnRlbnRzUmVjdCkgY29uc3QKK3sKKyAgICBJbnRS
ZWN0IGRpcnR5UmVjdCA9IG1hcEZyb21Db250ZW50cyhjb250ZW50c1JlY3QpOworICAgIGZsb2F0
IHJlY3RBcmVhID0gZGlydHlSZWN0LndpZHRoKCkgKiBkaXJ0eVJlY3QuaGVpZ2h0KCk7CisgICAg
ZmxvYXQgY292ZXJBcmVhID0gMC4wZjsKKworICAgIFRpbGU6OkNvb3JkaW5hdGUgdG9wTGVmdCA9
IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoZGlydHlSZWN0LmxvY2F0aW9uKCkpOworICAgIFRpbGU6
OkNvb3JkaW5hdGUgYm90dG9tUmlnaHQgPSB0aWxlQ29vcmRpbmF0ZUZvclBvaW50KGlubmVyQm90
dG9tUmlnaHQoZGlydHlSZWN0KSk7CisKKyAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9IHRvcExl
ZnQueSgpOyB5Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5hdGUpIHsK
KyAgICAgICAgZm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUg
PD0gYm90dG9tUmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7CisgICAgICAgICAgICBUaWxlOjpD
b29yZGluYXRlIGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSk7Cisg
ICAgICAgICAgICBSZWZQdHI8VGlsZT4gY3VycmVudFRpbGUgPSB0aWxlQXQoY3VycmVudENvb3Jk
aW5hdGUpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRUaWxlICYmIGN1cnJlbnRUaWxlLT5pc1Jl
YWR5VG9QYWludCgpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBjb3ZlclJlY3QgPSBpbnRl
cnNlY3Rpb24oZGlydHlSZWN0LCBjdXJyZW50VGlsZS0+cmVjdCgpKTsKKyAgICAgICAgICAgICAg
ICBjb3ZlckFyZWEgKz0gY292ZXJSZWN0LndpZHRoKCkgKiBjb3ZlclJlY3QuaGVpZ2h0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvdmVyQXJlYSAvIHJl
Y3RBcmVhOworfQorCitib29sIFRpbGVkQmFja2luZ1N0b3JlOjp2aXNpYmxlQXJlYUlzQ292ZXJl
ZCgpIGNvbnN0Cit7CisgICAgSW50UmVjdCBib3VuZGVkVmlzaWJsZUNvbnRlbnRzUmVjdCA9IGlu
dGVyc2VjdGlvbihtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpLCBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAgcmV0dXJuIGNvdmVy
YWdlUmF0aW8oYm91bmRlZFZpc2libGVDb250ZW50c1JlY3QpID09IDEuMGY7Cit9CisKK3ZvaWQg
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKK3sKKyAgICAvLyBVcGRhdGUgb3VyIGJh
Y2tpbmcgc3RvcmUgZ2VvbWV0cnkuCisgICAgY29uc3QgSW50UmVjdCBwcmV2aW91c1JlY3QgPSBt
X3JlY3Q7CisgICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tp
bmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBtX3BlbmRp
bmdUcmFqZWN0b3J5VmVjdG9yOworICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdCgpOwor
CisgICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0Q292ZXJSZWN0KEludFJl
Y3QoKSk7CisgICAgICAgIHNldEtlZXBSZWN0KEludFJlY3QoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvKiBXZSBtdXN0IGNvbXB1dGUgY292ZXIgYW5kIGtlZXAgcmVjdHMgdXNp
bmcgdGhlIHZpc2libGVSZWN0LCBpbnN0ZWFkIG9mIHRoZSByZWN0IGludGVyc2VjdGluZyB0aGUg
dmlzaWJsZVJlY3Qgd2l0aCBtX3JlY3QsCisgICAgICogYmVjYXVzZSBUQlMgY2FuIGJlIHVzZWQg
YXMgYSBiYWNraW5nIHN0b3JlIG9mIEdyYXBoaWNzTGF5ZXIgYW5kIHRoZSB2aXNpYmxlIHJlY3Qg
dXN1YWxseSBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCBtX3JlY3QuCisgICAgICogSW4gdGhlIGJl
bG93IGNhc2UsIHRoZSBpbnRlcnNlY3RpbmcgcmVjdCBpcyBhbiBlbXB0eS4KKyAgICAgKgorICAg
ICAqICArLS0tLS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgICAgICAgICAgICAgfAorICAgICAq
ICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICB8ICAgICAgICstLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKworICAgICAqICB8ICAgICAgIHwgSEVSRSAgfCAgY292ZXIgb3Iga2VlcCAg
ICAgICAgfAorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKyAgICAgIHJlY3QgICAgICAgICAgICAg
fAorICAgICAqICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAorICAg
ICAqICAgICAgICAgIHwgICAgICAgICB8IHZpc2libGUgfCAgICAgICAgICAgfAorICAgICAqICAg
ICAgICAgIHwgICAgICAgICB8ICByZWN0ICAgfCAgICAgICAgICAgfAorICAgICAqICAgICAgICAg
IHwgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAqCisgICAgICogV2UgbXVzdCBjcmVhdGUgb3Iga2VlcCB0
aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgorICAgICAqLworCisgICAgSW50UmVjdCBjb3Zl
clJlY3Q7CisgICAgSW50UmVjdCBrZWVwUmVjdDsKKyAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVj
dChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKKworICAgIHNldENvdmVyUmVj
dChjb3ZlclJlY3QpOworICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsKKworICAgIGlmIChjb3Zl
clJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNpemUgdGlsZXMg
YXQgdGhlIGVkZ2UgaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBoYXMgY2hhbmdlZCwgYnV0IG9u
bHkgZG8gc28KKyAgICAvLyBhZnRlciBoYXZpbmcgZHJvcHBlZCB0aWxlcyBvdXRzaWRlIHRoZSBr
ZWVwIHJlY3QuCisgICAgYm9vbCBkaWRSZXNpemVUaWxlcyA9IGZhbHNlOworICAgIGlmIChwcmV2
aW91c1JlY3QgIT0gbV9yZWN0KQorICAgICAgICBkaWRSZXNpemVUaWxlcyA9IHJlc2l6ZUVkZ2VU
aWxlcygpOworCisgICAgLy8gU2VhcmNoIGZvciB0aGUgdGlsZSBwb3NpdGlvbiBjbG9zZXN0IHRv
IHRoZSB2aWV3cG9ydCBjZW50ZXIgdGhhdCBkb2VzIG5vdCB5ZXQgY29udGFpbiBhIHRpbGUuCisg
ICAgLy8gV2hpY2ggcG9zaXRpb24gaXMgY29uc2lkZXJlZCB0aGUgY2xvc2VzdCBkZXBlbmRzIG9u
IHRoZSB0aWxlRGlzdGFuY2UgZnVuY3Rpb24uCisgICAgZG91YmxlIHNob3J0ZXN0RGlzdGFuY2Ug
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgVmVjdG9yPFRp
bGU6OkNvb3JkaW5hdGU+IHRpbGVzVG9DcmVhdGU7CisgICAgdW5zaWduZWQgcmVxdWlyZWRUaWxl
Q291bnQgPSAwOworCisgICAgLy8gQ292ZXIgYXJlYXMgKGluIHRpbGVzKSB3aXRoIG1pbmltdW0g
ZGlzdGFuY2UgZnJvbSB0aGUgdmlzaWJsZSByZWN0LiBJZiB0aGUgdmlzaWJsZSByZWN0IGlzCisg
ICAgLy8gbm90IGNvdmVyZWQgYWxyZWFkeSBpdCB3aWxsIGJlIGNvdmVyZWQgZmlyc3QgaW4gb25l
IGdvLCBkdWUgdG8gdGhlIGRpc3RhbmNlIGJlaW5nIDAgZm9yIHRpbGVzCisgICAgLy8gaW5zaWRl
IHRoZSB2aXNpYmxlIHJlY3QuCisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNv
b3JkaW5hdGVGb3JQb2ludChjb3ZlclJlY3QubG9jYXRpb24oKSk7CisgICAgVGlsZTo6Q29vcmRp
bmF0ZSBib3R0b21SaWdodCA9IHRpbGVDb29yZGluYXRlRm9yUG9pbnQoaW5uZXJCb3R0b21SaWdo
dChjb3ZlclJlY3QpKTsKKyAgICBmb3IgKGludCB5Q29vcmRpbmF0ZSA9IHRvcExlZnQueSgpOyB5
Q29vcmRpbmF0ZSA8PSBib3R0b21SaWdodC55KCk7ICsreUNvb3JkaW5hdGUpIHsKKyAgICAgICAg
Zm9yIChpbnQgeENvb3JkaW5hdGUgPSB0b3BMZWZ0LngoKTsgeENvb3JkaW5hdGUgPD0gYm90dG9t
UmlnaHQueCgpOyArK3hDb29yZGluYXRlKSB7CisgICAgICAgICAgICBUaWxlOjpDb29yZGluYXRl
IGN1cnJlbnRDb29yZGluYXRlKHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSk7CisgICAgICAgICAg
ICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7CisgICAgICAgICAgICBkb3VibGUg
ZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUp
OworICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5jZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHNob3J0ZXN0RGlz
dGFuY2UpIHsKKyAgICAgICAgICAgICAgICB0aWxlc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdGlsZXNUb0NyZWF0ZS5hcHBlbmQoY3VycmVudENvb3JkaW5hdGUpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gTm93IGNvbnN0cnVjdCB0aGUgdGlsZShzKSB3aXRoaW4gdGhl
IHNob3J0ZXN0IGRpc3RhbmNlLgorICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRp
bGVzVG9DcmVhdGUuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1Rv
Q3JlYXRlQ291bnQ7ICsrbikgeworICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUg
PSB0aWxlc1RvQ3JlYXRlW25dOworICAgICAgICBzZXRUaWxlKGNvb3JkaW5hdGUsIG1fYmFja2Vu
ZC0+Y3JlYXRlVGlsZSh0aGlzLCBjb29yZGluYXRlKSk7CisgICAgfQorICAgIHJlcXVpcmVkVGls
ZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsKKworICAgIC8vIFBhaW50IHRoZSBjb250ZW50
IG9mIHRoZSBuZXdseSBjcmVhdGVkIHRpbGVzIG9yIHJlc2l6ZWQgdGlsZXMuCisgICAgaWYgKHRp
bGVzVG9DcmVhdGVDb3VudCB8fCBkaWRSZXNpemVUaWxlcykKKyAgICAgICAgdXBkYXRlVGlsZUJ1
ZmZlcnMoKTsKKworICAgIC8vIFJlLWNhbGwgY3JlYXRlVGlsZXMgb24gYSB0aW1lciB0byBjb3Zl
ciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5ld2VzdCBzaG9ydGVzdCBkaXN0YW5jZS4KKyAg
ICBtX3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJlZFRpbGVDb3VudDsKKyAgICBpZiAobV9w
ZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVI
YXNQZW5kaW5nVGlsZUNyZWF0aW9uKCk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmFk
anVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIEludFJlY3Qg
Ym91bmRzID0gbV9yZWN0OworICAgIEludFNpemUgY2FuZGlkYXRlU2l6ZSA9IHJlY3Quc2l6ZSgp
OworCisgICAgcmVjdC5pbnRlcnNlY3QoYm91bmRzKTsKKworICAgIGlmIChyZWN0LnNpemUoKSA9
PSBjYW5kaWRhdGVTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIEluIHRo
ZSBmb2xsb3dpbmcgY2FzZSwgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIG9mIHRoZSBjb250ZW50
cyByZWN0IGFuZCB0aGUgY292ZXIgcmVjdC4KKyAgICAgKiBUaHVzIHRoZSBsYXR0ZXIgc2hvdWxk
IG5vdCBiZSBpbmZsYXRlZC4KKyAgICAgKgorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKworICAg
ICAqICB8ICAgbV9yZWN0ICAgICAgfAorICAgICAqICArLS0tLS0tLS0tLS0tLS0tKworICAgICAq
CisgICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICogICAgICAgICAgfCAgICAgICAgICBjb3ZlciByZWN0ICAgICAgICAgICB8CisgICAgICogICAg
ICAgICAgfCAgICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICB8CisgICAgICogICAgICAgICAg
fCAgICAgICAgIHwgdmlzaWJsZSB8ICAgICAgICAgICB8CisgICAgICogICAgICAgICAgfCAgICAg
ICAgIHwgIHJlY3QgICB8ICAgICAgICAgICB8CisgICAgICogICAgICAgICAgfCAgICAgICAgICst
LS0tLS0tLS0rICAgICAgICAgICB8CisgICAgICogICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisgICAgICovCisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBUcnkgdG8gY3JlYXRlIGEgY292ZXIgcmVjdCBvZiB0aGUgc2Ft
ZSBzaXplIGFzIHRoZSBjYW5kaWRhdGUsIGJ1dCB3aXRoaW4gY29udGVudCBib3VuZHMuCisgICAg
aW50IHBpeGVsc0NvdmVyZWQgPSBjYW5kaWRhdGVTaXplLndpZHRoKCkgKiBjYW5kaWRhdGVTaXpl
LmhlaWdodCgpOworCisgICAgaWYgKHJlY3Qud2lkdGgoKSA8IGNhbmRpZGF0ZVNpemUud2lkdGgo
KSkKKyAgICAgICAgcmVjdC5pbmZsYXRlWSgoKHBpeGVsc0NvdmVyZWQgLyByZWN0LndpZHRoKCkp
IC0gcmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAgICBpZiAocmVjdC5oZWlnaHQoKSA8IGNhbmRpZGF0
ZVNpemUuaGVpZ2h0KCkpCisgICAgICAgIHJlY3QuaW5mbGF0ZVgoKChwaXhlbHNDb3ZlcmVkIC8g
cmVjdC5oZWlnaHQoKSkgLSByZWN0LndpZHRoKCkpIC8gMik7CisKKyAgICByZWN0LmludGVyc2Vj
dChib3VuZHMpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb21wdXRlQ292ZXJBbmRL
ZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgSW50UmVjdCYgY292ZXJSZWN0LCBJ
bnRSZWN0JiBrZWVwUmVjdCkgY29uc3QKK3sKKyAgICBjb3ZlclJlY3QgPSB2aXNpYmxlUmVjdDsK
KyAgICBrZWVwUmVjdCA9IHZpc2libGVSZWN0OworCisgICAgLy8gSWYgd2UgY292ZXIgbW9yZSB0
aGF0IHRoZSBhY3R1YWwgdmlld3BvcnQgd2UgY2FuIGJlIHNtYXJ0IGFib3V0IHdoaWNoIHRpbGVz
IHdlIGNob29zZSB0byByZW5kZXIuCisgICAgaWYgKG1fY292ZXJBcmVhTXVsdGlwbGllciA+IDEp
IHsKKyAgICAgICAgLy8gVGhlIGluaXRpYWwgY292ZXIgYXJlYSBjb3ZlcnMgZXF1YWxseSBpbiBl
YWNoIGRpcmVjdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlckFyZWFNdWx0aXBsaWVyLgorICAg
ICAgICBjb3ZlclJlY3QuaW5mbGF0ZVgodmlzaWJsZVJlY3Qud2lkdGgoKSAqIChtX2NvdmVyQXJl
YU11bHRpcGxpZXIgLSAxKSAvIDIpOworICAgICAgICBjb3ZlclJlY3QuaW5mbGF0ZVkodmlzaWJs
ZVJlY3QuaGVpZ2h0KCkgKiAobV9jb3ZlckFyZWFNdWx0aXBsaWVyIC0gMSkgLyAyKTsKKyAgICAg
ICAga2VlcFJlY3QgPSBjb3ZlclJlY3Q7CisKKyAgICAgICAgaWYgKG1fdHJhamVjdG9yeVZlY3Rv
ciAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpIHsKKyAgICAgICAgICAgIC8vIEEgbnVsbCB0cmFqZWN0
b3J5IHZlY3RvciAobm8gbW90aW9uKSBtZWFucyB0aGF0IHRpbGVzIGZvciB0aGUgY292ZXJBcmVh
IHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgIC8vIEEgbm9uLW51bGwgdHJhamVjdG9yeSB2
ZWN0b3Igd2lsbCBzaHJpbmsgdGhlIGNvdmVyZWQgcmVjdCB0byB2aXNpYmxlUmVjdCBwbHVzIGl0
cyBleHBhbnNpb24gZnJvbSBpdHMKKyAgICAgICAgICAgIC8vIGNlbnRlciB0b3dhcmQgdGhlIGNv
dmVyIGFyZWEgZWRnZXMgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZ2l2ZW4gdmVjdG9yLgorCisg
ICAgICAgICAgICAvLyBFLmcuIGlmIHZpc2libGVSZWN0ID09ICgxMCwxMCk1eDUgYW5kIGNvdmVy
QXJlYU11bHRpcGxpZXIgPT0gMy4wOgorICAgICAgICAgICAgLy8gYSAoMCwwKSB0cmFqZWN0b3J5
IHZlY3RvciB3aWxsIGNyZWF0ZSB0aWxlcyBpbnRlcnNlY3RpbmcgKDUsNSkxNXgxNSwKKyAgICAg
ICAgICAgIC8vIGEgKDEsMCkgdHJhamVjdG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50
ZXJzZWN0aW5nICgxMCwxMCkxMHg1LAorICAgICAgICAgICAgLy8gYW5kIGEgKDEsMSkgdHJhamVj
dG9yeSB2ZWN0b3Igd2lsbCBjcmVhdGUgdGlsZXMgaW50ZXJzZWN0aW5nICgxMCwxMCkxMHgxMC4K
KworICAgICAgICAgICAgLy8gTXVsdGlwbHkgdGhlIHZlY3RvciBieSB0aGUgZGlzdGFuY2UgdG8g
dGhlIGVkZ2Ugb2YgdGhlIGNvdmVyIGFyZWEuCisgICAgICAgICAgICBmbG9hdCB0cmFqZWN0b3J5
VmVjdG9yTXVsdGlwbGllciA9IChtX2NvdmVyQXJlYU11bHRpcGxpZXIgLSAxKSAvIDI7CisKKyAg
ICAgICAgICAgIC8vIFVuaXRlIHRoZSB2aXNpYmxlIHJlY3Qgd2l0aCBhICJnaG9zdCIgb2YgdGhl
IHZpc2libGUgcmVjdCBtb3ZlZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSB0cmFqZWN0b3J5IHZl
Y3Rvci4KKyAgICAgICAgICAgIGNvdmVyUmVjdCA9IHZpc2libGVSZWN0OworICAgICAgICAgICAg
Y292ZXJSZWN0Lm1vdmUoY292ZXJSZWN0LndpZHRoKCkgKiBtX3RyYWplY3RvcnlWZWN0b3IueCgp
ICogdHJhamVjdG9yeVZlY3Rvck11bHRpcGxpZXIsIGNvdmVyUmVjdC5oZWlnaHQoKSAqIG1fdHJh
amVjdG9yeVZlY3Rvci55KCkgKiB0cmFqZWN0b3J5VmVjdG9yTXVsdGlwbGllcik7CisKKyAgICAg
ICAgICAgIGNvdmVyUmVjdC51bml0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKGtlZXBSZWN0LmNvbnRhaW5zKGNvdmVyUmVjdCkpOworICAgIH0KKworICAgIGFkanVz
dEZvckNvbnRlbnRzUmVjdChjb3ZlclJlY3QpOworCisgICAgLy8gVGhlIGtlZXAgcmVjdCBpcyBh
biBpbmZsYXRlZCB2ZXJzaW9uIG9mIHRoZSBjb3ZlciByZWN0LCBpbmZsYXRlZCBpbiB0aWxlIGRp
bWVuc2lvbnMuCisgICAga2VlcFJlY3QudW5pdGUoY292ZXJSZWN0KTsKKyAgICBrZWVwUmVjdC5p
bmZsYXRlWChtX3RpbGVTaXplLndpZHRoKCkgLyAyKTsKKyAgICBrZWVwUmVjdC5pbmZsYXRlWSht
X3RpbGVTaXplLmhlaWdodCgpIC8gMik7CisgICAga2VlcFJlY3QuaW50ZXJzZWN0KG1fcmVjdCk7
CisKKyAgICBBU1NFUlQoY292ZXJSZWN0LmlzRW1wdHkoKSB8fCBrZWVwUmVjdC5jb250YWlucyhj
b3ZlclJlY3QpKTsKK30KKworYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVz
KCkKK3sKKyAgICBib29sIHdhc1Jlc2l6ZWQgPSBmYWxzZTsKKyAgICBWZWN0b3I8VGlsZTo6Q29v
cmRpbmF0ZT4gdGlsZXNUb1JlbW92ZTsKKyAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZh
bHVlcygpKSB7CisgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgdGlsZUNvb3JkaW5hdGUgPSB0aWxl
LT5jb29yZGluYXRlKCk7CisgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSB0aWxlLT5yZWN0KCk7
CisgICAgICAgIEludFJlY3QgZXhwZWN0ZWRUaWxlUmVjdCA9IHRpbGVSZWN0Rm9yQ29vcmRpbmF0
ZSh0aWxlQ29vcmRpbmF0ZSk7CisgICAgICAgIGlmIChleHBlY3RlZFRpbGVSZWN0LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHRpbGVzVG9SZW1vdmUuYXBwZW5kKHRpbGVDb29yZGluYXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoZXhwZWN0ZWRUaWxlUmVjdCAhPSB0aWxlUmVjdCkgeworICAgICAgICAg
ICAgdGlsZS0+cmVzaXplKGV4cGVjdGVkVGlsZVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgICAgIHdh
c1Jlc2l6ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHVuc2lnbmVkIHJlbW92ZUNv
dW50ID0gdGlsZXNUb1JlbW92ZS5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8
IHJlbW92ZUNvdW50OyArK24pCisgICAgICAgIHJlbW92ZVRpbGUodGlsZXNUb1JlbW92ZVtuXSk7
CisgICAgcmV0dXJuIHdhc1Jlc2l6ZWQ7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNl
dEtlZXBSZWN0KGNvbnN0IEludFJlY3QmIGtlZXBSZWN0KQoreworICAgIC8vIERyb3AgdGlsZXMg
b3V0c2lkZSB0aGUgbmV3IGtlZXBSZWN0LgorCisgICAgRmxvYXRSZWN0IGtlZXBSZWN0RiA9IGtl
ZXBSZWN0OworCisgICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRvUmVtb3ZlOworICAgIGZv
ciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpIHsKKyAgICAgICAgVGlsZTo6Q29vcmRp
bmF0ZSBjb29yZGluYXRlID0gdGlsZS0+Y29vcmRpbmF0ZSgpOworICAgICAgICBGbG9hdFJlY3Qg
dGlsZVJlY3QgPSB0aWxlLT5yZWN0KCk7CisgICAgICAgIGlmICghdGlsZVJlY3QuaW50ZXJzZWN0
cyhrZWVwUmVjdEYpKQorICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGNvb3JkaW5hdGUpOwor
ICAgIH0KKyAgICB1bnNpZ25lZCByZW1vdmVDb3VudCA9IHRvUmVtb3ZlLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgcmVtb3ZlQ291bnQ7ICsrbikKKyAgICAgICAgcmVtb3Zl
VGlsZSh0b1JlbW92ZVtuXSk7CisKKyAgICBtX2tlZXBSZWN0ID0ga2VlcFJlY3Q7Cit9CisKK3Zv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpCit7CisgICAg
SW50UmVjdCBib3VuZGVkVmlzaWJsZVJlY3QgPSBtYXBGcm9tQ29udGVudHMoaW50ZXJzZWN0aW9u
KG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCksIG1fY2xpZW50LT50aWxl
ZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKSk7CisgICAgc2V0S2VlcFJlY3QoYm91bmRlZFZp
c2libGVSZWN0KTsKK30KKworUGFzc1JlZlB0cjxUaWxlPiBUaWxlZEJhY2tpbmdTdG9yZTo6dGls
ZUF0KGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdGlsZXMuZ2V0KGNvb3JkaW5hdGUpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
OjpzZXRUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUsIFBhc3NSZWZQdHI8
VGlsZT4gdGlsZSkKK3sKKyAgICBtX3RpbGVzLnNldChjb29yZGluYXRlLCB0aWxlKTsKK30KKwor
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlVGlsZShjb25zdCBUaWxlOjpDb29yZGluYXRl
JiBjb29yZGluYXRlKQoreworICAgIG1fdGlsZXMucmVtb3ZlKGNvb3JkaW5hdGUpOworfQorCitJ
bnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjptYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJl
Y3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3Qu
eCgpIC8gbV9jb250ZW50c1NjYWxlLAorICAgICAgICByZWN0LnkoKSAvIG1fY29udGVudHNTY2Fs
ZSwKKyAgICAgICAgcmVjdC53aWR0aCgpIC8gbV9jb250ZW50c1NjYWxlLAorICAgICAgICByZWN0
LmhlaWdodCgpIC8gbV9jb250ZW50c1NjYWxlKSk7Cit9CisKK0ludFJlY3QgVGlsZWRCYWNraW5n
U3RvcmU6Om1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAg
IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChyZWN0LngoKSAqIG1fY29udGVudHNT
Y2FsZSwKKyAgICAgICAgcmVjdC55KCkgKiBtX2NvbnRlbnRzU2NhbGUsCisgICAgICAgIHJlY3Qu
d2lkdGgoKSAqIG1fY29udGVudHNTY2FsZSwKKyAgICAgICAgcmVjdC5oZWlnaHQoKSAqIG1fY29u
dGVudHNTY2FsZSkpOworfQorCitJbnRSZWN0IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZv
ckNvb3JkaW5hdGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkgY29uc3QKK3sK
KyAgICBJbnRSZWN0IHJlY3QoY29vcmRpbmF0ZS54KCkgKiBtX3RpbGVTaXplLndpZHRoKCksCisg
ICAgICAgIGNvb3JkaW5hdGUueSgpICogbV90aWxlU2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgbV90
aWxlU2l6ZS53aWR0aCgpLAorICAgICAgICBtX3RpbGVTaXplLmhlaWdodCgpKTsKKworICAgIHJl
Y3QuaW50ZXJzZWN0KG1fcmVjdCk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKK1RpbGU6OkNvb3Jk
aW5hdGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGludCB4ID0gcG9pbnQueCgpIC8gbV90aWxlU2l6
ZS53aWR0aCgpOworICAgIGludCB5ID0gcG9pbnQueSgpIC8gbV90aWxlU2l6ZS5oZWlnaHQoKTsK
KyAgICByZXR1cm4gVGlsZTo6Q29vcmRpbmF0ZShzdGQ6Om1heCh4LCAwKSwgc3RkOjptYXgoeSwg
MCkpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRTdXBwb3J0c0FscGhhKGJvb2wg
YSkKK3sKKyAgICBpZiAoYSA9PSBtX3N1cHBvcnRzQWxwaGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3N1cHBvcnRzQWxwaGEgPSBhOworICAgIGludmFsaWRhdGUobV9yZWN0KTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmVjZjExMzE5ZTFlNjhlOTFkMDlhMDZiMjM4ZDU3OTYzMmJhYWNmNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorIENvcHly
aWdodCAoQykgMjAxMC0yMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFRpbGVkQmFja2lu
Z1N0b3JlX2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVfaAorCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFBv
aW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlRpbGUuaCIKKyNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CitjbGFzcyBUaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudDsKKworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRpbGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgVGlsZWRCYWNraW5nU3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqLCBzdGQ6
OnVuaXF1ZV9wdHI8VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kPik7CisgICAgflRpbGVkQmFja2lu
Z1N0b3JlKCk7CisKKyAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQ7IH0KKworICAgIHZvaWQgc2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9h
dFBvaW50Jik7CisgICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisKKyAgICBmbG9h
dCBjb250ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CisgICAgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKKworICAgIHZvaWQgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsK
KworICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworCisgICAg
SW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KKyAgICB2b2lkIHNldFRp
bGVTaXplKGNvbnN0IEludFNpemUmKTsKKworICAgIEludFJlY3QgbWFwVG9Db250ZW50cyhjb25z
dCBJbnRSZWN0JikgY29uc3Q7CisgICAgSW50UmVjdCBtYXBGcm9tQ29udGVudHMoY29uc3QgSW50
UmVjdCYpIGNvbnN0OworCisgICAgSW50UmVjdCB0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3Qg
VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0OworICAgIFRpbGU6OkNvb3JkaW5hdGUgdGlsZUNvb3Jk
aW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIGRvdWJsZSB0aWxlRGlz
dGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKSBj
b25zdDsKKworICAgIEludFJlY3QgY292ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb3ZlclJl
Y3Q7IH0KKyAgICBib29sIHZpc2libGVBcmVhSXNDb3ZlcmVkKCkgY29uc3Q7CisgICAgdm9pZCBy
ZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKTsKKworICAgIHZvaWQgc2V0U3VwcG9ydHNBbHBoYShi
b29sKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZVRpbGVzKCk7CisgICAgdm9pZCBjb21w
dXRlQ292ZXJBbmRLZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgSW50UmVjdCYg
Y292ZXJSZWN0LCBJbnRSZWN0JiBrZWVwUmVjdCkgY29uc3Q7CisKKyAgICBib29sIHJlc2l6ZUVk
Z2VUaWxlcygpOworICAgIHZvaWQgc2V0Q292ZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsg
bV9jb3ZlclJlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRLZWVwUmVjdChjb25zdCBJbnRSZWN0
Jik7CisKKyAgICBQYXNzUmVmUHRyPFRpbGU+IHRpbGVBdChjb25zdCBUaWxlOjpDb29yZGluYXRl
JikgY29uc3Q7CisgICAgdm9pZCBzZXRUaWxlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmLCBQYXNz
UmVmUHRyPFRpbGU+KTsKKyAgICB2b2lkIHJlbW92ZVRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0
ZSYpOworCisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0OworCisgICAgZmxvYXQgY292
ZXJhZ2VSYXRpbyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RGb3JDb250
ZW50c1JlY3QoSW50UmVjdCYpIGNvbnN0OworCisgICAgdm9pZCBwYWludENoZWNrZXJQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBUaWxlOjpDb29yZGluYXRl
Jik7CisKK3ByaXZhdGU6CisgICAgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIG1fY2xpZW50Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IG1fYmFja2VuZDsK
KworICAgIHR5cGVkZWYgSGFzaE1hcDxUaWxlOjpDb29yZGluYXRlLCBSZWZQdHI8VGlsZT4gPiBU
aWxlTWFwOworICAgIFRpbGVNYXAgbV90aWxlczsKKworICAgIEludFNpemUgbV90aWxlU2l6ZTsK
KyAgICBmbG9hdCBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CisKKyAgICBGbG9hdFBvaW50IG1fdHJh
amVjdG9yeVZlY3RvcjsKKyAgICBGbG9hdFBvaW50IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7
CisgICAgSW50UmVjdCBtX3Zpc2libGVSZWN0OworCisgICAgSW50UmVjdCBtX2NvdmVyUmVjdDsK
KyAgICBJbnRSZWN0IG1fa2VlcFJlY3Q7CisgICAgSW50UmVjdCBtX3JlY3Q7CisKKyAgICBmbG9h
dCBtX2NvbnRlbnRzU2NhbGU7CisKKyAgICBib29sIG1fc3VwcG9ydHNBbHBoYTsKKyAgICBib29s
IG1fcGVuZGluZ1RpbGVDcmVhdGlvbjsKKworICAgIGZyaWVuZCBjbGFzcyBUaWxlOworfTsKKwor
fQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVk
QmFja2luZ1N0b3JlQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NGJmNzFiZjhjZjE1Njg1MmFmMDUy
NjkwMTY0NGFkN2VkODUzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5k
LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKKyNkZWZpbmUgVGlsZWRCYWNr
aW5nU3RvcmVCYWNrZW5kX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2lu
Y2x1ZGUgIlRpbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaWxlZEJhY2tp
bmdTdG9yZTsKKworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5UaWxlZEJhY2tpbmdTdG9y
ZUJhY2tlbmQoKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlsZT4gY3JlYXRlVGlsZShU
aWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRC
YWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
ZjA4NDkyMzY3NThiYjczNTkxY2QyMjg5NzgwNWIyYzA3OWRjNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBUaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dF9oCisjZGVmaW5lIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCitjbGFzcyBDb2xvcjsKK2Ns
YXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5k
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkgeyB9CisgICAgdmly
dHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7
Cit9OworCisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMTliYjRhODhjYzlkZTljZmFk
OGUzYjU1NmJmMzVhZGFhZTdlNTJmMi4uYjBkOGM4OGQzMzUzZGViNDhhMzY5MzJhNDVmNmY2ODhh
MDgwZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTEzNCwxMCArMTM0LDYgQEAgcHVibGljOgogICAgIC8vIHRvIGRv
IGFuIGVhZ2VyIGxheW91dCBiZWZvcmUgdGhlIGRyYXdpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgeyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRl
ciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRl
eCA5YzcxZjkxOGRlNGYzMWVhMWVmYjhkYzU3NWEzNjhkYTI0ZTkwMzJmLi5jYTUxYmQzYWUzMThi
ZDAyZGEzZDQyNmNmMmM5OTczODhkOTE4ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZShjb25zdCBDb29yZGluCiAgICAgfSk7CiAKICAgICB1cGRhdGVWaWV3cG9ydCgpOwotI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS5kaWRSZW5kZXJGcmFtZShncmFwaGljc1N0
YXRlLmNvbnRlbnRzU2l6ZSwgZ3JhcGhpY3NTdGF0ZS5jb3ZlcmVkUmVjdCk7CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxN2ExY2U3ZWY4MGJkMzQ1MDE4NjhkNmFmOWQ5
MjRmZWJmZWExNTJiLi45MDE3ZTI5NjhlZjU4ZGU1OWQ0ZDRhOGI1NGRjMWU0YTMwMWM1OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVj
dCYgc2Nyb2xsUmUKICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNjcm9sbChpbnRlcnNlY3Rp
b24oc2Nyb2xsUmVjdCwgY2xpcFJlY3QpLCBzY3JvbGxEZWx0YSk7CiB9CiAKLSNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxPZmZzZXQpCiB7CiAgICAgbV9wYWdlLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChzY3JvbGxP
ZmZzZXQpOwpAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNwYXRj
aFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIG1fcGFnZS0+dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHZp
ZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fcGFnZS0+dXNlRml4ZWRM
YXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAxZTU5
NmNiOWY0MWUxNmQ0MjcxZGYwYWJhZjE1NjAyZTNiY2EyOWJhLi4wOTE4Yjk2NDMwNDM4MTE0ZWI0
YmFhNDBkNGE4MTYyODEyNmE0YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTExMiw3ICsx
MTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRS
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVh
bCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
c2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5YTQ3NGUwM2Zm
N2ZjZGJmNTFlMzZmMDAzZmUzMTIxYjllNjZiYTQ5Li42NDIzOGJmNjg0ZWVjN2FhYTUyN2M2NmIx
NTRmODBmMDI5YjA3NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
NTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5
b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKICAgICAgICAgfQogI2VuZGlmCiAKLSNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVk
IG9uIHRoZSBtYWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4K
ICAgICAgICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpIHx8IG1fZnJhbWUgIT0g
bV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSB8fCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKS0+ZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKCkpOwogI2Vu
ZGlmCkBAIC0xMjYxLDcgKzEyNjEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIHNob3VsZEhpZGVTY3JvbGxi
YXJzID0gc2hvdWxkRGlzYWJsZVNjcm9sbGluZzsKICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0OwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQog
ICAgICAgICBmaXhlZFZpc2libGVDb250ZW50UmVjdCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52
aWV3KCktPmZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgaWYgKHNob3VsZFVzZUZpeGVk
TGF5b3V0KQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKHdlYlBhZ2UtPnNjcm9s
bFBpbm5pbmdCZWhhdmlvcigpICE9IERvTm90UGluKQogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+dmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Iod2ViUGFnZS0+c2Nyb2xsUGlu
bmluZ0JlaGF2aW9yKCkpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChzaG91bGRVc2VGaXhlZExheW91dCkgewog
ICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXREZWxlZ2F0ZXNTY3JvbGxp
bmcoc2hvdWxkVXNlRml4ZWRMYXlvdXQpOwogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhzaG91bGRVc2VGaXhlZExheW91dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDVl
YmEwNDRiY2VlNjg4YTVjNWJmNGJkODVmYTNiMjJkYWQyNjk3Yy4uZTQ3MmZmY2U0NGVjNTg2OGFj
NjhjODkwMWVkOTNlOWE3M2I0NWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTIxMCwxMyArMTIxMCwxMyBAQCB2b2lkIFdlYlBhZ2U6
OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCiAgICAgCiAgICAgbV92
aWV3U2l6ZSA9IHZpZXdTaXplOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICh2aWV3LT51c2VGaXhlZExheW91dCgp
KQogICAgICAgICBzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpOwogI2VuZGlmCiB9CiAK
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiB2b2lkIFdlYlBhZ2U6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKG1fdXNlRml4ZWRMYXlvdXQpOwpAQCAtMTQ5MSw3ICsx
NDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZml4ZWQp
OwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgJiYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKICAgICAvLyBEZWxlZ2F0ZWQgc2Nyb2xsaW5nIHdpbGwgYmUgZW5hYmxl
ZCB3aGVuIHRoZSBGcmFtZVZpZXcgaXMgY3JlYXRlZCBpZiBmaXhlZCBsYXlvdXQgaXMgZW5hYmxl
ZC4KICAgICAvLyBFbnN1cmUgd2UgZG9uJ3QgZG8gYW5pbWF0ZWQgc2Nyb2xsaW5nIGluIHRoZSBX
ZWJQcm9jZXNzIGluIHRoYXQgY2FzZS4KICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2Nyb2xs
QW5pbWF0b3JFbmFibGVkKCFmaXhlZCk7CkBAIC0xNTAxLDcgKzE1MDEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm47CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgdmlldy0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGZpeGVkKTsK
ICAgICB2aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhmaXhlZCk7CiAjZW5kaWYKQEAgLTE3
ODUsNyArMTc4NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOwogfQogCi0jaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBX
ZWJQYWdlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKQEAgLTIyOTIsNyArMjI5
Miw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQoKQogCiBpbmxp
bmUgYm9vbCBXZWJQYWdlOjpjYW5IYW5kbGVVc2VyRXZlbnRzKCkgY29uc3QKIHsKLSNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
Ly8gU2hvdWxkIGFwcGx5IG9ubHkgaWYgdGhlIGFyZWEgd2FzIGZyb3plbiBieSBkaWRTdGFydFBh
Z2VUcmFuc2l0aW9uKCkuCiAgICAgcmV0dXJuICFtX2RyYXdpbmdBcmVhLT5sYXllclRyZWVTdGF0
ZUlzRnJvemVuKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDA1YTRjNjczZDNhMzVjZGI3MTIxNjFjZDdjMmUzZjAzNTJjZGM1MDIu
LmMzMTU2ZDVmYjRlNDE2MjViZmQxNTExNDJlNjc0NTUyNDg0NWEyNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTUwLDcgKzU1MCw3IEBAIHB1
YmxpYzoKICAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwogCiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xs
KCk7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGU2NWEwMzIxODFkNzg1NGM2NzRiN2VkZDA4MzIyNDMz
NGRiMzI3M2QuLjA2MmM5ZTg5MjBjZGIxNzQ2YjNiMGViOTRhODljZWRlNDAzZWJhMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCkBAIC0yMzAsNyArMjMwLDYgQEAgZW5kaWYgKCkKIGFkZF9kZWZpbml0
aW9ucygtRFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1M9MSkKIGFkZF9kZWZpbml0aW9ucygt
RFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTPTEpCiBhZGRfZGVmaW5p
dGlvbnMoLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEpCi1hZGRfZGVmaW5pdGlvbnMoLURXVEZf
VVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkU9MSkKIAogc2V0KEVOQUJMRV9HUkFQSElDU19DT05URVhU
XzNEIDEpCiBhZGRfZGVmaW5pdGlvbnMoLURFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRD0xKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQppbmRleCBiYmY1YzA3MDNiZjAzZDI1MjNhY2EyMmNkMmI0YzE3MDYw
MjYzOGE3Li5kYTNjYjI3MTVmNTUxMTRiNDUwYTE2YmY3MmY0Zjk5ZjE1OWE5MmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZQpAQCAtMzI2LDcgKzMyNiw2IEBAIGlmIChFTkFCTEVfT1BFTkdMKQogICAg
ICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfVVNFX0dMWCBUUlVFKQogICAgIGVuZGlm
ICgpCiAKLSAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfVVNFX1RJTEVEX0JBQ0tJTkdf
U1RPUkUgJHtFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUn0pCiAgICAgU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoV1RGX1VTRV9DT09SRElOQVRFRF9HUkFQSElDUyAke0VOQUJMRV9USFJFQURFRF9D
T01QT1NJVE9SfSkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfVVNFX0NPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEICR7RU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1J9KQogZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA3MTU0M2YxZWMwNGY1OGMwM2IwYzZiYzdjODEwOTEzZGFjZGE5YjlkLi5lZmViNTUxYmE1MDAw
ZjJlMjQwNWI2YmI4MDlkZThlMzJkNTQ2MzFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDQtMjggIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5hdGVk
R3JhcGhpY3NdIE1lcmdlIFRJTEVEX0JBQ0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBDT09SRElOQVRF
RF9HUkFQSElDUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnNo
b3VsZFVzZUZpeGVkTGF5b3V0KToKKwogMjAxNS0wNC0yOCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNyZWFzZSBzdGFibGlsaXR5IG9mIHJ1bi1iZW5jaG1h
cmsgc2NyaXB0CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDM0Mjc1MWFjYmIwOGMwMzY4ZWVhODVlZTM0MWQyOWFjOGNiOWVhYTMuLjUzNDQyYWRkZGYwOTI5
ZTQ4YzI0Nzg5ODUyNTUzMGQxZGNmNmMyOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCkBAIC03NjQsNyArNzY0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
Rml4ZWRMYXlvdXQoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiAgICAgICAgIHJldHVybiB0
cnVlOwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgJiYgUExBVEZPUk0o
RUZMKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgJiYgUExBVEZPUk0oRUZMKQogICAg
IGlmICh0ZXN0LnVybENvbnRhaW5zKCJzdGlja3kvIikgfHwgdGVzdC51cmxDb250YWlucygic3Rp
Y2t5XFwiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNTQxMDk4M2M5ZGExMDI0ZmZhZDY5MDZlYzI0YTg1NDRj
NGM5MjM0Li5kM2M0ZTUxOTIxZWM1ODljM2RkZDNmN2E4MDFkNmUwMWY4YTM1NjRlIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDQt
MjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW0Nv
b3JkaW5hdGVkR3JhcGhpY3NdIE1lcmdlIFRJTEVEX0JBQ0tJTkdfU1RPUkUgZ3VhcmQgd2l0aCBD
T09SRElOQVRFRF9HUkFQSElDUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6IFJlbW92ZWQgVElMRURf
QkFDS0lOR19TVE9SRSBkZWZpbml0aW9uLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
R1RLLmNtYWtlOiBEaXR0by4KKwogMjAxNS0wNC0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHR5cG8gaW4gcHJl
dmlvdXMgY29tbWl0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>