<?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>104748</bug_id>
          
          <creation_ts>2012-12-11 17:34:02 -0800</creation_ts>
          <short_desc>webdatabase: Split code between the DatabaseManager and DatabaseServer</short_desc>
          <delta_ts>2012-12-18 16:54:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>104741</dependson>
    
    <dependson>104934</dependson>
          <blocked>103668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>adamk</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789039</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-11 17:34:02 -0800</bug_when>
    <thetext>Split the DatabaseManager into a front-end and a back-end DatabaseServer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790234</commentid>
    <comment_count>1</comment_count>
      <attachid>179186</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 20:39:58 -0800</bug_when>
    <thetext>Created attachment 179186
work in progress 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790240</commentid>
    <comment_count>2</comment_count>
      <attachid>179186</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 20:45:11 -0800</bug_when>
    <thetext>Comment on attachment 179186
work in progress 1.

Attachment 179186 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15310107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790243</commentid>
    <comment_count>3</comment_count>
      <attachid>179188</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 20:49:24 -0800</bug_when>
    <thetext>Created attachment 179188
work in progress again: fixed Qt issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790291</commentid>
    <comment_count>4</comment_count>
      <attachid>179188</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-12 22:12:58 -0800</bug_when>
    <thetext>Comment on attachment 179188
work in progress again: fixed Qt issue.

Attachment 179188 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15322103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790321</commentid>
    <comment_count>5</comment_count>
      <attachid>179207</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 23:12:40 -0800</bug_when>
    <thetext>Created attachment 179207
wip1: attempt at fixing the elf build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791380</commentid>
    <comment_count>6</comment_count>
      <attachid>179429</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-13 23:48:18 -0800</bug_when>
    <thetext>Created attachment 179429
work in progress 2: DatabaseTracker is now only accessed from DBBackend::Server + moving more stuff to DatabaseManager and the server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791404</commentid>
    <comment_count>7</comment_count>
      <attachid>179429</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-14 00:18:28 -0800</bug_when>
    <thetext>Comment on attachment 179429
work in progress 2: DatabaseTracker is now only accessed from DBBackend::Server + moving more stuff to DatabaseManager and the server.

Attachment 179429 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15311587</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791410</commentid>
    <comment_count>8</comment_count>
      <attachid>179429</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 00:21:00 -0800</bug_when>
    <thetext>Comment on attachment 179429
work in progress 2: DatabaseTracker is now only accessed from DBBackend::Server + moving more stuff to DatabaseManager and the server.

Attachment 179429 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15317579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791413</commentid>
    <comment_count>9</comment_count>
      <attachid>179437</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-14 00:25:38 -0800</bug_when>
    <thetext>Created attachment 179437
wip2: + fixed chromium breakage. test ews again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791428</commentid>
    <comment_count>10</comment_count>
      <attachid>179437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 00:36:37 -0800</bug_when>
    <thetext>Comment on attachment 179437
wip2: + fixed chromium breakage. test ews again.

Attachment 179437 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15316634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791432</commentid>
    <comment_count>11</comment_count>
      <attachid>179441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-14 00:45:31 -0800</bug_when>
    <thetext>Created attachment 179441
wip2: + fixed 2nd chromium breakage. test ews again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791448</commentid>
    <comment_count>12</comment_count>
      <attachid>179444</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-14 01:06:45 -0800</bug_when>
    <thetext>Created attachment 179444
wp2: svn up&apos;ed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793214</commentid>
    <comment_count>13</comment_count>
      <attachid>179842</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-17 17:56:39 -0800</bug_when>
    <thetext>Created attachment 179842
The final (hopefully) patch.

This patch performs some initial refactoring to split Database functionality between the front-end DatabaseManager and the backend DBBackend::Server.  With this patch,
1. All DatabaseTracker accesses now go thru the DBBackend::Server.
2. Database::openDatabase() and DatabaseSync::openDatabaseSync() factory methods have been moved into the DatabaseManager.
3. AbstractDatabase::isAvailable() and AbstractDatabase::setIsAvailable() have been moved into the DatabaseManager.
4. Added DatabaseBasicTypes.h to hold common basic / primitive types that the webdatabase module uses.

This refactoring does not change how the code flows / works yet.  It only moves and renames things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793221</commentid>
    <comment_count>14</comment_count>
      <attachid>179842</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-17 18:13:12 -0800</bug_when>
    <thetext>Comment on attachment 179842
The final (hopefully) patch.

Attachment 179842 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15374929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793222</commentid>
    <comment_count>15</comment_count>
      <attachid>179842</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-17 18:13:33 -0800</bug_when>
    <thetext>Comment on attachment 179842
The final (hopefully) patch.

Attachment 179842 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15374928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793256</commentid>
    <comment_count>16</comment_count>
      <attachid>179855</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-17 18:49:39 -0800</bug_when>
    <thetext>Created attachment 179855
The fixed patch: added needed #include&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793275</commentid>
    <comment_count>17</comment_count>
      <attachid>179863</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-17 19:21:06 -0800</bug_when>
    <thetext>Created attachment 179863
The fixed patch minus some development changes in the Xcode project not ready for a commit yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794130</commentid>
    <comment_count>18</comment_count>
      <attachid>179863</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-12-18 16:05:06 -0800</bug_when>
    <thetext>Comment on attachment 179863
The fixed patch minus some development changes in the Xcode project not ready for a commit yet.

Seeing the pattern that this is largely a refactor that is shuffling code around, I didn&apos;t look at certain pieces of it in depth.  Seems fine as long as layouttests pass, etc etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794161</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-18 16:30:01 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 179863 [details])
&gt; Seeing the pattern that this is largely a refactor that is shuffling code around, I didn&apos;t look at certain pieces of it in depth.  Seems fine as long as layouttests pass, etc etc.

Yes, this phase of the refactor is largely just shuffling code.

The patch has been landed in r138085: &lt;http://trac.webkit.org/changeset/138085&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794177</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-18 16:41:13 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 179863 [details] [details])
&gt; &gt; Seeing the pattern that this is largely a refactor that is shuffling code around, I didn&apos;t look at certain pieces of it in depth.  Seems fine as long as layouttests pass, etc etc.
&gt; 
&gt; Yes, this phase of the refactor is largely just shuffling code.
&gt; 
&gt; The patch has been landed in r138085: &lt;http://trac.webkit.org/changeset/138085&gt;.

r138085 seems very broken. In particular, at least one file is completely doubled (i.e., contains two copies of the same thing), resulting in compile failures:

http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/webdatabase/DBBackendServer.cpp?rev=138085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794178</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-18 16:44:04 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (From update of attachment 179863 [details] [details] [details])
&gt; &gt; &gt; Seeing the pattern that this is largely a refactor that is shuffling code around, I didn&apos;t look at certain pieces of it in depth.  Seems fine as long as layouttests pass, etc etc.
&gt; &gt; 
&gt; &gt; Yes, this phase of the refactor is largely just shuffling code.
&gt; &gt; 
&gt; &gt; The patch has been landed in r138085: &lt;http://trac.webkit.org/changeset/138085&gt;.
&gt; 
&gt; r138085 seems very broken. In particular, at least one file is completely doubled (i.e., contains two copies of the same thing), resulting in compile failures:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/webdatabase/DBBackendServer.cpp?rev=138085

My apologies.  It looks like a merge issue in my local files.  I&apos;m fixing it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794184</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-18 16:54:07 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; My apologies.  It looks like a merge issue in my local files.  I&apos;m fixing it now.

Fixed and landed in r138088: &lt;http://trac.webkit.org/changeset/138088&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179186</attachid>
            <date>2012-12-12 20:39:58 -0800</date>
            <delta_ts>2012-12-12 20:49:24 -0800</delta_ts>
            <desc>work in progress 1.</desc>
            <filename>bug-104748-wip1.patch</filename>
            <type>text/plain</type>
            <size>44886</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw2ICsxNzkzLDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAg
ICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmNwcAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0v
RHJhZ0RhdGEuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIwODYsNiArMjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwIFwKQEAgLTIxMDksNiArMjExMCw3IEBAIHdlYmNvcmVfbW9kdWxl
c19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJh
Y2tlbmRTZXJ2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5RdW90YU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpblF1b3RhTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcCBcCkBAIC01MjkxLDYgKzUyOTMsOCBAQCB3ZWJjb3Jl
X3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJh
c2VTdHJhdGVneS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtOTQ1LDYgKzk0NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5
LmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKICAgICBwbGF0Zm9ybS9E
ZWNpbWFsLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKQEAgLTE0MDksNiArMTQx
MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIFwKICAgICBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZVNlcnZlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCkBAIC0xNDE5LDYg
KzE0MjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggXAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQzNCw2ICs0MzQsNyBAQCBf
X1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRM
aW5rSGFzaEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4
ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZB
cHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKK19fWk43V2ViQ29yZTE2RGF0YWJhc2VTdHJhdGVneTE3Z2V0RGF0YWJhc2VTZXJ2ZXJFdgog
X19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJBY2NlbGVyYXRpb242Y3JlYXRlRWJkYmRi
ZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJk
YmRiZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOUzBfMTJBY2NlbGVyYXRpb25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw2ICs5ODIsNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9XYXZlVGFibGUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwJywKQEAgLTk5OCw2ICs5OTksNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCcsCisgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKKyNkZWZpbmUgQWJzdHJhY3REYXRh
YmFzZVNlcnZlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGljOgorCitwcm90
ZWN0ZWQ6CisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgfkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBBYnN0cmFjdERh
dGFiYXNlU2VydmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
REJCYWNrZW5kU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBEQkJhY2tlbmRTZXJ2ZXJfaAorI2RlZmluZSBEQkJhY2tlbmRTZXJ2ZXJf
aAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7
CisKK2NsYXNzIFNlcnZlcjogcHVibGljIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGlj
OgorICAgIFNlcnZlcigpIHsgfTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXIoKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIERCQmFja2VuZAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERCQmFja2VuZFNlcnZlcl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDEzIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNpbmNsdWRl
ICJEYXRhYmFzZVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkRCQmFja2VuZFNlcnZlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKQpA
QCAtNDYsNiArNTMsMTEgQEAgRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZQogCiBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiB7CisjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCisgICAgbV9zZXJ2ZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0
YWJhc2VTdHJhdGVneSgpLT5nZXREYXRhYmFzZVNlcnZlcigpOworI2Vsc2UKKyAgICBtX3NlcnZl
ciA9IG5ldyBEQkJhY2tlbmQ6OlNlcnZlcjsKKyNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aAkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI7CiBjbGFz
cyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTg1LDYgKzg2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBEYXRhYmFzZU1hbmFnZXIoKTsKICAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisK
KyAgICBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBtX3NlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxOTcsNiArMjUxOTcsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC0yNTI3Myw2ICsyNTI3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpAQCAtMjgzODIsNiArMjgzOTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0YWJhc2VTdHJhdGVneS5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0ZUNvbXBvbmVudHMuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4Myw4
ICszNjgzLDYgQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKIAkJOTdC
QzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFp
bHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTQ1NkYxODE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuY3BwICovOyB9OwotCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1
NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNw
cCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTkxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JDNkEyRDE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRh
c2suY3BwICovOyB9OwpAQCAtNjY0MSw2ICs2NjM5LDkgQEAKIAkJRkRGNkJBRjkxMzRBNEM5ODAw
ODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAg
LyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMxM0FD
MjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVk
aW9CdWZmZXJDYWxsYmFjay5oICovOyB9OworCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyog
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OworCQlGRTQ1NkYxOTE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4NTBGNjc2RTU3MDAw
OTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZG
RDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi87IH07CiAJCUZFNkZE
NDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyog
SlNDb29yZGluYXRlcy5oICovOyB9OwpAQCAtNjY1Miw2ICs2NjUzLDkgQEAKIAkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkVBRjY2NTQxNjc5NzAzMjAw
NjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKKwkJRkVERUY4NDIxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFz
ZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkY5NDVFQ0IxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovOyB9OwogCQlGRjk0NUVDQzE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuaCAqLzsgfTsKIAkJRkZENUI5N0ExMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9
OwpAQCAtMTQxOTAsNiArMTQxOTQsNyBAQAogCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyog
SlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJD
YWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlD
MjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3RE
YXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFj
dERhdGFiYXNlU2VydmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDIwNCw2ICsxNDIwOSw5IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBE
NkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyog
REJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERCQmFj
a2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3
MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBzZXVkb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5Nzcx
MzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI1Miw2ICsxODI2MCw3IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAg
Ki8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAq
LywKKwkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oICovLAogCQkJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAgKi8sCiAJCQkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNp
b25XcmFwcGVyLmggKi8sCiAJCQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
LmNwcCAqLywKQEAgLTE4Mjc2LDYgKzE4Mjg1LDcgQEAKIAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1
IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAv
KiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3
Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUxNTFGODM1QTAw
QUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCAqLywKQEAgLTIxMDMxLDYgKzIxMDQx
LDggQEAKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIu
aCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKIAkJ
CQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCisJCQkJRkVERUY4M0Yx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovLAorCQkJCUZFREVGODQw
MTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8sCiAJCQkJQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlBNTczMkIwOTEz
NkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZFQTVDRDE1NkRE
RThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2ICsyMjU3OSw5IEBACiAJ
CQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0
YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5
MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQUY2
NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFk
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDIxLDYgKzI5MDM2LDcgQEAKIAkJCQlGREE5MzI1RDE2
NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5Lmgi
CisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkRCQmFja2VuZFNl
cnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIq
IERhdGFiYXNlU3RyYXRlZ3k6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1cm4gbmV3
IERCQmFja2VuZDo6U2VydmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBE
YXRhYmFzZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0YWJhc2VTdHJhdGVneV9oCisKKyNpZiBVU0Uo
UExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFiYXNlU2Vy
dmVyKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZVN0cmF0ZWd5KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1f
U1RSQVRFR0lFUykKKworI2VuZGlmIC8vIERhdGFiYXNlU3RyYXRlZ3lfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvb2tpZXNTdHJhdGVneTsKK2NsYXNzIERhdGFiYXNlU3RyYXRlZ3k7CiBjbGFzcyBMb2FkZXJT
dHJhdGVneTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIGNsYXNzIFBsdWdpblN0cmF0ZWd5
OwpAQCAtNDYsNiArNDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb29raWVzU3Ry
YXRlZ3k7CiAgICAgfQogCisgICAgRGF0YWJhc2VTdHJhdGVneSogZGF0YWJhc2VTdHJhdGVneSgp
CisgICAgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2VTdHJhdGVneSkKKyAgICAgICAgICAgIG1f
ZGF0YWJhc2VTdHJhdGVneSA9IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YWJhc2VTdHJhdGVneTsKKyAgICB9CisKICAgICBMb2FkZXJTdHJhdGVneSogbG9h
ZGVyU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xvYWRlclN0cmF0ZWd5KQpAQCAt
ODQsNiArOTIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1TdHJhdGVnaWVz
KCkKICAgICAgICAgOiBtX2Nvb2tpZXNTdHJhdGVneSgwKQorICAgICAgICAsIG1fZGF0YWJhc2VT
dHJhdGVneSgwKQogICAgICAgICAsIG1fbG9hZGVyU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX3Bh
c3RlYm9hcmRTdHJhdGVneSgwKQogICAgICAgICAsIG1fcGx1Z2luU3RyYXRlZ3koMCkKQEAgLTk4
LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIENvb2tpZXNT
dHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJh
c2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIExv
YWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgPSAwOwogICAgIHZp
cnR1YWwgUGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgPSAwOwpAQCAtMTA1
LDYgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBj
cmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgPSAwOwogCiAgICAgQ29va2llc1N0cmF0ZWd5KiBt
X2Nvb2tpZXNTdHJhdGVneTsKKyAgICBEYXRhYmFzZVN0cmF0ZWd5KiBtX2RhdGFiYXNlU3RyYXRl
Z3k7CiAgICAgTG9hZGVyU3RyYXRlZ3kqIG1fbG9hZGVyU3RyYXRlZ3k7CiAgICAgUGFzdGVib2Fy
ZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneTsKICAgICBQbHVnaW5TdHJhdGVneSogbV9w
bHVnaW5TdHJhdGVneTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJ
KHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJl
dHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2Fk
ZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgp
CiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0yMzMsNiArMjM4LDEzIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVz
KGNvbnRleHQpOwogfQogCisvLyBEYXRhYmFzZVN0cmF0ZWd5CisKK0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKQoreworICAg
IHJldHVybiBEYXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpOyAvLyBVc2UgdGhl
IGRlZmF1bHQgZm9yIG5vdy4KK30KKwogLy8gTG9hZGVyU3RyYXRlZ3kKIAogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJl
dmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFz
dGVib2FyZFN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
aD4KQEAgLTM4LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlBs
YXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0
ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
ICAgICAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSog
Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRl
UGFzdGVib2FyZFN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKSBPVkVSUklERTsKQEAgLTY4LDYgKzcw
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqKSBPVkVSUklERTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFi
YXNlU2VydmVyKCkgT1ZFUlJJREU7CisKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneQog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIE9WRVJSSURFOwpJbmRleDog
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7
Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRl
clN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShy
ZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2Rl
ZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTM3LDYgKzM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3ko
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNl
U3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVM
b2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5
KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTUsNiArNTcsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbklu
Zm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0MywxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRl
Z2llc0d0azo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNyZWF0
ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0
ay5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBA
QAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGtfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0
cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yNyw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNs
YXNzIFBsYXRmb3JtU3RyYXRlZ2llc0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzR3RrIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTM2
LDYgKzM3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3Ry
YXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURh
dGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBj
cmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTQsNiArNTYsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCop
OwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAg
ICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBs
dWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19o
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3ku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0zNCw3ICszNSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRl
ZExpbmtTdHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6Okxv
YWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Myw2ICs0NCw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmly
dHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0
YWJhc2VTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0
cmF0ZWd5KCkgT1ZFUlJJREU7CkBAIC02Miw2ICs2NCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KikgT1ZFUlJJREU7CiAK
KyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2
aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAxMzc1
NjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIENvb2tpZXNTdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsKIH0KIAorRGF0YWJh
c2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5
KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw2ICs2NSwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0
OjpjCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc1F0OjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsK
K30KKwogTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVMb2FkZXJT
dHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZpc2lv
biAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgUGxh
dGZvcm1TdHJhdGVnaWVzUXRfaAogCiAjaW5jbHVkZSA8Q29va2llc1N0cmF0ZWd5Lmg+CisjaW5j
bHVkZSA8RGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPExvYWRlclN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3ku
aD4KQEAgLTQ4LDYgKzQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3Jt
U3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVD
b29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kq
IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0
cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFz
dGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNjYs
NiArNjgsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0g
VXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2
b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzc1NjMp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMSBAQCBDb29raWVzU3RyYXRlZ3kq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNl
U3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgp
Cit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTMgKzI3LDE0IEBACiAjZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0
YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclN0cmF0ZWd5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpdGVkTGlua1N0cmF0ZWd5Lmg+CiAKLWNsYXNzIFdl
YlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kgeworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Miw2
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNT
dHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRl
RGF0YWJhc2VTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kq
IGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJk
U3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7CkBAIC02Myw2ICs2NSw5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
Kik7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kK
ICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkocmV2aXNpb24gMTM3NTYz
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDExIEBAIENvb2tpZXNTdHJh
dGVneSogUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UKICAgICByZXR1cm4gdGhpczsKIH0KIAorRGF0
YWJhc2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNyZWF0ZURhdGFiYXNlU3Ry
YXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVneSogUGxhdGZv
cm1TdHJhdGVnaWVzV2luQ0U6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4g
dGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEzNzU2MykKKysr
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDE0IEBACiAjZGVmaW5lIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFX2gKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpblN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdl
YkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1
Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRSA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpOwogCkBAIC00MSw2ICs0Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRh
YmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRl
Z3koKTsKQEAgLTU5LDYgKzYxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqKTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kKKyAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsK
</data>
<flag name="commit-queue"
          id="195962"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179188</attachid>
            <date>2012-12-12 20:49:24 -0800</date>
            <delta_ts>2012-12-12 23:12:40 -0800</delta_ts>
            <desc>work in progress again: fixed Qt issue.</desc>
            <filename>bug-104748-wip1.patch</filename>
            <type>text/plain</type>
            <size>45521</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw2ICsxNzkzLDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAg
ICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmNwcAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0v
RHJhZ0RhdGEuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIwODYsNiArMjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwIFwKQEAgLTIxMDksNiArMjExMCw3IEBAIHdlYmNvcmVfbW9kdWxl
c19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJh
Y2tlbmRTZXJ2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5RdW90YU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpblF1b3RhTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcCBcCkBAIC01MjkxLDYgKzUyOTMsOCBAQCB3ZWJjb3Jl
X3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJh
c2VTdHJhdGVneS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtOTQ1LDYgKzk0NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5
LmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKICAgICBwbGF0Zm9ybS9E
ZWNpbWFsLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKQEAgLTE0MDksNiArMTQx
MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIFwKICAgICBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZVNlcnZlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCkBAIC0xNDE5LDYg
KzE0MjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggXAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQzNCw2ICs0MzQsNyBAQCBf
X1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRM
aW5rSGFzaEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4
ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZB
cHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKK19fWk43V2ViQ29yZTE2RGF0YWJhc2VTdHJhdGVneTE3Z2V0RGF0YWJhc2VTZXJ2ZXJFdgog
X19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJBY2NlbGVyYXRpb242Y3JlYXRlRWJkYmRi
ZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJk
YmRiZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOUzBfMTJBY2NlbGVyYXRpb25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw2ICs5ODIsNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9XYXZlVGFibGUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwJywKQEAgLTk5OCw2ICs5OTksNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCcsCisgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKKyNkZWZpbmUgQWJzdHJhY3REYXRh
YmFzZVNlcnZlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGljOgorCitwcm90
ZWN0ZWQ6CisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgfkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBBYnN0cmFjdERh
dGFiYXNlU2VydmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
REJCYWNrZW5kU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBEQkJhY2tlbmRTZXJ2ZXJfaAorI2RlZmluZSBEQkJhY2tlbmRTZXJ2ZXJf
aAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7
CisKK2NsYXNzIFNlcnZlcjogcHVibGljIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGlj
OgorICAgIFNlcnZlcigpIHsgfTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXIoKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIERCQmFja2VuZAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERCQmFja2VuZFNlcnZlcl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDEzIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNpbmNsdWRl
ICJEYXRhYmFzZVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkRCQmFja2VuZFNlcnZlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKQpA
QCAtNDYsNiArNTMsMTEgQEAgRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZQogCiBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiB7CisjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCisgICAgbV9zZXJ2ZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0
YWJhc2VTdHJhdGVneSgpLT5nZXREYXRhYmFzZVNlcnZlcigpOworI2Vsc2UKKyAgICBtX3NlcnZl
ciA9IG5ldyBEQkJhY2tlbmQ6OlNlcnZlcjsKKyNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aAkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI7CiBjbGFz
cyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTg1LDYgKzg2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBEYXRhYmFzZU1hbmFnZXIoKTsKICAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisK
KyAgICBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBtX3NlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxOTcsNiArMjUxOTcsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC0yNTI3Myw2ICsyNTI3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpAQCAtMjgzODIsNiArMjgzOTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0YWJhc2VTdHJhdGVneS5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0ZUNvbXBvbmVudHMuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4Myw4
ICszNjgzLDYgQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKIAkJOTdC
QzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFp
bHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTQ1NkYxODE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuY3BwICovOyB9OwotCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1
NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNw
cCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTkxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JDNkEyRDE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRh
c2suY3BwICovOyB9OwpAQCAtNjY0MSw2ICs2NjM5LDkgQEAKIAkJRkRGNkJBRjkxMzRBNEM5ODAw
ODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAg
LyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMxM0FD
MjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVk
aW9CdWZmZXJDYWxsYmFjay5oICovOyB9OworCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyog
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OworCQlGRTQ1NkYxOTE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4NTBGNjc2RTU3MDAw
OTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZG
RDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi87IH07CiAJCUZFNkZE
NDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyog
SlNDb29yZGluYXRlcy5oICovOyB9OwpAQCAtNjY1Miw2ICs2NjUzLDkgQEAKIAkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkVBRjY2NTQxNjc5NzAzMjAw
NjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKKwkJRkVERUY4NDIxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFz
ZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkY5NDVFQ0IxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovOyB9OwogCQlGRjk0NUVDQzE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuaCAqLzsgfTsKIAkJRkZENUI5N0ExMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9
OwpAQCAtMTQxOTAsNiArMTQxOTQsNyBAQAogCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyog
SlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJD
YWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlD
MjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3RE
YXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFj
dERhdGFiYXNlU2VydmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDIwNCw2ICsxNDIwOSw5IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBE
NkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyog
REJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERCQmFj
a2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3
MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBzZXVkb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5Nzcx
MzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI1Miw2ICsxODI2MCw3IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAg
Ki8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAq
LywKKwkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oICovLAogCQkJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAgKi8sCiAJCQkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNp
b25XcmFwcGVyLmggKi8sCiAJCQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
LmNwcCAqLywKQEAgLTE4Mjc2LDYgKzE4Mjg1LDcgQEAKIAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1
IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAv
KiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3
Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUxNTFGODM1QTAw
QUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCAqLywKQEAgLTIxMDMxLDYgKzIxMDQx
LDggQEAKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIu
aCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKIAkJ
CQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCisJCQkJRkVERUY4M0Yx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovLAorCQkJCUZFREVGODQw
MTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8sCiAJCQkJQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlBNTczMkIwOTEz
NkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZFQTVDRDE1NkRE
RThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2ICsyMjU3OSw5IEBACiAJ
CQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0
YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5
MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQUY2
NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFk
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDIxLDYgKzI5MDM2LDcgQEAKIAkJCQlGREE5MzI1RDE2
NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5Lmgi
CisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkRCQmFja2VuZFNl
cnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIq
IERhdGFiYXNlU3RyYXRlZ3k6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1cm4gbmV3
IERCQmFja2VuZDo6U2VydmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBE
YXRhYmFzZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0YWJhc2VTdHJhdGVneV9oCisKKyNpZiBVU0Uo
UExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFiYXNlU2Vy
dmVyKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZVN0cmF0ZWd5KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1f
U1RSQVRFR0lFUykKKworI2VuZGlmIC8vIERhdGFiYXNlU3RyYXRlZ3lfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvb2tpZXNTdHJhdGVneTsKK2NsYXNzIERhdGFiYXNlU3RyYXRlZ3k7CiBjbGFzcyBMb2FkZXJT
dHJhdGVneTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIGNsYXNzIFBsdWdpblN0cmF0ZWd5
OwpAQCAtNDYsNiArNDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb29raWVzU3Ry
YXRlZ3k7CiAgICAgfQogCisgICAgRGF0YWJhc2VTdHJhdGVneSogZGF0YWJhc2VTdHJhdGVneSgp
CisgICAgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2VTdHJhdGVneSkKKyAgICAgICAgICAgIG1f
ZGF0YWJhc2VTdHJhdGVneSA9IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YWJhc2VTdHJhdGVneTsKKyAgICB9CisKICAgICBMb2FkZXJTdHJhdGVneSogbG9h
ZGVyU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xvYWRlclN0cmF0ZWd5KQpAQCAt
ODQsNiArOTIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1TdHJhdGVnaWVz
KCkKICAgICAgICAgOiBtX2Nvb2tpZXNTdHJhdGVneSgwKQorICAgICAgICAsIG1fZGF0YWJhc2VT
dHJhdGVneSgwKQogICAgICAgICAsIG1fbG9hZGVyU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX3Bh
c3RlYm9hcmRTdHJhdGVneSgwKQogICAgICAgICAsIG1fcGx1Z2luU3RyYXRlZ3koMCkKQEAgLTk4
LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIENvb2tpZXNT
dHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJh
c2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIExv
YWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgPSAwOwogICAgIHZp
cnR1YWwgUGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgPSAwOwpAQCAtMTA1
LDYgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBj
cmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgPSAwOwogCiAgICAgQ29va2llc1N0cmF0ZWd5KiBt
X2Nvb2tpZXNTdHJhdGVneTsKKyAgICBEYXRhYmFzZVN0cmF0ZWd5KiBtX2RhdGFiYXNlU3RyYXRl
Z3k7CiAgICAgTG9hZGVyU3RyYXRlZ3kqIG1fbG9hZGVyU3RyYXRlZ3k7CiAgICAgUGFzdGVib2Fy
ZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneTsKICAgICBQbHVnaW5TdHJhdGVneSogbV9w
bHVnaW5TdHJhdGVneTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJ
KHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJl
dHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2Fk
ZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgp
CiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0yMzMsNiArMjM4LDEzIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVz
KGNvbnRleHQpOwogfQogCisvLyBEYXRhYmFzZVN0cmF0ZWd5CisKK0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKQoreworICAg
IHJldHVybiBEYXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpOyAvLyBVc2UgdGhl
IGRlZmF1bHQgZm9yIG5vdy4KK30KKwogLy8gTG9hZGVyU3RyYXRlZ3kKIAogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJl
dmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFz
dGVib2FyZFN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
aD4KQEAgLTM4LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlBs
YXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0
ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
ICAgICAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSog
Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRl
UGFzdGVib2FyZFN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKSBPVkVSUklERTsKQEAgLTY4LDYgKzcw
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqKSBPVkVSUklERTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFi
YXNlU2VydmVyKCkgT1ZFUlJJREU7CisKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneQog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIE9WRVJSSURFOwpJbmRleDog
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7
Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRl
clN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShy
ZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2Rl
ZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTM3LDYgKzM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3ko
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNl
U3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVM
b2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5
KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTUsNiArNTcsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbklu
Zm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0MywxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRl
Z2llc0d0azo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNyZWF0
ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0
ay5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBA
QAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGtfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0
cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yNyw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNs
YXNzIFBsYXRmb3JtU3RyYXRlZ2llc0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzR3RrIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTM2
LDYgKzM3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3Ry
YXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURh
dGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBj
cmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTQsNiArNTYsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCop
OwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAg
ICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBs
dWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19o
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3ku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0zNCw3ICszNSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRl
ZExpbmtTdHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6Okxv
YWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Myw2ICs0NCw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmly
dHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0
YWJhc2VTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0
cmF0ZWd5KCkgT1ZFUlJJREU7CkBAIC02Miw2ICs2NCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KikgT1ZFUlJJREU7CiAK
KyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2
aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAxMzc1
NjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIENvb2tpZXNTdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsKIH0KIAorRGF0YWJh
c2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5
KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw2ICs2NSwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0
OjpjCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc1F0OjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsK
K30KKwogTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVMb2FkZXJT
dHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZpc2lv
biAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgUGxh
dGZvcm1TdHJhdGVnaWVzUXRfaAogCiAjaW5jbHVkZSA8Q29va2llc1N0cmF0ZWd5Lmg+CisjaW5j
bHVkZSA8RGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPExvYWRlclN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3ku
aD4KQEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFzdGVib2Fy
ZFN0cmF0ZWd5OwogfQogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdCA6IHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVz
UXQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemUoKTsKIApAQCAtNDgsNiArNDksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kq
IGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7
CkBAIC02Niw2ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0Kik7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Cisg
ICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6
UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9u
IDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDExIEBAIENvb2tpZXNT
dHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsKIH0KIAor
RGF0YWJhc2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0
cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0
aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxMyArMjcsMTQgQEAKICNkZWZpbmUgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZVN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVn
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5TdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2Vy
U3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4KIAot
Y2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6Okxv
YWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5r
U3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICAK
QEAgLTQyLDYgKzQzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRl
Q29va2llc1N0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5
KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBh
c3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKQEAgLTYz
LDYgKzY1LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2lu
Z0NvbnRleHQqKTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKKyAgICAvLyAt
IFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5T
dHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCShyZXZpc2lv
biAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTEgQEAgQ29v
a2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRQogICAgIHJldHVybiB0aGlzOwog
fQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlRGF0
YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5
KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAg
IHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAkocmV2aXNpb24gMTM3
NTYzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTQgQEAKICNkZWZpbmUg
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5Lmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luU3Ry
YXRlZ3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZp
c2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UgOiBw
dWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tp
ZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJp
dmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29v
a2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3Ry
YXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVn
aW5TdHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2ll
cyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAg
IC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVn
aW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFn
ZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwo=
</data>
<flag name="commit-queue"
          id="195974"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179207</attachid>
            <date>2012-12-12 23:12:40 -0800</date>
            <delta_ts>2012-12-13 23:48:18 -0800</delta_ts>
            <desc>wip1: attempt at fixing the elf build failure.</desc>
            <filename>bug-104748-wip1.patch</filename>
            <type>text/plain</type>
            <size>46046</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc5Myw2ICsxNzkzLDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAg
ICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmNwcAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0v
RHJhZ0RhdGEuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIwODYsNiArMjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwIFwKQEAgLTIxMDksNiArMjExMCw3IEBAIHdlYmNvcmVfbW9kdWxl
c19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJh
Y2tlbmRTZXJ2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5RdW90YU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpblF1b3RhTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcCBcCkBAIC01MjkxLDYgKzUyOTMsOCBAQCB3ZWJjb3Jl
X3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJh
c2VTdHJhdGVneS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtOTQ1LDYgKzk0NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5
LmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKICAgICBwbGF0Zm9ybS9E
ZWNpbWFsLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKQEAgLTE0MDksNiArMTQx
MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIFwKICAgICBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZVNlcnZlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCkBAIC0xNDE5LDYg
KzE0MjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggXAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQzNCw2ICs0MzQsNyBAQCBf
X1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRM
aW5rSGFzaEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4
ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZB
cHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKK19fWk43V2ViQ29yZTE2RGF0YWJhc2VTdHJhdGVneTE3Z2V0RGF0YWJhc2VTZXJ2ZXJFdgog
X19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJBY2NlbGVyYXRpb242Y3JlYXRlRWJkYmRi
ZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJk
YmRiZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOUzBfMTJBY2NlbGVyYXRpb25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw2ICs5ODIsNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9XYXZlVGFibGUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwJywKQEAgLTk5OCw2ICs5OTksNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCcsCisgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKKyNkZWZpbmUgQWJzdHJhY3REYXRh
YmFzZVNlcnZlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGljOgorCitwcm90
ZWN0ZWQ6CisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgfkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBBYnN0cmFjdERh
dGFiYXNlU2VydmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
REJCYWNrZW5kU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBEQkJhY2tlbmRTZXJ2ZXJfaAorI2RlZmluZSBEQkJhY2tlbmRTZXJ2ZXJf
aAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7
CisKK2NsYXNzIFNlcnZlcjogcHVibGljIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGlj
OgorICAgIFNlcnZlcigpIHsgfTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXIoKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIERCQmFja2VuZAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERCQmFja2VuZFNlcnZlcl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDEzIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNpbmNsdWRl
ICJEYXRhYmFzZVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkRCQmFja2VuZFNlcnZlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKQpA
QCAtNDYsNiArNTMsMTEgQEAgRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZQogCiBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiB7CisjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCisgICAgbV9zZXJ2ZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0
YWJhc2VTdHJhdGVneSgpLT5nZXREYXRhYmFzZVNlcnZlcigpOworI2Vsc2UKKyAgICBtX3NlcnZl
ciA9IG5ldyBEQkJhY2tlbmQ6OlNlcnZlcjsKKyNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aAkocmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI7CiBjbGFz
cyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTg1LDYgKzg2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBEYXRhYmFzZU1hbmFnZXIoKTsKICAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisK
KyAgICBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBtX3NlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxOTcsNiArMjUxOTcsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC0yNTI3Myw2ICsyNTI3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpAQCAtMjgzODIsNiArMjgzOTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0YWJhc2VTdHJhdGVneS5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGF0ZUNvbXBvbmVudHMuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4Myw4
ICszNjgzLDYgQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKIAkJOTdC
QzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFp
bHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTQ1NkYxODE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuY3BwICovOyB9OwotCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1
NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNw
cCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTkxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JDNkEyRDE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRh
c2suY3BwICovOyB9OwpAQCAtNjY0MSw2ICs2NjM5LDkgQEAKIAkJRkRGNkJBRjkxMzRBNEM5ODAw
ODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAg
LyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMxM0FD
MjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVk
aW9CdWZmZXJDYWxsYmFjay5oICovOyB9OworCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyog
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OworCQlGRTQ1NkYxOTE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4NTBGNjc2RTU3MDAw
OTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZG
RDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi87IH07CiAJCUZFNkZE
NDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyog
SlNDb29yZGluYXRlcy5oICovOyB9OwpAQCAtNjY1Miw2ICs2NjUzLDkgQEAKIAkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkVBRjY2NTQxNjc5NzAzMjAw
NjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKKwkJRkVERUY4NDIxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFz
ZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkY5NDVFQ0IxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovOyB9OwogCQlGRjk0NUVDQzE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuaCAqLzsgfTsKIAkJRkZENUI5N0ExMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9
OwpAQCAtMTQxOTAsNiArMTQxOTQsNyBAQAogCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyog
SlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJD
YWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlD
MjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3RE
YXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFj
dERhdGFiYXNlU2VydmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDIwNCw2ICsxNDIwOSw5IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBE
NkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyog
REJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERCQmFj
a2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3
MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBzZXVkb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5Nzcx
MzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI1Miw2ICsxODI2MCw3IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAg
Ki8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAq
LywKKwkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oICovLAogCQkJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAgKi8sCiAJCQkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNp
b25XcmFwcGVyLmggKi8sCiAJCQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
LmNwcCAqLywKQEAgLTE4Mjc2LDYgKzE4Mjg1LDcgQEAKIAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1
IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAv
KiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3
Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUxNTFGODM1QTAw
QUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCAqLywKQEAgLTIxMDMxLDYgKzIxMDQx
LDggQEAKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIu
aCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKIAkJ
CQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCisJCQkJRkVERUY4M0Yx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovLAorCQkJCUZFREVGODQw
MTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8sCiAJCQkJQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlBNTczMkIwOTEz
NkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZFQTVDRDE1NkRE
RThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2ICsyMjU3OSw5IEBACiAJ
CQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0
YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5
MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQUY2
NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFk
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDIxLDYgKzI5MDM2LDcgQEAKIAkJCQlGREE5MzI1RDE2
NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5Lmgi
CisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkRCQmFja2VuZFNl
cnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIq
IERhdGFiYXNlU3RyYXRlZ3k6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1cm4gbmV3
IERCQmFja2VuZDo6U2VydmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBE
YXRhYmFzZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0YWJhc2VTdHJhdGVneV9oCisKKyNpZiBVU0Uo
UExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFiYXNlU2Vy
dmVyKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZVN0cmF0ZWd5KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1f
U1RSQVRFR0lFUykKKworI2VuZGlmIC8vIERhdGFiYXNlU3RyYXRlZ3lfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvb2tpZXNTdHJhdGVneTsKK2NsYXNzIERhdGFiYXNlU3RyYXRlZ3k7CiBjbGFzcyBMb2FkZXJT
dHJhdGVneTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIGNsYXNzIFBsdWdpblN0cmF0ZWd5
OwpAQCAtNDYsNiArNDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb29raWVzU3Ry
YXRlZ3k7CiAgICAgfQogCisgICAgRGF0YWJhc2VTdHJhdGVneSogZGF0YWJhc2VTdHJhdGVneSgp
CisgICAgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2VTdHJhdGVneSkKKyAgICAgICAgICAgIG1f
ZGF0YWJhc2VTdHJhdGVneSA9IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YWJhc2VTdHJhdGVneTsKKyAgICB9CisKICAgICBMb2FkZXJTdHJhdGVneSogbG9h
ZGVyU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xvYWRlclN0cmF0ZWd5KQpAQCAt
ODQsNiArOTIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1TdHJhdGVnaWVz
KCkKICAgICAgICAgOiBtX2Nvb2tpZXNTdHJhdGVneSgwKQorICAgICAgICAsIG1fZGF0YWJhc2VT
dHJhdGVneSgwKQogICAgICAgICAsIG1fbG9hZGVyU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX3Bh
c3RlYm9hcmRTdHJhdGVneSgwKQogICAgICAgICAsIG1fcGx1Z2luU3RyYXRlZ3koMCkKQEAgLTk4
LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIENvb2tpZXNT
dHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJh
c2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIExv
YWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgPSAwOwogICAgIHZp
cnR1YWwgUGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgPSAwOwpAQCAtMTA1
LDYgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBj
cmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgPSAwOwogCiAgICAgQ29va2llc1N0cmF0ZWd5KiBt
X2Nvb2tpZXNTdHJhdGVneTsKKyAgICBEYXRhYmFzZVN0cmF0ZWd5KiBtX2RhdGFiYXNlU3RyYXRl
Z3k7CiAgICAgTG9hZGVyU3RyYXRlZ3kqIG1fbG9hZGVyU3RyYXRlZ3k7CiAgICAgUGFzdGVib2Fy
ZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneTsKICAgICBQbHVnaW5TdHJhdGVneSogbV9w
bHVnaW5TdHJhdGVneTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc1NjMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvbmV0d29ya2luZm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
bm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRpb24iCisg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzIgogICAg
ICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncyIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNiArNzYsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlz
OworfQorCiBMb2FkZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0yMzMsNiArMjM4LDEzIEBAIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KICAgICBXZWJDb3JlOjpkZWxl
dGVBbGxDb29raWVzKGNvbnRleHQpOwogfQogCisvLyBEYXRhYmFzZVN0cmF0ZWd5CisKK0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2
ZXIoKQoreworICAgIHJldHVybiBEYXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigp
OyAvLyBVc2UgdGhlIGRlZmF1bHQgZm9yIG5vdy4KK30KKwogLy8gTG9hZGVyU3RyYXRlZ3kKIAog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAogI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVN0
cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFzdGVib2FyZFN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVN0cmF0ZWdpZXMuaD4KQEAgLTM4LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0
cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2Ns
YXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemUoKTsKICAgICAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAv
LyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tp
ZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVy
U3RyYXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKSBPVkVSUklERTsK
QEAgLTY4LDYgKzcwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqKSBPVkVSUklERTsKIAorICAgIC8vIFdlYkNvcmU6OkRh
dGFiYXNlU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIqIGdldERhdGFiYXNlU2VydmVyKCkgT1ZFUlJJREU7CisKICAgICAvLyBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIE9WRVJS
SURFOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kq
IFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAg
cmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiAr
MjEsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaAogCiAjaW5jbHVkZSAiQ29v
a2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5Lmgi
CiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZp
c2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGlj
IFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAK
QEAgLTM3LDYgKzM4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29r
aWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNy
ZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0
ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTUsNiAr
NTcsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNp
bmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lk
IGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShyZXZpc2lvbiAxMzc1NjMpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBs
YXRmb3JtU3RyYXRlZ2llc0d0azo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3Ry
YXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7
CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGs6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0d0ay5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNiArMjAsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGtfaAogCiAjaW5jbHVk
ZSAiQ29va2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yNyw3ICsyOCw3IEBACiAjaW5j
bHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0
ZWd5LmgiCiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzR3RrIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCk7CiAKQEAgLTM2LDYgKzM3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVh
dGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAt
NTQsNiArNTYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8v
IC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVh
bCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llc19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9h
ZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0zNCw3ICszNSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Myw2
ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNT
dHJhdGVneSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVn
eSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJh
dGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNy
ZWF0ZVBsdWdpblN0cmF0ZWd5KCkgT1ZFUlJJREU7CkBAIC02Miw2ICs2NCw5IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kikg
T1ZFUlJJREU7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgLy8gLSBV
c2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3Ry
YXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShy
ZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIENv
b2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsK
IH0KIAorRGF0YWJhc2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRh
YmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJl
dHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzNzU2MykKKysrIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0OjpjCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kq
IFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICBy
ZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpj
cmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5oCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzUXRfaAogCiAjaW5jbHVkZSA8Q29va2llc1N0cmF0
ZWd5Lmg+CisjaW5jbHVkZSA8RGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPExvYWRlclN0
cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8UGx1
Z2luU3RyYXRlZ3kuaD4KQEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUGFzdGVib2FyZFN0cmF0ZWd5OwogfQogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdCA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29v
a2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZv
cm1TdHJhdGVnaWVzUXQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemUoKTsKIApAQCAtNDgsNiArNDksNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJh
dGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdp
blN0cmF0ZWd5KCk7CkBAIC02Niw2ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVz
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kik7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAgICAg
Ly8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdp
bnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdl
KiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAJKHJldmlzaW9uIDEzNzU2MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEx
IEBAIENvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4g
dGhpczsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3Ry
YXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewog
ICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzU2MykK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTQgQEAKICNkZWZpbmUgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzX2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
b2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5TdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkV29ya2VyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3Ry
YXRlZ3kuaD4KIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKTsKICAgICAKQEAgLTQyLDYgKzQzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRh
YmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRl
Z3koKTsKQEAgLTYzLDYgKzY1LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqKTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kKKyAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
Y3BwCShyZXZpc2lvbiAxMzc1NjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRQogICAgIHJl
dHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExv
YWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlTG9hZGVyU3RyYXRl
Z3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAko
cmV2aXNpb24gMTM3NTYzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTQg
QEAKICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAjaW5jbHVkZSAiQ29va2ll
c1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVneS5oIgog
I2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0UgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2Ns
YXNzIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3ko
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJh
dGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQ
YXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lk
IHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179429</attachid>
            <date>2012-12-13 23:48:18 -0800</date>
            <delta_ts>2012-12-14 00:23:41 -0800</delta_ts>
            <desc>work in progress 2: DatabaseTracker is now only accessed from DBBackend::Server + moving more stuff to DatabaseManager and the server.</desc>
            <filename>bug-104748-wip2.patch</filename>
            <type>text/plain</type>
            <size>86645</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTEzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJh
c2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRs
eSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBYnN0cmFjdERhdGFi
YXNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI6OkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFz
ZVNlcnZlcjo6fkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoREJCYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vRGF0YWJhc2VTdHJh
dGVneS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0v
RGF0YWJhc2VTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Ojp+
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpQbGF0Zm9ybVN0cmF0ZWdpZXMp
OgorCiAyMDEyLTEyLTEzICBQYXJ0aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVp
bCA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVk
IGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTk1Miw2ICs5NTIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMRXhjZXB0aW9uLmNwcApAQCAtMTc5Myw2ICsxNzk0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAgICBwbGF0Zm9ybS9Db250ZW50
VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKyAgICBwbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAog
ICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIwODYsNiAr
MjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3Bw
IFwKQEAgLTIxMDksNiArMjExMCw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5h
Z2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwIFwKQEAgLTUyOTEsNiArNTI5NCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Vyc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRl
Z3kuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0ZVRpbWVDaG9vc2VyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzc2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRo
b3JpemVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAorICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwIFwKICAgICBcCiAgICAgYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCkBAIC05NDUsNiArOTQ2LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAg
XAorICAgIHBsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwIFwKICAgICBwbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5jcHAgXAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwIFwKICAgICBwbGF0Zm9y
bS9EcmFnRGF0YS5jcHAgXApAQCAtMTQwOSw2ICsxNDExLDcgQEAgSEVBREVSUyArPSBcCiAgICAg
TW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAogICAg
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQXV0aG9yaXplci5oIFwKQEAgLTE0MTksNiArMTQyMiw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggXAogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaCBcCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5oIFwKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDM0LDYgKzQzNCw3IEBAIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0
U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNh
Y2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlv
bkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1v
dGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmlj
ZU1vdGlvbkRhdGE2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMkFjY2VsZXJhdGlvbkVF
RVM0X05TMl9JTlMwXzEyUm90YXRpb25SYXRlRUVFYmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJl
dmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtOTgyLDYgKzk4Miw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9X
YXZlVGFibGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAnLApAQCAtOTk4LDYgKzk5OSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFj
a2VuZFNlcnZlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNr
ZW5kU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzYy
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFi
YXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCkBAIC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIGJvb2wgc2V0VGV4dFZh
bHVlSW5EYXRhYmFzZShTUUxpdAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBtbGFtOiBGSVhN
RTogbW92ZSB0aGVzZSB0byB0aGUgREJTZXJ2ZXIuCiAvLyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1y
ZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xhc3MuCiBzdGF0
aWMgTXV0ZXgmIGd1aWRNdXRleCgpCiB7CkBAIC0xNjgsMTggKzE2OSw2IEBAIHN0YXRpYyBpbnQg
Z3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QKICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3Rh
dGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRh
YmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJldHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwot
fQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxl
KQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRp
YwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkK
IHsKQEAgLTIxOSw4ICsyMDgsOCBAQCBBYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNl
KFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVu
YW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1
cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFk
ZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0K
IAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyOCw3
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRo
aXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9y
RGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxW
YWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAog
Y2xhc3MgQWJzdHJhY3REYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBYnN0
cmFjdERhdGFiYXNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSk7Ci0KICAgICB2
aXJ0dWFsIH5BYnN0cmFjdERhdGFiYXNlKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCisj
ZGVmaW5lIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgLy8gSW5pdGlhbGl6YXRpb246CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1
YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1
bnNpZ25lZCBsb25nIGxvbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRh
YmFzZXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdp
biopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0p
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyNlbmRpZiAvLyBQ
TEFURk9STShDSFJPTUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9wZW5EYXRhYmFz
ZShBYnN0cmFjdERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0
YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
YmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBB
YnN0cmFjdERhdGFiYXNlKikgPSAwOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQs
IG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYg
bmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRh
YmFzZSopID0gMDsKKworcHJvdGVjdGVkOgorICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7
IH0KKyAgICB2aXJ0dWFsIH5BYnN0cmFjdERhdGFiYXNlU2VydmVyKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisj
ZW5kaWYgLy8gQWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRT
ZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiREJCYWNrZW5kU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEQkJhY2tlbmQgeworCit2b2lkIFNl
cnZlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW5pdGlhbGl6
ZVRyYWNrZXIoZGF0YWJhc2VQYXRoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNl
UGF0aCk7CisjZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFn
ZXJDbGllbnQqIGNsaWVudCkKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjbGllbnQpOworI2VuZGlmCit9CisKK1N0cmluZyBTZXJ2ZXI6OmRhdGFiYXNlRGly
ZWN0b3J5UGF0aCgpIGNvbnN0Cit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyNl
bHNlCisgICAgcmV0dXJuICIiOworI2VuZGlmCit9CisKK3ZvaWQgU2VydmVyOjpzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmICFQTEFURk9STShDSFJP
TUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9y
eVBhdGgocGF0aCk7CisjZW5kaWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZEb2VzTm90RXhpc3QpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitib29sIFNlcnZlcjo6aGFzRW50cnlG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9pZCBT
ZXJ2ZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMocmVzdWx0KTsKK30KKwor
Ym9vbCBTZXJ2ZXI6OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7Cit9CisK
K0RhdGFiYXNlRGV0YWlscyBTZXJ2ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0
cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2lu
KTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFNlcnZlcjo6dXNhZ2VGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFNlcnZl
cjo6cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwor
dm9pZCBTZXJ2ZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YVNpemUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0
UXVvdGEob3JpZ2luLCBxdW90YVNpemUpOworfQorCit2b2lkIFNlcnZlcjo6ZGVsZXRlQWxsRGF0
YWJhc2VzKCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKK30KKworYm9vbCBTZXJ2ZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVP
cmlnaW4ob3JpZ2luKTsKK30KKworYm9vbCBTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKK30KKwor
I2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIFNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJ
bW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JN
KENIUk9NSVVNKQorCit2b2lkIFNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4
dCk7Cit9CisKK2Jvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFt
ZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIFNlcnZlcjo6YWRkT3Bl
bkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2Vy
dmVyOjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7Cisg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNl
KTsKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBTZXJ2ZXI6OmdldE1heFNpemVGb3JE
YXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNl
KTsKK30KKworLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUg
d2l0aCBpdHMgZGF0YQordm9pZCBTZXJ2ZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2Vk
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChvcmln
aW4sIG5hbWUpOworfQorCit2b2lkIFNlcnZlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0
YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFi
YXNlQ2hhbmdlZChkYXRhYmFzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIERCQmFja2VuZAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tl
bmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvREJCYWNrZW5kU2VydmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEQkJh
Y2tlbmRTZXJ2ZXJfaAorI2RlZmluZSBEQkJhY2tlbmRTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7CisKK2NsYXNzIFNlcnZlcjog
cHVibGljIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGljOgorICAgIFNlcnZlcigpIHsg
fTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXIoKSB7IH0KKworICAgIC8vIEluaXRpYWxpemF0aW9uOgor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAg
IHZpcnR1YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworCisjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCBib29sIGRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcm
LCBTZWN1cml0eU9yaWdpbiopOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdXNh
Z2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
bG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworCisgICAgdmlydHVhbCB2b2lk
IHNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworI2Vsc2UgLy8gUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHko
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCisgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisg
ICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZE9wZW5EYXRhYmFz
ZShBYnN0cmFjdERhdGFiYXNlKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9wZW5EYXRhYmFz
ZShBYnN0cmFjdERhdGFiYXNlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRh
aWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFi
YXNlKik7CisKKyAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQg
c2FmZSB3aXRoIGl0cyBkYXRhCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJh
c2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIERCQmFja2VuZAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERCQmFja2VuZFNlcnZlcl9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RP
TVdpbmRvd1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJh
c2UuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ2LDcg
KzQ2LDggQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93V2ViRGF0YWJhcwogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UgPSAwOwotICAgIGlm
IChBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50
b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRi
TWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmIChkYk1hbmFnZXIu
aXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKS0+dG9wRG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpCiAgICAgICAgIGRhdGFiYXNlID0gRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSh3
aW5kb3ctPmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7CiAKICAgICBpZiAoIWRhdGFiYXNlICYmICFlYykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1
ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpv
cGVuRGF0YWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUmIGUpCiB7Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmNhbkVz
dGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMg
bm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTA0LDEzICsxMDQsMTIgQEAgUGFzc1JlZlB0cjxEYXRh
YmFzZT4gRGF0YWJhc2U6Om9wZW5EYXRhYgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAg
aWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGUs
IGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJv
ck1lc3NhZ2UpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVu
RGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURl
dGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpOwotCi0gICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNP
cGVuRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJh
c2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRIYXNPcGVu
RGF0YWJhc2VzKGNvbnRleHQpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRP
cGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
Pmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKIApAQCAtMjI4LDcgKzIyNyw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICBSZWZQdHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlz
OwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFz
ZUNsb3NlZCh0aGlzKTsKICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+
dW5zY2hlZHVsZURhdGFiYXNlVGFza3ModGhpcyk7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xv
c2VJbW1lZGlhdGVseSgpCkBAIC0yNDMsNyArMjQyLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2VJ
bW1lZGlhdGVseSgpCiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUo
KSBjb25zdAogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhT
aXplRm9yRGF0YWJhc2UodGhpcyk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKIH0KIAogYm9vbCBEYXRhYmFzZTo6cGVy
Zm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9u
Q29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCShyZXZpc2lv
biAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2NoZW1lUmVnaXN0cnkuaCIKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERhdGFiYXNlQ29udGV4
dDo6ZGF0YWJhc2VFeGNlZWRlZFF1CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIGEgcmVhbCBpbXBsZW1lbnRhdGlvbjsgdGhpcyBpcyBhIHRlbXBvcmFy
eSBzb2x1dGlvbiBmb3IgdGVzdGluZy4KICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVm
YXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLnNldFF1b3RhKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwg
ZGVmYXVsdFF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YSht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7
CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCisjaWYgVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgorI2Vsc2UKKyNpbmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDQzICs1MCw0NiBAQCBEYXRh
YmFzZU1hbmFnZXImIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlCiB9CiAKIERhdGFiYXNlTWFuYWdl
cjo6RGF0YWJhc2VNYW5hZ2VyKCkKKyAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX2RhdGFiYXNl
SXNBdmFpbGFibGUodHJ1ZSkKIHsKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyAgICBt
X3NlcnZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5kYXRhYmFzZVN0cmF0ZWd5KCktPmdldERh
dGFiYXNlU2VydmVyKCk7CisjZWxzZQorICAgIG1fc2VydmVyID0gbmV3IERCQmFja2VuZDo6U2Vy
dmVyOworI2VuZGlmCisgICAgQVNTRVJUKG1fc2VydmVyKTsgLy8gV2Ugc2hvdWxkIGFsd2F5cyBo
YXZlIGEgc2VydmVyIHRvIHdvcmsgd2l0aC4KIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6Omlu
aXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiB7Ci0jaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQotICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VQ
YXRoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNlUGF0aCk7Ci0jZW5kaWYKKyAg
ICBtX3NlcnZlci0+aW5pdGlhbGl6ZShkYXRhYmFzZVBhdGgpOwogfQogCi0jaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFn
ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRD
bGllbnQoY2xpZW50KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3NlcnZlci0+c2V0
Q2xpZW50KGNsaWVudCk7CiB9CiAKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlRGly
ZWN0b3J5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIHJldHVybiBtX3NlcnZlci0+ZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyAgICBtX3NlcnZl
ci0+c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOwogfQotI2VuZGlmCiAKIGJvb2wgRGF0
YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJh
c2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKIH0K
IAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQog
ewotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGF2YWlsYWJsZSk7CisgICAg
bV9kYXRhYmFzZUlzQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogfQogCiBib29sIERhdGFiYXNlTWFu
YWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtODksNiArOTcsMTEgQEAgYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMo
UwogICAgIHJldHVybiBEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoY29udGV4dCk7
CiB9CiAKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRIYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNv
bnRleHQpLT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7Cit9CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNl
VGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQogewogICAgIERhdGFiYXNlQ29udGV4dDo6
c3RvcERhdGFiYXNlcyhjb250ZXh0LCBzeW5jaHJvbml6ZXIpOwpAQCAtOTYsNzAgKzEwOSwxMDYg
QEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaQogCiBTdHJpbmcgRGF0
YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmln
aW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1
bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50
cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1
cm4gbV9zZXJ2ZXItPmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3Vs
dCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7Cisg
ICAgbV9zZXJ2ZXItPm9yaWdpbnMocmVzdWx0KTsKIH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6
OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIG1fc2Vy
dmVyLT5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKIH0KIAogRGF0YWJh
c2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmln
aW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwg
b3JpZ2luKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9z
ZXJ2ZXItPnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBE
YXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9y
aWdpbik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5xdW90YUZvck9yaWdpbihvcmlnaW4pOwogfQog
CiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldFF1
b3RhKG9yaWdpbiwgcXVvdGFTaXplKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZUFsbERhdGFiYXNlcygpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgbV9zZXJ2ZXItPmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQog
CiBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdp
bihvcmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7CiB9
CiAKIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuIG1f
c2VydmVyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogfQogCiAjZWxzZSAvLyBQTEFU
Rk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRp
YXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CisgICAgbV9zZXJ2ZXItPmNsb3NlRGF0YWJh
c2VzSW1tZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oQ0hST01JVU0pCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKKyAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmNhbkVzdGFibGlz
aERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQoreworICAgIHJldHVybiBtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fc2VydmVyLT5hZGRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KQoreworICAgIG1fc2VydmVyLT5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQoreworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURl
dGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShj
b25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKKy8vIEZyb20gYSBzZWNvbmRh
cnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKK3ZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9zZXJ2ZXItPnNjaGVkdWxlTm90
aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAg
bV9zZXJ2ZXItPmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFzZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTcgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVk
ZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
ICJBYnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
OwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiBjbGFzcyBEYXRhYmFzZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFi
YXNlTWFuYWdlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDYsMTYgKzQxLDE2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwotI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKICAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsK
ICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKIAogICAgIGJvb2wg
aXNBdmFpbGFibGUoKTsKICAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCiAgICAgYm9v
bCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIHNl
dEhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCiAgICAgLy8gV2hl
biB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25h
bGxlZC4KICAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERh
dGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCkBAIC04Miw5ICs3NywyNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCisgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZvaWQgYWRkT3BlbkRh
dGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShB
YnN0cmFjdERhdGFiYXNlKik7CisKKyAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0
TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKKworICAgIC8vIEZy
b20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEK
KyAgICB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERh
dGFiYXNlKik7CisKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFi
YXNlTWFuYWdlcigpIHsgfQorCisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlciogbV9zZXJ2ZXI7
CisgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fZGF0YWJh
c2VJc0F2YWlsYWJsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJ
KHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCi0jaW5j
bHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IlNRTFRyYW5zYWN0aW9uU3luYy5oIgpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPERhdGFi
YXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKIAotICAgIGlmICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0
YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
KSB7CisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5jYW5Fc3RhYmxpc2hEYXRh
YmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAg
ICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2Vk
IHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KQEAgLTYyLDExICs2MiwxMSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0
YWJhc2VTeW5jOjpvCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICBpZiAoIWRhdGFiYXNl
LT5wZXJmb3JtT3BlbkFuZFZlcmlmeSghY3JlYXRpb25DYWxsYmFjaywgZWMsIGVycm9yTWVzc2Fn
ZSkpIHsKICAgICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwot
ICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0
YWJhc2UuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAK
ICAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewog
ICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBm
b3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKQEAgLTg3LDcgKzg3LDcgQEAgRGF0
YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAob3BlbmVkKCkpIHsKLSAgICAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwor
ICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhp
cyk7CiAgICAgICAgIGNsb3NlRGF0YWJhc2UoKTsKICAgICB9CiB9CkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkoKQogICAgICAgICByZXR1cm47
CiAKICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKLSAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7Cisg
ICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwog
ICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJl
dmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
ICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAKQEAgLTQzLDIxICs0MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24o
QWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoCisgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoCiAgICAgICAgIGRhdGFi
YXNlLT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKIH0K
IAogdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0YXRlbWVudChBYnN0cmFj
dERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
YXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFzZSk7CiB9CiAKIGJvb2wgU1FMVHJhbnNhY3Rpb25DbGll
bnQ6OmRpZEV4Y2VlZFF1b3RhKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIEFT
U0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGRhdGFi
YXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90
YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5z
ZWN1cml0eU9yaWdpbigpKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlP
cmlnaW4oKSk7CiAgICAgcmV0dXJuIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRh
dGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEwIEBACiAKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0V2ViRGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIApAQCAtNDMsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IFdvcmtlckNvbnRleHRXZWJEYXRhYmFz
ZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3Jl
YXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50b3BPcmlnaW4oKSkg
fHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIWNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigp
KSB8fCAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKSkgewogICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTMsNyAr
NTIsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0V2ViRGF0CiAKIFBhc3NS
ZWZQdHI8RGF0YWJhc2VTeW5jPiBXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFz
ZVN5bmMoV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhQWJzdHJh
Y3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSkgeworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2YWlsYWJsZSgpKSB7CiAgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTM3NjI5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI1MTk3LDYgKzI1MTk3LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3Bw
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjUyNzMsNiArMjUyNzcsMTQgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcREJCYWNrZW5kU2VydmVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcREJCYWNrZW5k
U2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KQEAgLTI4MzgyLDYgKzI4Mzk0LDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERhdGFiYXNlU3Ry
YXRlZ3kuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxEYXRhYmFzZVN0cmF0ZWd5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERhdGVDb21wb25lbnRzLmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTM2ODMsOCArMzY4Myw2IEBACiAJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07
CiAJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNjlFNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkU0NTZGMTgxNjc3RDc0
RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmNwcCAqLzsgfTsKLQkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFi
YXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5jcHAgKi87IH07CiAJCTk3QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5
bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUU5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2VUYXNrLmNwcCAqLzsgfTsKQEAgLTY2NDEsNiArNjYzOSw5IEBACiAJCUZERjZCQUY5MTM0
QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGNkJBRjcxMzRBNEM5ODAw
ODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggKi87IH07CiAJCUZERjdF
OUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzExM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi87IH07CiAJCUZERjdFOUM0MTNB
QzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAv
KiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5
MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFj
dERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYx
NjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZG
MTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3
NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29v
cmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9Owog
CQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDky
ODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKQEAgLTY2NTIsNiArNjY1MywxMCBAQAogCQlG
RTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1
IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsgfTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8q
IEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNw
cCAqLzsgfTsKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OworCQlGRUFGNjY1NDE2
Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJC
YWNrZW5kU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQyNzE2
N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNwcCAqLzsgfTsKKwkJRkVERUY4NDEx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8q
IERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OworCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEg
LyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3ku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0
NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CiAJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAv
KiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovOyB9
OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEz
NUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CkBAIC0xNDE5
MCw2ICsxNDE5NSw3IEBACiAJCUZERjZCQUY3MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERjdFOUMyMTNBQzIxREIw
MEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFMTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3
MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZG
RDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MjA0LDYgKzE0MjEwLDEwIEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9z
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5k
U2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERCQmFja2VuZFNlcnZl
ci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFj
a2VuZFNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEQkJh
Y2tlbmRTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRURFRjgzRjE2Nzk3MTA4MDAw
RTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRv
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9F
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQ0ExNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHNldWRvRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1
Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzM1LDYgKzE0MzQ1LDcgQEAKIAkJMDg2N0Q2
OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2Vu
ZFNlcnZlci5jcHAgKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
ICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8s
CiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8s
CkBAIC0xODI1Miw2ICsxODI2Myw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5N0JDNjlENjE1
MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgKi8sCiAJCQkJOTdCQzY5RDcx
NTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLywKKwkJCQlGRTExNUZBOTE2
Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICovLAogCQkJCTk3QkM2
OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8sCiAJCQkJ
OTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggKi8sCiAJ
CQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmNwcCAqLywKQEAgLTE4Mjc2
LDYgKzE4Mjg4LDcgQEAKIAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VU
aHJlYWQuaCAqLywKIAkJCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyLmNwcCAqLywKIAkJCQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyLmggKi8sCisJCQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNlcnZl
ci5oICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRh
YmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dl
YkRhdGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUxNTFGODM1QTAwQUI3Q0U5IC8qIERPTVdpbmRv
d1dlYkRhdGFiYXNlLmlkbCAqLywKQEAgLTIxMDMxLDYgKzIxMDQ0LDggQEAKIAkJCQkyRTQzNDY1
NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKIAkJCQlFMTFBRjE1
MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKIAkJCQlGNTg3ODY4NDAyREUzQjg2
MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCisJCQkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8q
IERhdGFiYXNlU3RyYXRlZ3kuY3BwICovLAorCQkJCUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAv
KiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8sCiAJCQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVj
aW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2ICsyMjU4Miw5IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBD
NSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNDU2RjE5MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MzEw
NUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywK
QEAgLTI5MDIxLDYgKzI5MDM5LDggQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyog
T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI2NjE2NzAz
QkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERC
QmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKKworI2lm
IFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0
cmFjdERhdGFiYXNlU2VydmVyKiBEYXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigp
Cit7CisgICAgcmV0dXJuIG5ldyBEQkJhY2tlbmQ6OlNlcnZlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBV
U0UoUExBVEZPUk1fU1RSQVRFR0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rh
dGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFz
ZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0YWJhc2VTdHJhdGVneV9oCisKKyNpZiBVU0UoUExBVEZP
Uk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKK3B1YmxpYzoK
KyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIHZpcnR1YWwgQWJzdHJhY3REYXRhYmFzZVNl
cnZlciogZ2V0RGF0YWJhc2VTZXJ2ZXIoKTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB+RGF0YWJhc2VTdHJhdGVneSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisKKyNlbmRpZiAvLyBEYXRh
YmFzZVN0cmF0ZWd5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Ry
YXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVzU3RyYXRlZ3k7CitjbGFzcyBEYXRh
YmFzZVN0cmF0ZWd5OwogY2xhc3MgTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3Ry
YXRlZ3k7CiBjbGFzcyBQbHVnaW5TdHJhdGVneTsKQEAgLTQ2LDYgKzQ3LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fY29va2llc1N0cmF0ZWd5OwogICAgIH0KIAorICAgIERhdGFiYXNl
U3RyYXRlZ3kqIGRhdGFiYXNlU3RyYXRlZ3koKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2RhdGFi
YXNlU3RyYXRlZ3kpCisgICAgICAgICAgICBtX2RhdGFiYXNlU3RyYXRlZ3kgPSBjcmVhdGVEYXRh
YmFzZVN0cmF0ZWd5KCk7CisgICAgICAgIHJldHVybiBtX2RhdGFiYXNlU3RyYXRlZ3k7CisgICAg
fQorCiAgICAgTG9hZGVyU3RyYXRlZ3kqIGxvYWRlclN0cmF0ZWd5KCkKICAgICB7CiAgICAgICAg
IGlmICghbV9sb2FkZXJTdHJhdGVneSkKQEAgLTg0LDYgKzkyLDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFBsYXRmb3JtU3RyYXRlZ2llcygpCiAgICAgICAgIDogbV9jb29raWVzU3RyYXRl
Z3koMCkKKyAgICAgICAgLCBtX2RhdGFiYXNlU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX2xvYWRl
clN0cmF0ZWd5KDApCiAgICAgICAgICwgbV9wYXN0ZWJvYXJkU3RyYXRlZ3koMCkKICAgICAgICAg
LCBtX3BsdWdpblN0cmF0ZWd5KDApCkBAIC05OCw2ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVn
eSgpID0gMDsKKyAgICB2aXJ0dWFsIERhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3Ry
YXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3Rl
Ym9hcmRTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0dWFsIFBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQ
bHVnaW5TdHJhdGVneSgpID0gMDsKQEAgLTEwNSw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgVmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpID0g
MDsKIAogICAgIENvb2tpZXNTdHJhdGVneSogbV9jb29raWVzU3RyYXRlZ3k7CisgICAgRGF0YWJh
c2VTdHJhdGVneSogbV9kYXRhYmFzZVN0cmF0ZWd5OwogICAgIExvYWRlclN0cmF0ZWd5KiBtX2xv
YWRlclN0cmF0ZWd5OwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSogbV9wYXN0ZWJvYXJkU3RyYXRl
Z3k7CiAgICAgUGx1Z2luU3RyYXRlZ3kqIG1fcGx1Z2luU3RyYXRlZ3k7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kgYW5k
IGRhdGFiYXNlIHNlcnZlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ5MzQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGRhdGFiYXNlIHNlcnZlciBpcyBjdXJyZW50bHkgYSBwbGFjZWhvbGRl
ciB0aGF0IGRvZXMgbm90aGluZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0
cmF0ZWd5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMpOgorCiAyMDEyLTEyLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBpbml0aWF0aW5nUGFnZSBwYXJhbWV0
ZXIgZnJvbSBkb3dubG9hZCBvYmplY3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDYgKzUyLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25ldHdvcmtpbmZvIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmli
cmF0aW9uIgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgogICAgICIk
e1dFQkNPUkVfRElSfS9hY2Nlc3NpYmlsaXR5IgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5n
cy9qcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MiCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDExIEBAIENvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICBy
ZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpAQCAtMjMzLDYgKzIz
OCwxMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29vCiAgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcyhjb250ZXh0KTsKIH0KIAorLy8gRGF0YWJhc2VTdHJhdGVn
eQorCitBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldERh
dGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VTdHJhdGVneTo6Z2V0RGF0YWJh
c2VTZXJ2ZXIoKTsgLy8gVXNlIHRoZSBkZWZhdWx0IGZvciBub3cuCit9CisKIC8vIExvYWRlclN0
cmF0ZWd5CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0zOCw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJk
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJh
dGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Nyw2ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJh
dGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNy
ZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0
ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkg
T1ZFUlJJREU7CkBAIC02OCw2ICs3MCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxD
b29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KikgT1ZFUlJJREU7CiAKKyAgICAvLyBX
ZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgdmlydHVhbCBXZWJDb3JlOjpBYnN0cmFjdERh
dGFiYXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZlcigpIE9WRVJSSURFOworCiAgICAgLy8gV2Vi
Q29yZTo6TG9hZGVyU3RyYXRlZ3kKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0
YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5n
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgorCiAyMDEyLTEyLTEzICBKdXNzaSBLdWtrb25l
biAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtHVEtdIERvbid0
IGNhbGwgZGVwcmVjYXRlZCBnX3R5cGVfaW5pdCB3aGVuIGdsaWIgPT4gMi4zNQpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9
CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRlclN0
cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZp
c2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmlu
ZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5Lmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5
LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3Ry
YXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRl
Z3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTM3LDYgKzM4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3Ry
YXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBj
cmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTUsNiArNTcsOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVh
bCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8o
Y29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBE
YXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3Vy
cmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzR3RrOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRl
Z2llc0d0ayk6CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGlu
IERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkocmV2aXNpb24gMTM3
NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTEgQEAgQ29va2llc1N0cmF0
ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRh
YmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNyZWF0ZURhdGFiYXNlU3RyYXRl
Z3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1T
dHJhdGVnaWVzR3RrOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDYgKzIwLDcgQEAKICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzR3RrX2gKIAog
I2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3ku
aCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJh
dGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAtMjcsNyArMjgsNyBA
QAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExp
bmtTdHJhdGVneS5oIgogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGsgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2ll
c0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZSgpOwogCkBAIC0zNiw2ICszNyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3ko
KTsKQEAgLTU0LDYgKzU2LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqKTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
KyAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJDb3Jl
OjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
NzYyOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ug
c2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9l
cyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisKIDIwMTItMTItMTIgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFs
bHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlU3RyYXRl
Z3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3Ry
YXRlZ2llcy5oPgpAQCAtMzQsNyArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29y
a2VyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4K
IAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
U3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewor
Y2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpOwogICAgIApAQCAtNDMsNiArNDQsNyBAQCBwcml2YXRlOgogICAgIAogICAg
IC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29v
a2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpIE9WRVJSSURF
OwpAQCAtNjIsNiArNjQsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopIE9WRVJSSURFOwogCisgICAgLy8gV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
KwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJl
c2hQbHVnaW5zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29u
c3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1MywxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBh
bmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9s
ZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0
ZURhdGFiYXNlU3RyYXRlZ3kpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdCk6CisKIDIwMTItMTIt
MTMgIEplcm9tZSBQYXNpb24gIDxqZXJvbWUucGFzaW9uQGRpZ2lhLmNvbT4KIAogICAgICAgICBb
UXRdIERvYzogRml4aW5nIFF0IFdlYktpdCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuY3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNiArNjUsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Ywog
ICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisK
IExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlTG9hZGVyU3RyYXRl
Z3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAkocmV2aXNpb24gMTM3
NjI5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0X2gKIAogI2luY2x1ZGUgPENvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUg
PERhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxMb2FkZXJTdHJhdGVneS5oPgogI2luY2x1
ZGUgPFBsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFBsdWdpblN0cmF0ZWd5Lmg+CkBA
IC0zOSw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhc3RlYm9hcmRTdHJh
dGVneTsKIH0KIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzUXQgOiBwdWJsaWMgV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc1F0IDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCk7CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVh
dGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRl
Z3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRl
clN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAt
NjYsNiArNjgsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8v
IC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVh
bCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NjI5KQor
KysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBk
YXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhp
bmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llcyk6CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNl
ZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJl
dHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2Fk
ZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgp
CiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM3
NjI5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxNCBAQAogI2RlZmluZSBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXNfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3ku
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdp
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRXb3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExp
bmtTdHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZSgpOwogICAgIApAQCAtNDIsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8v
IFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5T
dHJhdGVneSgpOwpAQCAtNjMsNiArNjUsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8v
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5z
KCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSos
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5
IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vo
b2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
KToKKwogMjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdl
VHlwZSAtIGl0IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0UuY3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRQogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3Jl
YXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0UuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsMTQgQEAKICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAj
aW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5o
IgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3Mg
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpM
b2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQx
LDYgKzQyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3Ry
YXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURh
dGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBj
cmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCop
OwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAg
ICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBs
dWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiYpOwo=
</data>
<flag name="commit-queue"
          id="196308"
          type_id="3"
          status="-"
          setter="peter+ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179437</attachid>
            <date>2012-12-14 00:25:38 -0800</date>
            <delta_ts>2012-12-14 00:37:36 -0800</delta_ts>
            <desc>wip2: + fixed chromium breakage. test ews again.</desc>
            <filename>bug-104748-wip2.patch</filename>
            <type>text/plain</type>
            <size>86906</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTEzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJh
c2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRs
eSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBYnN0cmFjdERhdGFi
YXNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI6OkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFz
ZVNlcnZlcjo6fkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoREJCYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vRGF0YWJhc2VTdHJh
dGVneS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0v
RGF0YWJhc2VTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Ojp+
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpQbGF0Zm9ybVN0cmF0ZWdpZXMp
OgorCiAyMDEyLTEyLTEzICBQYXJ0aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVp
bCA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVk
IGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTk1Miw2ICs5NTIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMRXhjZXB0aW9uLmNwcApAQCAtMTc5Myw2ICsxNzk0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAgICBwbGF0Zm9ybS9Db250ZW50
VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKyAgICBwbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAog
ICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIwODYsNiAr
MjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3Bw
IFwKQEAgLTIxMDksNiArMjExMCw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5h
Z2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwIFwKQEAgLTUyOTEsNiArNTI5NCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Vyc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRl
Z3kuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0ZVRpbWVDaG9vc2VyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzc2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRo
b3JpemVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAorICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwIFwKICAgICBcCiAgICAgYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCkBAIC05NDUsNiArOTQ2LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAg
XAorICAgIHBsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwIFwKICAgICBwbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5jcHAgXAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwIFwKICAgICBwbGF0Zm9y
bS9EcmFnRGF0YS5jcHAgXApAQCAtMTQwOSw2ICsxNDExLDcgQEAgSEVBREVSUyArPSBcCiAgICAg
TW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAogICAg
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQXV0aG9yaXplci5oIFwKQEAgLTE0MTksNiArMTQyMiw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggXAogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaCBcCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5oIFwKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDM0LDYgKzQzNCw3IEBAIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0
U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNh
Y2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlv
bkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1v
dGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmlj
ZU1vdGlvbkRhdGE2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMkFjY2VsZXJhdGlvbkVF
RVM0X05TMl9JTlMwXzEyUm90YXRpb25SYXRlRUVFYmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJl
dmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtOTgyLDYgKzk4Miw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9X
YXZlVGFibGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAnLApAQCAtOTk4LDYgKzk5OSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFj
a2VuZFNlcnZlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNr
ZW5kU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzYy
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFi
YXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCkBAIC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIGJvb2wgc2V0VGV4dFZh
bHVlSW5EYXRhYmFzZShTUUxpdAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBtbGFtOiBGSVhN
RTogbW92ZSB0aGVzZSB0byB0aGUgREJTZXJ2ZXIuCiAvLyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1y
ZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xhc3MuCiBzdGF0
aWMgTXV0ZXgmIGd1aWRNdXRleCgpCiB7CkBAIC0xNjgsMTggKzE2OSw2IEBAIHN0YXRpYyBpbnQg
Z3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QKICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3Rh
dGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRh
YmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJldHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwot
fQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxl
KQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRp
YwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkK
IHsKQEAgLTIxOSw4ICsyMDgsOCBAQCBBYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNl
KFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVu
YW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1
cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFk
ZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0K
IAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyOCw3
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRo
aXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9y
RGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxW
YWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAog
Y2xhc3MgQWJzdHJhY3REYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBYnN0
cmFjdERhdGFiYXNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSk7Ci0KICAgICB2
aXJ0dWFsIH5BYnN0cmFjdERhdGFiYXNlKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCisj
ZGVmaW5lIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgLy8gSW5pdGlhbGl6YXRpb246CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1
YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1
bnNpZ25lZCBsb25nIGxvbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRh
YmFzZXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdp
biopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKworICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUpID0gMDsKKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVh
bCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJP
TUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0
KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERh
dGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJh
Y3REYXRhYmFzZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFzZURldGFpbHMo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFi
YXNlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERh
dGFiYXNlKikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigp
IHsgfQorICAgIHZpcnR1YWwgfkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNlbmRpZiAvLyBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2Vu
ZFNlcnZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7CisKK3ZvaWQg
U2VydmVyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQoreworI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbml0aWFs
aXplVHJhY2tlcihkYXRhYmFzZVBhdGgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJh
c2VQYXRoKTsKKyNlbmRpZgorfQorCit2b2lkIFNlcnZlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFu
YWdlckNsaWVudCogY2xpZW50KQoreworI2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQoY2xpZW50KTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGNsaWVudCk7CisjZW5kaWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCkgY29uc3QKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gIiI7CisjZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFi
YXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQorICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0
b3J5UGF0aChwYXRoKTsKKyNlbmRpZgorfQorCitTdHJpbmcgU2VydmVyOjpmdWxsUGF0aEZvckRh
dGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKK30KKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKK2Jvb2wgU2VydmVyOjpoYXNFbnRy
eUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lk
IFNlcnZlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQp
Cit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQpOworfQor
Citib29sIFNlcnZlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30K
KworRGF0YWJhc2VEZXRhaWxzIFNlcnZlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmln
aW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjp1c2FnZUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS51c2FnZUZvck9yaWdpbihvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2Vy
dmVyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworfQor
Cit2b2lkIFNlcnZlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkZWxldGVBbGxE
YXRhYmFzZXMoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERh
dGFiYXNlcygpOworfQorCitib29sIFNlcnZlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0
ZU9yaWdpbihvcmlnaW4pOworfQorCitib29sIFNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQor
CisvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0
cyBkYXRhCit2b2lkIFNlcnZlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFt
ZSk7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBTZXJ2ZXI6OmNsb3Nl
RGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2xvc2VE
YXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKK30KKyNlbmRpZiAv
LyBQTEFURk9STShDSFJPTUlVTSkKKwordm9pZCBTZXJ2ZXI6OmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KGNvbnRleHQpOworfQorCitib29sIFNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCit7CisgICAg
cmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFiYXNlKGNv
bnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKK30KKwordm9pZCBTZXJ2
ZXI6OmFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5hZGRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQor
Cit2b2lkIFNlcnZlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFi
YXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFz
ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpzZXREYXRhYmFzZURldGFpbHMoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCit7CisgICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpnZXRN
YXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7Cisg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JEYXRhYmFz
ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3RE
YXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0
YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFj
a2VuZFNlcnZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERC
QmFja2VuZFNlcnZlcl9oCisjZGVmaW5lIERCQmFja2VuZFNlcnZlcl9oCisKKyNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgREJCYWNrZW5kIHsKKworY2xhc3MgU2VydmVy
OiBwdWJsaWMgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7CitwdWJsaWM6CisgICAgU2VydmVyKCkg
eyB9OworICAgIHZpcnR1YWwgflNlcnZlcigpIHsgfQorCisgICAgLy8gSW5pdGlhbGl6YXRpb246
CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgp
OworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOworCisg
ICAgdmlydHVhbCBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGF0YWJhc2VOYW1lc0Zv
ck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOworICAgIHZp
cnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB1
c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIHZpcnR1YWwgYm9vbCBkZWxl
dGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgLy8gRnJvbSBh
IHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQorICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZiAvLyBQTEFURk9S
TShDSFJPTUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JD
b250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1YWwgYm9v
bCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRh
YmFzZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRh
YmFzZSopOworCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSopOworCisgICAg
dmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNlKik7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBEQkJhY2tlbmQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEQkJhY2tlbmRTZXJ2ZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRh
YmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRh
dGFiYXNlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC00
Niw3ICs0Niw4IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERPTVdpbmRvd1dlYkRhdGFiYXMKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gMDsKLSAg
ICBpZiAoQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQo
KS0+dG9wRG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgRGF0YWJhc2VNYW5hZ2Vy
JiBkYk1hbmFnZXIgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKyAgICBpZiAoZGJNYW5h
Z2VyLmlzQXZhaWxhYmxlKCkgJiYgd2luZG93LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NEYXRhYmFzZSh3aW5kb3ctPmRvY3VtZW50KCktPnRvcERvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBkYXRhYmFzZSA9IERhdGFiYXNlOjpvcGVuRGF0YWJh
c2Uod2luZG93LT5kb2N1bWVudCgpLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogCiAgICAgaWYgKCFkYXRhYmFzZSAmJiAh
ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICNp
bmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQu
aCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgpAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFz
ZTo6b3BlbkRhdGFiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNr
PiBjcmVhdGlvbkNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFeGNlcHRpb25Db2RlJiBlKQogewotICAgIGlmICghRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUpKSB7CisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5j
YW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2lu
ICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTEwNCwxMyArMTA0LDEyIEBAIFBhc3NSZWZQdHI8
RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0YWIKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgIGlmICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlvbkNhbGxiYWNr
LCBlLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIGRhdGFiYXNlLT5sb2dFcnJvck1lc3NhZ2Uo
ZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3Zl
T3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJh
c2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKTsKLQotICAgIERhdGFiYXNlQ29udGV4dDo6ZnJvbShjb250ZXh0KS0+c2V0
SGFzT3BlbkRhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERh
dGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SGFz
T3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkT3BlbkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLT5ob3N0KCksIG5hbWUsIGV4cGVjdGVkVmVyc2lvbik7CiAKQEAgLTIyOCw3ICsyMjcsNyBA
QCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgUmVmUHRyPERhdGFiYXNlPiBwcm90ZWN0ID0g
dGhpczsKICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0
YWJhc2VDbG9zZWQodGhpcyk7CiAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6
OmNsb3NlSW1tZWRpYXRlbHkoKQpAQCAtMjQzLDcgKzI0Miw3IEBAIHZvaWQgRGF0YWJhc2U6OmNs
b3NlSW1tZWRpYXRlbHkoKQogCiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1T
aXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0
TWF4U2l6ZUZvckRhdGFiYXNlKHRoaXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAKIGJvb2wgRGF0YWJhc2U6
OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2Vw
dGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkocmV2
aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRh
c2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEYXRhYmFzZUNv
bnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdQogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAgICAv
LyBGSVhNRTogVGhpcyBuZWVkcyBhIHJlYWwgaW1wbGVtZW50YXRpb247IHRoaXMgaXMgYSB0ZW1w
b3Jhcnkgc29sdXRpb24gZm9yIHRlc3RpbmcuCiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
IGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCksIGRlZmF1bHRRdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVv
dGEobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVv
dGEpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTMgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0
YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFz
ZVRyYWNrZXIuaCIKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworI2lmIFVTRShQTEFU
Rk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNlbHNlCisjaW5jbHVkZSAiREJCYWNrZW5kU2VydmVy
LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw0MyArNTAsNDYgQEAg
RGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZQogfQogCiBEYXRhYmFzZU1h
bmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9kYXRh
YmFzZUlzQXZhaWxhYmxlKHRydWUpCiB7CisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisg
ICAgbV9zZXJ2ZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0YWJhc2VTdHJhdGVneSgpLT5n
ZXREYXRhYmFzZVNlcnZlcigpOworI2Vsc2UKKyAgICBtX3NlcnZlciA9IG5ldyBEQkJhY2tlbmQ6
OlNlcnZlcjsKKyNlbmRpZgorICAgIEFTU0VSVChtX3NlcnZlcik7IC8vIFdlIHNob3VsZCBhbHdh
eXMgaGF2ZSBhIHNlcnZlciB0byB3b3JrIHdpdGguCiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2Vy
Ojppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogewotI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFi
YXNlUGF0aCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZVBhdGgpOwotI2VuZGlm
CisgICAgbV9zZXJ2ZXItPmluaXRpYWxpemUoZGF0YWJhc2VQYXRoKTsKIH0KIAotI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0Q2xpZW50KGNsaWVudCk7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV9zZXJ2ZXIt
PnNldENsaWVudChjbGllbnQpOwogfQogCiBTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRh
dGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0
YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CisgICAgbV9z
ZXJ2ZXItPnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKIH0KLSNlbmRpZgogCiBib29s
IERhdGFiYXNlTWFuYWdlcjo6aXNBdmFpbGFibGUoKQogewotICAgIHJldHVybiBBYnN0cmFjdERh
dGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBtX2RhdGFiYXNlSXNBdmFpbGFibGU7
CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJs
ZSkKIHsKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShhdmFpbGFibGUpOwor
ICAgIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSA9IGF2YWlsYWJsZTsKIH0KIAogYm9vbCBEYXRhYmFz
ZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTg5LDYgKzk3LDExIEBAIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJh
c2VzKFMKICAgICByZXR1cm4gRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGNvbnRl
eHQpOwogfQogCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0SGFzT3BlbkRhdGFiYXNlcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlQ29udGV4dDo6ZnJv
bShjb250ZXh0KS0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOworfQorCiB2b2lkIERhdGFiYXNlTWFu
YWdlcjo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBEYXRh
YmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKIHsKICAgICBEYXRhYmFzZUNvbnRl
eHQ6OnN0b3BEYXRhYmFzZXMoY29udGV4dCwgc3luY2hyb25pemVyKTsKQEAgLTk2LDcwICsxMDks
MTA2IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmkKIAogU3RyaW5n
IERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7Ci0g
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIG1fc2VydmVy
LT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3Qp
OwogfQogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhh
c0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAg
cmV0dXJuIG1fc2VydmVyLT5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOwogfQogCiB2b2lkIERh
dGFiYXNlTWFuYWdlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiBy
ZXN1bHQpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQp
OworICAgIG1fc2VydmVyLT5vcmlnaW5zKHJlc3VsdCk7CiB9CiAKIGJvb2wgRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCByZXN1bHQpOworICAgIHJldHVybiBt
X3NlcnZlci0+ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7CiB9CiAKIERh
dGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNv
bnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwg
b3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5h
bWUsIG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnVz
YWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CisgICAgcmV0dXJu
IG1fc2VydmVyLT51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogfQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgRGF0YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihvcmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+cXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsK
IH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YVNpemUpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YVNpemUpOworICAgIG1fc2VydmVyLT5z
ZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVBbGxEYXRhYmFzZXMoKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZUFsbERhdGFiYXNlcygpOworICAgIG1fc2VydmVyLT5kZWxldGVBbGxEYXRhYmFzZXMoKTsK
IH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVP
cmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4p
OwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworICAgIHJldHVy
biBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKK30KKworLy8gRnJvbSBh
IHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQordm9p
ZCBEYXRhYmFzZU1hbmFnZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBtX3NlcnZlci0+c2No
ZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQob3JpZ2luLCBuYW1lKTsKIH0KIAogI2Vsc2UgLy8g
UExBVEZPUk0oQ0hST01JVU0pCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNJ
bW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworICAgIG1fc2VydmVyLT5jbG9zZURh
dGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOwogfQogI2VuZGlmIC8v
IFBMQVRGT1JNKENIUk9NSVVNKQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxs
RGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgbV9zZXJ2ZXItPmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoY29udGV4dCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3Rh
Ymxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNlKGNv
bnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKK30KKwordm9pZCBEYXRh
YmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkK
K3sKKyAgICBtX3NlcnZlci0+YWRkT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsKK30KKwordm9pZCBE
YXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKiBkYXRh
YmFzZSkKK3sKKyAgICBtX3NlcnZlci0+cmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsKK30K
Kwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBtX3NlcnZlci0+c2V0RGF0YWJh
c2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQor
Cit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjpnZXRNYXhTaXplRm9yRGF0YWJh
c2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgcmV0dXJuIG1fc2Vy
dmVyLT5nZXRNYXhTaXplRm9yRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fc2VydmVyLT5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE3ICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5j
bHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9u
aXplcjsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAogY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
YXRhYmFzZU1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ2LDE2ICs0MSwx
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERhdGFiYXNlTWFuYWdlciYgbWFuYWdlcigpOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKLSNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Kik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwotI2VuZGlmCiAKICAgICBi
b29sIGlzQXZhaWxhYmxlKCk7CiAgICAgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKIAogICAg
IGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9p
ZCBzZXRIYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwogICAgIC8v
IFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBz
aWduYWxsZWQuCiAgICAgdm9pZCBzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqKTsKIApAQCAtNzYsMTUgKzcxLDMxIEBAIHB1Ymxp
YzoKICAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIGJvb2wgZGVs
ZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCisgICAg
Ly8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMg
ZGF0YQorICAgIHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCiAjZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkK
ICAgICB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9N
SVVNKQogCiAgICAgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAorICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2b2lkIGFk
ZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKik7CisgICAgdm9pZCByZW1vdmVPcGVuRGF0
YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworCisgICAgdm9pZCBzZXREYXRhYmFzZURldGFpbHMo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKik7CisKKyAg
ICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNlKik7CisKIHByaXZhdGU6CiAg
ICAgRGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFuYWdlcigpIHsgfQorCisgICAg
QWJzdHJhY3REYXRhYmFzZVNlcnZlciogbV9zZXJ2ZXI7CisgICAgRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNp
bmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlNRTEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3luYy5oIgpA
QCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpv
CiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIAotICAgIGlmICgh
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwg
bmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgaWYgKCFEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRh
YmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFt
ZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTYyLDExICs2Miwx
MSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvCiAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZTsKICAgICBpZiAoIWRhdGFiYXNlLT5wZXJmb3JtT3BlbkFuZFZlcmlmeSgh
Y3JlYXRpb25DYWxsYmFjaywgZWMsIGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgZGF0YWJhc2Ut
PmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0
KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFt
ZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1l
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKICAgICBpZiAoZGF0YWJhc2UtPmlzTmV3
KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwg
Ikludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFi
YXNlLmdldCgpKTsKQEAgLTg3LDcgKzg3LDcgQEAgRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5j
KCkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CiAKICAgICBpZiAob3BlbmVkKCkpIHsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiAgICAgICAgIGNsb3NlRGF0YWJh
c2UoKTsKICAgICB9CiB9CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNs
b3NlSW1tZWRpYXRlbHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBsb2dFcnJvck1lc3NhZ2Uo
ImZvcmNpYmx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwogICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VU
cmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKQEAgLTQz
LDIxICs0MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25D
bGllbnQ6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oQWJzdHJhY3REYXRhYmFzZSogZGF0YWJh
c2UpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRh
YmFzZUNoYW5nZWQoCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2NoZWR1bGVOb3Rp
ZnlEYXRhYmFzZUNoYW5nZWQoCiAgICAgICAgIGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpLCBk
YXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkNs
aWVudDo6ZGlkRXhlY3V0ZVN0YXRlbWVudChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKIHsK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2Up
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFz
ZSk7CiB9CiAKIGJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKEFic3Ry
YWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3Jp
Z2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudFF1b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4o
ZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRl
eHQoKS0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkp
OwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5x
dW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgcmV0dXJuIChu
ZXdRdW90YSA+IGN1cnJlbnRRdW90YSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRXZWJEYXRh
YmFzZS5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTEgKzMxLDEwIEBACiAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuaCIK
IAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKIApAQCAtNDMsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
RGF0YWJhc2U+IFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUs
IFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NEYXRhYmFzZShjb250ZXh0LT50b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0YWJhc2U6Omlz
QXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFj
Y2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTMsNyArNTIsNyBAQCBQYXNzUmVmUHRyPERhdGFi
YXNlPiBXb3JrZXJDb250ZXh0V2ViRGF0CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBXb3Jr
ZXJDb250ZXh0V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZVN5bmMoV29ya2VyQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0
cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNl
KGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUo
KSkgeworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJh
c2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
c0F2YWlsYWJsZSgpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1MTk3LDYgKzI1MTk3LDEw
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpA
QCAtMjUyNzMsNiArMjUyNzcsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcREJCYWNrZW5kU2VydmVy
LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcREJCYWNrZW5kU2VydmVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTI4
MzgyLDYgKzI4Mzk0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEYXRhYmFzZVN0
cmF0ZWd5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXERhdGVDb21wb25lbnRzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMsOCArMzY4Myw2IEBACiAJCTk3
QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKLQkJ
RkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5
bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CiAJCTk3QkM2
QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLzsgfTsKQEAg
LTY2NDEsNiArNjYzOSw5IEBACiAJCUZERjZCQUY5MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmggKi87IH07CiAJCUZERjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBK
U0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJD
YWxsYmFjay5jcHAgKi87IH07CiAJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2su
aCAqLzsgfTsKKwkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERh
dGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZENDg4MEY2
NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5h
dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDky
ODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4
NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAq
LzsgfTsKQEAgLTY2NTIsNiArNjY1MywxMCBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsg
fTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0
NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlD
NDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25FcnJvci5oICovOyB9OworCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNr
ZW5kU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYy
QTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNr
ZW5kU2VydmVyLmNwcCAqLzsgfTsKKwkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFi
YXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICov
OyB9OworCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5
NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87
IH07CiAJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CkBAIC0xNDE5MCw2ICsxNDE5NSw3IEBACiAJCUZERjZC
QUY3MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlDMTEzQUMyMURCMDBB
NTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVy
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZl
ckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTE1RkE5MTY3OTg4
Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRh
YmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VN
YW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyog
Q29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjA0LDYgKzE0MjEwLDEwIEBA
CiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJy
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAw
RDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFG
NjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERCQmFja2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEQkJhY2tlbmRTZXJ2ZXIuY3BwOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVn
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0
ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4NDAxNjc5NzEwODAw
MEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
Rjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyog
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MzM1LDYgKzE0MzQ1LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdl
YktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRkVC
MjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8sCiAJCQkJNjVD
OTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdF
MTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAw
QjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0xODI1Miw2ICsxODI2Myw3IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJh
Y3REYXRhYmFzZS5jcHAgKi8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3Ry
YWN0RGF0YWJhc2UuaCAqLywKKwkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oICovLAogCQkJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBD
aGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8sCiAJCQkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFD
IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggKi8sCiAJCQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlLmNwcCAqLywKQEAgLTE4Mjc2LDYgKzE4Mjg4LDcgQEAKIAkJCQk5N0JD
NjlFRTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJCQk5N0JDNjlF
RjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk5N0JDNjlG
MDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJRkVBRjY2NTMx
Njc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4Q0NCQjQ2MTUx
RjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JC
NDcxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8sCiAJCQkJQThD
Q0JCNEUxNTFGODM1QTAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCAqLywKQEAg
LTIxMDMxLDYgKzIxMDQ0LDggQEAKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuaCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vy
c29yLmNwcCAqLywKIAkJCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8s
CisJCQkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICov
LAorCQkJCUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8s
CiAJCQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywK
IAkJCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJ
CQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2
ICsyMjU4Miw5IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4
MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxMTVG
QUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBO
b2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0
QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDIxLDYgKzI5MDM5LDggQEAK
IAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVF
RERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVERUY4NDEx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRl
Z3kuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VT
dHJhdGVneS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVT
KQorI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBEYXRh
YmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpCit7CisgICAgcmV0dXJuIG5ldyBEQkJh
Y2tlbmQ6OlNlcnZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0
YWJhc2VTdHJhdGVneV9oCisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBEYXRhYmFzZVN0cmF0ZWd5IHsKK3B1YmxpYzoKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQorICAgIHZpcnR1YWwgQWJzdHJhY3REYXRhYmFzZVNlcnZlciogZ2V0RGF0YWJhc2VTZXJ2ZXIo
KTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RGF0YWJhc2VTdHJhdGVneSgp
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCisKKyNlbmRpZiAvLyBEYXRhYmFzZVN0cmF0ZWd5X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAx
Mzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb29raWVzU3RyYXRlZ3k7CitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5OwogY2xhc3MgTG9h
ZGVyU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7CiBjbGFzcyBQbHVnaW5TdHJh
dGVneTsKQEAgLTQ2LDYgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29va2ll
c1N0cmF0ZWd5OwogICAgIH0KIAorICAgIERhdGFiYXNlU3RyYXRlZ3kqIGRhdGFiYXNlU3RyYXRl
Z3koKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlU3RyYXRlZ3kpCisgICAgICAgICAg
ICBtX2RhdGFiYXNlU3RyYXRlZ3kgPSBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CisgICAgICAg
IHJldHVybiBtX2RhdGFiYXNlU3RyYXRlZ3k7CisgICAgfQorCiAgICAgTG9hZGVyU3RyYXRlZ3kq
IGxvYWRlclN0cmF0ZWd5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZXJTdHJhdGVneSkK
QEAgLTg0LDYgKzkyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtU3RyYXRl
Z2llcygpCiAgICAgICAgIDogbV9jb29raWVzU3RyYXRlZ3koMCkKKyAgICAgICAgLCBtX2RhdGFi
YXNlU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX2xvYWRlclN0cmF0ZWd5KDApCiAgICAgICAgICwg
bV9wYXN0ZWJvYXJkU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX3BsdWdpblN0cmF0ZWd5KDApCkBA
IC05OCw2ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb29r
aWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpID0gMDsKKyAgICB2aXJ0dWFsIERh
dGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVh
bCBMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVh
bCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpID0gMDsKICAg
ICB2aXJ0dWFsIFBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpID0gMDsKQEAg
LTEwNSw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVmlzaXRlZExpbmtTdHJhdGVn
eSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpID0gMDsKIAogICAgIENvb2tpZXNTdHJhdGVn
eSogbV9jb29raWVzU3RyYXRlZ3k7CisgICAgRGF0YWJhc2VTdHJhdGVneSogbV9kYXRhYmFzZVN0
cmF0ZWd5OwogICAgIExvYWRlclN0cmF0ZWd5KiBtX2xvYWRlclN0cmF0ZWd5OwogICAgIFBhc3Rl
Ym9hcmRTdHJhdGVneSogbV9wYXN0ZWJvYXJkU3RyYXRlZ3k7CiAgICAgUGx1Z2luU3RyYXRlZ3kq
IG1fcGx1Z2luU3RyYXRlZ3k7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc2MjkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAor
MjAxMi0xMi0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50
cm9kdWNpbmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kgYW5kIGRhdGFiYXNlIHNlcnZlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5MzQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGRhdGFiYXNl
IHNlcnZlciBpcyBjdXJyZW50bHkgYSBwbGFjZWhvbGRlciB0aGF0IGRvZXMgbm90aGluZy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VT
ZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorCiAyMDEyLTEy
LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHVudXNlZCBpbml0aWF0aW5nUGFnZSBwYXJhbWV0ZXIgZnJvbSBkb3dubG9hZCBvYmplY3Rz
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgc2V0
KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L25ldHdvcmtpbmZvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmlicmF0aW9uIgorICAgICIke1dFQkNPUkVf
RElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgogICAgICIke1dFQkNPUkVfRElSfS9hY2Nlc3NpYmls
aXR5IgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3MiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShy
ZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2
LDExIEBAIENvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1
cm4gdGhpczsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
cmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVy
U3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQog
ewogICAgIHJldHVybiB0aGlzOwpAQCAtMjMzLDYgKzIzOCwxMyBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29vCiAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhj
b250ZXh0KTsKIH0KIAorLy8gRGF0YWJhc2VTdHJhdGVneQorCitBYnN0cmFjdERhdGFiYXNlU2Vy
dmVyKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICBy
ZXR1cm4gRGF0YWJhc2VTdHJhdGVneTo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKTsgLy8gVXNlIHRoZSBk
ZWZhdWx0IGZvciBub3cuCit9CisKIC8vIExvYWRlclN0cmF0ZWd5CiAKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZp
c2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tp
ZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VTdHJhdGVneS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+
CkBAIC0zOCw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRl
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBh
c3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAg
ICAgCkBAIC00Nyw2ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNy
ZWF0ZUNvb2tpZXNTdHJhdGVneSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0
YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBh
c3RlYm9hcmRTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgT1ZFUlJJREU7CkBAIC02OCw2ICs3MCw5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KikgT1ZFUlJJREU7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5
CisgICAgdmlydHVhbCBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRhYmFz
ZVNlcnZlcigpIE9WRVJSSURFOworCiAgICAgLy8gV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKSBPVkVSUklERTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJh
c2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRs
eSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwpOgorCiAyMDEyLTEyLTEzICBKdXNzaSBLdWtrb25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXVtHVEtdIERvbid0IGNhbGwgZGVwcmVjYXRlZCBnX3R5cGVf
aW5pdCB3aGVuIGdsaWIgPT4gMi4zNQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lv
biAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBDb29raWVz
U3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAK
K0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VT
dHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4g
dGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxf
aAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJh
dGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNp
dGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7CiAKQEAgLTM3LDYgKzM4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdl
YkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRh
dGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3ko
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJh
dGVneSgpOwpAQCAtNTUsNiArNTcsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJh
dGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7
CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNp
b24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRh
YmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhh
dCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNHdGsuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVhdGVEYXRh
YmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGsuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0d0ayk6CisKIDIwMTItMTItMTIg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4
dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzR3RrLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNH
dGs6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNHdGs6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlz
OworfQorCiBMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAko
cmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzR3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICNk
ZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzR3RrX2gKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVn
eS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJh
dGVneS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgpAQCAtMjcsNyArMjgsNyBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdHJhdGVneS5oIgogCi1jbGFzcyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVz
LCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC0zNiw2ICsz
Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFz
ZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRl
TG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKQEAgLTU0LDYgKzU2LDkgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqKTsKIAor
ICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKKyAgICAvLyAtIFVzaW5nIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZp
cnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5J
bmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEz
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0
aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlz
IGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJh
c2VTdHJhdGVneSk6CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElz
IGluIERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2
MjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXNfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgpAQCAtMzQsNyArMzUs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyU3RyYXRlZ3kuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4KIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJk
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJh
dGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIApAQCAt
NDMsNiArNDQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29r
aWVzU3RyYXRlZ3koKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3Ry
YXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJk
U3RyYXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpIE9WRVJSSURFOwpAQCAtNjIsNiArNjQsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCopIE9WRVJSSURFOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8v
IC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMSBA
QCBDb29raWVzU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6CiAgICAgcmV0dXJuIHRo
aXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRl
RGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0
ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAg
ICByZXR1cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc2MjkpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJh
c2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdCk6CisKIDIwMTItMTItMTMgIEplcm9tZSBQYXNpb24gIDxqZXJv
bWUucGFzaW9uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIERvYzogRml4aW5nIFF0IFdlYktp
dCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCShyZXZpc2lv
biAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgQ29va2llc1N0
cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6YwogICAgIHJldHVybiB0aGlzOwogfQogCitE
YXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlRGF0YWJhc2VTdHJh
dGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlz
OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzUXQuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIFBsYXRmb3JtU3RyYXRlZ2llc1F0X2gKIAogI2luY2x1
ZGUgPENvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPERhdGFiYXNlU3RyYXRlZ3kuaD4KICNp
bmNsdWRlIDxMb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFBsYXRmb3JtU3RyYXRlZ2llcy5o
PgogI2luY2x1ZGUgPFBsdWdpblN0cmF0ZWd5Lmg+CkBAIC0zOSw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIH0KIAotY2xhc3MgUGxhdGZv
cm1TdHJhdGVnaWVzUXQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc1F0IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
U3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQ4LDYgKzQ5LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRl
Z3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJT
dHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVh
dGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNjYsNiArNjgsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8g
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2
b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29u
c3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRh
YmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVu
dGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyk6CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTM3NjI5
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTEgQEAgQ29va2llc1N0cmF0ZWd5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFz
ZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3ko
KQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVneSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDEzICsyNywxNCBAQAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsdWdpblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJTdHJhdGVn
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgogCi1jbGFzcyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVz
LCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIApAQCAtNDIs
NiArNDMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVz
U3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0
ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5
KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2Fy
ZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNjMsNiArNjUs
OSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcg
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRh
YmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHA6
CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVn
eSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaDoK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFKToKKwogMjAxMi0xMi0xMSAgTWlrZSBX
ZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNv
bGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAtIGl0IHNob3VsZCBiZSBwcml2
YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCShyZXZp
c2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTEgQEAg
Q29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRQogICAgIHJldHVybiB0aGlz
OwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRl
RGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0
ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewog
ICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAkocmV2aXNpb24g
MTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTQgQEAKICNkZWZp
bmUgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVneS5oIgogI2luY2x1ZGUg
IlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Ug
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywg
cHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJk
U3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQ
bHVnaW5TdHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29v
a2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0
YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwog
ICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQ
bHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6
UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwo=
</data>
<flag name="commit-queue"
          id="196314"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179441</attachid>
            <date>2012-12-14 00:45:31 -0800</date>
            <delta_ts>2012-12-14 01:06:45 -0800</delta_ts>
            <desc>wip2: + fixed 2nd chromium breakage. test ews again.</desc>
            <filename>bug-104748-wip2.patch</filename>
            <type>text/plain</type>
            <size>86900</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTEzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJh
c2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRs
eSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBYnN0cmFjdERhdGFi
YXNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI6OkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFz
ZVNlcnZlcjo6fkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoREJCYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vRGF0YWJhc2VTdHJh
dGVneS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0v
RGF0YWJhc2VTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Ojp+
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpQbGF0Zm9ybVN0cmF0ZWdpZXMp
OgorCiAyMDEyLTEyLTEzICBQYXJ0aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVp
bCA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVk
IGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTk1Miw2ICs5NTIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMRXhjZXB0aW9uLmNwcApAQCAtMTc5Myw2ICsxNzk0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAgICBwbGF0Zm9ybS9Db250ZW50
VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKyAgICBwbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAog
ICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIwODYsNiAr
MjA4Niw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3Bw
IFwKQEAgLTIxMDksNiArMjExMCw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5h
Z2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwIFwKQEAgLTUyOTEsNiArNTI5NCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Vyc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRl
Z3kuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0ZVRpbWVDaG9vc2VyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzc2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRo
b3JpemVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAorICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwIFwKICAgICBcCiAgICAgYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCkBAIC05NDUsNiArOTQ2LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcCBcCiAgICAgcGxhdGZv
cm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAg
XAorICAgIHBsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwIFwKICAgICBwbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5jcHAgXAogICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwIFwKICAgICBwbGF0Zm9y
bS9EcmFnRGF0YS5jcHAgXApAQCAtMTQwOSw2ICsxNDExLDcgQEAgSEVBREVSUyArPSBcCiAgICAg
TW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAogICAg
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCisgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQXV0aG9yaXplci5oIFwKQEAgLTE0MTksNiArMTQyMiw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggXAogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIu
aCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaCBcCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5oIFwKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDM0LDYgKzQzNCw3IEBAIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0
U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNh
Y2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTZEYXRhYmFz
ZVN0cmF0ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlv
bkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1v
dGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmlj
ZU1vdGlvbkRhdGE2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMkFjY2VsZXJhdGlvbkVF
RVM0X05TMl9JTlMwXzEyUm90YXRpb25SYXRlRUVFYmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJl
dmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtOTgyLDYgKzk4Miw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9X
YXZlVGFibGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAnLApAQCAtOTk4LDYgKzk5OSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFj
a2VuZFNlcnZlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNr
ZW5kU2VydmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdp
bmRvd1dlYkRhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzYy
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFi
YXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCkBAIC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIGJvb2wgc2V0VGV4dFZh
bHVlSW5EYXRhYmFzZShTUUxpdAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBtbGFtOiBGSVhN
RTogbW92ZSB0aGVzZSB0byB0aGUgREJTZXJ2ZXIuCiAvLyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1y
ZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xhc3MuCiBzdGF0
aWMgTXV0ZXgmIGd1aWRNdXRleCgpCiB7CkBAIC0xNjgsMTggKzE2OSw2IEBAIHN0YXRpYyBpbnQg
Z3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QKICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3Rh
dGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRh
YmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJldHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwot
fQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxl
KQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRp
YwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkK
IHsKQEAgLTIxOSw4ICsyMDgsOCBAQCBBYnN0cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNl
KFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVu
YW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1
cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFk
ZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0K
IAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyOCw3
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRo
aXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9y
RGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxW
YWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAog
Y2xhc3MgQWJzdHJhY3REYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBYnN0
cmFjdERhdGFiYXNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSk7Ci0KICAgICB2
aXJ0dWFsIH5BYnN0cmFjdERhdGFiYXNlKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCisj
ZGVmaW5lIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgLy8gSW5pdGlhbGl6YXRpb246CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1
YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgPSAwOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1
bnNpZ25lZCBsb25nIGxvbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRh
YmFzZXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdp
biopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKworICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0
RGF0YWJhc2UqKSA9IDA7CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1
YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hS
T01JVU0pCisKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOworCisgICAgdmlydHVhbCBib29s
IGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3RE
YXRhYmFzZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3Ry
YWN0RGF0YWJhc2UqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxz
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRh
YmFzZSopID0gMDsKKworcHJvdGVjdGVkOgorICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7
IH0KKyAgICB2aXJ0dWFsIH5BYnN0cmFjdERhdGFiYXNlU2VydmVyKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisj
ZW5kaWYgLy8gQWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRT
ZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiREJCYWNrZW5kU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEQkJhY2tlbmQgeworCit2b2lkIFNl
cnZlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW5pdGlhbGl6
ZVRyYWNrZXIoZGF0YWJhc2VQYXRoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNl
UGF0aCk7CisjZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFn
ZXJDbGllbnQqIGNsaWVudCkKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjbGllbnQpOworI2VuZGlmCit9CisKK1N0cmluZyBTZXJ2ZXI6OmRhdGFiYXNlRGly
ZWN0b3J5UGF0aCgpIGNvbnN0Cit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyNl
bHNlCisgICAgcmV0dXJuICIiOworI2VuZGlmCit9CisKK3ZvaWQgU2VydmVyOjpzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmICFQTEFURk9STShDSFJP
TUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9y
eVBhdGgocGF0aCk7CisjZW5kaWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZEb2VzTm90RXhpc3QpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitib29sIFNlcnZlcjo6aGFzRW50cnlG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9pZCBT
ZXJ2ZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMocmVzdWx0KTsKK30KKwor
Ym9vbCBTZXJ2ZXI6OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7Cit9CisK
K0RhdGFiYXNlRGV0YWlscyBTZXJ2ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0
cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2lu
KTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFNlcnZlcjo6dXNhZ2VGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFNlcnZl
cjo6cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwor
dm9pZCBTZXJ2ZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YVNpemUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0
UXVvdGEob3JpZ2luLCBxdW90YVNpemUpOworfQorCit2b2lkIFNlcnZlcjo6ZGVsZXRlQWxsRGF0
YWJhc2VzKCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKK30KKworYm9vbCBTZXJ2ZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVP
cmlnaW4ob3JpZ2luKTsKK30KKworYm9vbCBTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKK30KKwor
Ly8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMg
ZGF0YQordm9pZCBTZXJ2ZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChvcmlnaW4sIG5hbWUp
OworfQorCit2b2lkIFNlcnZlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRh
dGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlQ2hhbmdl
ZChkYXRhYmFzZSk7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBTZXJ2
ZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKK30K
KyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwordm9pZCBTZXJ2ZXI6OmludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KGNvbnRleHQpOworfQorCitib29sIFNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
Cit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERh
dGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKK30KKwor
dm9pZCBTZXJ2ZXI6OmFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkK
K3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5hZGRPcGVuRGF0YWJhc2UoZGF0YWJh
c2UpOworfQorCit2b2lkIFNlcnZlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJh
c2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9w
ZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpzZXREYXRhYmFzZURldGFp
bHMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCit7CisgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2Vy
dmVyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSogZGF0YWJh
c2UpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVG
b3JEYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIERCQmFja2VuZAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tl
bmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvREJCYWNrZW5kU2VydmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEQkJh
Y2tlbmRTZXJ2ZXJfaAorI2RlZmluZSBEQkJhY2tlbmRTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7CisKK2NsYXNzIFNlcnZlcjog
cHVibGljIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgeworcHVibGljOgorICAgIFNlcnZlcigpIHsg
fTsKKyAgICB2aXJ0dWFsIH5TZXJ2ZXIoKSB7IH0KKworICAgIC8vIEluaXRpYWxpemF0aW9uOgor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAg
IHZpcnR1YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworCisjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCBib29sIGRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcm
LCBTZWN1cml0eU9yaWdpbiopOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdXNh
Z2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
bG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworCisgICAgdmlydHVhbCB2b2lk
IHNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIC8vIEZyb20gYSBz
ZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNoYW5nZWQo
QWJzdHJhY3REYXRhYmFzZSopOworCisjZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hS
T01JVU0pCisKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
RXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2Uq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2Uq
KTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0
TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIERCQmFja2VuZAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERCQmFja2VuZFNlcnZlcl9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RP
TVdpbmRvd1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJh
c2UuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ2LDcg
KzQ2LDggQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93V2ViRGF0YWJhcwogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UgPSAwOwotICAgIGlm
IChBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50
b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRi
TWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmIChkYk1hbmFnZXIu
aXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKS0+dG9wRG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpCiAgICAgICAgIGRhdGFiYXNlID0gRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSh3
aW5kb3ctPmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7CiAKICAgICBpZiAoIWRhdGFiYXNlICYmICFlYykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1
ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpv
cGVuRGF0YWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUmIGUpCiB7Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmNhbkVz
dGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMg
bm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTA0LDEzICsxMDQsMTIgQEAgUGFzc1JlZlB0cjxEYXRh
YmFzZT4gRGF0YWJhc2U6Om9wZW5EYXRhYgogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAg
aWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGUs
IGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJv
ck1lc3NhZ2UpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVu
RGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURl
dGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpOwotCi0gICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNP
cGVuRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJh
c2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRIYXNPcGVu
RGF0YWJhc2VzKGNvbnRleHQpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRP
cGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
Pmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKIApAQCAtMjI4LDcgKzIyNyw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICBSZWZQdHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlz
OwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFz
ZUNsb3NlZCh0aGlzKTsKICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+
dW5zY2hlZHVsZURhdGFiYXNlVGFza3ModGhpcyk7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xv
c2VJbW1lZGlhdGVseSgpCkBAIC0yNDMsNyArMjQyLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2VJ
bW1lZGlhdGVseSgpCiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUo
KSBjb25zdAogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhT
aXplRm9yRGF0YWJhc2UodGhpcyk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKIH0KIAogYm9vbCBEYXRhYmFzZTo6cGVy
Zm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9u
Q29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCShyZXZpc2lv
biAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2NoZW1lUmVnaXN0cnkuaCIKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERhdGFiYXNlQ29udGV4
dDo6ZGF0YWJhc2VFeGNlZWRlZFF1CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIGEgcmVhbCBpbXBsZW1lbnRhdGlvbjsgdGhpcyBpcyBhIHRlbXBvcmFy
eSBzb2x1dGlvbiBmb3IgdGVzdGluZy4KICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVm
YXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLnNldFF1b3RhKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwg
ZGVmYXVsdFF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YSht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7
CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCisjaWYgVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgorI2Vsc2UKKyNpbmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDQzICs1MCw0NiBAQCBEYXRh
YmFzZU1hbmFnZXImIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlCiB9CiAKIERhdGFiYXNlTWFuYWdl
cjo6RGF0YWJhc2VNYW5hZ2VyKCkKKyAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX2RhdGFiYXNl
SXNBdmFpbGFibGUodHJ1ZSkKIHsKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyAgICBt
X3NlcnZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5kYXRhYmFzZVN0cmF0ZWd5KCktPmdldERh
dGFiYXNlU2VydmVyKCk7CisjZWxzZQorICAgIG1fc2VydmVyID0gbmV3IERCQmFja2VuZDo6U2Vy
dmVyOworI2VuZGlmCisgICAgQVNTRVJUKG1fc2VydmVyKTsgLy8gV2Ugc2hvdWxkIGFsd2F5cyBo
YXZlIGEgc2VydmVyIHRvIHdvcmsgd2l0aC4KIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6Omlu
aXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiB7Ci0jaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQotICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VQ
YXRoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNlUGF0aCk7Ci0jZW5kaWYKKyAg
ICBtX3NlcnZlci0+aW5pdGlhbGl6ZShkYXRhYmFzZVBhdGgpOwogfQogCi0jaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFn
ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRD
bGllbnQoY2xpZW50KTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3NlcnZlci0+c2V0
Q2xpZW50KGNsaWVudCk7CiB9CiAKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlRGly
ZWN0b3J5UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIHJldHVybiBtX3NlcnZlci0+ZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyAgICBtX3NlcnZl
ci0+c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOwogfQotI2VuZGlmCiAKIGJvb2wgRGF0
YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJh
c2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKIH0K
IAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQog
ewotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGF2YWlsYWJsZSk7CisgICAg
bV9kYXRhYmFzZUlzQXZhaWxhYmxlID0gYXZhaWxhYmxlOwogfQogCiBib29sIERhdGFiYXNlTWFu
YWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtODksNiArOTcsMTEgQEAgYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMo
UwogICAgIHJldHVybiBEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoY29udGV4dCk7
CiB9CiAKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRIYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNv
bnRleHQpLT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7Cit9CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNl
VGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQogewogICAgIERhdGFiYXNlQ29udGV4dDo6
c3RvcERhdGFiYXNlcyhjb250ZXh0LCBzeW5jaHJvbml6ZXIpOwpAQCAtOTYsNzAgKzEwOSwxMDYg
QEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaQogCiBTdHJpbmcgRGF0
YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmln
aW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1
bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50
cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1
cm4gbV9zZXJ2ZXItPmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3Vs
dCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7Cisg
ICAgbV9zZXJ2ZXItPm9yaWdpbnMocmVzdWx0KTsKIH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6
OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIG1fc2Vy
dmVyLT5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKIH0KIAogRGF0YWJh
c2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmln
aW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwg
b3JpZ2luKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9z
ZXJ2ZXItPnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBE
YXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9y
aWdpbik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5xdW90YUZvck9yaWdpbihvcmlnaW4pOwogfQog
CiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldFF1
b3RhKG9yaWdpbiwgcXVvdGFTaXplKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZUFsbERhdGFiYXNlcygpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgbV9zZXJ2ZXItPmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQog
CiBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdp
bihvcmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7CiB9
CiAKIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuIG1f
c2VydmVyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vj
b25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIERh
dGFiYXNlTWFuYWdlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fc2VydmVyLT5zY2hlZHVs
ZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChvcmlnaW4sIG5hbWUpOworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fc2VydmVyLT5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiAjZWxzZSAvLyBQ
TEFURk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1t
ZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CisgICAgbV9zZXJ2ZXItPmNsb3NlRGF0
YWJhc2VzSW1tZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CiB9CiAjZW5kaWYgLy8g
UExBVEZPUk0oQ0hST01JVU0pCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxE
YXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChjb250ZXh0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmNhbkVzdGFi
bGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKQoreworICAgIHJldHVybiBtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJhc2UoY29u
dGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQor
eworICAgIG1fc2VydmVyLT5hZGRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIERh
dGFiYXNlTWFuYWdlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFi
YXNlKQoreworICAgIG1fc2VydmVyLT5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQor
Cit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQoreworICAgIG1fc2VydmVyLT5zZXREYXRhYmFz
ZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisK
K3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2
ZXItPmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTcgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVk
ZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
ICJBYnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
OwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiBjbGFzcyBEYXRhYmFzZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFi
YXNlTWFuYWdlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDYsMTYgKzQxLDE2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwotI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKICAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsK
ICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKIAogICAgIGJvb2wg
aXNBdmFpbGFibGUoKTsKICAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCiAgICAgYm9v
bCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIHNl
dEhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCiAgICAgLy8gV2hl
biB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25h
bGxlZC4KICAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERh
dGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCkBAIC03NiwxNSArNzEsMzAgQEAgcHVibGljOgog
ICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgYm9vbCBkZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyAgICAvLyBG
cm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRh
CisgICAgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3RE
YXRhYmFzZSopOworCiAjZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkKICAgICB2b2lkIGNsb3Nl
RGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCiAgICAgdm9p
ZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAorICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2b2lkIGFkZE9wZW5EYXRhYmFzZShB
YnN0cmFjdERhdGFiYXNlKik7CisgICAgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3RE
YXRhYmFzZSopOworCisgICAgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVG
b3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKik7CisKIHByaXZhdGU6CiAgICAgRGF0
YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFuYWdlcigpIHsgfQorCisgICAgQWJzdHJh
Y3REYXRhYmFzZVNlcnZlciogbV9zZXJ2ZXI7CisgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBt
X2NsaWVudDsKKyAgICBib29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJEYXRhYmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlNRTEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3luYy5oIgpAQCAtNTIs
NyArNTIsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvCiB7CiAg
ICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIAotICAgIGlmICghRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAl
cyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2Np
aSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTYyLDExICs2MiwxMSBAQCBQ
YXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvCiAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZTsKICAgICBpZiAoIWRhdGFiYXNlLT5wZXJmb3JtT3BlbkFuZFZlcmlmeSghY3JlYXRp
b25DYWxsYmFjaywgZWMsIGVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgZGF0YWJhc2UtPmxvZ0Vy
cm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlz
cGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKICAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkgJiYg
Y3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkludm9r
aW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdl
dCgpKTsKQEAgLTg3LDcgKzg3LDcgQEAgRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKICAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAK
ICAgICBpZiAob3BlbmVkKCkpIHsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
cmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiAgICAgICAgIGNsb3NlRGF0YWJhc2UoKTsK
ICAgICB9CiB9CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1t
ZWRpYXRlbHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNp
Ymx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5y
ZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
cmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwogICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKQEAgLTQzLDIxICs0
MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6
OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNo
YW5nZWQoCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRh
YmFzZUNoYW5nZWQoCiAgICAgICAgIGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFz
ZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6
ZGlkRXhlY3V0ZVN0YXRlbWVudChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOworICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFzZSk7CiB9
CiAKIGJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKEFic3RyYWN0RGF0
YWJhc2UqIGRhdGFiYXNlKQogewogICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKGRh
dGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVu
dFF1b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJh
c2UtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+
ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwotICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZv
ck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgcmV0dXJuIChuZXdRdW90
YSA+IGN1cnJlbnRRdW90YSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5j
cHAJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEg
KzMxLDEwIEBACiAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuaCIKIAotI2lu
Y2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIApA
QCAtNDMsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NS
ZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRh
YmFzZShjb250ZXh0LT50b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxh
YmxlKCkpIHsKKyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Rh
dGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQpAQCAtNTMsNyArNTIsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBX
b3JrZXJDb250ZXh0V2ViRGF0CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBXb3JrZXJDb250
ZXh0V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZVN5bmMoV29ya2VyQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRh
YmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRl
eHQtPnRvcE9yaWdpbigpKSB8fCAhQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSkgewor
ICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29u
dGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2YWls
YWJsZSgpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1MTk3LDYgKzI1MTk3LDEwIEBACiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXHdlYmRhdGFiYXNlXEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjUy
NzMsNiArMjUyNzcsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcREJCYWNrZW5kU2VydmVyLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcREJCYWNrZW5kU2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERP
TVdpbmRvd1dlYkRhdGFiYXNlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTI4MzgyLDYg
KzI4Mzk0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEYXRhYmFzZVN0cmF0ZWd5
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXERhdGVDb21wb25lbnRzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMsOCArMzY4Myw2IEBACiAJCTk3QkM2QTI3
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNkEy
OTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYx
NjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKLQkJRkU0NTZG
MTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTgx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CiAJCTk3QkM2QTJCMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGFz
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLzsgfTsKQEAgLTY2NDEs
NiArNjYzOSw5IEBACiAJCUZERjZCQUY5MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50LmggKi87IH07CiAJCUZERjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFj
ay5jcHAgKi87IH07CiAJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVy
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsg
fTsKKwkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTE1RkE5
MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAw
NUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VN
YW5hZ2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZENDg4MEY2NzZFNTcw
MDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0
OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyog
SlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsK
QEAgLTY2NTIsNiArNjY1MywxMCBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsgfTsKIAkJ
RkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAw
RDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5oICovOyB9OworCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNrZW5kU2Vy
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFG
NjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAwRkRE
MjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2Vy
dmVyLmNwcCAqLzsgfTsKKwkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3Ry
YXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9Owor
CQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAw
MEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRv
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CiAJ
CUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2MDA5NzFC
QzggLyogUHNldWRvRWxlbWVudC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEg
LyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxp
dHlTdGF0ZS5jcHAgKi87IH07CkBAIC0xNDE5MCw2ICsxNDE5NSw3IEBACiAJCUZERjZCQUY3MTM0
QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTE1RkE5MTY3OTg4Q0QwMDI0
OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2Vy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRp
bmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjA0LDYgKzE0MjEwLDEwIEBACiAJCUZF
ODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2
Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERCQmFja2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZE
MjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEQkJhY2tlbmRTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVD
OTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
MzM1LDYgKzE0MzQ1LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRkVCMjZEMjcx
NjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8sCiAJCQkJNjVDOTdBRjIw
OEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5
MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0
IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0xODI1Miw2ICsxODI2Myw3IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRh
YmFzZS5jcHAgKi8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0
YWJhc2UuaCAqLywKKwkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRh
YmFzZVNlcnZlci5oICovLAogCQkJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VW
ZXJzaW9uV3JhcHBlci5jcHAgKi8sCiAJCQkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENo
YW5nZVZlcnNpb25XcmFwcGVyLmggKi8sCiAJCQkJOTdCQzY5REUxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlLmNwcCAqLywKQEAgLTE4Mjc2LDYgKzE4Mjg4LDcgQEAKIAkJCQk5N0JDNjlFRTE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJCQk5N0JDNjlFRjE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk5N0JDNjlGMDE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJRkVBRjY2NTMxNjc5NzAw
NzAwNjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYw
MEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFG
ODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUx
NTFGODM1QTAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCAqLywKQEAgLTIxMDMx
LDYgKzIxMDQ0LDggQEAKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJl
YWRDb3BpZXIuaCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNw
cCAqLywKIAkJCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCisJCQkJ
RkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovLAorCQkJ
CUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8sCiAJCQkJ
QTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlB
NTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZF
QTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCkBAIC0yMjU2Nyw2ICsyMjU4
Miw5IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0
NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxMTVGQUIxNjc5
ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJh
dmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyog
VHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDIxLDYgKzI5MDM5LDggQEAKIAkJCQlG
REE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAv
KiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVERUY4NDExNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVC
MjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVn
eS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlU3RyYXRlZ3kuaCIKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEQkJhY2tlbmRTZXJ2ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBEYXRhYmFzZVN0
cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpCit7CisgICAgcmV0dXJuIG5ldyBEQkJhY2tlbmQ6
OlNlcnZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZVN0cmF0ZWd5X2gKKyNkZWZpbmUgRGF0YWJhc2VT
dHJhdGVneV9oCisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
YXRhYmFzZVN0cmF0ZWd5IHsKK3B1YmxpYzoKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAg
IHZpcnR1YWwgQWJzdHJhY3REYXRhYmFzZVNlcnZlciogZ2V0RGF0YWJhc2VTZXJ2ZXIoKTsKKyNl
bmRpZgorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RGF0YWJhc2VTdHJhdGVneSgpIHsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NU
UkFURUdJRVMpCisKKyNlbmRpZiAvLyBEYXRhYmFzZVN0cmF0ZWd5X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b29raWVzU3RyYXRlZ3k7CitjbGFzcyBEYXRhYmFzZVN0cmF0ZWd5OwogY2xhc3MgTG9hZGVyU3Ry
YXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7CiBjbGFzcyBQbHVnaW5TdHJhdGVneTsK
QEAgLTQ2LDYgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29va2llc1N0cmF0
ZWd5OwogICAgIH0KIAorICAgIERhdGFiYXNlU3RyYXRlZ3kqIGRhdGFiYXNlU3RyYXRlZ3koKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlU3RyYXRlZ3kpCisgICAgICAgICAgICBtX2Rh
dGFiYXNlU3RyYXRlZ3kgPSBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCk7CisgICAgICAgIHJldHVy
biBtX2RhdGFiYXNlU3RyYXRlZ3k7CisgICAgfQorCiAgICAgTG9hZGVyU3RyYXRlZ3kqIGxvYWRl
clN0cmF0ZWd5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZXJTdHJhdGVneSkKQEAgLTg0
LDYgKzkyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtU3RyYXRlZ2llcygp
CiAgICAgICAgIDogbV9jb29raWVzU3RyYXRlZ3koMCkKKyAgICAgICAgLCBtX2RhdGFiYXNlU3Ry
YXRlZ3koMCkKICAgICAgICAgLCBtX2xvYWRlclN0cmF0ZWd5KDApCiAgICAgICAgICwgbV9wYXN0
ZWJvYXJkU3RyYXRlZ3koMCkKICAgICAgICAgLCBtX3BsdWdpblN0cmF0ZWd5KDApCkBAIC05OCw2
ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb29raWVzU3Ry
YXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpID0gMDsKKyAgICB2aXJ0dWFsIERhdGFiYXNl
U3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBMb2Fk
ZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBQYXN0
ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpID0gMDsKICAgICB2aXJ0
dWFsIFBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpID0gMDsKQEAgLTEwNSw2
ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVmlzaXRlZExpbmtTdHJhdGVneSogY3Jl
YXRlVmlzaXRlZExpbmtTdHJhdGVneSgpID0gMDsKIAogICAgIENvb2tpZXNTdHJhdGVneSogbV9j
b29raWVzU3RyYXRlZ3k7CisgICAgRGF0YWJhc2VTdHJhdGVneSogbV9kYXRhYmFzZVN0cmF0ZWd5
OwogICAgIExvYWRlclN0cmF0ZWd5KiBtX2xvYWRlclN0cmF0ZWd5OwogICAgIFBhc3RlYm9hcmRT
dHJhdGVneSogbV9wYXN0ZWJvYXJkU3RyYXRlZ3k7CiAgICAgUGx1Z2luU3RyYXRlZ3kqIG1fcGx1
Z2luU3RyYXRlZ3k7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0x
Mi0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kgYW5kIGRhdGFiYXNlIHNlcnZlcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5MzQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGRhdGFiYXNlIHNlcnZl
ciBpcyBjdXJyZW50bHkgYSBwbGFjZWhvbGRlciB0aGF0IGRvZXMgbm90aGluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorCiAyMDEyLTEyLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBpbml0aWF0aW5nUGFnZSBwYXJhbWV0ZXIgZnJvbSBkb3dubG9hZCBvYmplY3RzCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgc2V0KFdlYktp
dDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25ldHdv
cmtpbmZvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmlicmF0aW9uIgorICAgICIke1dFQkNPUkVfRElSfS9N
b2R1bGVzL3dlYmRhdGFiYXNlIgogICAgICIke1dFQkNPUkVfRElSfS9hY2Nlc3NpYmlsaXR5Igog
ICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vYmlu
ZGluZ3MiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lv
biAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDExIEBA
IENvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhp
czsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVE
YXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRl
Z3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAg
IHJldHVybiB0aGlzOwpAQCAtMjMzLDYgKzIzOCwxMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQWxsQ29vCiAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhjb250ZXh0
KTsKIH0KIAorLy8gRGF0YWJhc2VTdHJhdGVneQorCitBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VTdHJhdGVneTo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKTsgLy8gVXNlIHRoZSBkZWZhdWx0
IGZvciBub3cuCit9CisKIC8vIExvYWRlclN0cmF0ZWd5CiAKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAx
Mzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJh
dGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRT
dHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0z
OCw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1
Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9h
cmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBA
IC00Nyw2ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1T
dHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNv
b2tpZXNTdHJhdGVneSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9h
cmRTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRl
Z3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgT1ZFUlJJREU7CkBAIC02OCw2ICs3MCw5IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KikgT1ZFUlJJREU7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAg
dmlydHVhbCBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZl
cigpIE9WRVJSSURFOworCiAgICAgLy8gV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2No
ZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJh
dGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBs
YWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzRWZsLmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgor
CiAyMDEyLTEyLTEzICBKdXNzaSBLdWtrb25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4K
IAogICAgICAgICBbRUZMXVtHVEtdIERvbid0IGNhbGwgZGVwcmVjYXRlZCBnX3R5cGVfaW5pdCB3
aGVuIGdsaWIgPT4gMi4zNQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCShyZXZpc2lvbiAxMzc2
MjkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBDb29raWVzU3RyYXRl
Z3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFi
YXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVn
eSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaAogCiAj
aW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5o
IgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yOCw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVz
RWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0
aWFsaXplKCk7CiAKQEAgLTM3LDYgKzM4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgp
OwpAQCAtNTUsNiArNTcsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQor
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3
NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBz
ZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2Vz
IG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNH
dGsuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVhdGVEYXRhYmFzZVN0
cmF0ZWd5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsu
aDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0d0ayk6CisKIDIwMTItMTItMTIgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFs
bHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Ogog
ICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGs6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQor
CiBMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVhdGVMb2FkZXJTdHJh
dGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkocmV2aXNp
b24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzR3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICNkZWZpbmUg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrX2gKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5o
IgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgpAQCAtMjcsNyArMjgsNyBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdHJhdGVneS5oIgogCi1jbGFzcyBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGsgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0d0ayA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVk
V29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC0zNiw2ICszNyw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0
ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVy
U3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3Jl
YXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJh
dGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKQEAgLTU0LDYgKzU2LDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqKTsKIAorICAgIC8v
IFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKKyAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwg
dm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNv
bnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEzICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0
YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJl
bnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJhc2VTdHJh
dGVneSk6CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzc2MjkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXNfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRl
clN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgpAQCAtMzQsNyArMzUsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4KIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRl
Z3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hh
cmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIApAQCAtNDMsNiAr
NDQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3Ry
YXRlZ3koKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kq
IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVh
dGVQbHVnaW5TdHJhdGVneSgpIE9WRVJSSURFOwpAQCAtNjIsNiArNjQsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopIE9W
RVJSSURFOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNp
bmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2
aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMSBAQCBDb29r
aWVzU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6CiAgICAgcmV0dXJuIHRoaXM7CiB9
CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlRGF0YWJh
c2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIHsKICAgICByZXR1
cm4gdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc2MjkpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1
Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2Vy
dmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNRdCk6CisKIDIwMTItMTItMTMgIEplcm9tZSBQYXNpb24gIDxqZXJvbWUucGFz
aW9uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIERvYzogRml4aW5nIFF0IFdlYktpdCByZWZl
cmVuY2UgZG9jdW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCShyZXZpc2lvbiAxMzc2
MjkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgQ29va2llc1N0cmF0ZWd5
KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6YwogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFz
ZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgp
Cit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjZGVmaW5lIFBsYXRmb3JtU3RyYXRlZ2llc1F0X2gKIAogI2luY2x1ZGUgPENv
b2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPERhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRl
IDxMb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFBsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2lu
Y2x1ZGUgPFBsdWdpblN0cmF0ZWd5Lmg+CkBAIC0zOSw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIH0KIAotY2xhc3MgUGxhdGZvcm1TdHJh
dGVnaWVzUXQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2Ns
YXNzIFBsYXRmb3JtU3RyYXRlZ2llc1F0IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVn
eSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0
ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBj
cmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNjYsNiArNjgsOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJl
ZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2Vi
Q29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0
cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEg
cGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llcyk6
CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNl
TWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTM3NjI5KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0
ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQorewor
ICAgIHJldHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM3NjI5KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEzICsyNywxNCBAQAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNl
U3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
blN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJTdHJhdGVneS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVk
V29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIApAQCAtNDIsNiArNDMs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRl
Z3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFi
YXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVh
dGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0
ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBs
dWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNjMsNiArNjUsOSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwog
CisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAg
dmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdp
bkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYp
OwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYyOSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBz
ZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaDoKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFKToKKwogMjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8
bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVUeXBl
cyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAtIGl0IHNob3VsZCBiZSBwcml2YXRlIHRv
IGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCShyZXZpc2lvbiAx
Mzc2MjkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTEgQEAgQ29va2ll
c1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRQogICAgIHJldHVybiB0aGlzOwogfQog
CitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlRGF0YWJh
c2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIExvYWRlclN0cmF0ZWd5KiBQ
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJl
dHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAkocmV2aXNpb24gMTM3NjI5
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTQgQEAKICNkZWZpbmUgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luU3RyYXRl
Z3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0
ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UgOiBwdWJs
aWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0
ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQ
bHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5T
dHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8v
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5z
KCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSos
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179444</attachid>
            <date>2012-12-14 01:06:45 -0800</date>
            <delta_ts>2012-12-17 17:56:39 -0800</delta_ts>
            <desc>wp2: svn up&apos;ed.</desc>
            <filename>bug-104748-wip2.patch</filename>
            <type>text/plain</type>
            <size>85325</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTEzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJh
c2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRs
eSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBYnN0cmFjdERhdGFi
YXNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI6OkFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFz
ZVNlcnZlcjo6fkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoREJCYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vRGF0YWJhc2VTdHJh
dGVneS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0v
RGF0YWJhc2VTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5Ojp+
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpQbGF0Zm9ybVN0cmF0ZWdpZXMp
OgorCiAyMDEyLTEyLTE0ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENQVSBQcm9maWxlOiBTZWFyY2ggaW4gImhlYXZ5
IiBtb2RlIGlzIHZlcnkgc2xvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
Mzc3MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTUyLDYgKzk1Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAor
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFeGNl
cHRpb24uY3BwCkBAIC0xNzk2LDYgKzE3OTcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNw
cAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorICAgIHBsYXRmb3JtL0RhdGFi
YXNlU3RyYXRlZ3kuY3BwCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCiAgICAgcGxh
dGZvcm0vRGVjaW1hbC5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjA4Niw2ICsyMDg2LDcg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgXApAQCAt
MjEwOSw2ICsyMTEwLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5j
cHAgXApAQCAtNTI5Nyw2ICs1MzAwLDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
dXJzb3IuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRl
VGltZUNob29zZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIu
Y3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCisgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1dv
cmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAgXAogICAgIFwKICAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKQEAgLTk0OCw2ICs5NDksNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCisgICAg
cGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmNwcCBcCiAgICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdE
YXRhLmNwcCBcCkBAIC0xNDEyLDYgKzE0MTQsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCiAgICAgXAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKKyAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RP
TVdpbmRvd1dlYkRhdGFiYXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VB
dXRob3JpemVyLmggXApAQCAtMTQyMiw2ICsxNDI1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5oIFwKICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC00MzQsNiArNDM0LDcgQEAgX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUEt0
agogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUxOGRpc2tVc2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0
eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTIwZGVsZXRlQ2FjaGVGb3JP
cmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNkRhdGFiYXNlU3RyYXRl
Z3kxN2dldERhdGFiYXNlU2VydmVyRXYKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0YTEy
QWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0
YTEyUm90YXRpb25SYXRlNmNyZWF0ZUViZGJkYmQKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9u
RGF0YTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlMwXzEyQWNjZWxlcmF0aW9uRUVFUzRfTlMy
X0lOUzBfMTJSb3RhdGlvblJhdGVFRUViZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
MTM3NzI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC05ODIsNiArOTgyLDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJs
ZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBl
ci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCcsCkBA
IC05OTgsNiArOTk5LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2Vy
dmVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2
ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRh
YmFzZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2Vi
RGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90
YU1hbmFnZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
QWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NzI5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRo
b3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0
ZW1lbnQuaCIKQEAgLTEwOCw2ICsxMDgsNyBAQCBzdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRh
dGFiYXNlKFNRTGl0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIG1sYW06IEZJWE1FOiBtb3Zl
IHRoZXNlIHRvIHRoZSBEQlNlcnZlci4KIC8vIEZJWE1FOiBtb3ZlIGFsbCBndWlkLXJlbGF0ZWQg
ZnVuY3Rpb25zIHRvIGEgRGF0YWJhc2VWZXJzaW9uVHJhY2tlciBjbGFzcy4KIHN0YXRpYyBNdXRl
eCYgZ3VpZE11dGV4KCkKIHsKQEAgLTE2OCwxOCArMTY5LDYgQEAgc3RhdGljIGludCBndWlkRm9y
T3JpZ2luQW5kTmFtZShjb25zdCBTdAogICAgIHJldHVybiBndWlkOwogfQogCi1zdGF0aWMgYm9v
bCBpc0RhdGFiYXNlQXZhaWxhYmxlID0gdHJ1ZTsKLQotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpp
c0F2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIGlzRGF0YWJhc2VBdmFpbGFibGU7Ci19Ci0KLXZv
aWQgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCi17Ci0g
ICAgaXNEYXRhYmFzZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKLX0KLQogLy8gc3RhdGljCiBjb25z
dCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZUluZm9UYWJsZU5hbWUoKQogewpAQCAt
MjE5LDggKzIwOCw4IEBAIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXAK
ICAgICAgICAgaGFzaFNldC0+YWRkKHRoaXMpOwogICAgIH0KIAotICAgIG1fZmlsZW5hbWUgPSBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKHNlY3VyaXR5T3Jp
Z2luKCksIG1fbmFtZSk7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuYWRkT3BlbkRh
dGFiYXNlKHRoaXMpOworICAgIG1fZmlsZW5hbWUgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5mdWxsUGF0aEZvckRhdGFiYXNlKHNlY3VyaXR5T3JpZ2luKCksIG1fbmFtZSk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuYWRkT3BlbkRhdGFiYXNlKHRoaXMpOwogfQogCiBBYnN0
cmFjdERhdGFiYXNlOjp+QWJzdHJhY3REYXRhYmFzZSgpCkBAIC01MzksNyArNTI4LDcgQEAgdm9p
ZCBBYnN0cmFjdERhdGFiYXNlOjpyZXNldEF1dGhvcml6ZXIoKQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgQWJzdHJhY3REYXRhYmFzZTo6bWF4aW11bVNpemUoKSBjb25zdAogewotICAgIHJldHVybiBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmdldE1heFNpemVGb3JEYXRhYmFz
ZSh0aGlzKTsKIH0KIAogdm9pZCBBYnN0cmFjdERhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlm
TmVlZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsOSArNTEsNiBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBB
YnN0cmFjdERhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RGF0
YWJhc2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0
YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKTsKLQogICAgIHZpcnR1YWwg
fkFic3RyYWN0RGF0YWJhc2UoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRh
YmFzZVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKKyNkZWZpbmUg
QWJzdHJhY3REYXRhYmFzZVNlcnZlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisj
aW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBYnN0cmFjdERhdGFiYXNlOworY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNz
IFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBBYnN0cmFjdERhdGFiYXNlU2VydmVyIHsKK3B1Ymxp
YzoKKyAgICAvLyBJbml0aWFsaXphdGlvbjoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldENs
aWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
YmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCBTdHJp
bmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpID0gMDsKKworI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gPiYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCBib29sIGRhdGFiYXNlTmFt
ZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSA9IDA7
CisgICAgdmlydHVhbCBEYXRhYmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29u
c3QgU3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdpbiosIHVuc2lnbmVk
IGxvbmcgbG9uZykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11
c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFz
ZSopID0gMDsKKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCB2b2lk
IGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkK
KworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRXN0
YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNl
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRh
YmFzZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQg
bG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKikg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlcigpIHsgfQorICAg
IHZpcnR1YWwgfkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAv
LyBBYnN0cmFjdERhdGFiYXNlU2VydmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJE
QkJhY2tlbmRTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERCQmFja2VuZCB7CisKK3ZvaWQgU2VydmVyOjpp
bml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQoreworI2lmICFQTEFURk9STShD
SFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbml0aWFsaXplVHJhY2tl
cihkYXRhYmFzZVBhdGgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsK
KyNlbmRpZgorfQorCit2b2lkIFNlcnZlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVu
dCogY2xpZW50KQoreworI2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQoY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGNsaWVudCk7CisjZW5kaWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKCkgY29uc3QKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworI2Vsc2UKKyAg
ICByZXR1cm4gIiI7CisjZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGlyZWN0
b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQor
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChw
YXRoKTsKKyNlbmRpZgorfQorCitTdHJpbmcgU2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVs
bFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKK30K
KworI2lmICFQTEFURk9STShDSFJPTUlVTSkKK2Jvb2wgU2VydmVyOjpoYXNFbnRyeUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6
b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCit7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQpOworfQorCitib29sIFNl
cnZlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30KKworRGF0YWJh
c2VEZXRhaWxzIFNlcnZlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOworfQor
Cit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjp1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2Fn
ZUZvck9yaWdpbihvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpxdW90
YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNl
cnZlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShv
cmlnaW4sIHF1b3RhU2l6ZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkZWxldGVBbGxEYXRhYmFzZXMo
KQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygp
OworfQorCitib29sIFNlcnZlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
Cit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihv
cmlnaW4pOworfQorCitib29sIFNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9t
IGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2
b2lkIFNlcnZlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisK
K3ZvaWQgU2VydmVyOjpkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2Up
Cit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFi
YXNlKTsKK30KKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIFNlcnZlcjo6Y2xv
c2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9z
ZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlm
IC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCit2b2lkIFNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorewor
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29udGV4dCk7Cit9CisKK2Jvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAg
ICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2Uo
Y29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIFNl
cnZlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAg
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9
CisKK3ZvaWQgU2VydmVyOjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0
YWJhc2UpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFi
YXNlKGRhdGFiYXNlKTsKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBTZXJ2ZXI6Omdl
dE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFi
YXNlKGRhdGFiYXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
QkJhY2tlbmRTZXJ2ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERCQmFja2VuZFNl
cnZlcl9oCisjZGVmaW5lIERCQmFja2VuZFNlcnZlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorCisjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgREJCYWNrZW5kIHsKKworY2xhc3MgU2VydmVyOiBwdWJsaWMg
QWJzdHJhY3REYXRhYmFzZVNlcnZlciB7CitwdWJsaWM6CisgICAgU2VydmVyKCkgeyB9OworICAg
IHZpcnR1YWwgflNlcnZlcigpIHsgfQorCisgICAgLy8gSW5pdGlhbGl6YXRpb246CisgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCisgICAg
dmlydHVhbCB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVh
bCBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisKKyNpZiAhUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgdmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
Kik7CisgICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihT
ZWN1cml0eU9yaWdpbiosIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOworICAgIHZpcnR1YWwgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3Vy
aXR5T3JpZ2luKik7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHF1
b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVv
dGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFy
eSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFj
dERhdGFiYXNlKik7CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwg
dm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkK
KworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxp
c2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworCisg
ICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXpl
Rm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgREJCYWNrZW5kCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gREJCYWNrZW5kU2VydmVyX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTAgKzMwLDEwIEBACiAKICNpbmNsdWRlICJET01XaW5kb3dXZWJEYXRhYmFzZS5oIgog
Ci0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDYsNyArNDYsOCBA
QCBQYXNzUmVmUHRyPERhdGFiYXNlPiBET01XaW5kb3dXZWJEYXRhYmFzCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IDA7Ci0gICAgaWYgKEFic3Ry
YWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkgJiYgd2luZG93LT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSh3aW5kb3ctPmRvY3VtZW50KCktPnRvcERvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgIERhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2Vy
ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CisgICAgaWYgKGRiTWFuYWdlci5pc0F2YWls
YWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
RGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpKSkKICAgICAgICAgZGF0YWJhc2UgPSBEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKHdpbmRvdy0+
ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNy
ZWF0aW9uQ2FsbGJhY2ssIGVjKTsKIAogICAgIGlmICghZGF0YWJhc2UgJiYgIWVjKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHJl
dmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5IEBACiAjaW5jbHVkZSAiQ3Jv
c3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVk
ZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTk0LDcgKzk0LDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2U6Om9wZW5EYXRh
YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25D
YWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhj
ZXB0aW9uQ29kZSYgZSkKIHsKLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNh
bkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplKSkgeworICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuY2FuRXN0YWJsaXNo
RGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CiAg
ICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxs
b3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CkBAIC0xMDQsMTMgKzEwNCwxMiBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBE
YXRhYmFzZTo6b3BlbkRhdGFiCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICBpZiAoIWRh
dGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxsYmFjaywgZSwgZXJyb3JN
ZXNzYWdlKSkgewogICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNzYWdlKGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFz
ZShkYXRhYmFzZS5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSk7Ci0KLSAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCktPnNldEhhc09wZW5EYXRh
YmFzZXMoKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURldGFp
bHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldEhhc09wZW5EYXRhYmFz
ZXMoY29udGV4dCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRh
YmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgp
LCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwogCkBAIC0yMjgsNyArMjI3LDcgQEAgdm9pZCBEYXRh
YmFzZTo6Y2xvc2UoKQogICAgIFJlZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9IHRoaXM7CiAgICAg
ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2Vk
KHRoaXMpOwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVk
dWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5y
ZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
cmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVk
aWF0ZWx5KCkKQEAgLTI0Myw3ICsyNDIsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0
ZWx5KCkKIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JE
YXRhYmFzZSh0aGlzKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZ2V0
TWF4U2l6ZUZvckRhdGFiYXNlKHRoaXMpOwogfQogCiBib29sIERhdGFiYXNlOjpwZXJmb3JtT3Bl
bkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBl
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNzcy
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5j
bHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgRGF0YWJhc2VDb250ZXh0OjpkYXRh
YmFzZUV4Y2VlZGVkUXUKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gRklYTUU6IFRo
aXMgbmVlZHMgYSByZWFsIGltcGxlbWVudGF0aW9uOyB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0
aW9uIGZvciB0ZXN0aW5nLgogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVv
dGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0
UXVvdGEobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0
UXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgZGVmYXVsdFF1b3RhKTsKICNlbmRp
ZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDggKzMwLDEzIEBACiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgi
Ci0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRF
R0lFUykKKyNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCisjZWxzZQorI2luY2x1ZGUgIkRCQmFja2VuZFNlcnZlci5oIgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNDMgKzUwLDQ2IEBAIERhdGFiYXNlTWFu
YWdlciYgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2UKIH0KIAogRGF0YWJhc2VNYW5hZ2VyOjpEYXRh
YmFzZU1hbmFnZXIoKQorICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fZGF0YWJhc2VJc0F2YWls
YWJsZSh0cnVlKQogeworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorICAgIG1fc2VydmVy
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmRhdGFiYXNlU3RyYXRlZ3koKS0+Z2V0RGF0YWJhc2VT
ZXJ2ZXIoKTsKKyNlbHNlCisgICAgbV9zZXJ2ZXIgPSBuZXcgREJCYWNrZW5kOjpTZXJ2ZXI7Cisj
ZW5kaWYKKyAgICBBU1NFUlQobV9zZXJ2ZXIpOyAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBz
ZXJ2ZXIgdG8gd29yayB3aXRoLgogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW5pdGlhbGl6
ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIHsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0p
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBhdGgpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsKLSNlbmRpZgorICAgIG1fc2Vy
dmVyLT5pbml0aWFsaXplKGRhdGFiYXNlUGF0aCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVu
dCogY2xpZW50KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudChj
bGllbnQpOworICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgIG1fc2VydmVyLT5zZXRDbGllbnQo
Y2xpZW50KTsKIH0KIAogU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIG1fc2VydmVyLT5kYXRhYmFzZURpcmVj
dG9yeVBhdGgoKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGlyZWN0
b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOworICAgIG1fc2VydmVyLT5zZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBEYXRhYmFzZU1h
bmFnZXI6OmlzQXZhaWxhYmxlKCkKIHsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFzZTo6aXNB
dmFpbGFibGUoKTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZUlzQXZhaWxhYmxlOwogfQogCiB2b2lk
IERhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiB7Ci0gICAg
QWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoYXZhaWxhYmxlKTsKKyAgICBtX2RhdGFi
YXNlSXNBdmFpbGFibGUgPSBhdmFpbGFibGU7CiB9CiAKIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpo
YXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC04OSw2
ICs5NywxMSBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTCiAgICAg
cmV0dXJuIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKIH0KIAor
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldEhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCkt
PnNldEhhc09wZW5EYXRhYmFzZXMoKTsKK30KKwogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BE
YXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0YWJhc2VUYXNrU3lu
Y2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCiB7CiAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0
YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7CkBAIC05Niw3MCArMTA5LDEwNiBAQCB2b2lk
IERhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyhTY3JpCiAKIFN0cmluZyBEYXRhYmFzZU1h
bmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewotICAgIHJldHVybiBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFt
ZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworICAgIHJldHVybiBtX3NlcnZlci0+ZnVsbFBhdGhG
b3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKIH0KIAogI2lm
ICFQTEFURk9STShDSFJPTUlVTSkKIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOworICAgIHJldHVybiBtX3Nl
cnZlci0+aGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFn
ZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KQogewot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMocmVzdWx0KTsKKyAgICBtX3Nl
cnZlci0+b3JpZ2lucyhyZXN1bHQpOwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJh
c2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0KQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCByZXN1bHQpOwogfQogCiBEYXRhYmFzZURldGFp
bHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcm
IG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7Cisg
ICAgcmV0dXJuIG1fc2VydmVyLT5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4p
OwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihvcmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+
dXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNl
TWFuYWdlcjo6cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsK
KyAgICByZXR1cm4gbV9zZXJ2ZXItPnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHZvaWQg
RGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25l
ZCBsb25nIGxvbmcgcXVvdGFTaXplKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNldFF1b3RhKG9yaWdpbiwgcXVvdGFTaXplKTsKKyAgICBtX3NlcnZlci0+c2V0UXVvdGEob3Jp
Z2luLCBxdW90YVNpemUpOwogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0
YWJhc2VzKCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKKyAgICBtX3NlcnZlci0+ZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAKIGJvb2wg
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsK
LSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdp
bik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5kZWxldGVPcmlnaW4ob3JpZ2luKTsKIH0KIAogYm9v
bCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7Cit9CisKKy8vIEZyb20gYSBzZWNvbmRhcnkg
dGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKK3ZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9zZXJ2ZXItPnNjaGVkdWxlTm90aWZ5
RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpkYXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgbV9z
ZXJ2ZXItPmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFzZSk7CiB9CiAKICNlbHNlIC8vIFBMQVRGT1JN
KENIUk9NSVVNKQogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRl
bHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVs
eShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKKyAgICBtX3NlcnZlci0+Y2xvc2VEYXRhYmFzZXNJ
bW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKIH0KICNlbmRpZiAvLyBQTEFURk9S
TShDSFJPTUlVTSkKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KGNvbnRleHQpOworICAgIG1fc2VydmVyLT5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KGNvbnRleHQpOworfQorCitib29sIERhdGFiYXNlTWFuYWdlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
Cit7CisgICAgcmV0dXJuIG1fc2VydmVyLT5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBu
YW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5h
Z2VyOjphZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAg
bV9zZXJ2ZXItPmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7
CisgICAgbV9zZXJ2ZXItPnJlbW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQg
RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpCit7CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNlRGV0YWls
cyhvcmlnaW4sIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKK30KKwordW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0
IEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIHJldHVybiBtX3NlcnZlci0+Z2V0
TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NyArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIkFic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRh
YmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7Ci1jbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNz
IERhdGFiYXNlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5h
Z2VyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NiwxNiArNDEsMTYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBEYXRhYmFzZU1hbmFnZXImIG1hbmFnZXIoKTsKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7Ci0jaWYgIVBMQVRGT1JNKENIUk9N
SVVNKQogICAgIHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOwogICAgIFN0
cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldERhdGFiYXNl
RGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmKTsKLSNlbmRpZgogCiAgICAgYm9vbCBpc0F2YWls
YWJsZSgpOwogICAgIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAKICAgICBib29sIGhhc09w
ZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgc2V0SGFzT3Bl
bkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKICAgICAvLyBXaGVuIHRoZSBk
YXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgog
ICAgIHZvaWQgc3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyKik7CiAKQEAgLTc2LDE1ICs3MSwzMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIC8vIEZyb20gYSBz
ZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2
b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNl
Kik7CisKICNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZvaWQgY2xvc2VEYXRhYmFz
ZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCiAKICAgICB2b2lkIGludGVy
cnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCisgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZvaWQgYWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0
RGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShBYnN0cmFjdERhdGFiYXNl
Kik7CisKKyAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFi
YXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKKwogcHJpdmF0ZToKICAgICBEYXRhYmFzZU1h
bmFnZXIoKTsKICAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9CisKKyAgICBBYnN0cmFjdERhdGFi
YXNlU2VydmVyKiBtX3NlcnZlcjsKKyAgICBEYXRhYmFzZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50
OworICAgIGJvb2wgbV9kYXRhYmFzZUlzQXZhaWxhYmxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRhdGFi
YXNlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMRXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgiCkBAIC01Miw3ICs1Miw3
IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om8KIHsKICAgICBBU1NF
UlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogCi0gICAgaWYgKCFEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3Rp
bWF0ZWRTaXplKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBv
cmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0
YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNjIsMTEgKzYyLDExIEBAIFBhc3NSZWZQ
dHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om8KICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
OwogICAgIGlmICghZGF0YWJhc2UtPnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCFjcmVhdGlvbkNhbGxi
YWNrLCBlYywgZXJyb3JNZXNzYWdlKSkgewogICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnJlbW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERh
dGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplKTsKIAogICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlv
bkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhl
IGNyZWF0aW9uIGNhbGxiYWNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwpA
QCAtODcsNyArODcsNyBAQCBEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMoKQogICAgIEFTU0VS
VChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIAogICAgIGlm
IChvcGVuZWQoKSkgewotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKICAgICAgICAgY2xvc2VEYXRhYmFzZSgpOwogICAgIH0K
IH0KQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVs
eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxvZ0Vycm9yTWVzc2FnZSgiZm9yY2libHkgY2xv
c2luZyBkYXRhYmFzZSIpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9w
ZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CiAgICAgY2xvc2VEYXRhYmFzZSgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNs
dWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIApAQCAtNDMsMjEgKzQzLDIxIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29t
bWl0V3JpdGVUcmFuc2FjdGlvbihBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCgK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hh
bmdlZCgKICAgICAgICAgZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlLT5zdHJp
bmdJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGVj
dXRlU3RhdGVtZW50KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlQ2hhbmdlZChkYXRhYmFzZSk7CisgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKIH0KIAogYm9v
bCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEoQWJzdHJhY3REYXRhYmFzZSog
ZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1
b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEg
PSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2Vj
dXJpdHlPcmlnaW4oKSk7CiAgICAgZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFG
b3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBuZXdRdW90YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2lu
KGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICByZXR1cm4gKG5ld1F1b3RhID4gY3Vy
cmVudFF1b3RhKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAkocmV2
aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3Jr
ZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTAg
QEAKIAogI2luY2x1ZGUgIldvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5oIgogCi0jaW5jbHVkZSAi
QWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlU3luYy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogCkBAIC00Myw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxEYXRhYmFzZT4gV29y
a2VyQ29udGV4dFdlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoV29ya2VyQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxE
YXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNv
bnRleHQtPnRvcE9yaWdpbigpKSB8fCAhQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSkg
eworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uo
Y29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2
YWlsYWJsZSgpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CkBAIC01Myw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IFdvcmtlckNv
bnRleHRXZWJEYXQKIAogUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IFdvcmtlckNvbnRleHRXZWJE
YXRhYmFzZTo6b3BlbkRhdGFiYXNlU3luYyhXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICgh
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9w
T3JpZ2luKCkpIHx8ICFBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpKSB7CisgICAgaWYg
KCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50
b3BPcmlnaW4oKSkgfHwgIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCkp
IHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxOTcsNiArMjUxOTcsMTAgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxDaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0yNTI3Myw2ICsy
NTI3NywxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIuY3BwIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3
ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRE9NV2luZG93
V2ViRGF0YWJhc2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjgzOTAsNiArMjg0MDIs
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cRGF0YWJhc2VTdHJhdGVneS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERhdGFiYXNlU3RyYXRlZ3kuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
RGF0ZUNvbXBvbmVudHMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEz
NzcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjY0NSw2ICs2NjQ1LDcgQEAKIAkJRkRGNkJBRjkxMzRBNEM5
ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5
MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMx
M0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFF
QUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFE
QjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpT
QXVkaW9CdWZmZXJDYWxsYmFjay5oICovOyB9OworCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQg
LyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3
N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwogCQlGRTQ1NkYxOTE2
NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4NTBGNjc2RTU3
MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNjY1OCw2ICs2NjU5LDEwIEBACiAJCUZFODBEQTY2MEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5oICovOyB9OwogCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVy
cm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
ODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovOyB9OwogCQlG
RTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBFOUM0NzJGMDAwRDZG
NzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBD
NSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUIy
NkQyODE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2
QiAvKiBEQkJhY2tlbmRTZXJ2ZXIuY3BwICovOyB9OworCQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0
NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJh
dGVneS5jcHAgKi87IH07CisJCUZFREVGODQyMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0
cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZGOTQ1RUNCMTYxRjdGMzYw
MDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVt
ZW50LmNwcCAqLzsgfTsKIAkJRkY5NDVFQ0MxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTQ1
RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi87IH07CiAJCUZGRDVCOTdB
MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTky
QSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLzsgfTsKQEAgLTE0MjAyLDYgKzE0MjA3LDcg
QEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERjdFOUMx
MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpT
QXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUx
MTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJh
c2VNYW5hZ2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTcxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEYXRhYmFzZU1hbmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg1MEY2NzZFNTcw
MDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyMTYsNiAr
MTQyMjIsMTAgQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZF
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREJCYWNrZW5kU2VydmVyLmg7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERCQmFja2VuZFNlcnZlci5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFREVGODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRh
YmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERh
dGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRURFRjg0
MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9F
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5Nzgw
MEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQzNDcsNiArMTQzNTcsNyBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAy
QUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNwcCAq
LywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURF
Qzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYx
MzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTE4MjY4LDYg
KzE4Mjc5LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRB
QyAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLywKIAkJCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0
QUMgLyogQWJzdHJhY3REYXRhYmFzZS5oICovLAorCQkJCUZFMTE1RkE5MTY3OTg4Q0QwMDI0OTEz
NCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi8sCiAJCQkJOTdCQzY5RDgxNTA1RjA3NjAw
MUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKIAkJCQk5N0JDNjlEOTE1MDVG
MDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCAqLywKIAkJCQk5N0JDNjlERTE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovLApAQCAtMTgyOTIsNiArMTgzMDQsNyBA
QAogCQkJCTk3QkM2OUVFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovLAog
CQkJCTk3QkM2OUVGMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwICovLAog
CQkJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLywKKwkJ
CQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi8sCiAJCQkJ
QThDQ0JCNDYxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCAqLywK
IAkJCQlBOENDQkI0NzE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCAq
LywKIAkJCQlBOENDQkI0RTE1MUY4MzVBMDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2Uu
aWRsICovLApAQCAtMjEwNDcsNiArMjEwNjAsOCBAQAogCQkJCTJFNDM0NjU3MEY1NDZBOTkwMEIw
RjFCQSAvKiBDcm9zc1RocmVhZENvcGllci5oICovLAogCQkJCUUxMUFGMTUwMTFCOUExQTMwMDgw
NTEwMyAvKiBDdXJzb3IuY3BwICovLAogCQkJCUY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBD
dXJzb3IuaCAqLywKKwkJCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJh
dGVneS5jcHAgKi8sCisJCQkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3Ry
YXRlZ3kuaCAqLywKIAkJCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVu
dHMuY3BwICovLAogCQkJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5oICovLAogCQkJCTQ1RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAqLywK
QEAgLTIyNTg1LDYgKzIyNjAwLDkgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUZFREVG
ODQyMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkVBRjY2NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERCQmFja2Vu
ZFNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzMTA1QkIxNjc1MEYxNjAw
REIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzNzVEN0ZFMTY2
Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMjkwNDUsNiAr
MjkwNjMsOCBAQAogCQkJCUZEQTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRp
b0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5
IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzdBNTYyMjE2NzlD
RjdCMDBDNTcwNDYgLyogSGVhcEdyYXBoU2VyaWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJh
c2VTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0
YWJhc2VTdHJhdGVneS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgorCisjaWYgVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRCQmFj
a2VuZFNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIqIERhdGFiYXNlU3RyYXRlZ3k6OmdldERhdGFiYXNlU2VydmVyKCkKK3sKKyAgICByZXR1
cm4gbmV3IERCQmFja2VuZDo6U2VydmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorI2VuZGlmIC8vIFVTRShQTEFURk9STV9T
VFJBVEVHSUVTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVn
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRl
Z3kuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3Ry
YXRlZ3kuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlU3RyYXRlZ3lfaAor
I2RlZmluZSBEYXRhYmFzZVN0cmF0ZWd5X2gKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVT
KQorCisjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERhdGFiYXNlU3RyYXRlZ3kgeworcHVibGljOgorI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisgICAgdmlydHVhbCBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRh
YmFzZVNlcnZlcigpOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5EYXRhYmFz
ZVN0cmF0ZWd5KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworI2VuZGlmIC8vIERhdGFiYXNlU3RyYXRlZ3lf
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJ
KHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvb2tpZXNTdHJhdGVneTsKK2NsYXNzIERhdGFiYXNlU3RyYXRlZ3k7
CiBjbGFzcyBMb2FkZXJTdHJhdGVneTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKIGNsYXNz
IFBsdWdpblN0cmF0ZWd5OwpAQCAtNDYsNiArNDcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9jb29raWVzU3RyYXRlZ3k7CiAgICAgfQogCisgICAgRGF0YWJhc2VTdHJhdGVneSogZGF0
YWJhc2VTdHJhdGVneSgpCisgICAgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2VTdHJhdGVneSkK
KyAgICAgICAgICAgIG1fZGF0YWJhc2VTdHJhdGVneSA9IGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3ko
KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VTdHJhdGVneTsKKyAgICB9CisKICAgICBMb2Fk
ZXJTdHJhdGVneSogbG9hZGVyU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xvYWRl
clN0cmF0ZWd5KQpAQCAtODQsNiArOTIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGxh
dGZvcm1TdHJhdGVnaWVzKCkKICAgICAgICAgOiBtX2Nvb2tpZXNTdHJhdGVneSgwKQorICAgICAg
ICAsIG1fZGF0YWJhc2VTdHJhdGVneSgwKQogICAgICAgICAsIG1fbG9hZGVyU3RyYXRlZ3koMCkK
ICAgICAgICAgLCBtX3Bhc3RlYm9hcmRTdHJhdGVneSgwKQogICAgICAgICAsIG1fcGx1Z2luU3Ry
YXRlZ3koMCkKQEAgLTk4LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIENvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOworICAg
IHZpcnR1YWwgRGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpID0gMDsK
ICAgICB2aXJ0dWFsIExvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpID0gMDsK
ICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5
KCkgPSAwOwogICAgIHZpcnR1YWwgUGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5
KCkgPSAwOwpAQCAtMTA1LDYgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgPSAwOwogCiAgICAgQ29v
a2llc1N0cmF0ZWd5KiBtX2Nvb2tpZXNTdHJhdGVneTsKKyAgICBEYXRhYmFzZVN0cmF0ZWd5KiBt
X2RhdGFiYXNlU3RyYXRlZ3k7CiAgICAgTG9hZGVyU3RyYXRlZ3kqIG1fbG9hZGVyU3RyYXRlZ3k7
CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneTsKICAgICBQbHVn
aW5TdHJhdGVneSogbV9wbHVnaW5TdHJhdGVneTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
NzcyOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbnRyb2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2Vy
dmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NDkzNC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBu
b3RoaW5nLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXREYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llcyk6
CisKIDIwMTItMTItMTMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtFRkxdW1dLMl0gRG8gbm90IHBhc3Mgc2l6ZSB0byB1cGRhdGVW
aWV3cG9ydFNpemUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc3MjkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvbmV0d29ya2luZm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbm90
aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRpb24iCisgICAg
IiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzIgogICAgICIk
e1dFQkNPUkVfRElSfS9iaW5kaW5ncyIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNiArNzYsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOwor
fQorCiBMb2FkZXJTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJT
dHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0yMzMsNiArMjM4LDEzIEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KICAgICBXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzKGNvbnRleHQpOwogfQogCisvLyBEYXRhYmFzZVN0cmF0ZWd5CisKK0Fic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIo
KQoreworICAgIHJldHVybiBEYXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpOyAv
LyBVc2UgdGhlIGRlZmF1bHQgZm9yIG5vdy4KK30KKwogLy8gTG9hZGVyU3RyYXRlZ3kKIAogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAogI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVN0cmF0
ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFzdGVib2FyZFN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaD4KQEAgLTM4LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNz
IFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdp
ZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRh
dGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemUoKTsKICAgICAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBX
ZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKSBPVkVSUklERTsKQEAg
LTY4LDYgKzcwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqKSBPVkVSUklERTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFi
YXNlU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIq
IGdldERhdGFiYXNlU2VydmVyKCkgT1ZFUlJJREU7CisKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpIE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTIt
MTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5n
IHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIg
aXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgorICAgICAgICAoUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKKyAgICAgICAgKFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbCk6CisKIDIwMTItMTItMTMgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25A
Z21haWwuY29tPgogCiAgICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2Fybmlu
Z3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OgogICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJl
dHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpj
cmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuaAkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIx
LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKIAogI2luY2x1ZGUgIkNvb2tp
ZXNTdHJhdGVneS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJM
b2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAtMjgsNyArMjksNyBAQAogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdHJhdGVneS5oIgog
Ci1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1T
dHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNp
dGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBX
ZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExp
bmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBA
IC0zNyw2ICszOCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2ll
c1N0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5KiBjcmVh
dGVEYXRhYmFzZVN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVn
eSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhc3RlYm9h
cmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKQEAgLTU1LDYgKzU3
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqKTsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKKyAgICAvLyAtIFVzaW5n
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTEyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRy
b2R1Y2luZyB0aGUgRGF0YWJhc2VTdHJhdGVneSBhbmQgZGF0YWJhc2Ugc2VydmVycy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDkzNC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YWJhc2Ug
c2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNlaG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcDoKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmg6CisgICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGspOgorCiAyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0
YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAJ
KHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDExIEBA
IENvb2tpZXNTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjoKICAgICByZXR1cm4gdGhp
czsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVhdGVE
YXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRl
Z3kqIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAg
IHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzR3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgJKHJldmlzaW9uIDEzNzcyOSkKKysr
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjZGVmaW5lIFBsYXRmb3JtU3RyYXRl
Z2llc0d0a19oCiAKICNpbmNsdWRlICJDb29raWVzU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJEYXRh
YmFzZVN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAg
LTI3LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVneS5oIgogI2luY2x1
ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzR3Rr
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBQbGF0
Zm9ybVN0cmF0ZWdpZXNHdGsgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBw
cml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIApAQCAtMzYsNiArMzcsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRT
dHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBs
dWdpblN0cmF0ZWd5KCk7CkBAIC01NCw2ICs1Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29r
aWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kik7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRh
YmFzZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAg
ICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBs
dWdpbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQ
YWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0xMyAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kg
YW5kIGRhdGFiYXNlIHNlcnZlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDQ5MzQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGRhdGFiYXNlIHNlcnZlciBpcyBjdXJyZW50bHkgYSBwbGFjZWhv
bGRlciB0aGF0IGRvZXMgbm90aGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgorCiAyMDEy
LTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFj
Y2VzcyBmdW5jdGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VTdHJh
dGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1T
dHJhdGVnaWVzLmg+CkBAIC0zNCw3ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRX
b3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5o
PgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZv
cm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRl
Z3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hh
cmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7
CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1T
dHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Myw2ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxv
YWRlclN0cmF0ZWd5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQYXN0ZWJvYXJk
U3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgT1ZFUlJJ
REU7CkBAIC02Miw2ICs2NCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVz
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KikgT1ZFUlJJREU7CiAKKyAgICAvLyBXZWJDb3Jl
OjpEYXRhYmFzZVN0cmF0ZWd5CisgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LgorCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVm
cmVzaFBsdWdpbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhj
b25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JikgT1ZFUlJJ
REU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIENvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjoKICAgICByZXR1cm4gdGhpczsKIH0KIAorRGF0YWJhc2VTdHJhdGVneSogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1
cm4gdGhpczsKK30KKwogTG9hZGVyU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlTG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5
IGFuZCBkYXRhYmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vo
b2xkZXIgdGhhdCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3Jl
YXRlRGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0KToKKwogMjAxMi0x
Mi0xMyAgSmVyb21lIFBhc2lvbiAgPGplcm9tZS5wYXNpb25AZGlnaWEuY29tPgogCiAgICAgICAg
IFtRdF0gRG9jOiBGaXhpbmcgUXQgV2ViS2l0IHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLgpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSwxMSBAQCBDb29raWVzU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpj
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK0RhdGFiYXNlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRl
Z2llc1F0OjpjcmVhdGVEYXRhYmFzZVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30K
KwogTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVMb2FkZXJTdHJh
dGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZpc2lvbiAx
Mzc3MjkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgUGxhdGZv
cm1TdHJhdGVnaWVzUXRfaAogCiAjaW5jbHVkZSA8Q29va2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVk
ZSA8RGF0YWJhc2VTdHJhdGVneS5oPgogI2luY2x1ZGUgPExvYWRlclN0cmF0ZWd5Lmg+CiAjaW5j
bHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3kuaD4K
QEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFzdGVib2FyZFN0
cmF0ZWd5OwogfQogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdCA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzUXQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKTsKIApAQCAtNDgsNiArNDksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNy
ZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJh
dGVneSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9h
ZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7CkBA
IC02Niw2ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0Kik7CiAKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAg
Ly8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCiAgICAgLy8gV2ViQ29yZTo6UGx1
Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc3Mjkp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMi0xMi0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kgYW5kIGRhdGFiYXNlIHNlcnZl
cnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5
MzQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGRhdGFiYXNlIHNlcnZlciBpcyBjdXJyZW50bHkgYSBwbGFjZWhvbGRlciB0aGF0IGRvZXMgbm90
aGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURhdGFiYXNlU3RyYXRl
Z3kpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzKToKKwogMjAxMi0xMi0xMyAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI4
MzgzNTQ+IFBlci1UYWIgV2ViUHJvY2VzczogRE9NIGNvb2tpZSBhY2Nlc3MgZnVuY3Rpb25zIHNo
b3VsZCByZXNwZWN0IHByaXZhdGUgYnJvd3NpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAko
cmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTEgQEAg
Q29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OgogICAgIHJldHVybiB0aGlz
OwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZURh
dGFiYXNlU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBMb2FkZXJTdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7CiAgICAg
cmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM3NzI5KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxNCBAQAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXNfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRl
clN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRXb3JrZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVn
eS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgp
OwogICAgIApAQCAtNDIsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgp
OwpAQCAtNjMsNiArNjUsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCopOwogCisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQor
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzNzcyOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBEYXRhYmFzZVN0cmF0ZWd5IGFuZCBkYXRh
YmFzZSBzZXJ2ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0OTM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGEgcGxhY2Vob2xkZXIgdGhh
dCBkb2VzIG5vdGhpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRS5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRl
RGF0YWJhc2VTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0UuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFKToKKwogMjAx
Mi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAtIGl0
IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
V2luQ0UuY3BwCShyZXZpc2lvbiAxMzc3MjkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksMTEgQEAgQ29va2llc1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRQog
ICAgIHJldHVybiB0aGlzOwogfQogCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRTo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9
CisKIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y3JlYXRlTG9hZGVy
U3RyYXRlZ3koKQogewogICAgIHJldHVybiB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0UuaAkocmV2aXNpb24gMTM3NzI5KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyAr
MjYsMTQgQEAKICNkZWZpbmUgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0VfaAogCiAjaW5jbHVkZSAi
Q29va2llc1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTdHJhdGVneS5oIgogI2luY2x1
ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJTdHJhdGVn
eS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0UgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTQxLDYgKzQyLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kqIGNyZWF0ZURhdGFiYXNlU3Ry
YXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBj
cmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwpAQCAtNTksNiArNjEsOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCopOwogCisgICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQorICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi4KKwogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVh
bCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8o
Y29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179842</attachid>
            <date>2012-12-17 17:56:39 -0800</date>
            <delta_ts>2012-12-17 18:17:30 -0800</delta_ts>
            <desc>The final (hopefully) patch.</desc>
            <filename>bug-104748.patch</filename>
            <type>text/plain</type>
            <size>68972</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlhbCByZWZhY3RvcmluZyBv
ZiBkYXRhYmFzZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG1hbmFnZXIgYW5kIHNlcnZlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0OC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIG5v
dCBhIGNvbXBsZXRlIHJlZmFjdG9yLCBidXQgYSBzdGVwcGluZyBzdG9uZSBvbiB0aGUgd2F5IHRv
IGlzb2xhdGluZworICAgICAgICBzY3JpcHQgc2lkZSBkYXRhYmFzZSBhY3Rpdml0eSBmcm9tIHRo
ZSBTUUwgYmFja2VuZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUd1aWRWZXJzaW9uTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6bWF4aW11bVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJz
dHJhY3REYXRhYmFzZS5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgIC0g
TW92ZWQgaXNBdmFpbGFibGUoKSBhbmQgc2V0SXNBdmFpbGFibGUoKSB0byB0aGUgRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNl
cnZlci5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNr
ZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OnVzYWdlRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6
CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2Fu
RXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6
OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6
cmVtb3ZlT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVy
OjpzZXREYXRhYmFzZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2
ZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgIC0gUmVmYWN0b3JlZCBhbGwgY2Fs
bHMgdG8gdGhlIERhdGFiYXNlVHJhY2tlciB0byBnbyB0aHJ1IHRoZSBEQkJhY2tlbmQ6OlNlcnZl
ci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1heGltdW1T
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAg
IChEYXRhYmFzZSk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZSgpIGZhY3Rvcnkg
bWV0aG9kIHRvIHRoZSBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIC0gUmVtb3ZlZCB0aGUgdW51
c2VkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2soKSBwcm90b3R5cGUuCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDogQWRkZWQuCisgICAgICAgIC0gQSBw
bGFjZSB0byBkZWZpbmUgc29tZSBjb21tb24gYmFzaWMgdHlwZXMgdXNlZCBieSB0aGUgZGF0YWJh
c2UgbW9kdWxlLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRl
ZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKERhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDcmVhdGlv
bkNhbGxiYWNrVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ3JlYXRp
b25DYWxsYmFja1Rhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2s6OkRhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKERhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaDoKKyAgICAgICAgKERhdGFiYXNlU3lu
Yyk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZVN5bmMoKSBmYWN0b3J5IG1ldGhv
ZCB0byB0aGUgRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudFN5bmMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0
YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhj
ZWVkUXVvdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25T
eW5jLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNl
OjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTItMTcg
IE1hdHRoZXcgRGVtcHNreSAgPG1kZW1wc2t5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVncmVz
c2lvbiBjYXVzaW5nIERPTSBvYmplY3RzIHRvIGhhdmUgdW5zdGFibGUgTlBPYmplY3QqIHJlZmVy
ZW5jZXMgd2l0aCB2OCBiaW5kaW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC05NTIsNiArOTUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEV4
Y2VwdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjExMCw2ICsyMTEwLDcgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2Vy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1h
bmFnZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwK
ICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNv
bnRleHRXZWJEYXRhYmFzZS5jcHAgXAogICAgIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEz
Nzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
OTk5LDYgKzk5OSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZl
ci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVy
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRh
dGFiYXNlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6
ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKICAgICBy
ZXR1cm4gbXV0ZXg7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIFN0cmluZz4gR3VpZFZlcnNp
b25NYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBTdHJpbmc+IEd1aWRWZXJzaW9u
TWFwOwogc3RhdGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKCkKIHsKICAgICAv
LyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCkBAIC0xMjUsNyArMTI1LDcgQEAgc3Rh
dGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKAogfQogCiAvLyBOT1RFOiBDYWxs
ZXIgbXVzdCBsb2NrIGd1aWRNdXRleCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRW
ZXJzaW9uTWFwKGludCBndWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVHdWlkVmVyc2lvbk1hcChEYXRhYmFzZUd1aWQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNp
b24pCiB7CiAgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VS
VCghZ3VpZE11dGV4KCkudHJ5TG9jaygpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAoCiAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNl
dChndWlkLCBuZXdWZXJzaW9uLmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29s
YXRlZENvcHkoKSk7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8QWJzdHJhY3RE
YXRhYmFzZSo+Kj4gR3VpZERhdGFiYXNlTWFwOwordHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3Vp
ZCwgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qPiBHdWlkRGF0YWJhc2VNYXA7CiBzdGF0aWMg
R3VpZERhdGFiYXNlTWFwJiBndWlkVG9EYXRhYmFzZU1hcCgpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBHdWlkRGF0
YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWEKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMg
aW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpCitzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9jaygp
KTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNv
bnN0IFN0CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cCwgKCkpOwotICAgIGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3Ry
aW5nSUQpOworICAgIERhdGFiYXNlR3VpZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cC5nZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1
cnJlbnROZXdHVUlEID0gMTsKICAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7CkBAIC0x
NjgsMTggKzE2OCw2IEBAIHN0YXRpYyBpbnQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QK
ICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9
IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJl
dHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNl
dElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRpYwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFz
ZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkKIHsKQEAgLTIxOSw4ICsyMDcsOCBAQCBBYnN0cmFj
dERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0
aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2Zp
bGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShz
ZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0
RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyNyw3IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVz
ZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQgbG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1h
eGltdW1TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRoaXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJz
dHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2Uu
aAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMu
aCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00NywxMyArNDgsOCBA
QCBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNs
YXNzIEFic3RyYWN0RGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJh
Y3REYXRhYmFzZT4gewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpOwotCiAgICAgdmly
dHVhbCB+QWJzdHJhY3REYXRhYmFzZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigp
IGNvbnN0OwpAQCAtMTQzLDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGludCBtX2d1aWQ7CisgICAgRGF0YWJhc2VHdWlkIG1fZ3VpZDsKICAgICBib29sIG1f
b3BlbmVkOwogICAgIGJvb2wgbV9uZXc7CiAgICAgY29uc3QgYm9vbCBtX2lzU3luY0RhdGFiYXNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFi
YXNlU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw2MCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKwogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAg
dmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3Vy
aXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKKworICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZl
IHdpdGggaXRzIGRhdGEKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNo
YW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyNlbHNl
IC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisKKyAgICB2aXJ0dWFsIHZv
aWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhT
aXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5BYnN0cmFj
dERhdGFiYXNlU2VydmVyKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREJCYWNr
ZW5kU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0
YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEQkJhY2tlbmQgeworCit2b2lkIFNlcnZlcjo6aW5pdGlh
bGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCisgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBhdGgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsKKyNlbmRpZgorfQorCit2
b2lkIFNlcnZlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQorewor
I2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRDbGllbnQoY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CisjZW5k
aWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKK3sK
KyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworI2Vsc2UKKyAgICByZXR1cm4gIiI7Cisj
ZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyNlbmRpZgor
fQorCitTdHJpbmcgU2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKK3sK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFz
ZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKK30KKworI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKK2Jvb2wgU2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNF
bnRyeUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6b3JpZ2lucyhWZWN0b3I8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCit7CisgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQpOworfQorCitib29sIFNlcnZlcjo6ZGF0YWJhc2VO
YW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5h
bWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30KKworRGF0YWJhc2VEZXRhaWxzIFNlcnZl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25n
IGxvbmcgU2VydmVyOjp1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorewor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihvcmln
aW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpxdW90YUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6c2V0UXVvdGEo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKK3sK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6
ZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQoreworICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworfQorCitib29sIFNl
cnZlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihvcmlnaW4pOworfQorCiti
b29sIFNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vjb25kYXJ5IHRo
cmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIFNlcnZlcjo6c2No
ZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxl
Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpk
YXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKK30KKworI2Vs
c2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIFNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1l
ZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKENI
Uk9NSVVNKQorCit2b2lkIFNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7
Cit9CisKK2Jvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIFNlcnZlcjo6YWRkT3BlbkRh
dGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVy
OjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBTZXJ2ZXI6OmdldE1heFNpemVGb3JEYXRh
YmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oCShyZXZpc2lvbiAx
Mzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw0NiBAQCBjbGFzcyBTZXJ2ZXI6IHB1
YmxpYyBBYnN0cmFjdERhdGFiYXNlU2VyCiBwdWJsaWM6CiAgICAgU2VydmVyKCkgeyB9OwogICAg
IHZpcnR1YWwgflNlcnZlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChE
YXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZURpcmVj
dG9yeVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBTdHJpbmcgZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIG9y
aWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxT
dHJpbmc+JiByZXN1bHQpOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNp
Z25lZCBsb25nIGxvbmcpOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygp
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFk
IHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFi
YXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNlKik7CisKKyNlbHNlIC8v
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFi
YXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJh
Y3REYXRhYmFzZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJhc2UuaCIK
IAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ2LDggKzQ2LDkg
QEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93V2ViRGF0YWJhcwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UgPSAwOwotICAgIGlmIChBYnN0
cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50b3BEb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgZGF0YWJhc2UgPSBEYXRhYmFzZTo6
b3BlbkRhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmIChk
Yk1hbmFnZXIuaXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKS0+dG9wRG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGRhdGFiYXNlID0gZGJNYW5hZ2VyLm9wZW5E
YXRhYmFzZSh3aW5kb3ctPmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7CiAKICAgICBpZiAoIWRhdGFiYXNl
ICYmICFlYykKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMCBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0
YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02Niw2MiArNjUsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERh
dGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2soZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCi0gICAgewotICAgICAgICBtX2NyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
ZGF0YWJhc2UuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2Up
Ci0gICAgICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNhbGxiYWNrKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKLX07Ci0KLVBhc3NSZWZQdHI8RGF0YWJhc2U+IERh
dGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUmIGUpCi17Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3Jp
Z2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEo
KSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJh
c2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCi0gICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxs
YmFjaywgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSk7Ci0KLSAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCktPnNldEhhc09wZW5EYXRh
YmFzZXMoKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNl
KGNvbnRleHQsIGRhdGFiYXNlLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbik7Ci0KLSAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkgJiYgY3Jl
YXRpb25DYWxsYmFjay5nZXQoKSkgewotICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxp
bmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFi
YXNlLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBj
cmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRhdGFiYXNlOwotfQotCiBE
YXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogICAgIDogQWJzdHJh
Y3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBBc3luY0RhdGFiYXNlKQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3MoZmFsc2UpCkBAIC0yMjgsNyArMTcxLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQogICAg
IFJlZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9IHRoaXM7CiAgICAgZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFi
YXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2Uo
dGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNl
KHRoaXMpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKQEAgLTI0Myw3
ICsxODYsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKKyAg
ICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNl
KHRoaXMpOwogfQogCiBib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ5LDE1ICs1MCwxMSBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLXR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIERhdGFiYXNlIDogcHVibGljIEFic3RyYWN0RGF0
YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CiAKICAgICAvLyBEaXJl
Y3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFz
ZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZv
aWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
bmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwKICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKTsKQEAgLTEwMyw4ICsxMDAs
NiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybUdldFRhYmxlTmFtZXMo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2sodm9pZCopOwotCiAg
ICAgRGVxdWU8UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiA+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAg
ICBNdXRleCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3M7CkBAIC0xMTMsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbjsKIAogICAgIGJv
b2wgbV9kZWxldGVkOworCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZUJhc2ljVHlwZXNfaAorI2Rl
ZmluZSBEYXRhYmFzZUJhc2ljVHlwZXNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBEYXRhYmFzZUd1aWQ7Cit0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VCYXNpY1R5cGVzX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMTM0LDcgKzEz
NCw3IEBAIHZvaWQgRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXUKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgYSByZWFsIGltcGxlbWVu
dGF0aW9uOyB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIGZvciB0ZXN0aW5nLgogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSwgZGVmYXVsdFF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEzIEBACiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
LSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKICNpZiBV
U0UoUExBVEZPUk1fU1RSQVRFR0lFUykKICNpbmNsdWRlICJEYXRhYmFzZVN0cmF0ZWd5LmgiCkBA
IC01Miw2ICs1Niw4IEBAIERhdGFiYXNlTWFuYWdlciYgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2UK
IH0KIAogRGF0YWJhc2VNYW5hZ2VyOjpEYXRhYmFzZU1hbmFnZXIoKQorICAgIDogbV9jbGllbnQo
MCkKKyAgICAsIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSh0cnVlKQogewogI2lmIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQogICAgIG1fc2VydmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmRhdGFi
YXNlU3RyYXRlZ3koKS0+Z2V0RGF0YWJhc2VTZXJ2ZXIoKTsKQEAgLTYzLDM4ICs2OSwxMTcgQEAg
RGF0YWJhc2VNYW5hZ2VyOjpEYXRhYmFzZU1hbmFnZXIoKQogCiB2b2lkIERhdGFiYXNlTWFuYWdl
cjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIHsKLSNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pCi0gICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRh
YmFzZVBhdGgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsKLSNlbmRp
ZgorICAgIG1fc2VydmVyLT5pbml0aWFsaXplKGRhdGFiYXNlUGF0aCk7CiB9CiAKLSNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0Q2xpZW50KERhdGFiYXNl
TWFuYWdlckNsaWVudCogY2xpZW50KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNldENsaWVudChjbGllbnQpOworICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgIG1fc2VydmVy
LT5zZXRDbGllbnQoY2xpZW50KTsKIH0KIAogU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIG1fc2VydmVyLT5k
YXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldERh
dGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOworICAgIG1f
c2VydmVyLT5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CiB9Ci0jZW5kaWYKIAogYm9v
bCBEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKIHsKLSAgICByZXR1cm4gQWJzdHJhY3RE
YXRhYmFzZTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZUlzQXZhaWxhYmxl
OwogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFi
bGUpCiB7Ci0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoYXZhaWxhYmxlKTsK
KyAgICBtX2RhdGFiYXNlSXNBdmFpbGFibGUgPSBhdmFpbGFibGU7Cit9CisKK2NsYXNzIERhdGFi
YXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VDcmVhdGlvbkNh
bGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVm
UHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2soZGF0YWJhc2Us
IGNyZWF0aW9uQ2FsbGJhY2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICBtX2NyZWF0aW9uQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YWJhc2UuZ2V0KCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRh
dGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgICAgICA6
IG1fZGF0YWJhc2UoZGF0YWJhc2UpCisgICAgICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNhbGxi
YWNrKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7Cisg
ICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKK307CisKK1Bh
c3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwKKyAgICB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4g
Y3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZSkKK3sKKyAgICBpZiAoIWNhbkVzdGFi
bGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkg
eworICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90
IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0
UmVmKG5ldyBEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlO
YW1lLCBlc3RpbWF0ZWRTaXplKSk7CisKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlm
ICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlvbkNhbGxiYWNrLCBlLCBl
cnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGRhdGFiYXNlLT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRh
dGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKKyAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRIYXNPcGVuRGF0YWJhc2VzKGNvbnRleHQpOwor
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwg
ZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0
ZWRWZXJzaW9uKTsKKworICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxi
YWNrLmdldCgpKSB7CisgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFz
ZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkp
OworICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhE
YXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2Fs
bGJhY2spKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGF0YWJhc2U7Cit9CisKK1Bhc3NSZWZQdHI8
RGF0YWJhc2VTeW5jPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZVN5bmMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLAorICAgIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoY29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKCFjYW5Fc3RhYmxpc2hEYXRhYmFzZShj
b250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKKyAgICAgICAgTE9H
KFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJl
IGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERh
dGFiYXNlU3luYyhjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKSk7CisKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIGlmICghZGF0
YWJhc2UtPnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCFjcmVhdGlvbkNhbGxiYWNrLCBlYywgZXJyb3JN
ZXNzYWdlKSkgeworICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNzYWdlKGVycm9yTWVzc2Fn
ZSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJlbW92ZU9wZW5EYXRhYmFz
ZShkYXRhYmFzZS5nZXQoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBpZiAo
ZGF0YWJhc2UtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgeworICAgICAgICBM
T0coU3RvcmFnZUFQSSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJh
c2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+aGFu
ZGxlRXZlbnQoZGF0YWJhc2UuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBkYXRhYmFzZTsK
IH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTEwMiw2ICsxODcsMTEgQEAgYm9vbCBEYXRhYmFzZU1h
bmFnZXI6Omhhc09wZW5EYXRhYmFzZXMoUwogICAgIHJldHVybiBEYXRhYmFzZUNvbnRleHQ6Omhh
c09wZW5EYXRhYmFzZXMoY29udGV4dCk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRI
YXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
RGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7Cit9
CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQog
ewogICAgIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhjb250ZXh0LCBzeW5jaHJvbml6
ZXIpOwpAQCAtMTA5LDcwICsxOTksMTA2IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0
YWJhc2VzKFNjcmkKIAogU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRl
SWZEb2VzTm90RXhpc3QpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7
CisgICAgcmV0dXJuIG1fc2VydmVyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwg
Y3JlYXRlSWZEb2VzTm90RXhpc3QpOwogfQogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogYm9v
bCBEYXRhYmFzZU1hbmFnZXI6Omhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9y
T3JpZ2luKG9yaWdpbik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5oYXNFbnRyeUZvck9yaWdpbihv
cmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkub3JpZ2lucyhyZXN1bHQpOworICAgIG1fc2VydmVyLT5vcmlnaW5zKHJlc3VsdCk7CiB9
CiAKIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCBy
ZXN1bHQpOworICAgIHJldHVybiBtX3NlcnZlci0+ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmln
aW4sIHJlc3VsdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9u
ZyBEYXRhYmFzZU1hbmFnZXI6OnVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2lu
KG9yaWdpbik7CisgICAgcmV0dXJuIG1fc2VydmVyLT51c2FnZUZvck9yaWdpbihvcmlnaW4pOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbihT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+cXVv
dGFGb3JPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YVNpemUpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YVNp
emUpOworICAgIG1fc2VydmVyLT5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CiB9CiAKIHZv
aWQgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQogewotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIG1fc2VydmVyLT5k
ZWxldGVBbGxEYXRhYmFzZXMoKTsKIH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmRlbGV0ZU9yaWdpbihvcmlnaW4pOwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShvcmln
aW4sIG5hbWUpOworICAgIHJldHVybiBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBu
YW1lKTsKK30KKworLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNh
ZmUgd2l0aCBpdHMgZGF0YQordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNjaGVkdWxlTm90aWZ5RGF0
YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBtX3NlcnZlci0+c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQob3JpZ2luLCBu
YW1lKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ2hhbmdlZChBYnN0cmFj
dERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBtX3NlcnZlci0+ZGF0YWJhc2VDaGFuZ2VkKGRh
dGFiYXNlKTsKIH0KIAogI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCiB2b2lkIERhdGFiYXNl
TWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUp
OworICAgIG1fc2VydmVyLT5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZp
ZXIsIG5hbWUpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCiB2b2lkIERhdGFi
YXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgbV9zZXJ2
ZXItPmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9CisKK2Jvb2wg
RGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0
ZWRTaXplKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZShBYnN0
cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBtX3NlcnZlci0+YWRkT3BlbkRhdGFiYXNl
KGRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBtX3NlcnZlci0+cmVtb3ZlT3Bl
bkRhdGFiYXNlKGRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFi
YXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sK
KyAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5h
Z2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSogZGF0YWJh
c2UpCit7CisgICAgcmV0dXJuIG1fc2VydmVyLT5nZXRNYXhTaXplRm9yRGF0YWJhc2UoZGF0YWJh
c2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9u
IDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwxNyBAQAogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlcjsK
K2NsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIERhdGFiYXNl
TWFuYWdlckNsaWVudDsKK2NsYXNzIERhdGFiYXNlU3luYzsKIGNsYXNzIERhdGFiYXNlVGFza1N5
bmNocm9uaXplcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKQEAgLTQ3LDE3ICs0OSwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERhdGFiYXNl
TWFuYWdlciYgbWFuYWdlcigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKTsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdm9pZCBzZXRDbGll
bnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0
cmluZyYpOwotI2VuZGlmCiAKICAgICBib29sIGlzQXZhaWxhYmxlKCk7CiAgICAgdm9pZCBzZXRJ
c0F2YWlsYWJsZShib29sKTsKIAorICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiwgRXhjZXB0aW9u
Q29kZSYpOworCiAgICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKLSAgICAvLyBXaGVuIHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBT
eW5jIHdpbGwgYmUgc2lnbmFsbGVkLgorICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdm9pZCBzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqKTsKIAogICAgIFN0cmluZyBm
dWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CkBAIC03NywxNyArODAsMzEgQEAgcHVi
bGljOgogICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgYm9vbCBk
ZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyAg
ICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0
cyBkYXRhCisgICAgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChB
YnN0cmFjdERhdGFiYXNlKik7CisKICNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZv
aWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCiAK
ICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCisgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZvaWQgYWRkT3BlbkRh
dGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShB
YnN0cmFjdERhdGFiYXNlKik7CisKKyAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0
TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IEFic3RyYWN0RGF0YWJhc2UqKTsKKwogcHJpdmF0ZToK
ICAgICBEYXRhYmFzZU1hbmFnZXIoKTsKICAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9CiAKICAg
ICBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBtX3NlcnZlcjsKKyAgICBEYXRhYmFzZU1hbmFnZXJD
bGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9kYXRhYmFzZUlzQXZhaWxhYmxlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAog
I2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU1FMRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgi
CkBAIC00NywzNSArNDcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7Ci0KLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFi
bGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkg
ewotICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90
IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJhc2UgPSBh
ZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKLQotICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7
Ci0gICAgaWYgKCFkYXRhYmFzZS0+cGVyZm9ybU9wZW5BbmRWZXJpZnkoIWNyZWF0aW9uQ2FsbGJh
Y2ssIGVjLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGRhdGFiYXNlLT5sb2dFcnJvck1lc3Nh
Z2UoZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVt
b3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KTsKLQotICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgp
KSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhlIGNyZWF0aW9uIGNhbGxi
YWNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwotICAgICAgICBjcmVhdGlv
bkNhbGxiYWNrLT5oYW5kbGVFdmVudChkYXRhYmFzZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGRhdGFiYXNlOwotfQotCiBEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogICAgIDogQWJzdHJh
Y3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBTeW5jRGF0YWJhc2UpCkBAIC04Nyw3ICs1OCw3IEBAIERhdGFiYXNlU3lu
Yzo6fkRhdGFiYXNlU3luYygpCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgaWYgKG9wZW5lZCgpKSB7Ci0gICAgICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICAgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwogICAg
ICAgICBjbG9zZURhdGFiYXNlKCk7CiAgICAgfQogfQpAQCAtMjExLDcgKzE4Miw3IEBAIHZvaWQg
RGF0YWJhc2VTeW5jOjpjbG9zZUltbWVkaWF0ZWx5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bG9nRXJyb3JNZXNzYWdlKCJmb3JjaWJseSBjbG9zaW5nIGRhdGFiYXNlIik7Ci0gICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKHRoaXMpOworICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKICAgICBjbG9z
ZURhdGFiYXNlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNDksMTUgKzUwLDExIEBAIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCi10eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91
bGQgYmUgY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBjb250ZXh0IHRocmVh
ZC4KIGNsYXNzIERhdGFiYXNlU3luYyA6IHB1YmxpYyBBYnN0cmFjdERhdGFiYXNlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZVN5bmMoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRy
PERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjaGFuZ2VWZXJz
aW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCBQ
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgdHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
az4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlYWRUcmFuc2FjdGlvbihQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtODIsNiAr
NzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wgcmVhZE9ubHksIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIFN0cmluZyBtX2xhc3RFcnJvck1lc3NhZ2U7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCShyZXZp
c2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VC
YXNpY1R5cGVzLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQxLDggKzQyLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiAv
LyBDYW4gYmUgdXNlZCB0byB3YWl0IHVudGlsIERhdGFiYXNlVGFzayBpcyBjb21wbGV0ZWQuCiAv
LyBIYXMgdG8gYmUgcGFzc2VkIGludG8gRGF0YWJhc2VUYXNrOjpjcmVhdGUgdG8gYmUgYXNzb2Np
YXRlZCB3aXRoIHRoZSB0YXNrLgogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXQuaAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxSZXN1bHRTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEyIEBACiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVz
LmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFNRTFJlc3VsdFNldCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTUUxSZXN1bHRTZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTUUxSZXN1bHRTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxSZXN1bHRT
ZXQpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudFN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudFN5bmMuaAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRTeW5jLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMsOCArNDQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhYmFzZVN5bmM7CiBjbGFzcyBTUUxSZXN1
bHRTZXQ7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFNRTFN0YXRlbWVu
dFN5bmMgewogcHVibGljOgogICAgIFNRTFN0YXRlbWVudFN5bmMoY29uc3QgU3RyaW5nJiBzdGF0
ZW1lbnQsIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgaW50IHBlcm1pc3Npb25z
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNl
QmFzaWNUeXBlcy5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00OSw4ICs1MCw2IEBAIGNsYXNz
IFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFZhbHVlOwogY2xhc3MgVm9p
ZENhbGxiYWNrOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiBjbGFzcyBTUUxUcmFu
c2FjdGlvbldyYXBwZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rp
b25XcmFwcGVyPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rpb25XcmFwcGVy
KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIApA
QCAtNDMsMjEgKzQzLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTUUxUcmFuc2Fj
dGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihBYnN0cmFjdERhdGFiYXNlKiBk
YXRhYmFzZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlm
eURhdGFiYXNlQ2hhbmdlZCgKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zY2hlZHVs
ZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCgKICAgICAgICAgZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2lu
KCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0
aW9uQ2xpZW50OjpkaWRFeGVjdXRlU3RhdGVtZW50KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlQ2hhbmdlZChkYXRh
YmFzZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRh
dGFiYXNlKTsKIH0KIAogYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEo
QWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGRhdGFiYXNlLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICB1bnNpZ25lZCBs
b25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFG
b3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9y
aWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZGF0YWJhc2UtPmRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZUV4Y2VlZGVkUXVvdGEoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZp
ZXIoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICByZXR1
cm4gKG5ld1F1b3RhID4gY3VycmVudFF1b3RhKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShy
ZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDggKzQ4LDYgQEAgY2xhc3MgU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s7CiBjbGFzcyBTUUxWYWx1ZTsKIGNsYXNzIFNRTGl0ZVRyYW5zYWN0
aW9uOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiAvLyBJbnN0YW5jZXMgb2YgdGhp
cyBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBj
b250ZXh0IHRocmVhZC4KIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luYyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNRTFRyYW5zYWN0aW9uU3luYz4gewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdl
YkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMSArMzEsMTAgQEAKIAogI2luY2x1ZGUgIldvcmtlckNvbnRleHRXZWJEYXRhYmFz
ZS5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dC5oIgogCkBAIC00MywyMiArNDIsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShX
b3JrZXJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFBYnN0cmFjdERhdGFi
YXNlOjppc0F2YWlsYWJsZSgpKSB7CisgICAgRGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhZGJNYW5h
Z2VyLmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKGNv
bnRleHQsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlv
bkNhbGxiYWNrLCBlYyk7CisgICAgcmV0dXJuIGRiTWFuYWdlci5vcGVuRGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2Fs
bGJhY2ssIGVjKTsKIH0KIAogUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IFdvcmtlckNvbnRleHRX
ZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlU3luYyhXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
ICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+
dG9wT3JpZ2luKCkpIHx8ICFBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpKSB7CisgICAg
RGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsK
KyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNv
bnRleHQtPnRvcE9yaWdpbigpKSB8fCAhZGJNYW5hZ2VyLmlzQXZhaWxhYmxlKCkpIHsKICAgICAg
ICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJl
dHVybiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMoY29udGV4dCwgbmFtZSwgdmVyc2lv
biwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAg
ICByZXR1cm4gZGJNYW5hZ2VyLm9wZW5EYXRhYmFzZVN5bmMoY29udGV4dCwgbmFtZSwgdmVyc2lv
biwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI3
Nyw2ICsyNTI3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIuY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEQkJhY2tlbmRTZXJ2ZXIuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjY0OSw2ICs2NjQ5LDggQEAK
IAkJRkRGN0U5QzMxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEz
QUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRG
N0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovOyB9OwogCQlGRTExNUZBQjE2Nzk4
OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8q
IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlGRTMzNzFBMTE2N0MxMUQ0MDBFREI3NTIgLyogQWJzdHJhY3RC
YWNrZW5kRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzM3MTlGMTY3QzExRDQwMEVEQjc1MiAvKiBBYnN0cmFjdEJhY2tlbmREYXRhYmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
MzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVE
Qjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9
OwogCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRF
MDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3Jk
aW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjY2Myw2ICs2NjY1LDcgQEAKIAkJ
RkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAw
RDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5oICovOyB9OwogCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNrZW5kU2Vy
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFG
NjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAwRkRE
MjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2Vy
dmVyLmNwcCAqLzsgfTsKIAkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3Ry
YXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9Owog
CQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAw
MEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRv
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CkBA
IC0xNDIxNCw2ICsxNDIxNyw4IEBACiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1
ZGlvQnVmZmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8q
IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9B
YnN0cmFjdERhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
MzM3MTlGMTY3QzExRDQwMEVEQjc1MiAvKiBBYnN0cmFjdEJhY2tlbmREYXRhYmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdEJhY2tlbmREYXRhYmFzZS5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdEJhY2tlbmREYXRhYmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0
YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFi
YXNlQmFzaWNUeXBlcy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2lj
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3RDc0RTAw
NUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1
NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDIyOSw2ICsxNDIzNCw3IEBACiAJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4
MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEQkJhY2tlbmRTZXJ2ZXIuaDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEQkJhY2tlbmRTZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREJCYWNrZW5kU2Vy
dmVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8q
IERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
REVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI4MSw2ICsxODI4Nyw3IEBACiAJ
CTk3QkM2OUQ1MTUwNUYwNTQwMDFCNzRBQyAvKiB3ZWJkYXRhYmFzZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRkUzMzcxOUYxNjdDMTFENDAwRURCNzUy
IC8qIEFic3RyYWN0QmFja2VuZERhdGFiYXNlLmggKi8sCiAJCQkJOTdCQzY5RDYxNTA1RjA3NjAw
MUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwICovLAogCQkJCTk3QkM2OUQ3MTUwNUYwNzYw
MDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmggKi8sCiAJCQkJRkUxMTVGQTkxNjc5ODhDRDAw
MjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLywKQEAgLTE4MjkxLDYgKzE4Mjk4
LDcgQEAKIAkJCQk5N0JDNjlFMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuaWRsICovLAog
CQkJCTk3QkM2OUUxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwICov
LAogCQkJCTk3QkM2OUUyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCAq
LywKKwkJCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmgg
Ki8sCiAJCQkJOTdCQzY5RTMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCAq
LywKIAkJCQk5N0JDNjlFNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwg
Ki8sCiAJCQkJOTdCQzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAg
Ki8sCkBAIC0xODMwOCw2ICsxODMxNiw3IEBACiAJCQkJOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlVGhyZWFkLmggKi8sCiAJCQkJOTdCQzY5RUYxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJOTdCQzY5RjAxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlVHJhY2tlci5oICovLAorCQkJCUZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBE
QkJhY2tlbmRTZXJ2ZXIuY3BwICovLAogCQkJCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBE
QkJhY2tlbmRTZXJ2ZXIuaCAqLywKIAkJCQlBOENDQkI0NjE1MUY4MzE2MDBBQjdDRTkgLyogRE9N
V2luZG93V2ViRGF0YWJhc2UuY3BwICovLAogCQkJCUE4Q0NCQjQ3MTUxRjgzMTYwMEFCN0NFOSAv
KiBET01XaW5kb3dXZWJEYXRhYmFzZS5oICovLApAQCAtMjI2MDgsOCArMjI2MTcsMTAgQEAKIAkJ
CWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUZFMzM3MUExMTY3QzExRDQwMEVEQjc1MiAvKiBBYnN0
cmFjdEJhY2tlbmREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVERUY4NDIxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTE1
RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNr
ZW5kU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDMxMDVCQjE2NzUwRjE2
MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTA3Miw2ICsy
OTA4Myw3IEBACiAJCQkJRkRBOTMyNjYxNjcwM0JBOTAwODk4MkRDIC8qIEpTT2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFREVGODQxMTY3OTcx
MDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZF
QjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBEQkJhY2tlbmRTZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjM3QTU2MjIxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBOUNFRjhEMTYzQjNF
QTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAo=
</data>
<flag name="commit-queue"
          id="196890"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179855</attachid>
            <date>2012-12-17 18:49:39 -0800</date>
            <delta_ts>2012-12-17 19:15:14 -0800</delta_ts>
            <desc>The fixed patch: added needed #include&apos;s.</desc>
            <filename>bug-104748.patch</filename>
            <type>text/plain</type>
            <size>69001</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlhbCByZWZhY3RvcmluZyBv
ZiBkYXRhYmFzZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG1hbmFnZXIgYW5kIHNlcnZlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0OC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIG5v
dCBhIGNvbXBsZXRlIHJlZmFjdG9yLCBidXQgYSBzdGVwcGluZyBzdG9uZSBvbiB0aGUgd2F5IHRv
IGlzb2xhdGluZworICAgICAgICBzY3JpcHQgc2lkZSBkYXRhYmFzZSBhY3Rpdml0eSBmcm9tIHRo
ZSBTUUwgYmFja2VuZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUd1aWRWZXJzaW9uTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6bWF4aW11bVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJz
dHJhY3REYXRhYmFzZS5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgIC0g
TW92ZWQgaXNBdmFpbGFibGUoKSBhbmQgc2V0SXNBdmFpbGFibGUoKSB0byB0aGUgRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNl
cnZlci5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNr
ZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OnVzYWdlRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6
CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2Fu
RXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6
OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6
cmVtb3ZlT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVy
OjpzZXREYXRhYmFzZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2
ZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgIC0gUmVmYWN0b3JlZCBhbGwgY2Fs
bHMgdG8gdGhlIERhdGFiYXNlVHJhY2tlciB0byBnbyB0aHJ1IHRoZSBEQkJhY2tlbmQ6OlNlcnZl
ci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1heGltdW1T
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAg
IChEYXRhYmFzZSk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZSgpIGZhY3Rvcnkg
bWV0aG9kIHRvIHRoZSBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIC0gUmVtb3ZlZCB0aGUgdW51
c2VkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2soKSBwcm90b3R5cGUuCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDogQWRkZWQuCisgICAgICAgIC0gQSBw
bGFjZSB0byBkZWZpbmUgc29tZSBjb21tb24gYmFzaWMgdHlwZXMgdXNlZCBieSB0aGUgZGF0YWJh
c2UgbW9kdWxlLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRl
ZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKERhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDcmVhdGlv
bkNhbGxiYWNrVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ3JlYXRp
b25DYWxsYmFja1Rhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2s6OkRhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKERhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaDoKKyAgICAgICAgKERhdGFiYXNlU3lu
Yyk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZVN5bmMoKSBmYWN0b3J5IG1ldGhv
ZCB0byB0aGUgRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudFN5bmMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0
YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhj
ZWVkUXVvdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25T
eW5jLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNl
OjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTItMTcg
IE1hdHRoZXcgRGVtcHNreSAgPG1kZW1wc2t5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVncmVz
c2lvbiBjYXVzaW5nIERPTSBvYmplY3RzIHRvIGhhdmUgdW5zdGFibGUgTlBPYmplY3QqIHJlZmVy
ZW5jZXMgd2l0aCB2OCBiaW5kaW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC05NTIsNiArOTUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEV4
Y2VwdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjExMCw2ICsyMTEwLDcgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2Vy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1h
bmFnZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwK
ICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNv
bnRleHRXZWJEYXRhYmFzZS5jcHAgXAogICAgIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEz
Nzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
OTk5LDYgKzk5OSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZl
ci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVy
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRh
dGFiYXNlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6
ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKICAgICBy
ZXR1cm4gbXV0ZXg7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIFN0cmluZz4gR3VpZFZlcnNp
b25NYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBTdHJpbmc+IEd1aWRWZXJzaW9u
TWFwOwogc3RhdGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKCkKIHsKICAgICAv
LyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCkBAIC0xMjUsNyArMTI1LDcgQEAgc3Rh
dGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKAogfQogCiAvLyBOT1RFOiBDYWxs
ZXIgbXVzdCBsb2NrIGd1aWRNdXRleCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRW
ZXJzaW9uTWFwKGludCBndWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVHdWlkVmVyc2lvbk1hcChEYXRhYmFzZUd1aWQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNp
b24pCiB7CiAgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VS
VCghZ3VpZE11dGV4KCkudHJ5TG9jaygpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAoCiAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNl
dChndWlkLCBuZXdWZXJzaW9uLmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29s
YXRlZENvcHkoKSk7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8QWJzdHJhY3RE
YXRhYmFzZSo+Kj4gR3VpZERhdGFiYXNlTWFwOwordHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3Vp
ZCwgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qPiBHdWlkRGF0YWJhc2VNYXA7CiBzdGF0aWMg
R3VpZERhdGFiYXNlTWFwJiBndWlkVG9EYXRhYmFzZU1hcCgpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBHdWlkRGF0
YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWEKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMg
aW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpCitzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9jaygp
KTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNv
bnN0IFN0CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cCwgKCkpOwotICAgIGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3Ry
aW5nSUQpOworICAgIERhdGFiYXNlR3VpZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cC5nZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1
cnJlbnROZXdHVUlEID0gMTsKICAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7CkBAIC0x
NjgsMTggKzE2OCw2IEBAIHN0YXRpYyBpbnQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QK
ICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9
IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJl
dHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNl
dElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRpYwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFz
ZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkKIHsKQEAgLTIxOSw4ICsyMDcsOCBAQCBBYnN0cmFj
dERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0
aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2Zp
bGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShz
ZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0
RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyNyw3IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVz
ZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQgbG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1h
eGltdW1TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRoaXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJz
dHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2Uu
aAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMu
aCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00NywxMyArNDgsOCBA
QCBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNs
YXNzIEFic3RyYWN0RGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJh
Y3REYXRhYmFzZT4gewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpOwotCiAgICAgdmly
dHVhbCB+QWJzdHJhY3REYXRhYmFzZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigp
IGNvbnN0OwpAQCAtMTQzLDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGludCBtX2d1aWQ7CisgICAgRGF0YWJhc2VHdWlkIG1fZ3VpZDsKICAgICBib29sIG1f
b3BlbmVkOwogICAgIGJvb2wgbV9uZXc7CiAgICAgY29uc3QgYm9vbCBtX2lzU3luY0RhdGFiYXNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFi
YXNlU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw2MCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKwogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAg
dmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3Vy
aXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKKworICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZl
IHdpdGggaXRzIGRhdGEKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNo
YW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyNlbHNl
IC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisKKyAgICB2aXJ0dWFsIHZv
aWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhT
aXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5BYnN0cmFj
dERhdGFiYXNlU2VydmVyKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREJCYWNr
ZW5kU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0
YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEQkJhY2tlbmQgeworCit2b2lkIFNlcnZlcjo6aW5pdGlh
bGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCisgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBhdGgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsKKyNlbmRpZgorfQorCit2
b2lkIFNlcnZlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQorewor
I2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRDbGllbnQoY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CisjZW5k
aWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKK3sK
KyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworI2Vsc2UKKyAgICByZXR1cm4gIiI7Cisj
ZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyNlbmRpZgor
fQorCitTdHJpbmcgU2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKK3sK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFz
ZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKK30KKworI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKK2Jvb2wgU2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNF
bnRyeUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6b3JpZ2lucyhWZWN0b3I8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCit7CisgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQpOworfQorCitib29sIFNlcnZlcjo6ZGF0YWJhc2VO
YW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5h
bWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30KKworRGF0YWJhc2VEZXRhaWxzIFNlcnZl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25n
IGxvbmcgU2VydmVyOjp1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorewor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihvcmln
aW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpxdW90YUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6c2V0UXVvdGEo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKK3sK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6
ZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQoreworICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworfQorCitib29sIFNl
cnZlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihvcmlnaW4pOworfQorCiti
b29sIFNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vjb25kYXJ5IHRo
cmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIFNlcnZlcjo6c2No
ZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxl
Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpk
YXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKK30KKworI2Vs
c2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIFNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1l
ZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKENI
Uk9NSVVNKQorCit2b2lkIFNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7
Cit9CisKK2Jvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIFNlcnZlcjo6YWRkT3BlbkRh
dGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVy
OjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBTZXJ2ZXI6OmdldE1heFNpemVGb3JEYXRh
YmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oCShyZXZpc2lvbiAx
Mzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw0NiBAQCBjbGFzcyBTZXJ2ZXI6IHB1
YmxpYyBBYnN0cmFjdERhdGFiYXNlU2VyCiBwdWJsaWM6CiAgICAgU2VydmVyKCkgeyB9OwogICAg
IHZpcnR1YWwgflNlcnZlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChE
YXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZURpcmVj
dG9yeVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBTdHJpbmcgZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIG9y
aWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxT
dHJpbmc+JiByZXN1bHQpOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNp
Z25lZCBsb25nIGxvbmcpOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygp
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFk
IHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFi
YXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNlKik7CisKKyNlbHNlIC8v
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFi
YXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJh
Y3REYXRhYmFzZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJhc2UuaCIK
IAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ2LDggKzQ2LDkg
QEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93V2ViRGF0YWJhcwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UgPSAwOwotICAgIGlmIChBYnN0
cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50b3BEb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgZGF0YWJhc2UgPSBEYXRhYmFzZTo6
b3BlbkRhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmIChk
Yk1hbmFnZXIuaXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKS0+dG9wRG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGRhdGFiYXNlID0gZGJNYW5hZ2VyLm9wZW5E
YXRhYmFzZSh3aW5kb3ctPmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7CiAKICAgICBpZiAoIWRhdGFiYXNl
ICYmICFlYykKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMCBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0
YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02Niw2MiArNjUsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERh
dGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2soZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCi0gICAgewotICAgICAgICBtX2NyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
ZGF0YWJhc2UuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2Up
Ci0gICAgICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNhbGxiYWNrKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKLX07Ci0KLVBhc3NSZWZQdHI8RGF0YWJhc2U+IERh
dGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUmIGUpCi17Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3Jp
Z2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEo
KSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJh
c2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCi0gICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxs
YmFjaywgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSk7Ci0KLSAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCktPnNldEhhc09wZW5EYXRh
YmFzZXMoKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNl
KGNvbnRleHQsIGRhdGFiYXNlLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbik7Ci0KLSAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkgJiYgY3Jl
YXRpb25DYWxsYmFjay5nZXQoKSkgewotICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxp
bmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFi
YXNlLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBj
cmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRhdGFiYXNlOwotfQotCiBE
YXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogICAgIDogQWJzdHJh
Y3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBBc3luY0RhdGFiYXNlKQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3MoZmFsc2UpCkBAIC0yMjgsNyArMTcxLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQogICAg
IFJlZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9IHRoaXM7CiAgICAgZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFi
YXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2Uo
dGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNl
KHRoaXMpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKQEAgLTI0Myw3
ICsxODYsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKKyAg
ICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNl
KHRoaXMpOwogfQogCiBib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ5LDE1ICs1MCwxMSBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLXR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIERhdGFiYXNlIDogcHVibGljIEFic3RyYWN0RGF0
YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CiAKICAgICAvLyBEaXJl
Y3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFz
ZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZv
aWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
bmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwKICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKTsKQEAgLTEwMyw4ICsxMDAs
NiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybUdldFRhYmxlTmFtZXMo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2sodm9pZCopOwotCiAg
ICAgRGVxdWU8UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiA+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAg
ICBNdXRleCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3M7CkBAIC0xMTMsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbjsKIAogICAgIGJv
b2wgbV9kZWxldGVkOworCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZUJhc2ljVHlwZXNfaAorI2Rl
ZmluZSBEYXRhYmFzZUJhc2ljVHlwZXNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBEYXRhYmFzZUd1aWQ7Cit0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VCYXNpY1R5cGVzX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMTM0LDcgKzEz
NCw3IEBAIHZvaWQgRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXUKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgYSByZWFsIGltcGxlbWVu
dGF0aW9uOyB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIGZvciB0ZXN0aW5nLgogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSwgZGVmYXVsdFF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDE0IEBACiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
LSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogI2lu
Y2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKQEAgLTUyLDYgKzU3LDggQEAgRGF0YWJhc2VNYW5h
Z2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZQogfQogCiBEYXRhYmFzZU1hbmFnZXI6OkRhdGFi
YXNlTWFuYWdlcigpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9kYXRhYmFzZUlzQXZhaWxh
YmxlKHRydWUpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAgICAgbV9zZXJ2ZXIg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0YWJhc2VTdHJhdGVneSgpLT5nZXREYXRhYmFzZVNl
cnZlcigpOwpAQCAtNjMsMzggKzcwLDExNyBAQCBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFu
YWdlcigpCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKQogewotI2lmICFQTEFURk9STShDSFJPTUlVTSkKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlUGF0aCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShkYXRhYmFzZVBhdGgpOwotI2VuZGlmCisgICAgbV9zZXJ2ZXItPmluaXRpYWxpemUo
ZGF0YWJhc2VQYXRoKTsKIH0KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7CisgICAgbV9j
bGllbnQgPSBjbGllbnQ7CisgICAgbV9zZXJ2ZXItPnNldENsaWVudChjbGllbnQpOwogfQogCiBT
dHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdAogewot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBh
dGgoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogfQog
CiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgocGF0aCk7CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNlRGlyZWN0b3J5
UGF0aChwYXRoKTsKIH0KLSNlbmRpZgogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aXNBdmFpbGFi
bGUoKQogewotICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAg
IHJldHVybiBtX2RhdGFiYXNlSXNBdmFpbGFibGU7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKIHsKLSAgICBBYnN0cmFjdERhdGFiYXNl
OjpzZXRJc0F2YWlsYWJsZShhdmFpbGFibGUpOworICAgIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSA9
IGF2YWlsYWJsZTsKK30KKworY2xhc3MgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRp
b25DYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0YWJhc2VD
cmVhdGlvbkNhbGxiYWNrVGFzayhkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikK
KyAgICB7CisgICAgICAgIG1fY3JlYXRpb25DYWxsYmFjay0+aGFuZGxlRXZlbnQobV9kYXRhYmFz
ZS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFj
a1Rhc2soUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY2FsbGJhY2spCisgICAgICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAgICAg
ICAgLCBtX2NyZWF0aW9uQ2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIFJl
ZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4g
bV9jcmVhdGlvbkNhbGxiYWNrOworfTsKKworUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VN
YW5hZ2VyOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAg
ICBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLAorICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
UGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlKQoreworICAgIGlmICghY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
RGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGNvbnRleHQsIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKworICAg
IFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZl
cnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGUsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgZGF0
YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxh
eU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dEhhc09wZW5EYXRhYmFzZXMoY29udGV4dCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOworCisgICAgaWYgKGRhdGFi
YXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKKyAgICAgICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgZm9yIGRh
dGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7CisgICAgICAgIGRhdGFiYXNlLT5tX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s6
OmNyZWF0ZShkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOworICAgIH0KKworICAgIHJldHVy
biBkYXRhYmFzZTsKK30KKworUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlTWFuYWdl
cjo6b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAg
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsCisgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQ
YXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAg
ICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKSkgeworICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZv
ciBvcmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPERhdGFiYXNlU3lu
Yz4gZGF0YWJhc2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKworICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFkYXRhYmFzZS0+cGVyZm9ybU9wZW5BbmRWZXJpZnko
IWNyZWF0aW9uQ2FsbGJhY2ssIGVjLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGRhdGFiYXNl
LT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplKTsKKworICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlv
bkNhbGxiYWNrLmdldCgpKSB7CisgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhl
IGNyZWF0aW9uIGNhbGxiYWNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwor
ICAgICAgICBjcmVhdGlvbkNhbGxiYWNrLT5oYW5kbGVFdmVudChkYXRhYmFzZS5nZXQoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGRhdGFiYXNlOwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6
aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMTAy
LDYgKzE4OCwxMSBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTCiAg
ICAgcmV0dXJuIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKIH0K
IAordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldEhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4
dCktPnNldEhhc09wZW5EYXRhYmFzZXMoKTsKK30KKwogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0
b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0YWJhc2VUYXNr
U3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCiB7CiAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9w
RGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7CkBAIC0xMDksNzAgKzIwMCwxMDYgQEAg
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaQogCiBTdHJpbmcgRGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKLSAgICByZXR1
cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4s
IG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1bGxQ
YXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAK
ICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4g
bV9zZXJ2ZXItPmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkK
IHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7CisgICAg
bV9zZXJ2ZXItPm9yaWdpbnMocmVzdWx0KTsKIH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9yPFN0cmlu
Zz4mIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0
YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIG1fc2VydmVy
LT5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKIH0KIAogRGF0YWJhc2VE
ZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4p
OworICAgIHJldHVybiBtX3NlcnZlci0+ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3Jp
Z2luKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2
ZXItPnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdp
bik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5xdW90YUZvck9yaWdpbihvcmlnaW4pOwogfQogCiB2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldFF1b3Rh
KG9yaWdpbiwgcXVvdGFTaXplKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcygpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7CisgICAgbV9zZXJ2ZXItPmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiBi
b29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihv
cmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7CiB9CiAK
IGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuIG1fc2Vy
dmVyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vjb25k
YXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fc2VydmVyLT5zY2hlZHVsZU5v
dGlmeURhdGFiYXNlQ2hhbmdlZChvcmlnaW4sIG5hbWUpOworfQorCit2b2lkIERhdGFiYXNlTWFu
YWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAg
IG1fc2VydmVyLT5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiAjZWxzZSAvLyBQTEFU
Rk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRp
YXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CisgICAgbV9zZXJ2ZXItPmNsb3NlRGF0YWJh
c2VzSW1tZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oQ0hST01JVU0pCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKKyAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmNhbkVzdGFibGlz
aERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQoreworICAgIHJldHVybiBtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fc2VydmVyLT5hZGRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KQoreworICAgIG1fc2VydmVyLT5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQoreworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURl
dGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShj
b25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTUgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAi
RGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBYnN0cmFjdERhdGFiYXNlU2VydmVyOworY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRh
YmFzZUNhbGxiYWNrOwogY2xhc3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OworY2xhc3MgRGF0YWJh
c2VTeW5jOwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNDcsMTcgKzQ5LDE4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwotI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKICAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsK
ICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKIAogICAgIGJvb2wg
aXNBdmFpbGFibGUoKTsKICAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCisgICAgUGFz
c1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQ
dHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERh
dGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRy
PERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICBib29sIGhhc09wZW5E
YXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIC8vIFdoZW4gdGhlIGRhdGFi
YXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCisgICAg
dm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2
b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERhdGFiYXNlVGFza1N5
bmNocm9uaXplciopOwogCiAgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0
cnVlKTsKQEAgLTc3LDE3ICs4MCwzMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGVPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFk
LCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2b2lkIHNjaGVkdWxlTm90
aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKKwogI2Vsc2Ug
Ly8gUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKKyAgICBib29s
IGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSk7CisgICAgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOwor
ICAgIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKTsKKworICAgIHZv
aWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJz
dHJhY3REYXRhYmFzZSopOworCiBwcml2YXRlOgogICAgIERhdGFiYXNlTWFuYWdlcigpOwogICAg
IH5EYXRhYmFzZU1hbmFnZXIoKSB7IH0KIAogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIG1f
c2VydmVyOworICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBt
X2RhdGFiYXNlSXNBdmFpbGFibGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5
bmMuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmMuaCIKQEAgLTQ3LDM1ICs0Nyw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlU3luYzo6
b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLQotICAgIGlmICghRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
RGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBSZWZQ
dHI8RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZVN5bmMoY29u
dGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkp
OwotCi0gICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5wZXJmb3Jt
T3BlbkFuZFZlcmlmeSghY3JlYXRpb25DYWxsYmFjaywgZWMsIGVycm9yTWVzc2FnZSkpIHsKLSAg
ICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0
KCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFt
ZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwotCi0gICAgaWYgKGRhdGFiYXNlLT5pc05l
dygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEks
ICJJbnZva2luZyB0aGUgY3JlYXRpb24gY2FsbGJhY2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRh
YmFzZS5nZXQoKSk7Ci0gICAgICAgIGNyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGFi
YXNlLmdldCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YWJhc2U7Ci19Ci0KIERhdGFiYXNl
U3luYzo6RGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCiAgICAgOiBBYnN0cmFjdERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFN5bmNEYXRhYmFzZSkK
QEAgLTg3LDcgKzU4LDcgQEAgRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKICAgICBBU1NF
UlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBp
ZiAob3BlbmVkKCkpIHsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3Zl
T3BlbkRhdGFiYXNlKHRoaXMpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5y
ZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiAgICAgICAgIGNsb3NlRGF0YWJhc2UoKTsKICAgICB9
CiB9CkBAIC0yMTEsNyArMTgyLDcgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRl
bHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNs
b3NpbmcgZGF0YWJhc2UiKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3Zl
T3BlbkRhdGFiYXNlKHRoaXMpOwogICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oCShy
ZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00OSwxNSArNTAsMTEgQEAgY2xhc3MgU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIC8v
IEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIG9ubHkg
b24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhyZWFkLgogY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVi
bGljIEFic3RyYWN0RGF0YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlU3lu
YygpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VT
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9u
LCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgcmVhZFRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CkBAIC04Miw2ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
dW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9v
bCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIG1fbGFzdEVycm9yTWVz
c2FnZTsKKworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgpAQCAtNDEsOCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIC8vIENhbiBiZSB1c2VkIHRvIHdhaXQgdW50aWwg
RGF0YWJhc2VUYXNrIGlzIGNvbXBsZXRlZC4KIC8vIEhhcyB0byBiZSBwYXNzZWQgaW50byBEYXRh
YmFzZVRhc2s6OmNyZWF0ZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHRhc2suCiBjbGFzcyBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCShyZXZpc2lvbiAxMzc5NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxMyArMzEsMTIgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
KyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJTUUxSZXN1bHRTZXRS
b3dMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgU1FM
UmVzdWx0U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNRTFJlc3VsdFNldD4gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFJlc3VsdFNldD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3VsdFNldCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5oCShyZXZp
c2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudFN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgogI2lu
Y2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00Myw4ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERhdGFiYXNlU3luYzsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIAotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQogY2xhc3MgU1FMU3RhdGVtZW50U3luYyB7CiBwdWJsaWM6CiAgICAgU1FMU3Rh
dGVtZW50U3luYyhjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVl
PiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMTM3
OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSAiU1FM
U3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTQ5LDggKzUwLDYgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
OwogY2xhc3MgU1FMVmFsdWU7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLXR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbldyYXBwZXIoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCkBAIC00MywyMSArNDMsMjEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0ZVRy
YW5zYWN0aW9uKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewotICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAorICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAogICAg
ICAgICBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZp
ZXIoKSk7CiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4ZWN1dGVTdGF0ZW1l
bnQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiBib29sIFNRTFRyYW5z
YWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkK
IHsKICAgICBBU1NFUlQoZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlRXhjZWVkZWRR
dW90YShkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxv
bmcgbmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihk
YXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1
b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHJldHVybiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NDcsOCArNDgsNiBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNR
TFZhbHVlOwogY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb247CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkIGFu
ZCB1c2VkIG9ubHkgb24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhyZWFkLgogY2xhc3MgU1FMVHJh
bnNhY3Rpb25TeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25TeW5jPiB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNv
bnRleHRXZWJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc5
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRX
ZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMCBAQAogCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VT
eW5jLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAKQEAgLTQzLDIyICs0MiwyNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IFdvcmtlckNvbnRl
eHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYg
KCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50
b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBE
YXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwor
ICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29u
dGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFkYk1hbmFnZXIuaXNBdmFpbGFibGUoKSkgewogICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0
dXJuIERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgdmVyc2lvbiwgZGlzcGxh
eU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAgICByZXR1cm4g
ZGJNYW5hZ2VyLm9wZW5EYXRhYmFzZShjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQogCiBQYXNzUmVmUHRy
PERhdGFiYXNlU3luYz4gV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VTeW5j
KFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0
YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFkYk1h
bmFnZXIuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlU3luYzo6b3BlbkRhdGFi
YXNlU3luYyhjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOworICAgIHJldHVybiBkYk1hbmFnZXIub3BlbkRhdGFi
YXNlU3luYyhjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1Mjc3LDYgKzI1Mjc3LDEwIEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRh
dGFiYXNlXERCQmFja2VuZFNlcnZlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERCQmFja2VuZFNl
cnZlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3OTY0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NjQ5LDYgKzY2NDksOCBAQAogCQlGREY3RTlDMzEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suY3BwICovOyB9OwogCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNB
dWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmggKi87IH07CiAJCUZFMTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFi
YXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMzM3MUEx
MTY3QzExRDQwMEVEQjc1MiAvKiBBYnN0cmFjdEJhY2tlbmREYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMzcxOUYxNjdDMTFENDAwRURC
NzUyIC8qIEFic3RyYWN0QmFja2VuZERhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUyIC8qIERh
dGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzMzcxQTAxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNDU2
RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5
IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi87IH07CiAJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZG
RDQ4ODBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBD
b29yZGluYXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC02NjYzLDYgKzY2NjUsNyBAQAogCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3Bw
ICovOyB9OwogCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi87IH07CiAJCUZFQUY2NjU0MTY3
OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEQkJh
Y2tlbmRTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3
QThGMkEwMEZERDI2QiAvKiBEQkJhY2tlbmRTZXJ2ZXIuY3BwICovOyB9OwogCQlGRURFRjg0MTE2
Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyog
RGF0YWJhc2VTdHJhdGVneS5jcHAgKi87IH07CiAJCUZFREVGODQyMTY3OTcxMDgwMDBFNDQ0QSAv
KiBEYXRhYmFzZVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZGOTQ1
RUNCMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAv
KiBQc2V1ZG9FbGVtZW50LmNwcCAqLzsgfTsKQEAgLTE0MjE0LDYgKzE0MjE3LDggQEAKIAkJRkRG
N0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmg7
IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzMzcxOUYxNjdDMTFENDAwRURCNzUyIC8qIEFi
c3RyYWN0QmFja2VuZERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFic3RyYWN0QmFja2VuZERhdGFiYXNlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fi
c3RyYWN0QmFja2VuZERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
MzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRh
YmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VN
YW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyog
Q29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjI5LDYgKzE0MjM0LDcgQEAK
IAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRp
b25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUFGNjY1MzE2Nzk3MDA3
MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERCQmFja2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJh
Y2tlbmRTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZEMjcxNjdB
OEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEQkJhY2tlbmRTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJh
c2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDOTE2MUY3
RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQc2V1ZG9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MjgxLDYgKzE4Mjg3LDcgQEAKIAkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8q
IHdlYmRhdGFiYXNlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlGRTMzNzE5RjE2N0MxMUQ0MDBFREI3NTIgLyogQWJzdHJhY3RCYWNrZW5kRGF0YWJhc2Uu
aCAqLywKIAkJCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5j
cHAgKi8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2Uu
aCAqLywKIAkJCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNl
cnZlci5oICovLApAQCAtMTgyOTEsNiArMTgyOTgsNyBAQAogCQkJCTk3QkM2OUUwMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZS5pZGwgKi8sCiAJCQkJOTdCQzY5RTExNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi8sCiAJCQkJOTdCQzY5RTIxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAorCQkJCUZFMzM3MUEwMTY3QzExRDQwMEVE
Qjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLywKIAkJCQk5N0JDNjlFMzE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oICovLAogCQkJCTk3QkM2OUU0MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLywKIAkJCQk5N0JDNjlFNTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLywKQEAgLTE4MzA4LDYgKzE4MzE2LDcgQEAK
IAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLywKIAkJ
CQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJ
CQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJ
RkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8sCiAJCQkJ
RkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERCQmFja2VuZFNlcnZlci5oICovLAogCQkJCUE4
Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAgKi8sCiAJ
CQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmggKi8s
CkBAIC0yMjYwOCw4ICsyMjYxNywxMCBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkUz
MzcxQTExNjdDMTFENDAwRURCNzUyIC8qIEFic3RyYWN0QmFja2VuZERhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVn
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzM3MUEyMTY3QzExRDQw
MEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQUY2
NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5MDcyLDYgKzI5MDgzLDcgQEAKIAkJCQlGREE5MzI2NjE2NzAz
QkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERC
QmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzdBNTYyMjE2NzlDRjdCMDBD
NTcwNDYgLyogSGVhcEdyYXBoU2VyaWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDFF
NzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUE5Q0VGOEQxNjNCM0VBMTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBl
T3V0c2lkZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179863</attachid>
            <date>2012-12-17 19:21:06 -0800</date>
            <delta_ts>2012-12-18 16:05:06 -0800</delta_ts>
            <desc>The fixed patch minus some development changes in the Xcode project not ready for a commit yet.</desc>
            <filename>bug-104748.patch</filename>
            <type>text/plain</type>
            <size>68048</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlhbCByZWZhY3RvcmluZyBv
ZiBkYXRhYmFzZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG1hbmFnZXIgYW5kIHNlcnZlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0OC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIG5v
dCBhIGNvbXBsZXRlIHJlZmFjdG9yLCBidXQgYSBzdGVwcGluZyBzdG9uZSBvbiB0aGUgd2F5IHRv
IGlzb2xhdGluZworICAgICAgICBzY3JpcHQgc2lkZSBkYXRhYmFzZSBhY3Rpdml0eSBmcm9tIHRo
ZSBTUUwgYmFja2VuZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUd1aWRWZXJzaW9uTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6bWF4aW11bVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJz
dHJhY3REYXRhYmFzZS5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgIC0g
TW92ZWQgaXNBdmFpbGFibGUoKSBhbmQgc2V0SXNBdmFpbGFibGUoKSB0byB0aGUgRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNl
cnZlci5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNr
ZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OnVzYWdlRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRCQmFja2VuZDo6U2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
QkJhY2tlbmQ6OlNlcnZlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6OmRhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6
CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6Y2Fu
RXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2ZXI6
OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEQkJhY2tlbmQ6OlNlcnZlcjo6
cmVtb3ZlT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRCQmFja2VuZDo6U2VydmVy
OjpzZXREYXRhYmFzZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6REJCYWNrZW5kOjpTZXJ2
ZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgIC0gUmVmYWN0b3JlZCBhbGwgY2Fs
bHMgdG8gdGhlIERhdGFiYXNlVHJhY2tlciB0byBnbyB0aHJ1IHRoZSBEQkJhY2tlbmQ6OlNlcnZl
ci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93V2ViRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1heGltdW1T
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAg
IChEYXRhYmFzZSk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZSgpIGZhY3Rvcnkg
bWV0aG9kIHRvIHRoZSBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIC0gUmVtb3ZlZCB0aGUgdW51
c2VkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2soKSBwcm90b3R5cGUuCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDogQWRkZWQuCisgICAgICAgIC0gQSBw
bGFjZSB0byBkZWZpbmUgc29tZSBjb21tb24gYmFzaWMgdHlwZXMgdXNlZCBieSB0aGUgZGF0YWJh
c2UgbW9kdWxlLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRl
ZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKERhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDcmVhdGlv
bkNhbGxiYWNrVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ3JlYXRp
b25DYWxsYmFja1Rhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2s6OkRhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKERhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaDoKKyAgICAgICAgKERhdGFiYXNlU3lu
Yyk6CisgICAgICAgIC0gTW92ZWQgdGhlIG9wZW5EYXRhYmFzZVN5bmMoKSBmYWN0b3J5IG1ldGhv
ZCB0byB0aGUgRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudFN5bmMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0
YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhj
ZWVkUXVvdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25T
eW5jLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpv
cGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dFdlYkRhdGFiYXNl
OjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTItMTcg
IE1hdHRoZXcgRGVtcHNreSAgPG1kZW1wc2t5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVncmVz
c2lvbiBjYXVzaW5nIERPTSBvYmplY3RzIHRvIGhhdmUgdW5zdGFibGUgTlBPYmplY3QqIHJlZmVy
ZW5jZXMgd2l0aCB2OCBiaW5kaW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC05NTIsNiArOTUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEV4
Y2VwdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjExMCw2ICsyMTEwLDcgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2Vy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1h
bmFnZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIFwK
ICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNv
bnRleHRXZWJEYXRhYmFzZS5jcHAgXAogICAgIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEz
Nzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
OTk5LDYgKzk5OSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZl
ci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvREJCYWNrZW5kU2VydmVy
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJh
c2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRh
dGFiYXNlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6
ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKICAgICBy
ZXR1cm4gbXV0ZXg7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIFN0cmluZz4gR3VpZFZlcnNp
b25NYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBTdHJpbmc+IEd1aWRWZXJzaW9u
TWFwOwogc3RhdGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKCkKIHsKICAgICAv
LyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCkBAIC0xMjUsNyArMTI1LDcgQEAgc3Rh
dGljIEd1aWRWZXJzaW9uTWFwJiBndWlkVG9WZXJzaW9uTWFwKAogfQogCiAvLyBOT1RFOiBDYWxs
ZXIgbXVzdCBsb2NrIGd1aWRNdXRleCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRW
ZXJzaW9uTWFwKGludCBndWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVHdWlkVmVyc2lvbk1hcChEYXRhYmFzZUd1aWQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNp
b24pCiB7CiAgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VS
VCghZ3VpZE11dGV4KCkudHJ5TG9jaygpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAoCiAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNl
dChndWlkLCBuZXdWZXJzaW9uLmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29s
YXRlZENvcHkoKSk7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8QWJzdHJhY3RE
YXRhYmFzZSo+Kj4gR3VpZERhdGFiYXNlTWFwOwordHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3Vp
ZCwgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qPiBHdWlkRGF0YWJhc2VNYXA7CiBzdGF0aWMg
R3VpZERhdGFiYXNlTWFwJiBndWlkVG9EYXRhYmFzZU1hcCgpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBHdWlkRGF0
YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWEKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMg
aW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpCitzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gRW5zdXJlIHRo
ZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgogICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9jaygp
KTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNv
bnN0IFN0CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cCwgKCkpOwotICAgIGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3Ry
aW5nSUQpOworICAgIERhdGFiYXNlR3VpZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cC5nZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1
cnJlbnROZXdHVUlEID0gMTsKICAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7CkBAIC0x
NjgsMTggKzE2OCw2IEBAIHN0YXRpYyBpbnQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3QK
ICAgICByZXR1cm4gZ3VpZDsKIH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZUF2YWlsYWJsZSA9
IHRydWU7Ci0KLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKQotewotICAgIHJl
dHVybiBpc0RhdGFiYXNlQXZhaWxhYmxlOwotfQotCi12b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNl
dElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQotewotICAgIGlzRGF0YWJhc2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci19Ci0KIC8vIHN0YXRpYwogY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFz
ZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkKIHsKQEAgLTIxOSw4ICsyMDcsOCBAQCBBYnN0cmFj
dERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFNjcmlwCiAgICAgICAgIGhhc2hTZXQtPmFkZCh0
aGlzKTsKICAgICB9CiAKLSAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZnVsbFBhdGhGb3JEYXRhYmFzZShzZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOwotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKKyAgICBtX2Zp
bGVuYW1lID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShz
ZWN1cml0eU9yaWdpbigpLCBtX25hbWUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmFkZE9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogQWJzdHJhY3REYXRhYmFzZTo6fkFic3RyYWN0
RGF0YWJhc2UoKQpAQCAtNTM5LDcgKzUyNyw3IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVz
ZXRBdXRob3JpemVyKCkKIAogdW5zaWduZWQgbG9uZyBsb25nIEFic3RyYWN0RGF0YWJhc2U6Om1h
eGltdW1TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKHRoaXMpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgQWJz
dHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2Uu
aAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMu
aCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00NywxMyArNDgsOCBA
QCBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNs
YXNzIEFic3RyYWN0RGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJh
Y3REYXRhYmFzZT4gewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpOwotCiAgICAgdmly
dHVhbCB+QWJzdHJhY3REYXRhYmFzZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigp
IGNvbnN0OwpAQCAtMTQzLDcgKzEzOSw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGludCBtX2d1aWQ7CisgICAgRGF0YWJhc2VHdWlkIG1fZ3VpZDsKICAgICBib29sIG1f
b3BlbmVkOwogICAgIGJvb2wgbV9uZXc7CiAgICAgY29uc3QgYm9vbCBtX2lzU3luY0RhdGFiYXNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFi
YXNlU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw2MCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3REYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKwogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QgPSB0cnVlKSA9IDA7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAg
dmlydHVhbCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3Vy
aXR5T3JpZ2luKikgPSAwOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKKworICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZl
IHdpdGggaXRzIGRhdGEKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNo
YW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyNlbHNl
IC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisKKyAgICB2aXJ0dWFsIHZv
aWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhT
aXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJhY3REYXRhYmFzZSopID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5BYnN0cmFj
dERhdGFiYXNlU2VydmVyKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RCQmFja2VuZFNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREJCYWNr
ZW5kU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0
YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEQkJhY2tlbmQgeworCit2b2lkIFNlcnZlcjo6aW5pdGlh
bGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCisgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBhdGgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2VQYXRoKTsKKyNlbmRpZgorfQorCit2
b2lkIFNlcnZlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQorewor
I2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRDbGllbnQoY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CisjZW5k
aWYKK30KKworU3RyaW5nIFNlcnZlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKK3sK
KyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworI2Vsc2UKKyAgICByZXR1cm4gIiI7Cisj
ZW5kaWYKK30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyNlbmRpZgor
fQorCitTdHJpbmcgU2VydmVyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKK3sK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFz
ZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKK30KKworI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKK2Jvb2wgU2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNF
bnRyeUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6b3JpZ2lucyhWZWN0b3I8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCit7CisgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkub3JpZ2lucyhyZXN1bHQpOworfQorCitib29sIFNlcnZlcjo6ZGF0YWJhc2VO
YW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5h
bWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30KKworRGF0YWJhc2VEZXRhaWxzIFNlcnZl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25n
IGxvbmcgU2VydmVyOjp1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorewor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihvcmln
aW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgU2VydmVyOjpxdW90YUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOworfQorCit2b2lkIFNlcnZlcjo6c2V0UXVvdGEo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKK3sK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6
ZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQoreworICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworfQorCitib29sIFNl
cnZlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihvcmlnaW4pOworfQorCiti
b29sIFNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vjb25kYXJ5IHRo
cmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIFNlcnZlcjo6c2No
ZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxl
Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG9yaWdpbiwgbmFtZSk7Cit9CisKK3ZvaWQgU2VydmVyOjpk
YXRhYmFzZUNoYW5nZWQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKK30KKworI2Vs
c2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIFNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1l
ZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKENI
Uk9NSVVNKQorCit2b2lkIFNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7
Cit9CisKK2Jvb2wgU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIFNlcnZlcjo6YWRkT3BlbkRh
dGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmFkZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU2VydmVy
OjpyZW1vdmVPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKwordm9pZCBTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBTZXJ2ZXI6OmdldE1heFNpemVGb3JEYXRh
YmFzZShjb25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNlcnZlci5oCShyZXZpc2lvbiAx
Mzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RCQmFja2VuZFNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw0NiBAQCBjbGFzcyBTZXJ2ZXI6IHB1
YmxpYyBBYnN0cmFjdERhdGFiYXNlU2VyCiBwdWJsaWM6CiAgICAgU2VydmVyKCkgeyB9OwogICAg
IHZpcnR1YWwgflNlcnZlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChE
YXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZURpcmVj
dG9yeVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBTdHJpbmcgZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIG9y
aWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxT
dHJpbmc+JiByZXN1bHQpOworICAgIHZpcnR1YWwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNp
Z25lZCBsb25nIGxvbmcpOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygp
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworCisgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFk
IHNhZmUgd2l0aCBpdHMgZGF0YQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFi
YXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChBYnN0cmFjdERhdGFiYXNlKik7CisKKyNlbHNlIC8v
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKworICAgIHZpcnR1YWwgdm9pZCBpbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPcGVu
RGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOworCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFi
YXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJzdHJh
Y3REYXRhYmFzZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgREJCYWNrZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJhc2UuaCIK
IAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ2LDggKzQ2LDkg
QEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93V2ViRGF0YWJhcwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UgPSAwOwotICAgIGlmIChBYnN0
cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpICYmIHdpbmRvdy0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2Uod2luZG93LT5kb2N1bWVudCgpLT50b3BEb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgZGF0YWJhc2UgPSBEYXRhYmFzZTo6
b3BlbkRhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmIChk
Yk1hbmFnZXIuaXNBdmFpbGFibGUoKSAmJiB3aW5kb3ctPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKHdpbmRvdy0+ZG9jdW1lbnQoKS0+dG9wRG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGRhdGFiYXNlID0gZGJNYW5hZ2VyLm9wZW5E
YXRhYmFzZSh3aW5kb3ctPmRvY3VtZW50KCksIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7CiAKICAgICBpZiAoIWRhdGFiYXNl
ICYmICFlYykKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3OTY0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMCBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0
YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02Niw2MiArNjUsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERh
dGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2soZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCi0gICAgewotICAgICAgICBtX2NyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
ZGF0YWJhc2UuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2Up
Ci0gICAgICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNhbGxiYWNrKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKLX07Ci0KLVBhc3NSZWZQdHI8RGF0YWJhc2U+IERh
dGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUmIGUpCi17Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3Jp
Z2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEo
KSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJh
c2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCi0gICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxs
YmFjaywgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJl
bW92ZU9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSk7Ci0KLSAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCktPnNldEhhc09wZW5EYXRh
YmFzZXMoKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNl
KGNvbnRleHQsIGRhdGFiYXNlLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbik7Ci0KLSAgICBpZiAoZGF0YWJhc2UtPmlzTmV3KCkgJiYgY3Jl
YXRpb25DYWxsYmFjay5nZXQoKSkgewotICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxp
bmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFi
YXNlLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBj
cmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRhdGFiYXNlOwotfQotCiBE
YXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogICAgIDogQWJzdHJh
Y3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplLCBBc3luY0RhdGFiYXNlKQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3MoZmFsc2UpCkBAIC0yMjgsNyArMTcxLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQogICAg
IFJlZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9IHRoaXM7CiAgICAgZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFi
YXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2Uo
dGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNl
KHRoaXMpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKQEAgLTI0Myw3
ICsxODYsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkKIAogdW5zaWduZWQg
bG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmdldE1heFNpemVGb3JEYXRhYmFzZSh0aGlzKTsKKyAg
ICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZ2V0TWF4U2l6ZUZvckRhdGFiYXNl
KHRoaXMpOwogfQogCiBib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ5LDE1ICs1MCwxMSBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLXR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIERhdGFiYXNlIDogcHVibGljIEFic3RyYWN0RGF0
YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CiAKICAgICAvLyBEaXJl
Y3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFz
ZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZv
aWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
bmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwKICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKTsKQEAgLTEwMyw4ICsxMDAs
NiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybUdldFRhYmxlTmFtZXMo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJQZW5kaW5nQ2FsbGJhY2sodm9pZCopOwotCiAg
ICAgRGVxdWU8UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiA+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAg
ICBNdXRleCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3M7CkBAIC0xMTMsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbjsKIAogICAgIGJv
b2wgbV9kZWxldGVkOworCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZUJhc2ljVHlwZXNfaAorI2Rl
ZmluZSBEYXRhYmFzZUJhc2ljVHlwZXNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBEYXRhYmFzZUd1aWQ7Cit0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VCYXNpY1R5cGVzX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMTM0LDcgKzEz
NCw3IEBAIHZvaWQgRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXUKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgYSByZWFsIGltcGxlbWVu
dGF0aW9uOyB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIGZvciB0ZXN0aW5nLgogICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSwgZGVmYXVsdFF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDE0IEBACiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
LSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogI2lu
Y2x1ZGUgIkRhdGFiYXNlU3RyYXRlZ3kuaCIKQEAgLTUyLDYgKzU3LDggQEAgRGF0YWJhc2VNYW5h
Z2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZQogfQogCiBEYXRhYmFzZU1hbmFnZXI6OkRhdGFi
YXNlTWFuYWdlcigpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9kYXRhYmFzZUlzQXZhaWxh
YmxlKHRydWUpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAgICAgbV9zZXJ2ZXIg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0YWJhc2VTdHJhdGVneSgpLT5nZXREYXRhYmFzZVNl
cnZlcigpOwpAQCAtNjMsMzggKzcwLDExNyBAQCBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFu
YWdlcigpCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKQogewotI2lmICFQTEFURk9STShDSFJPTUlVTSkKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlUGF0aCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShkYXRhYmFzZVBhdGgpOwotI2VuZGlmCisgICAgbV9zZXJ2ZXItPmluaXRpYWxpemUo
ZGF0YWJhc2VQYXRoKTsKIH0KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7CisgICAgbV9j
bGllbnQgPSBjbGllbnQ7CisgICAgbV9zZXJ2ZXItPnNldENsaWVudChjbGllbnQpOwogfQogCiBT
dHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdAogewot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBh
dGgoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogfQog
CiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgocGF0aCk7CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNlRGlyZWN0b3J5
UGF0aChwYXRoKTsKIH0KLSNlbmRpZgogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aXNBdmFpbGFi
bGUoKQogewotICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAg
IHJldHVybiBtX2RhdGFiYXNlSXNBdmFpbGFibGU7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKIHsKLSAgICBBYnN0cmFjdERhdGFiYXNl
OjpzZXRJc0F2YWlsYWJsZShhdmFpbGFibGUpOworICAgIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSA9
IGF2YWlsYWJsZTsKK30KKworY2xhc3MgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRp
b25DYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0YWJhc2VD
cmVhdGlvbkNhbGxiYWNrVGFzayhkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikK
KyAgICB7CisgICAgICAgIG1fY3JlYXRpb25DYWxsYmFjay0+aGFuZGxlRXZlbnQobV9kYXRhYmFz
ZS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFj
a1Rhc2soUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY2FsbGJhY2spCisgICAgICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAgICAg
ICAgLCBtX2NyZWF0aW9uQ2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIFJl
ZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4g
bV9jcmVhdGlvbkNhbGxiYWNrOworfTsKKworUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VN
YW5hZ2VyOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAg
ICBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLAorICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwg
UGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlKQoreworICAgIGlmICghY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
RGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGNvbnRleHQsIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKworICAg
IFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZl
cnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGUsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgZGF0
YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxh
eU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dEhhc09wZW5EYXRhYmFzZXMoY29udGV4dCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOworCisgICAgaWYgKGRhdGFi
YXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKKyAgICAgICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgZm9yIGRh
dGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7CisgICAgICAgIGRhdGFiYXNlLT5tX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s6
OmNyZWF0ZShkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOworICAgIH0KKworICAgIHJldHVy
biBkYXRhYmFzZTsKK30KKworUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlTWFuYWdl
cjo6b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAg
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsCisgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQ
YXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAg
ICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKSkgeworICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZv
ciBvcmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPERhdGFiYXNlU3lu
Yz4gZGF0YWJhc2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKworICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFkYXRhYmFzZS0+cGVyZm9ybU9wZW5BbmRWZXJpZnko
IWNyZWF0aW9uQ2FsbGJhY2ssIGVjLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGRhdGFiYXNl
LT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplKTsKKworICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlv
bkNhbGxiYWNrLmdldCgpKSB7CisgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhl
IGNyZWF0aW9uIGNhbGxiYWNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwor
ICAgICAgICBjcmVhdGlvbkNhbGxiYWNrLT5oYW5kbGVFdmVudChkYXRhYmFzZS5nZXQoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGRhdGFiYXNlOwogfQogCiBib29sIERhdGFiYXNlTWFuYWdlcjo6
aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMTAy
LDYgKzE4OCwxMSBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTCiAg
ICAgcmV0dXJuIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKIH0K
IAordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldEhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4
dCktPnNldEhhc09wZW5EYXRhYmFzZXMoKTsKK30KKwogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0
b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0YWJhc2VUYXNr
U3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCiB7CiAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9w
RGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7CkBAIC0xMDksNzAgKzIwMCwxMDYgQEAg
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaQogCiBTdHJpbmcgRGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKLSAgICByZXR1
cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4s
IG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1bGxQ
YXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAK
ICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4g
bV9zZXJ2ZXItPmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkK
IHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7CisgICAg
bV9zZXJ2ZXItPm9yaWdpbnMocmVzdWx0KTsKIH0KIAogYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9yPFN0cmlu
Zz4mIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0
YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIG1fc2VydmVy
LT5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKIH0KIAogRGF0YWJhc2VE
ZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4p
OworICAgIHJldHVybiBtX3NlcnZlci0+ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3Jp
Z2luKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gbV9zZXJ2
ZXItPnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdp
bik7CisgICAgcmV0dXJuIG1fc2VydmVyLT5xdW90YUZvck9yaWdpbihvcmlnaW4pOwogfQogCiB2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldFF1b3Rh
KG9yaWdpbiwgcXVvdGFTaXplKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcygpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7CisgICAgbV9zZXJ2ZXItPmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiBi
b29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihv
cmlnaW4pOworICAgIHJldHVybiBtX3NlcnZlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbik7CiB9CiAK
IGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuIG1fc2Vy
dmVyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisvLyBGcm9tIGEgc2Vjb25k
YXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fc2VydmVyLT5zY2hlZHVsZU5v
dGlmeURhdGFiYXNlQ2hhbmdlZChvcmlnaW4sIG5hbWUpOworfQorCit2b2lkIERhdGFiYXNlTWFu
YWdlcjo6ZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAg
IG1fc2VydmVyLT5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiAjZWxzZSAvLyBQTEFU
Rk9STShDSFJPTUlVTSkKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRp
YXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CisgICAgbV9zZXJ2ZXItPmNsb3NlRGF0YWJh
c2VzSW1tZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oQ0hST01JVU0pCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKKyAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb250ZXh0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmNhbkVzdGFibGlz
aERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQoreworICAgIHJldHVybiBtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6YWRkT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fc2VydmVyLT5hZGRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KQoreworICAgIG1fc2VydmVyLT5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQoreworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURl
dGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShj
b25zdCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXIt
PmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTUgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAi
RGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBYnN0cmFjdERhdGFiYXNlU2VydmVyOworY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRh
YmFzZUNhbGxiYWNrOwogY2xhc3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OworY2xhc3MgRGF0YWJh
c2VTeW5jOwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNDcsMTcgKzQ5LDE4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwotI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKICAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsK
ICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
YXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7Ci0jZW5kaWYKIAogICAgIGJvb2wg
aXNBdmFpbGFibGUoKTsKICAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCisgICAgUGFz
c1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQ
dHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERh
dGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRy
PERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICBib29sIGhhc09wZW5E
YXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIC8vIFdoZW4gdGhlIGRhdGFi
YXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCisgICAg
dm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2
b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERhdGFiYXNlVGFza1N5
bmNocm9uaXplciopOwogCiAgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0
cnVlKTsKQEAgLTc3LDE3ICs4MCwzMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGVPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFk
LCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRzIGRhdGEKKyAgICB2b2lkIHNjaGVkdWxlTm90
aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
KworICAgIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKKwogI2Vsc2Ug
Ly8gUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKKyAgICBib29s
IGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSk7CisgICAgdm9pZCBhZGRPcGVuRGF0YWJhc2UoQWJzdHJhY3REYXRhYmFzZSopOwor
ICAgIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqKTsKKworICAgIHZv
aWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgQWJz
dHJhY3REYXRhYmFzZSopOworCiBwcml2YXRlOgogICAgIERhdGFiYXNlTWFuYWdlcigpOwogICAg
IH5EYXRhYmFzZU1hbmFnZXIoKSB7IH0KIAogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIG1f
c2VydmVyOworICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBt
X2RhdGFiYXNlSXNBdmFpbGFibGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5
bmMuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmMuaCIKQEAgLTQ3LDM1ICs0Nyw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlU3luYzo6
b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLQotICAgIGlmICghRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
RGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBSZWZQ
dHI8RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZVN5bmMoY29u
dGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkp
OwotCi0gICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5wZXJmb3Jt
T3BlbkFuZFZlcmlmeSghY3JlYXRpb25DYWxsYmFjaywgZWMsIGVycm9yTWVzc2FnZSkpIHsKLSAg
ICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0
KCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFt
ZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwotCi0gICAgaWYgKGRhdGFiYXNlLT5pc05l
dygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEks
ICJJbnZva2luZyB0aGUgY3JlYXRpb24gY2FsbGJhY2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRh
YmFzZS5nZXQoKSk7Ci0gICAgICAgIGNyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGFi
YXNlLmdldCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YWJhc2U7Ci19Ci0KIERhdGFiYXNl
U3luYzo6RGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCiAgICAgOiBBYnN0cmFjdERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFN5bmNEYXRhYmFzZSkK
QEAgLTg3LDcgKzU4LDcgQEAgRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKICAgICBBU1NF
UlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBp
ZiAob3BlbmVkKCkpIHsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVtb3Zl
T3BlbkRhdGFiYXNlKHRoaXMpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5y
ZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiAgICAgICAgIGNsb3NlRGF0YWJhc2UoKTsKICAgICB9
CiB9CkBAIC0yMTEsNyArMTgyLDcgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRl
bHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNs
b3NpbmcgZGF0YWJhc2UiKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucmVtb3Zl
T3BlbkRhdGFiYXNlKHRoaXMpOwogICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oCShy
ZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00OSwxNSArNTAsMTEgQEAgY2xhc3MgU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIC8v
IEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIG9ubHkg
b24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhyZWFkLgogY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVi
bGljIEFic3RyYWN0RGF0YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlU3lu
YygpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VT
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9u
LCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgcmVhZFRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CkBAIC04Miw2ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
dW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9v
bCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIG1fbGFzdEVycm9yTWVz
c2FnZTsKKworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgpAQCAtNDEsOCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIC8vIENhbiBiZSB1c2VkIHRvIHdhaXQgdW50aWwg
RGF0YWJhc2VUYXNrIGlzIGNvbXBsZXRlZC4KIC8vIEhhcyB0byBiZSBwYXNzZWQgaW50byBEYXRh
YmFzZVRhc2s6OmNyZWF0ZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHRhc2suCiBjbGFzcyBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCShyZXZpc2lvbiAxMzc5NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxMyArMzEsMTIgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
KyNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJTUUxSZXN1bHRTZXRS
b3dMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgU1FM
UmVzdWx0U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNRTFJlc3VsdFNldD4gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFJlc3VsdFNldD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3VsdFNldCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5oCShyZXZp
c2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudFN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgogI2lu
Y2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00Myw4ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERhdGFiYXNlU3luYzsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIAotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQogY2xhc3MgU1FMU3RhdGVtZW50U3luYyB7CiBwdWJsaWM6CiAgICAgU1FMU3Rh
dGVtZW50U3luYyhjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVl
PiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMTM3
OTY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCiAjaW5jbHVkZSAiU1FM
U3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTQ5LDggKzUwLDYgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
OwogY2xhc3MgU1FMVmFsdWU7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLXR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbldyYXBwZXIoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwCShyZXZpc2lvbiAxMzc5NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCkBAIC00MywyMSArNDMsMjEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0ZVRy
YW5zYWN0aW9uKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewotICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAorICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKAogICAg
ICAgICBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZp
ZXIoKSk7CiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4ZWN1dGVTdGF0ZW1l
bnQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UpOwogfQogCiBib29sIFNRTFRyYW5z
YWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YShBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkK
IHsKICAgICBBU1NFUlQoZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlRXhjZWVkZWRR
dW90YShkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxv
bmcgbmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihk
YXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1
b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHJldHVybiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgJKHJldmlzaW9uIDEzNzk2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NDcsOCArNDgsNiBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNR
TFZhbHVlOwogY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb247CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkIGFu
ZCB1c2VkIG9ubHkgb24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhyZWFkLgogY2xhc3MgU1FMVHJh
bnNhY3Rpb25TeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25TeW5jPiB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNv
bnRleHRXZWJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc5
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRX
ZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMCBAQAogCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VT
eW5jLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAKQEAgLTQzLDIyICs0MiwyNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IFdvcmtlckNvbnRl
eHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYg
KCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50
b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBE
YXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwor
ICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29u
dGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFkYk1hbmFnZXIuaXNBdmFpbGFibGUoKSkgewogICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0
dXJuIERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgdmVyc2lvbiwgZGlzcGxh
eU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKyAgICByZXR1cm4g
ZGJNYW5hZ2VyLm9wZW5EYXRhYmFzZShjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQogCiBQYXNzUmVmUHRy
PERhdGFiYXNlU3luYz4gV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VTeW5j
KFdvcmtlckNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50b3BPcmlnaW4oKSkgfHwgIUFic3RyYWN0RGF0
YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFkYk1h
bmFnZXIuaXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlU3luYzo6b3BlbkRhdGFi
YXNlU3luYyhjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOworICAgIHJldHVybiBkYk1hbmFnZXIub3BlbkRhdGFi
YXNlU3luYyhjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gMTM3OTY0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1Mjc3LDYgKzI1Mjc3LDEwIEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRh
dGFiYXNlXERCQmFja2VuZFNlcnZlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERCQmFja2VuZFNl
cnZlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3OTY0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NjQ5LDYgKzY2NDksNyBAQAogCQlGREY3RTlDMzEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suY3BwICovOyB9OwogCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNB
dWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmggKi87IH07CiAJCUZFMTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFi
YXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMzM3MUEy
MTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAv
KiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
NDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwogCQlG
RTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4
NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjY2Myw2ICs2NjY0LDcgQEAKIAkJRkU4MERB
NzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5o
ICovOyB9OwogCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2
Nzk3MDA3MDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8q
IERCQmFja2VuZFNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogREJCYWNrZW5kU2VydmVyLmNw
cCAqLzsgfTsKIAkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3ku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4
M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OwogCQlGRURF
Rjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0
NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CkBAIC0xNDIx
NCw2ICsxNDIxNiw3IEBACiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dWRpb0J1ZmZlckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRG
N0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJz
dHJhY3REYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFj
dERhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzM3MUEw
MTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHBhdGggPSBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2Vy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRp
bmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjI5LDYgKzE0MjMyLDcgQEAKIAkJRkU4
MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlv
bkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQw
QzUgLyogREJCYWNrZW5kU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERCQmFja2VuZFNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EQkJhY2tlbmRT
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZEMjcxNjdBOEYyQTAw
RkREMjZCIC8qIERCQmFja2VuZFNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEQkJhY2tlbmRTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EQkJhY2tlbmRTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURF
RjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNl
U3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTdHJh
dGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDOTE2MUY3RjM2MDA5
NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQc2V1ZG9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4MjkxLDYgKzE4Mjk1LDcgQEAKIAkJCQk5N0JDNjlFMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2UuaWRsICovLAogCQkJCTk3QkM2OUUxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1
dGhvcml6ZXIuY3BwICovLAogCQkJCTk3QkM2OUUyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZUF1dGhvcml6ZXIuaCAqLywKKwkJCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJh
c2VCYXNpY1R5cGVzLmggKi8sCiAJCQkJOTdCQzY5RTMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ2FsbGJhY2suaCAqLywKIAkJCQk5N0JDNjlFNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VDYWxsYmFjay5pZGwgKi8sCiAJCQkJOTdCQzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ29udGV4dC5jcHAgKi8sCkBAIC0xODMwOCw2ICsxODMxMyw3IEBACiAJCQkJOTdCQzY5RUUx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggKi8sCiAJCQkJOTdCQzY5RUYxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJOTdCQzY5RjAxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oICovLAorCQkJCUZFQjI2RDI3MTY3QThG
MkEwMEZERDI2QiAvKiBEQkJhY2tlbmRTZXJ2ZXIuY3BwICovLAogCQkJCUZFQUY2NjUzMTY3OTcw
MDcwMDYyRDBDNSAvKiBEQkJhY2tlbmRTZXJ2ZXIuaCAqLywKIAkJCQlBOENDQkI0NjE1MUY4MzE2
MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwICovLAogCQkJCUE4Q0NCQjQ3MTUx
RjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5oICovLApAQCAtMjI2MTAsNiAr
MjI2MTYsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJRkVERUY4NDIxNjc5NzEwODAwMEU0NDRBIC8q
IERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTE1RkFCMTY3OTg4Q0Qw
MDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogREJCYWNrZW5kU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDMxMDVCQjE2NzUwRjE2MDBEQjJGQjggLyog
Tm9kZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTA3Miw2ICsyOTA3OSw3IEBACiAJ
CQkJRkRBOTMyNjYxNjcwM0JBOTAwODk4MkRDIC8qIEpTT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAv
KiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQjI2RDI4MTY3QThG
MkEwMEZERDI2QiAvKiBEQkJhY2tlbmRTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM3
QTU2MjIxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBOUNFRjhEMTYzQjNFQTEwMERFN0VGRSAv
KiBFeGNsdXNpb25TaGFwZU91dHNpZGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="196919"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>