<?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>173472</bug_id>
          
          <creation_ts>2017-06-16 09:05:58 -0700</creation_ts>
          <short_desc>[WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies</short_desc>
          <delta_ts>2017-06-22 09:41:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>173689</blocked>
    
    <blocked>173721</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1319963</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:05:58 -0700</bug_when>
    <thetext>Add C API to efficiently reset all plugin load client policies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319964</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:06:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/28858817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319970</commentid>
    <comment_count>2</comment_count>
      <attachid>313078</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:13:44 -0700</bug_when>
    <thetext>Created attachment 313078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319971</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 09:15:15 -0700</bug_when>
    <thetext>Attachment 313078 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319984</commentid>
    <comment_count>4</comment_count>
      <attachid>313078</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-16 09:39:39 -0700</bug_when>
    <thetext>Comment on attachment 313078
Patch

Why not make this SPI on WKProcessPool.  Given that we want the C-SPI to go away over time, and that you can cast a WKContextRef to a WKProcessPool, I don&apos;t see the value of adding new C-SPI here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319985</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:45:08 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 313078 [details]
&gt; Patch
&gt; 
&gt; Why not make this SPI on WKProcessPool.  Given that we want the C-SPI to go
&gt; away over time, and that you can cast a WKContextRef to a WKProcessPool, I
&gt; don&apos;t see the value of adding new C-SPI here.

Oh, I guess the location does not matter to me. I was merely being consistent with all the other PluginLoadPolicy API is in WKContextPrivateMac.h. Wouldn&apos;t it look weird if 3 of them were in WKContextPrivateMac.h and one in WKProcessPool?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319989</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:47:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; Comment on attachment 313078 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Why not make this SPI on WKProcessPool.  Given that we want the C-SPI to go
&gt; &gt; away over time, and that you can cast a WKContextRef to a WKProcessPool, I
&gt; &gt; don&apos;t see the value of adding new C-SPI here.
&gt; 
&gt; Oh, I guess the location does not matter to me. I was merely being
&gt; consistent with all the other PluginLoadPolicy API is in
&gt; WKContextPrivateMac.h. Wouldn&apos;t it look weird if 3 of them were in
&gt; WKContextPrivateMac.h and one in WKProcessPool?

Also, it seems WKProcessPool is Cocoa, not C API. Wouldn&apos;t this make it much harder to adopt the new API in C API clients?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319990</commentid>
    <comment_count>7</comment_count>
      <attachid>313082</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:48:00 -0700</bug_when>
    <thetext>Created attachment 313082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319991</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 09:50:42 -0700</bug_when>
    <thetext>Attachment 313082 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319992</commentid>
    <comment_count>9</comment_count>
      <attachid>313082</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 09:52:22 -0700</bug_when>
    <thetext>Comment on attachment 313082
Patch

Oh, I missed the part about being to cast from one to the other. I&apos;ll give it a shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320004</commentid>
    <comment_count>10</comment_count>
      <attachid>313085</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 10:34:22 -0700</bug_when>
    <thetext>Created attachment 313085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320005</commentid>
    <comment_count>11</comment_count>
      <attachid>313086</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 10:35:18 -0700</bug_when>
    <thetext>Created attachment 313086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320006</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 10:35:44 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 313078 [details]
&gt; Patch
&gt; 
&gt; Why not make this SPI on WKProcessPool.  Given that we want the C-SPI to go
&gt; away over time, and that you can cast a WKContextRef to a WKProcessPool, I
&gt; don&apos;t see the value of adding new C-SPI here.

Done in this latest iteration, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320008</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 10:38:00 -0700</bug_when>
    <thetext>Attachment 313086 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320060</commentid>
    <comment_count>14</comment_count>
      <attachid>313086</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-16 11:50:43 -0700</bug_when>
    <thetext>Comment on attachment 313086
Patch

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

No API test?

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1610
&gt; +    sendToAllProcesses(Messages::WebProcess::ResetPluginLoadClientPolicies(pluginLoadClientPolicies));

pluginLoadClientPolicies ?  Or m_pluginLoadClientPolicies?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320064</commentid>
    <comment_count>15</comment_count>
      <attachid>313086</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 11:56:21 -0700</bug_when>
    <thetext>Comment on attachment 313086
Patch

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

I will look into adding an API test.

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1610
&gt;&gt; +    sendToAllProcesses(Messages::WebProcess::ResetPluginLoadClientPolicies(pluginLoadClientPolicies));
&gt; 
&gt; pluginLoadClientPolicies ?  Or m_pluginLoadClientPolicies?

Should be identical at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320144</commentid>
    <comment_count>16</comment_count>
      <attachid>313126</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 13:57:08 -0700</bug_when>
    <thetext>Created attachment 313126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320145</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 13:57:21 -0700</bug_when>
    <thetext>I added an API test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320150</commentid>
    <comment_count>18</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 13:59:49 -0700</bug_when>
    <thetext>Attachment 313126 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:342:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320174</commentid>
    <comment_count>19</comment_count>
      <attachid>313135</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 14:27:59 -0700</bug_when>
    <thetext>Created attachment 313135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320177</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 14:30:07 -0700</bug_when>
    <thetext>Attachment 313135 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:342:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320183</commentid>
    <comment_count>21</comment_count>
      <attachid>313139</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 14:36:47 -0700</bug_when>
    <thetext>Created attachment 313139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320187</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 14:39:20 -0700</bug_when>
    <thetext>Attachment 313139 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1591:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/WebProcessPool.cpp:1592:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:342:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320202</commentid>
    <comment_count>23</comment_count>
      <attachid>313139</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 15:32:39 -0700</bug_when>
    <thetext>Comment on attachment 313139
Patch

Clearing flags on attachment: 313139

Committed r218419: &lt;http://trac.webkit.org/changeset/218419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320203</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 15:32:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320277</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 18:10:25 -0700</bug_when>
    <thetext>Reopen to land follow-up improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320280</commentid>
    <comment_count>26</comment_count>
      <attachid>313170</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-16 18:11:43 -0700</bug_when>
    <thetext>Created attachment 313170
Follow-up improvement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320750</commentid>
    <comment_count>27</comment_count>
      <attachid>313170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-19 11:22:02 -0700</bug_when>
    <thetext>Comment on attachment 313170
Follow-up improvement

Clearing flags on attachment: 313170

Committed r218499: &lt;http://trac.webkit.org/changeset/218499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320751</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-19 11:22:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313078</attachid>
            <date>2017-06-16 09:13:44 -0700</date>
            <delta_ts>2017-06-16 09:47:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616091343.patch</filename>
            <type>text/plain</type>
            <size>15261</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uMmM0Yjk1NDFlMDA3YmZmYzhjMWIxYWE0YzgwYmFj
MDU1ZTcxMjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRv
IGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFBsdWdpbkxvYWRDbGllbnRQb2xpY3lNYXhpbXVtIHZh
bHVlIHRvIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgZW51bWVyYXRpb24KKyAgICAgICAgdG8gZmFj
aWxpdGF0ZSBpbnB1dCB2YWx1ZSB2YWxpZGF0aW9uIG9uIEFQSSBzaWRlLgorCisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5EYXRhLmg6CisKIDIwMTctMDYtMTUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IFtpT1NdIEdlbmVyYXRlIGEgc2lt
dWxhdGVkIGNyYXNoIHdoZW4gdGhlIFdlYlRocmVhZCBzdGFydHMgaW4gTW9iaWxlU2FmYXJpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZGQ0ZDU2YmU4NTExN2RiNDEyMjIyYzk1MmIzMzRmNjYzZjUxYmY5OS4uZDJh
YmU0NTI1NjdhOTIwYTcwYWNjNjA2YWQzNTNkZmE0MWZhNjNjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4g
bG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEMgQVBJ
IHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXM6Cisg
ICAgICAgIFdLQ29udGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKCkuIFRoaXMgbmV3
IEFQSSBjbGVhcnMgYWxsCisgICAgICAgIGV4aXN0aW5nIHBvbGljaWVzIGFuZCB0aGVuIHNldHMg
YWxsIG9mIHRoZW0gd2l0aCBuZXcgdmFsdWVzLCB3aXRoIGEKKyAgICAgICAgbWluaW1hbCBhbW91
bnQgb2YgSVBDLgorCisgICAgICAgIFRvIGFjaGlldmUgdGhpcywgY2xpZW50cyB3b3VsZCBwcmV2
aW91c2x5IGhhdmUgdG8gY2FsbAorICAgICAgICAxLiBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkgd2hpY2ggd291bGQgY2F1c2UgYSBicm9hZGNhc3QgSVBDIHRvCisgICAgICAg
ICAgIGV2ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgMi4gV0tDb250ZXh0U2V0UGx1
Z2luTG9hZENsaWVudFBvbGljeSgpIHJlcGVhdGVkbHkgdG8gYWRkIGVhY2ggcG9saWN5IG9uZSBi
eQorICAgICAgICAgICBvbmUuIEVhY2ggY2FsbCB0byBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5KCkgd291bGQgY2F1c2UgYSBicm9hZGNhc3QKKyAgICAgICAgICAgSVBDIHRvIGV2
ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGUgbmV3IEFQSSBkb2VzIHRoZSBz
YW1lIGpvYiB3aXRoIGEgc2luZ2xlIGJyb2FkY2FzdCBJUEMgdG8gZXZlcnkgV2ViQ29udGVudAor
ICAgICAgICBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQ
cml2YXRlTWFjLm1tOgorICAgICAgICAoaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJs
ZSk6CisgICAgICAgIChXS0NvbnRleHRSZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNi0xNSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2luZyAt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIHRvIHN3YXAgb3V0
IGl0ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJlYWtzIGl0ZW0gcHJvdmlkZXIgbG9hZGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCAwODkzZmM5OWE3ZThjZjY3MmZl
MWZhYWI2MmY1OTExM2VhYmEzNTVmLi40Y2U4NTQxMjg2ZWFlOGRkODQ4YzdiMjNhOTYwNWU4Mjhk
ZWI0NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNDUsNiArNDUsOCBA
QCBlbnVtIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgOiB1aW50OF90IHsKIAogICAgIC8vIFRoZSBw
bHVnLWluIG1vZHVsZSBzaG91bGQgYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIFdl
YktpdCBoYXMgYXNrZWQgaXQgdG8gYmUgYmxvY2tlZC4KICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5QWxsb3dBbHdheXMsCisKKyAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5TWF4aW11bSA9IFBs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cwogfTsKIAogc3RydWN0IE1pbWVDbGFzc0lu
Zm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMuaAppbmRleCA1NjcxZDY3NTk3MzEwZWFmMTIzZDQ5YTljMGI1NzJh
ZGRhMGFhOTQzLi41ODg5ZmY2M2VkYjIzZjgzY2IwYzU0YzZjZDA1YjBjOWQ0ZjYyYTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuaApAQCAtMzYsNiArMzYsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBi
b29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1N0cmluZ1JlZiBwbHVnSW5CdW5kbGVJZGVudGlmaWVyKTsKIAogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJp
bmdSZWYgYnVuZGxlSWRlbnRpZmllciwgV0tTdHJpbmdSZWYgdmVyc2lvblN0cmluZyk7CitXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEaWN0aW9uYXJ5UmVmIHBvbGljaWVzKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoV0tDb250ZXh0UmVmIGNvbnRleHQp
OwogCiBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9y
QnVuZGxlSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGx1Z0lu
QnVuZGxlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KaW5kZXggN2Y5M2MxZTMyYWE0MTQz
ZjRkYjIwMjBhYmFmM2FmMDI2YThiYjE5OC4uNDVlMDI5NDlkNmM5OTQ3NDExMTUyYzMyMTZiNzMx
YmVjY2ViZmE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9y
dCAiQVBJRGljdGlvbmFyeS5oIgogI2ltcG9ydCAiQVBJTnVtYmVyLmgiCiAjaW1wb3J0ICJBUElT
dHJpbmcuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpbkluZm9TdG9yZS5o
IgogI2ltcG9ydCAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGll
cy5oIgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luQmxhY2tsaXN0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViR0xCbGFj
a2xpc3QuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjAsNiArNjIsNjEgQEAg
dm9pZCBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BsdWdpbkxvYWRDbGkKICNlbmRpZgogfQogCitzdGF0aWMgYm9vbCBpc1BsdWdp
bkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKHVpbnQ2NF90IHBvbGljeSkKK3sKKyAgICByZXR1
cm4gcG9saWN5IDw9IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lNYXhpbXVtOworfQor
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVp
bnQ4X3Q+Pj4gdG9QbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNIYXNoTWFwKFdLRGljdGlvbmFyeVJl
ZiBwb2xpY2llc1JlZikKK3sKKyAgICBBU1NFUlQocG9saWNpZXNSZWYpOworCisgICAgSGFzaE1h
cDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBwbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXM7CisgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHRvSW1wbChw
b2xpY2llc1JlZiktPm1hcCgpKSB7CisgICAgICAgIGlmIChob3N0UGFpci52YWx1ZS0+dHlwZSgp
ICE9IEFQSTo6RGljdGlvbmFyeTo6QVBJVHlwZSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUGx1Z2lucywgIldLQ29udGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKCkg
d2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgaG9zdCA9IGhvc3RQYWlyLmtl
eTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9s
aWNpZXNGb3JIb3N0OworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZpZXJQYWlyIDog
c3RhdGljX2Nhc3Q8QVBJOjpEaWN0aW9uYXJ5Kj4oaG9zdFBhaXIudmFsdWUuZ2V0KCkpLT5tYXAo
KSkgeworICAgICAgICAgICAgaWYgKGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlLT50eXBlKCkg
IT0gQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUGx1Z2lucywgIldLQ29udGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVz
KCkgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgYnVu
ZGxlSWRlbnRpZmllciA9IGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleTsKKyAgICAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCB1aW50OF90PiB2ZXJzaW9uc1RvUG9saWNpZXM7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHZlcnNpb25QYWlyIDogc3RhdGljX2Nhc3Q8QVBJOjpEaWN0aW9uYXJ5Kj4oYnVu
ZGxlSWRlbnRpZmllclBhaXIudmFsdWUuZ2V0KCkpLT5tYXAoKSkgeworICAgICAgICAgICAgICAg
IFN0cmluZyB2ZXJzaW9uID0gdmVyc2lvblBhaXIua2V5OworICAgICAgICAgICAgICAgIGlmICh2
ZXJzaW9uUGFpci52YWx1ZS0+dHlwZSgpICE9IEFQSTo6VUludDY0OjpBUElUeXBlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJXS0NvbnRleHRSZXNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcygpIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGlu
IHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgdWludDY0X3QgcG9saWN5ID0gc3RhdGljX2Nhc3Q8
QVBJOjpVSW50NjQqPih2ZXJzaW9uUGFpci52YWx1ZS5nZXQoKSktPnZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFpc1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKHBvbGljeSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIldLQ29u
dGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKCkgd2FzIGNhbGxlZCB3aXRoIGRpY3Rp
b25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuYWRk
KHZlcnNpb24sIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvbGljeSkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCF2ZXJzaW9uc1RvUG9saWNpZXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHBvbGljaWVzRm9ySG9zdC5hZGQoYnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZSh2ZXJz
aW9uc1RvUG9saWNpZXMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBvbGljaWVzRm9ySG9z
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuYWRkKGhv
c3QsIFdURk1vdmUocG9saWNpZXNGb3JIb3N0KSk7CisgICAgfQorICAgIHJldHVybiBwbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXM7Cit9CisKK3ZvaWQgV0tDb250ZXh0UmVzZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGljdGlvbmFyeVJlZiBwb2xp
Y2llc1JlZikKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBpZiAoIXBv
bGljaWVzUmVmKQorICAgICAgICByZXR1cm47CisKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnJl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKHRvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzSGFz
aE1hcChwb2xpY2llc1JlZikpOworI2VuZGlmCit9CisKIHZvaWQgV0tDb250ZXh0Q2xlYXJQbHVn
aW5DbGllbnRQb2xpY2llcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDdmOWZmYWVmMWM2NTgyNTI4YmU5NTQ1NTY3ZGY0ZTFlOGU5MGE5OTIu
LmRhYTU0MTBlNWY5ZGE3NGQyN2ZkMDRlYzAzMzI0NGIwOGIzY2ExMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTU4OCwyMSArMTU4OCwyOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBs
dWdpbkxvYWRDbGllbnRQb2xpY3kgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0
cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQogewot
ICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+IHBvbGljaWVzQnlJ
ZGVudGlmaWVyOwotICAgIGlmIChtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5jb250YWlucyho
b3N0KSkKLSAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBtX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5nZXQoaG9zdCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgdWludDhfdD4gdmVyc2lv
bnNUb1BvbGljaWVzOwotICAgIGlmIChwb2xpY2llc0J5SWRlbnRpZmllci5jb250YWlucyhidW5k
bGVJZGVudGlmaWVyKSkKLSAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNCeUlk
ZW50aWZpZXIuZ2V0KGJ1bmRsZUlkZW50aWZpZXIpOwotCisgICAgYXV0byYgcG9saWNpZXNGb3JI
b3N0ID0gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5zdXJlKGhvc3QsIFtdIHsgcmV0dXJu
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+KCk7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xpY2llc0Zvckhvc3Qu
ZW5zdXJlKGJ1bmRsZUlkZW50aWZpZXIsIFtdIHsgcmV0dXJuIEhhc2hNYXA8U3RyaW5nLCB1aW50
OF90PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2
ZXJzaW9uU3RyaW5nLCBwb2xpY3kpOwotICAgIHBvbGljaWVzQnlJZGVudGlmaWVyLnNldChidW5k
bGVJZGVudGlmaWVyLCB2ZXJzaW9uc1RvUG9saWNpZXMpOwotICAgIG1fcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzLnNldChob3N0LCBwb2xpY2llc0J5SWRlbnRpZmllcik7CiAKICAgICBzZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3kocG9saWN5LCBob3N0LCBidW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKSk7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+
Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKK3sKKyAgICBtX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5jbGVhcigpOworCisgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcykgeworICAgICAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3QgPSBtX3BsdWdp
bkxvYWRDbGllbnRQb2xpY2llcy5lbnN1cmUoaG9zdFBhaXIua2V5LCBbXSB7IHJldHVybiBIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+PigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52
YWx1ZSkgeworICAgICAgICAgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNG
b3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyUGFpci5rZXksIFtdIHsgcmV0dXJuIEhhc2hN
YXA8U3RyaW5nLCB1aW50OF90PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpCisgICAg
ICAgICAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uUGFpci5rZXksIHZlcnNp
b25QYWlyLnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKHBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcykpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhclBs
dWdpbkNsaWVudFBvbGljaWVzKCkKIHsKICAgICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAz
NjgxY2U4MDU2ZmE0ZDI5YmUwZTY2ZDJhZDhlODgyMTAwNjM2M2Y4Li5mY2E5MjFlMzk5ZDY2NTMy
MTQ3NjliN2U3ZWZkNGEzODljZjY3YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICBQbHVnaW5JbmZv
U3RvcmUmIHBsdWdpbkluZm9TdG9yZSgpIHsgcmV0dXJuIG1fcGx1Z2luSW5mb1N0b3JlOyB9CiAK
ICAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgdm9pZCByZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+Jik7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZGJiYjBhNjRkMjljNmEyYmIzNzhjNDYyY2U0YmEyNWY0MmIzMDY0OC4uNmI5
MmY5Yzc4MjFjZDBkMTM5MWEzYWE3NGZmYWE2NjY5NjgzZmFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00MDAsMTIgKzQwMCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAm
JiBQTEFURk9STShNQUMpCi0gICAgZm9yIChhdXRvIGhvc3RJdGVyID0gcGFyYW1ldGVycy5wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMuYmVnaW4oKTsgaG9zdEl0ZXIgIT0gcGFyYW1ldGVycy5wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5kKCk7ICsraG9zdEl0ZXIpIHsKLSAgICAgICAgZm9yIChh
dXRvIGJ1bmRsZUlkZW50aWZpZXJJdGVyID0gaG9zdEl0ZXItPnZhbHVlLmJlZ2luKCk7IGJ1bmRs
ZUlkZW50aWZpZXJJdGVyICE9IGhvc3RJdGVyLT52YWx1ZS5lbmQoKTsgKytidW5kbGVJZGVudGlm
aWVySXRlcikgewotICAgICAgICAgICAgZm9yIChhdXRvIHZlcnNpb25JdGVyID0gYnVuZGxlSWRl
bnRpZmllckl0ZXItPnZhbHVlLmJlZ2luKCk7IHZlcnNpb25JdGVyICE9IGJ1bmRsZUlkZW50aWZp
ZXJJdGVyLT52YWx1ZS5lbmQoKTsgKyt2ZXJzaW9uSXRlcikKLSAgICAgICAgICAgICAgICBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
c3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4odmVyc2lvbkl0ZXItPnZhbHVlKSwg
aG9zdEl0ZXItPmtleSwgYnVuZGxlSWRlbnRpZmllckl0ZXItPmtleSwgdmVyc2lvbkl0ZXItPmtl
eSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMo
cGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoR0FNRVBBRCkKQEAgLTkyNiw2ICs5MjEsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGMK
ICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzKGNvbnN0IEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hN
YXA8V1RGOjpTdHJpbmcsIHVpbnQ4X3Q+Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKK3sK
KyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQorICAgIGNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKKworICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBw
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVu
dGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHZl
cnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpCisgICAgICAgICAgICAgICAg
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHZlcnNpb25QYWlyLnZhbHVl
KSwgaG9zdFBhaXIua2V5LCBidW5kbGVJZGVudGlmaWVyUGFpci5rZXksIHZlcnNpb25QYWlyLmtl
eSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVh
clBsdWdpbkNsaWVudFBvbGljaWVzKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCA2ZWQxOTk4ZGJlMTZmNjA5YjQ4NjZlZjdiMmFiNmQ2YTYxOGI5ODFlLi43ODJkNTNiZDQ0
YTk3OWUwZWQ4MTc1NGJiMWZhMmIyYTg1MjQzMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJ
bkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENs
aWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJp
bmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAg
dm9pZCByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+Jik7CiAgICAgdm9pZCBj
bGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggNjgwYmY0ZDYzZjA3YzQwMGY4Y2FjY2YzNjUzNDEyYWRiYjE4ZDVkZC4uODRmNTVlMDA1
MDI5M2U4ZmViMjgzZWMwYzQwYTE1NjM0NTY2MDY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldFBsdWdJbkF1dG9T
dGFydE9yaWdpbkRlZmF1bHRIYXNoZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykK
ICAgICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+PiBoYXNoZXMpCiAgICAgU2V0UGx1Z2lu
TG9hZENsaWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgU3RyaW5nIGhvc3QsIFN0cmluZyBidW5k
bGVJZGVudGlmaWVyLCBTdHJpbmcgdmVyc2lvblN0cmluZykKKyAgICBSZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3Ry
aW5nLCB1aW50OF90Pj4+IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKICAgICBDbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKCkKICAgICBSZWZyZXNoUGx1Z2lucygpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>313082</attachid>
            <date>2017-06-16 09:48:00 -0700</date>
            <delta_ts>2017-06-16 10:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616094759.patch</filename>
            <type>text/plain</type>
            <size>15337</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uMmM0Yjk1NDFlMDA3YmZmYzhjMWIxYWE0YzgwYmFj
MDU1ZTcxMjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRv
IGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFBsdWdpbkxvYWRDbGllbnRQb2xpY3lNYXhpbXVtIHZh
bHVlIHRvIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgZW51bWVyYXRpb24KKyAgICAgICAgdG8gZmFj
aWxpdGF0ZSBpbnB1dCB2YWx1ZSB2YWxpZGF0aW9uIG9uIEFQSSBzaWRlLgorCisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5EYXRhLmg6CisKIDIwMTctMDYtMTUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IFtpT1NdIEdlbmVyYXRlIGEgc2lt
dWxhdGVkIGNyYXNoIHdoZW4gdGhlIFdlYlRocmVhZCBzdGFydHMgaW4gTW9iaWxlU2FmYXJpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZGQ0ZDU2YmU4NTExN2RiNDEyMjIyYzk1MmIzMzRmNjYzZjUxYmY5OS4uZDJh
YmU0NTI1NjdhOTIwYTcwYWNjNjA2YWQzNTNkZmE0MWZhNjNjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4g
bG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEMgQVBJ
IHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXM6Cisg
ICAgICAgIFdLQ29udGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKCkuIFRoaXMgbmV3
IEFQSSBjbGVhcnMgYWxsCisgICAgICAgIGV4aXN0aW5nIHBvbGljaWVzIGFuZCB0aGVuIHNldHMg
YWxsIG9mIHRoZW0gd2l0aCBuZXcgdmFsdWVzLCB3aXRoIGEKKyAgICAgICAgbWluaW1hbCBhbW91
bnQgb2YgSVBDLgorCisgICAgICAgIFRvIGFjaGlldmUgdGhpcywgY2xpZW50cyB3b3VsZCBwcmV2
aW91c2x5IGhhdmUgdG8gY2FsbAorICAgICAgICAxLiBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkgd2hpY2ggd291bGQgY2F1c2UgYSBicm9hZGNhc3QgSVBDIHRvCisgICAgICAg
ICAgIGV2ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgMi4gV0tDb250ZXh0U2V0UGx1
Z2luTG9hZENsaWVudFBvbGljeSgpIHJlcGVhdGVkbHkgdG8gYWRkIGVhY2ggcG9saWN5IG9uZSBi
eQorICAgICAgICAgICBvbmUuIEVhY2ggY2FsbCB0byBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5KCkgd291bGQgY2F1c2UgYSBicm9hZGNhc3QKKyAgICAgICAgICAgSVBDIHRvIGV2
ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICBUaGUgbmV3IEFQSSBkb2VzIHRoZSBz
YW1lIGpvYiB3aXRoIGEgc2luZ2xlIGJyb2FkY2FzdCBJUEMgdG8gZXZlcnkgV2ViQ29udGVudAor
ICAgICAgICBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQ
cml2YXRlTWFjLm1tOgorICAgICAgICAoaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJs
ZSk6CisgICAgICAgIChXS0NvbnRleHRSZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNi0xNSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2luZyAt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIHRvIHN3YXAgb3V0
IGl0ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJlYWtzIGl0ZW0gcHJvdmlkZXIgbG9hZGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCAwODkzZmM5OWE3ZThjZjY3MmZl
MWZhYWI2MmY1OTExM2VhYmEzNTVmLi40Y2U4NTQxMjg2ZWFlOGRkODQ4YzdiMjNhOTYwNWU4Mjhk
ZWI0NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNDUsNiArNDUsOCBA
QCBlbnVtIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgOiB1aW50OF90IHsKIAogICAgIC8vIFRoZSBw
bHVnLWluIG1vZHVsZSBzaG91bGQgYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIFdl
YktpdCBoYXMgYXNrZWQgaXQgdG8gYmUgYmxvY2tlZC4KICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5QWxsb3dBbHdheXMsCisKKyAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5TWF4aW11bSA9IFBs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cwogfTsKIAogc3RydWN0IE1pbWVDbGFzc0lu
Zm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMuaAppbmRleCA1NjcxZDY3NTk3MzEwZWFmMTIzZDQ5YTljMGI1NzJh
ZGRhMGFhOTQzLi41ODg5ZmY2M2VkYjIzZjgzY2IwYzU0YzZjZDA1YjBjOWQ0ZjYyYTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuaApAQCAtMzYsNiArMzYsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBi
b29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1N0cmluZ1JlZiBwbHVnSW5CdW5kbGVJZGVudGlmaWVyKTsKIAogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJp
bmdSZWYgYnVuZGxlSWRlbnRpZmllciwgV0tTdHJpbmdSZWYgdmVyc2lvblN0cmluZyk7CitXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEaWN0aW9uYXJ5UmVmIHBvbGljaWVzKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoV0tDb250ZXh0UmVmIGNvbnRleHQp
OwogCiBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9y
QnVuZGxlSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGx1Z0lu
QnVuZGxlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KaW5kZXggN2Y5M2MxZTMyYWE0MTQz
ZjRkYjIwMjBhYmFmM2FmMDI2YThiYjE5OC4uY2U4ODZhNjRkYWMyZjZmODc0ZjViNmUwOGU5Yjdi
YTY3Mjk0YTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9y
dCAiQVBJRGljdGlvbmFyeS5oIgogI2ltcG9ydCAiQVBJTnVtYmVyLmgiCiAjaW1wb3J0ICJBUElT
dHJpbmcuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpbkluZm9TdG9yZS5o
IgogI2ltcG9ydCAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGll
cy5oIgpAQCAtMzksNiArNDAsNyBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luQmxhY2tsaXN0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViR0xCbGFj
a2xpc3QuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjAsNiArNjIsNjUgQEAg
dm9pZCBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BsdWdpbkxvYWRDbGkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCisKK3N0YXRpYyBib29sIGlzUGx1Z2luTG9hZENsaWVudFBvbGljeUFjY2Vw
dGFibGUodWludDY0X3QgcG9saWN5KQoreworICAgIHJldHVybiBwb2xpY3kgPD0gV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeU1heGltdW07Cit9CitzdGF0aWMgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRD
bGllbnRQb2xpY2llc0hhc2hNYXAoV0tEaWN0aW9uYXJ5UmVmIHBvbGljaWVzUmVmKQoreworICAg
IEFTU0VSVChwb2xpY2llc1JlZik7CisKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsK
KyAgICBmb3IgKGF1dG8mIGhvc3RQYWlyIDogdG9JbXBsKHBvbGljaWVzUmVmKS0+bWFwKCkpIHsK
KyAgICAgICAgaWYgKGhvc3RQYWlyLnZhbHVlLT50eXBlKCkgIT0gQVBJOjpEaWN0aW9uYXJ5OjpB
UElUeXBlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiV0tDb250
ZXh0UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoKSB3YXMgY2FsbGVkIHdpdGggZGljdGlv
bmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIFN0cmluZyBob3N0ID0gaG9zdFBhaXIua2V5OworICAgICAgICBIYXNoTWFwPFN0
cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+PiBwb2xpY2llc0Zvckhvc3Q7CisgICAgICAg
IGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBzdGF0aWNfY2FzdDxBUEk6OkRpY3Rp
b25hcnkqPihob3N0UGFpci52YWx1ZS5nZXQoKSktPm1hcCgpKSB7CisgICAgICAgICAgICBpZiAo
YnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUtPnR5cGUoKSAhPSBBUEk6OkRpY3Rpb25hcnk6OkFQ
SVR5cGUpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiV0tD
b250ZXh0UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoKSB3YXMgY2FsbGVkIHdpdGggZGlj
dGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyID0gYnVuZGxl
SWRlbnRpZmllclBhaXIua2V5OworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+
IHZlcnNpb25zVG9Qb2xpY2llczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvblBhaXIg
OiBzdGF0aWNfY2FzdDxBUEk6OkRpY3Rpb25hcnkqPihidW5kbGVJZGVudGlmaWVyUGFpci52YWx1
ZS5nZXQoKSktPm1hcCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHZlcnNpb24gPSB2ZXJz
aW9uUGFpci5rZXk7CisgICAgICAgICAgICAgICAgaWYgKHZlcnNpb25QYWlyLnZhbHVlLT50eXBl
KCkgIT0gQVBJOjpVSW50NjQ6OkFQSVR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoUGx1Z2lucywgIldLQ29udGV4dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzKCkgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB1aW50NjRfdCBwb2xpY3kgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KHZlcnNpb25Q
YWlyLnZhbHVlLmdldCgpKS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzUGx1Z2lu
TG9hZENsaWVudFBvbGljeUFjY2VwdGFibGUocG9saWN5KSkgeworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiV0tDb250ZXh0UmVzZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXMoKSB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQi
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcy5hZGQodmVyc2lvbiwgc3RhdGljX2Nhc3Q8
dWludDhfdD4ocG9saWN5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXZlcnNp
b25zVG9Qb2xpY2llcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcG9saWNpZXNGb3JIb3N0
LmFkZChidW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKHZlcnNpb25zVG9Qb2xpY2llcykpOworICAg
ICAgICB9CisgICAgICAgIGlmICghcG9saWNpZXNGb3JIb3N0LmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5hZGQoaG9zdCwgV1RGTW92ZShwb2xpY2llc0Zv
ckhvc3QpKTsKKyAgICB9CisgICAgcmV0dXJuIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCit2b2lkIFdLQ29udGV4
dFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S0RpY3Rpb25hcnlSZWYgcG9saWNpZXNSZWYpCit7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCisgICAgaWYgKCFwb2xpY2llc1JlZikKKyAgICAgICAgcmV0dXJuOworCisgICAgdG9J
bXBsKGNvbnRleHRSZWYpLT5yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyh0b1BsdWdpbkxv
YWRDbGllbnRQb2xpY2llc0hhc2hNYXAocG9saWNpZXNSZWYpKTsKKyNlbmRpZgorfQorCiB2b2lk
IFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZjlmZmFlZjFjNjU4MjUyOGJlOTU0
NTU2N2RmNGUxZThlOTBhOTkyLi5kYWE1NDEwZTVmOWRhNzRkMjdmZDA0ZWMwMzMyNDRiMDhiM2Nh
MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTE1ODgsMjEgKzE1ODgsMjggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVp
bnQ4X3Q+PiBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAobV9wbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMuY29udGFpbnMoaG9zdCkpCi0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVyID0g
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZ2V0KGhvc3QpOwotCi0gICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBpZiAocG9saWNpZXNCeUlkZW50
aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllcikpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xp
Y2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJZGVudGlmaWVyKTsKLQorICAg
IGF1dG8mIHBvbGljaWVzRm9ySG9zdCA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuc3Vy
ZShob3N0LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4
X3Q+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVz
ID0gcG9saWNpZXNGb3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyLCBbXSB7IHJldHVybiBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHZlcnNp
b25zVG9Qb2xpY2llcy5zZXQodmVyc2lvblN0cmluZywgcG9saWN5KTsKLSAgICBwb2xpY2llc0J5
SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllciwgdmVyc2lvbnNUb1BvbGljaWVzKTsKLSAg
ICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5zZXQoaG9zdCwgcG9saWNpZXNCeUlkZW50aWZp
ZXIpOwogCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRlbnRpZmllciwgdmVy
c2lvblN0cmluZykpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCB1aW50OF90Pj4+JiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpCit7CisgICAg
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgaG9z
dFBhaXIgOiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKKyAgICAgICAgYXV0byYgcG9saWNp
ZXNGb3JIb3N0ID0gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5zdXJlKGhvc3RQYWlyLmtl
eSwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZp
ZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8mIHZlcnNpb25zVG9Q
b2xpY2llcyA9IHBvbGljaWVzRm9ySG9zdC5lbnN1cmUoYnVuZGxlSWRlbnRpZmllclBhaXIua2V5
LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZp
ZXJQYWlyLnZhbHVlKQorICAgICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcy5zZXQodmVy
c2lvblBhaXIua2V5LCB2ZXJzaW9uUGFpci52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpKTsKK30KKwogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCiB7CiAgICAgbV9wbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggMzY4MWNlODA1NmZhNGQyOWJlMGU2NmQyYWQ4ZTg4MjEwMDYzNjNm
OC4uZmNhOTIxZTM5OWQ2NjUzMjE0NzY5YjdlN2VmZDRhMzg5Y2Y2N2IxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwdWJs
aWM6CiAgICAgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5JbmZvU3RvcmUoKSB7IHJldHVybiBtX3Bs
dWdpbkluZm9TdG9yZTsgfQogCiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwor
ICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYpOwogICAgIHZv
aWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRiYmIwYTY0ZDI5YzZhMmJiMzc4YzQ2MmNl
NGJhMjVmNDJiMzA2NDguLjZiOTJmOWM3ODIxY2QwZDEzOTFhM2FhNzRmZmFhNjY2OTY4M2ZhY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDAwLDEyICs0
MDAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQotICAgIGZvciAoYXV0byBob3N0SXRl
ciA9IHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmJlZ2luKCk7IGhvc3RJdGVy
ICE9IHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuZCgpOyArK2hvc3RJdGVy
KSB7Ci0gICAgICAgIGZvciAoYXV0byBidW5kbGVJZGVudGlmaWVySXRlciA9IGhvc3RJdGVyLT52
YWx1ZS5iZWdpbigpOyBidW5kbGVJZGVudGlmaWVySXRlciAhPSBob3N0SXRlci0+dmFsdWUuZW5k
KCk7ICsrYnVuZGxlSWRlbnRpZmllckl0ZXIpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byB2ZXJz
aW9uSXRlciA9IGJ1bmRsZUlkZW50aWZpZXJJdGVyLT52YWx1ZS5iZWdpbigpOyB2ZXJzaW9uSXRl
ciAhPSBidW5kbGVJZGVudGlmaWVySXRlci0+dmFsdWUuZW5kKCk7ICsrdmVyc2lvbkl0ZXIpCi0g
ICAgICAgICAgICAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHZl
cnNpb25JdGVyLT52YWx1ZSksIGhvc3RJdGVyLT5rZXksIGJ1bmRsZUlkZW50aWZpZXJJdGVyLT5r
ZXksIHZlcnNpb25JdGVyLT5rZXkpOwotICAgICAgICB9Ci0gICAgfQorICAgIHJlc2V0UGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzKHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCkBAIC05MjYsNiArOTIxLDIwIEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgY29u
c3QgU3RyaW5nJiBob3N0LCBjCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpyZXNldFBs
dWdpbkxvYWRDbGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFdURjo6U3RyaW5nLCBIYXNoTWFw
PFdURjo6U3RyaW5nLCBIYXNoTWFwPFdURjo6U3RyaW5nLCB1aW50OF90Pj4+JiBwbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMpCit7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBM
QVRGT1JNKE1BQykKKyAgICBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CisKKyAgICBmb3Ig
KGF1dG8mIGhvc3RQYWlyIDogcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKSB7CisgICAgICAgIGZv
ciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVl
KQorICAgICAgICAgICAgICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0
UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
Pih2ZXJzaW9uUGFpci52YWx1ZSksIGhvc3RQYWlyLmtleSwgYnVuZGxlSWRlbnRpZmllclBhaXIu
a2V5LCB2ZXJzaW9uUGFpci5rZXkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIHZv
aWQgV2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCiB7CiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNmVkMTk5OGRiZTE2ZjYwOWI0ODY2ZWY3YjJhYjZkNmE2
MThiOTgxZS4uNzgyZDUzYmQ0NGE5NzllMGVkODE3NTRiYjFmYTJiMmE4NTI0MzFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEzMiw2ICsxMzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZl
cnNpb25TdHJpbmcpOworICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhf
dD4+PiYpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwogICAgIHZvaWQg
cmVmcmVzaFBsdWdpbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDY4MGJmNGQ2M2YwN2M0MDBmOGNhY2NmMzY1MzQxMmFk
YmIxOGQ1ZGQuLjg0ZjU1ZTAwNTAyOTNlOGZlYjI4M2VjMGM0MGExNTYzNDU2NjA2NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTU1LDYgKzU1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5EZWZhdWx0SGFzaGVzKEhhc2hNYXA8dWludDMy
X3QsZG91YmxlPiBoYXNoZXMpCiAgICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMo
SGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dWludDMyX3QsZG91YmxlPj4gaGFz
aGVzKQogICAgIFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIFN0cmlu
ZyBob3N0LCBTdHJpbmcgYnVuZGxlSWRlbnRpZmllciwgU3RyaW5nIHZlcnNpb25TdHJpbmcpCisg
ICAgUmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8
U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMpCiAgICAgQ2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCiAgICAgUmVmcmVzaFBsdWdpbnMo
KQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313085</attachid>
            <date>2017-06-16 10:34:22 -0700</date>
            <delta_ts>2017-06-16 10:35:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616103421.patch</filename>
            <type>text/plain</type>
            <size>16112</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uMmM0Yjk1NDFlMDA3YmZmYzhjMWIxYWE0YzgwYmFj
MDU1ZTcxMjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRv
IGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFBsdWdpbkxvYWRDbGllbnRQb2xpY3lNYXhpbXVtIHZh
bHVlIHRvIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgZW51bWVyYXRpb24KKyAgICAgICAgdG8gZmFj
aWxpdGF0ZSBpbnB1dCB2YWx1ZSB2YWxpZGF0aW9uIG9uIEFQSSBzaWRlLgorCisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5EYXRhLmg6CisKIDIwMTctMDYtMTUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IFtpT1NdIEdlbmVyYXRlIGEgc2lt
dWxhdGVkIGNyYXNoIHdoZW4gdGhlIFdlYlRocmVhZCBzdGFydHMgaW4gTW9iaWxlU2FmYXJpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZGQ0ZDU2YmU4NTExN2RiNDEyMjIyYzk1MmIzMzRmNjYzZjUxYmY5OS4uNGJl
OTI0NGUzMzk3MDA5MWZmYjYwNDQwNjM2Yzk3M2M2MmNlMDE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0
IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4g
bG9hZCBjbGllbnQgcG9saWNpZXM6CisgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9yZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llc10uIFRoaXMgbmV3IFNQSSBjbGVhcnMgYWxsCisgICAgICAgIGV4
aXN0aW5nIHBvbGljaWVzIGFuZCB0aGVuIHNldHMgYWxsIG9mIHRoZW0gd2l0aCBuZXcgdmFsdWVz
LCB3aXRoIGEKKyAgICAgICAgbWluaW1hbCBhbW91bnQgb2YgSVBDLgorCisgICAgICAgIFRvIGFj
aGlldmUgdGhpcywgY2xpZW50cyB3b3VsZCBwcmV2aW91c2x5IGhhdmUgdG8gY2FsbAorICAgICAg
ICAxLiBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgd2hpY2ggd291bGQgY2F1
c2UgYSBicm9hZGNhc3QgSVBDIHRvCisgICAgICAgICAgIGV2ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vz
cy4KKyAgICAgICAgMi4gV0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSgpIHJlcGVh
dGVkbHkgdG8gYWRkIGVhY2ggcG9saWN5IG9uZSBieQorICAgICAgICAgICBvbmUuIEVhY2ggY2Fs
bCB0byBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KCkgd291bGQgY2F1c2UgYSBi
cm9hZGNhc3QKKyAgICAgICAgICAgSVBDIHRvIGV2ZXJ5IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKwor
ICAgICAgICBUaGUgbmV3IFNQSSBkb2VzIHRoZSBzYW1lIGpvYiB3aXRoIGEgc2luZ2xlIGJyb2Fk
Y2FzdCBJUEMgdG8gZXZlcnkgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoaXNQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZSk6CisgICAgICAgICh0b1BsdWdpbkxvYWRDbGll
bnRQb2xpY2llc0hhc2hNYXApOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKwogMjAxNy0wNi0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2luZyAtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRl
bVByb3ZpZGVyczpdIHRvIHN3YXAgb3V0IGl0ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJl
YWtzIGl0ZW0gcHJvdmlkZXIgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApp
bmRleCAwODkzZmM5OWE3ZThjZjY3MmZlMWZhYWI2MmY1OTExM2VhYmEzNTVmLi40Y2U4NTQxMjg2
ZWFlOGRkODQ4YzdiMjNhOTYwNWU4MjhkZWI0NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGEuaApAQCAtNDUsNiArNDUsOCBAQCBlbnVtIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgOiB1
aW50OF90IHsKIAogICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZSBzaG91bGQgYmUgbG9hZGVkIGly
cmVzcGVjdGl2ZSBvZiB3aGV0aGVyIFdlYktpdCBoYXMgYXNrZWQgaXQgdG8gYmUgYmxvY2tlZC4K
ICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsCisKKyAgICBQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5TWF4aW11bSA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cwog
fTsKIAogc3RydWN0IE1pbWVDbGFzc0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDcwZmI2ZTg5NjMyNzM3YjFj
NDFkNDgxNmJiYWIwNjllMzg3MGEwMmIuLmQ5MGU1ZDNjMzc4MzNmYzg0Zjg3YjE4Zjg4MmYxM2E1
YTRhZDM1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkF1dG9tYXRpb25D
bGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50
LmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKQEAgLTQ1
LDYgKzQ2LDcgQEAKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
ZXJ0aWZpY2F0ZUluZm8uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjQ4LDYgKzI1MCw3
OCBAQCAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5CiAgICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVy
cyhJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5
dGVzXSksIFtkYXRhIGxlbmd0aF0pKSk7CiB9CiAKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorCisj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKK3N0YXRpYyBib29sIGlzUGx1Z2luTG9h
ZENsaWVudFBvbGljeUFjY2VwdGFibGUodW5zaWduZWQgcG9saWN5KQoreworICAgIHJldHVybiBw
b2xpY3kgPD0gV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeU1heGltdW07Cit9CitzdGF0
aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhf
dD4+PiB0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAoTlNEaWN0aW9uYXJ5KiBkaWN0
aW9uYXJ5KQoreworICAgIF9fYmxvY2sgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CisgICAg
W2RpY3Rpb25hcnkgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgbnNIb3N0
LCBpZCBuc1BvbGljaWVzRm9ySG9zdCwgQk9PTCAqc3RvcCkgeworICAgICAgICBpZiAoIVtuc0hv
c3QgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMg
Y2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVtuc1BvbGljaWVzRm9ySG9zdCBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVk
IHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBob3N0ID0gKE5TU3RyaW5nICopbnNIb3N0Owor
ICAgICAgICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+
IHBvbGljaWVzRm9ySG9zdDsKKyAgICAgICAgW25zUG9saWNpZXNGb3JIb3N0IGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIG5zSWRlbnRpZmllciwgaWQgbnNWZXJzaW9uc1Rv
UG9saWNpZXMsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghW25zSWRlbnRpZmllciBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMg
Y2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVtuc1ZlcnNpb25zVG9Q
b2xpY2llcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJp
bmcgYnVuZGxlSWRlbnRpZmllciA9IChOU1N0cmluZyAqKW5zSWRlbnRpZmllcjsKKyAgICAgICAg
ICAgIF9fYmxvY2sgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsK
KyAgICAgICAgICAgIFtuc1ZlcnNpb25zVG9Qb2xpY2llcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0
c1VzaW5nQmxvY2s6XihpZCBuc1ZlcnNpb24sIGlkIG5zUG9saWN5LCBCT09MICpzdG9wKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFbbnNWZXJzaW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywg
Il9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFy
eSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIVtuc1BvbGljeSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3
aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdW5zaWduZWQgcG9saWN5
ID0gKChOU051bWJlciAqKW5zUG9saWN5KS51bnNpZ25lZEludFZhbHVlOworICAgICAgICAgICAg
ICAgIGlmICghaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZShwb2xpY3kpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3Jvbmcg
Zm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgU3RyaW5nIHZlcnNpb24gPSAoTlNTdHJpbmcgKiluc1ZlcnNpb247
CisgICAgICAgICAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzLmFkZCh2ZXJzaW9uLCBzdGF0aWNf
Y2FzdDx1aW50OF90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgICAgaWYg
KCF2ZXJzaW9uc1RvUG9saWNpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHBvbGljaWVz
Rm9ySG9zdC5hZGQoYnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZSh2ZXJzaW9uc1RvUG9saWNpZXMp
KTsKKyAgICAgICAgfV07CisgICAgICAgIGlmICghcG9saWNpZXNGb3JIb3N0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5hZGQoaG9zdCwgV1RGTW92ZShw
b2xpY2llc0Zvckhvc3QpKTsKKyAgICB9XTsKKyAgICByZXR1cm4gcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzOworfQorCisjZW5kaWYKKworLSAodm9pZClfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXM6KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzCit7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCisgICAgX3Byb2Nlc3NQb29sLT5yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cyh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAocG9saWNpZXMpKTsKKyNlbmRpZgor
fQorCisjZW5kaWYKKwogCiAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVs
ZWdhdGUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3ZTkwOTc1OGVhNWU1N2FmN2M0MmQ5NjUx
OGZjY2Y3MjQ0ZjAxODY5Li4xNmJiYWVmN2Y3NTQxYzU1YWQzNjFlOTEwYmRhOWE3YTVlMWQ0YmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC01Miw2ICs1MiwxMCBAQAogLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8TlNDb3B5aW5nLCBOU1NlY3Vy
ZUNvZGluZz4+CiAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0
aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorI2lmICFUQVJHRVRfT1NfSVBIT05FCistICh2b2lkKV9y
ZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczooTlNEaWN0aW9uYXJ5ICopcG9saWNpZXMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2VuZGlmCisKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93
bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRl
bGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggN2Y5ZmZhZWYxYzY1ODI1MjhiZTk1NDU1NjdkZjRlMWU4ZTkwYTk5Mi4uZGFh
NTQxMGU1ZjlkYTc0ZDI3ZmQwNGVjMDMzMjQ0YjA4YjNjYTEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNTg4LDIxICsxNTg4LDI4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25z
dCBTdHJpbmcmIHNjaGVtZSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeSBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5n
JiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCiB7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9saWNpZXNCeUlkZW50
aWZpZXI7Ci0gICAgaWYgKG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmNvbnRhaW5zKGhvc3Qp
KQotICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLmdldChob3N0KTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90PiB2ZXJzaW9uc1Rv
UG9saWNpZXM7Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGJ1bmRsZUlk
ZW50aWZpZXIpKQotICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xpY2llc0J5SWRlbnRp
Zmllci5nZXQoYnVuZGxlSWRlbnRpZmllcik7Ci0KKyAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3Qg
PSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbnN1cmUoaG9zdCwgW10geyByZXR1cm4gSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIGF1dG8mIHZlcnNpb25zVG9Qb2xpY2llcyA9IHBvbGljaWVzRm9ySG9zdC5lbnN1
cmUoYnVuZGxlSWRlbnRpZmllciwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+
KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNp
b25TdHJpbmcsIHBvbGljeSk7Ci0gICAgcG9saWNpZXNCeUlkZW50aWZpZXIuc2V0KGJ1bmRsZUlk
ZW50aWZpZXIsIHZlcnNpb25zVG9Qb2xpY2llcyk7Ci0gICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMuc2V0KGhvc3QsIHBvbGljaWVzQnlJZGVudGlmaWVyKTsKIAogICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShw
b2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpKTsKIH0KIAordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYg
cGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQoreworICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIGhvc3RQYWlyIDogcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzKSB7CisgICAgICAgIGF1dG8mIHBvbGljaWVzRm9ySG9zdCA9IG1fcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzLmVuc3VyZShob3N0UGFpci5rZXksIFtdIHsgcmV0dXJuIEhhc2hNYXA8
U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVl
KSB7CisgICAgICAgICAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xpY2llc0Zvckhv
c3QuZW5zdXJlKGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleSwgW10geyByZXR1cm4gSGFzaE1hcDxT
dHJpbmcsIHVpbnQ4X3Q+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkKKyAgICAgICAg
ICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNpb25QYWlyLmtleSwgdmVyc2lvblBh
aXIudmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMocGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyUGx1Z2lu
Q2xpZW50UG9saWNpZXMoKQogewogICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDM2ODFj
ZTgwNTZmYTRkMjliZTBlNjZkMmFkOGU4ODIxMDA2MzYzZjguLmZjYTkyMWUzOTlkNjY1MzIxNDc2
OWI3ZTdlZmQ0YTM4OWNmNjdiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC0xOTcsNiArMTk3LDcgQEAgcHVibGljOgogICAgIFBsdWdpbkluZm9TdG9y
ZSYgcGx1Z2luSW5mb1N0b3JlKCkgeyByZXR1cm4gbV9wbHVnaW5JbmZvU3RvcmU7IH0KIAogICAg
IHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICB2b2lkIHJlc2V0UGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFz
aE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4mKTsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCBkYmJiMGE2NGQyOWM2YTJiYjM3OGM0NjJjZTRiYTI1ZjQyYjMwNjQ4Li42YjkyZjlj
NzgyMWNkMGQxMzkxYTNhYTc0ZmZhYTY2Njk2ODNmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwMCwxMiArNDAwLDcgQEAgdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBM
QVRGT1JNKE1BQykKLSAgICBmb3IgKGF1dG8gaG9zdEl0ZXIgPSBwYXJhbWV0ZXJzLnBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcy5iZWdpbigpOyBob3N0SXRlciAhPSBwYXJhbWV0ZXJzLnBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcy5lbmQoKTsgKytob3N0SXRlcikgewotICAgICAgICBmb3IgKGF1dG8g
YnVuZGxlSWRlbnRpZmllckl0ZXIgPSBob3N0SXRlci0+dmFsdWUuYmVnaW4oKTsgYnVuZGxlSWRl
bnRpZmllckl0ZXIgIT0gaG9zdEl0ZXItPnZhbHVlLmVuZCgpOyArK2J1bmRsZUlkZW50aWZpZXJJ
dGVyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdmVyc2lvbkl0ZXIgPSBidW5kbGVJZGVudGlm
aWVySXRlci0+dmFsdWUuYmVnaW4oKTsgdmVyc2lvbkl0ZXIgIT0gYnVuZGxlSWRlbnRpZmllckl0
ZXItPnZhbHVlLmVuZCgpOyArK3ZlcnNpb25JdGVyKQotICAgICAgICAgICAgICAgIFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0
aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pih2ZXJzaW9uSXRlci0+dmFsdWUpLCBob3N0
SXRlci0+a2V5LCBidW5kbGVJZGVudGlmaWVySXRlci0+a2V5LCB2ZXJzaW9uSXRlci0+a2V5KTsK
LSAgICAgICAgfQotICAgIH0KKyAgICByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhwYXJh
bWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShH
QU1FUEFEKQpAQCAtOTI2LDYgKzkyMSwyMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFBsdWdpbkxv
YWRDbGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgYwogI2Vu
ZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMo
Y29uc3QgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxX
VEY6OlN0cmluZywgdWludDhfdD4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQoreworI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCisgICAgY2xlYXJQ
bHVnaW5DbGllbnRQb2xpY2llcygpOworCisgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcykgeworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZp
ZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lv
blBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkKKyAgICAgICAgICAgICAgICBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
c3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4odmVyc2lvblBhaXIudmFsdWUpLCBo
b3N0UGFpci5rZXksIGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleSwgdmVyc2lvblBhaXIua2V5KTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAm
JiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IDZlZDE5OThkYmUxNmY2MDliNDg2NmVmN2IyYWI2ZDZhNjE4Yjk4MWUuLjc4MmQ1M2JkNDRhOTc5
ZTBlZDgxNzU0YmIxZmEyYjJhODUyNDMxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGx1Z0luRGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7
CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICB2b2lk
IHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4mKTsKICAgICB2b2lkIGNsZWFy
UGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA2ODBiZjRkNjNmMDdjNDAwZjhjYWNjZjM2NTM0MTJhZGJiMThkNWRkLi44NGY1NWUwMDUwMjkz
ZThmZWIyODNlYzBjNDBhMTU2MzQ1NjYwNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NSw2ICs1NSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luRGVmYXVsdEhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4gaGFzaGVzKQogICAg
IFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lv
bklELCBIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4+IGhhc2hlcykKICAgICBTZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBTdHJpbmcgaG9zdCwgU3RyaW5nIGJ1bmRsZUlk
ZW50aWZpZXIsIFN0cmluZyB2ZXJzaW9uU3RyaW5nKQorICAgIFJlc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzKEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IHVpbnQ4X3Q+Pj4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQogICAgIENsZWFyUGx1Z2luQ2xp
ZW50UG9saWNpZXMoKQogICAgIFJlZnJlc2hQbHVnaW5zKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313086</attachid>
            <date>2017-06-16 10:35:18 -0700</date>
            <delta_ts>2017-06-16 13:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616103517.patch</filename>
            <type>text/plain</type>
            <size>16124</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uNTQ3NDJiNmI2ZjIxOTNmNGZkYjA2MTJjNjQ4OWFk
MTc0NWYzMmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vz
c1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9s
aWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lNYXhpbXVtIHZhbHVlIHRvIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgZW51bWVyYXRpb24KKyAg
ICAgICAgdG8gZmFjaWxpdGF0ZSBpbnB1dCB2YWx1ZSB2YWxpZGF0aW9uIG9uIEFQSSBzaWRlLgor
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisKIDIwMTctMDYtMTUgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IFtpT1NdIEdl
bmVyYXRlIGEgc2ltdWxhdGVkIGNyYXNoIHdoZW4gdGhlIFdlYlRocmVhZCBzdGFydHMgaW4gTW9i
aWxlU2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGQ0ZDU2YmU4NTExN2RiNDEyMjIyYzk1MmIzMzRmNjYz
ZjUxYmY5OS4uNGJlOTI0NGUzMzk3MDA5MWZmYjYwNDQwNjM2Yzk3M2M2MmNlMDE2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmlj
aWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0
IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXM6CisgICAgICAgIFtXS1Byb2Nlc3NQb29s
IF9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc10uIFRoaXMgbmV3IFNQSSBjbGVhcnMgYWxs
CisgICAgICAgIGV4aXN0aW5nIHBvbGljaWVzIGFuZCB0aGVuIHNldHMgYWxsIG9mIHRoZW0gd2l0
aCBuZXcgdmFsdWVzLCB3aXRoIGEKKyAgICAgICAgbWluaW1hbCBhbW91bnQgb2YgSVBDLgorCisg
ICAgICAgIFRvIGFjaGlldmUgdGhpcywgY2xpZW50cyB3b3VsZCBwcmV2aW91c2x5IGhhdmUgdG8g
Y2FsbAorICAgICAgICAxLiBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgd2hp
Y2ggd291bGQgY2F1c2UgYSBicm9hZGNhc3QgSVBDIHRvCisgICAgICAgICAgIGV2ZXJ5IFdlYkNv
bnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgMi4gV0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBv
bGljeSgpIHJlcGVhdGVkbHkgdG8gYWRkIGVhY2ggcG9saWN5IG9uZSBieQorICAgICAgICAgICBv
bmUuIEVhY2ggY2FsbCB0byBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KCkgd291
bGQgY2F1c2UgYSBicm9hZGNhc3QKKyAgICAgICAgICAgSVBDIHRvIGV2ZXJ5IFdlYkNvbnRlbnQg
cHJvY2Vzcy4KKworICAgICAgICBUaGUgbmV3IFNQSSBkb2VzIHRoZSBzYW1lIGpvYiB3aXRoIGEg
c2luZ2xlIGJyb2FkY2FzdCBJUEMgdG8gZXZlcnkgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAoaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZSk6CisgICAgICAgICh0b1Bs
dWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXApOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBs
dWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNi0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2luZyAtW1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIHRvIHN3YXAgb3V0IGl0ZW0gcHJvdmlkZXJzIGJlZm9y
ZSBhIGRyb3AgYnJlYWtzIGl0ZW0gcHJvdmlkZXIgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGEuaAppbmRleCAwODkzZmM5OWE3ZThjZjY3MmZlMWZhYWI2MmY1OTExM2VhYmEzNTVm
Li40Y2U4NTQxMjg2ZWFlOGRkODQ4YzdiMjNhOTYwNWU4MjhkZWI0NTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNDUsNiArNDUsOCBAQCBlbnVtIFBsdWdpbkxvYWRDbGll
bnRQb2xpY3kgOiB1aW50OF90IHsKIAogICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZSBzaG91bGQg
YmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIFdlYktpdCBoYXMgYXNrZWQgaXQgdG8g
YmUgYmxvY2tlZC4KICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsCisKKyAg
ICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5TWF4aW11bSA9IFBsdWdpbkxvYWRDbGllbnRQb2xpY3lB
bGxvd0Fsd2F5cwogfTsKIAogc3RydWN0IE1pbWVDbGFzc0luZm8gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDcwZmI2
ZTg5NjMyNzM3YjFjNDFkNDgxNmJiYWIwNjllMzg3MGEwMmIuLmQ5MGU1ZDNjMzc4MzNmYzg0Zjg3
YjE4Zjg4MmYxM2E1YTRhZDM1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQg
IkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKICNpbXBvcnQgIkRv
d25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2ltcG9ydCAiV0tPYmpl
Y3QuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0
YS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MjQ4LDYgKzI1MCw3OCBAQCAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dp
dGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5CiAgICAgX3Byb2Nlc3NQb29s
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVu
ZGxlUGFyYW1ldGVycyhJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKSk7CiB9CiAKKyNpZiAhVEFSR0VUX09T
X0lQSE9ORQorCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKK3N0YXRpYyBib29s
IGlzUGx1Z2luTG9hZENsaWVudFBvbGljeUFjY2VwdGFibGUodW5zaWduZWQgcG9saWN5KQorewor
ICAgIHJldHVybiBwb2xpY3kgPD0gV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeU1heGlt
dW07Cit9CitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0
cmluZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAoTlNEaWN0
aW9uYXJ5KiBkaWN0aW9uYXJ5KQoreworICAgIF9fYmxvY2sgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXM7CisgICAgW2RpY3Rpb25hcnkgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2Nr
Ol4oaWQgbnNIb3N0LCBpZCBuc1BvbGljaWVzRm9ySG9zdCwgQk9PTCAqc3RvcCkgeworICAgICAg
ICBpZiAoIVtuc0hvc3QgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVtuc1BvbGljaWVzRm9y
SG9zdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBob3N0ID0gKE5TU3RyaW5n
ICopbnNIb3N0OworICAgICAgICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmlu
ZywgdWludDhfdD4+IHBvbGljaWVzRm9ySG9zdDsKKyAgICAgICAgW25zUG9saWNpZXNGb3JIb3N0
IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIG5zSWRlbnRpZmllciwgaWQg
bnNWZXJzaW9uc1RvUG9saWNpZXMsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghW25z
SWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVtu
c1ZlcnNpb25zVG9Qb2xpY2llcyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkg
eworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3Jvbmcg
Zm9ybWF0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllciA9IChOU1N0cmluZyAqKW5zSWRlbnRpZmll
cjsKKyAgICAgICAgICAgIF9fYmxvY2sgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+IHZlcnNpb25z
VG9Qb2xpY2llczsKKyAgICAgICAgICAgIFtuc1ZlcnNpb25zVG9Qb2xpY2llcyBlbnVtZXJhdGVL
ZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBuc1ZlcnNpb24sIGlkIG5zUG9saWN5LCBCT09M
ICpzdG9wKSB7CisgICAgICAgICAgICAgICAgaWYgKCFbbnNWZXJzaW9uIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdp
dGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIVtuc1BvbGljeSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMg
d2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdW5z
aWduZWQgcG9saWN5ID0gKChOU051bWJlciAqKW5zUG9saWN5KS51bnNpZ25lZEludFZhbHVlOwor
ICAgICAgICAgICAgICAgIGlmICghaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZShw
b2xpY3kpKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMs
ICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25h
cnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyaW5nIHZlcnNpb24gPSAoTlNTdHJpbmcg
Kiluc1ZlcnNpb247CisgICAgICAgICAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzLmFkZCh2ZXJz
aW9uLCBzdGF0aWNfY2FzdDx1aW50OF90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIH1dOworICAg
ICAgICAgICAgaWYgKCF2ZXJzaW9uc1RvUG9saWNpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIHBvbGljaWVzRm9ySG9zdC5hZGQoYnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZSh2ZXJzaW9u
c1RvUG9saWNpZXMpKTsKKyAgICAgICAgfV07CisgICAgICAgIGlmICghcG9saWNpZXNGb3JIb3N0
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5hZGQoaG9z
dCwgV1RGTW92ZShwb2xpY2llc0Zvckhvc3QpKTsKKyAgICB9XTsKKyAgICByZXR1cm4gcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzOworfQorCisjZW5kaWYKKworLSAodm9pZClfcmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXM6KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzCit7CisjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgX3Byb2Nlc3NQb29sLT5yZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAocG9saWNpZXMp
KTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogCiAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4p
X2Rvd25sb2FkRGVsZWdhdGUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3ZTkwOTc1OGVhNWU1
N2FmN2M0MmQ5NjUxOGZjY2Y3MjQ0ZjAxODY5Li4xNmJiYWVmN2Y3NTQxYzU1YWQzNjFlOTEwYmRh
OWE3YTVlMWQ0YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC01Miw2ICs1MiwxMCBAQAogLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8TlNDb3B5
aW5nLCBOU1NlY3VyZUNvZGluZz4+CiAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1l
dGVyc1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorI2lmICFUQVJHRVRfT1NfSVBIT05F
CistICh2b2lkKV9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczooTlNEaWN0aW9uYXJ5ICop
cG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2VuZGlmCisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6
KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dL
QXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggN2Y5ZmZhZWYxYzY1ODI1MjhiZTk1NDU1NjdkZjRlMWU4
ZTkwYTk5Mi4uZGFhNTQxMGU1ZjlkYTc0ZDI3ZmQwNGVjMDMzMjQ0YjA4YjNjYTEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNTg4LDIxICsx
NTg4LDI4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9s
aWNpZXNCeUlkZW50aWZpZXI7Ci0gICAgaWYgKG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmNv
bnRhaW5zKGhvc3QpKQotICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1fcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzLmdldChob3N0KTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90
PiB2ZXJzaW9uc1RvUG9saWNpZXM7Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVyLmNvbnRh
aW5zKGJ1bmRsZUlkZW50aWZpZXIpKQotICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xp
Y2llc0J5SWRlbnRpZmllci5nZXQoYnVuZGxlSWRlbnRpZmllcik7Ci0KKyAgICBhdXRvJiBwb2xp
Y2llc0Zvckhvc3QgPSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbnN1cmUoaG9zdCwgW10g
eyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4oKTsgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHZlcnNpb25zVG9Qb2xpY2llcyA9IHBvbGljaWVz
Rm9ySG9zdC5lbnN1cmUoYnVuZGxlSWRlbnRpZmllciwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJp
bmcsIHVpbnQ4X3Q+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB2ZXJzaW9uc1RvUG9saWNp
ZXMuc2V0KHZlcnNpb25TdHJpbmcsIHBvbGljeSk7Ci0gICAgcG9saWNpZXNCeUlkZW50aWZpZXIu
c2V0KGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25zVG9Qb2xpY2llcyk7Ci0gICAgbV9wbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMuc2V0KGhvc3QsIHBvbGljaWVzQnlJZGVudGlmaWVyKTsKIAogICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UGx1Z2luTG9hZENs
aWVudFBvbGljeShwb2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcp
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywg
dWludDhfdD4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQoreworICAgIG1fcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIGhvc3RQYWlyIDogcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzKSB7CisgICAgICAgIGF1dG8mIHBvbGljaWVzRm9ySG9zdCA9
IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuc3VyZShob3N0UGFpci5rZXksIFtdIHsgcmV0
dXJuIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlmaWVyUGFpciA6IGhv
c3RQYWlyLnZhbHVlKSB7CisgICAgICAgICAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBw
b2xpY2llc0Zvckhvc3QuZW5zdXJlKGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleSwgW10geyByZXR1
cm4gSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1
ZSkKKyAgICAgICAgICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNpb25QYWlyLmtl
eSwgdmVyc2lvblBhaXIudmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMocGx1Z2luTG9hZENsaWVudFBvbGljaWVzKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogewogICAgIG1fcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDM2ODFjZTgwNTZmYTRkMjliZTBlNjZkMmFkOGU4ODIxMDA2MzYzZjguLmZjYTkyMWUz
OTlkNjY1MzIxNDc2OWI3ZTdlZmQ0YTM4OWNmNjdiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xOTcsNiArMTk3LDcgQEAgcHVibGljOgogICAgIFBs
dWdpbkluZm9TdG9yZSYgcGx1Z2luSW5mb1N0b3JlKCkgeyByZXR1cm4gbV9wbHVnaW5JbmZvU3Rv
cmU7IH0KIAogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICB2b2lkIHJl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFw
PFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4mKTsKICAgICB2b2lkIGNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCBkYmJiMGE2NGQyOWM2YTJiYjM3OGM0NjJjZTRiYTI1ZjQyYjMw
NjQ4Li42YjkyZjljNzgyMWNkMGQxMzkxYTNhYTc0ZmZhYTY2Njk2ODNmYWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwMCwxMiArNDAwLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAgICBmb3IgKGF1dG8gaG9zdEl0ZXIgPSBwYXJhbWV0
ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5iZWdpbigpOyBob3N0SXRlciAhPSBwYXJhbWV0
ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbmQoKTsgKytob3N0SXRlcikgewotICAgICAg
ICBmb3IgKGF1dG8gYnVuZGxlSWRlbnRpZmllckl0ZXIgPSBob3N0SXRlci0+dmFsdWUuYmVnaW4o
KTsgYnVuZGxlSWRlbnRpZmllckl0ZXIgIT0gaG9zdEl0ZXItPnZhbHVlLmVuZCgpOyArK2J1bmRs
ZUlkZW50aWZpZXJJdGVyKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gdmVyc2lvbkl0ZXIgPSBi
dW5kbGVJZGVudGlmaWVySXRlci0+dmFsdWUuYmVnaW4oKTsgdmVyc2lvbkl0ZXIgIT0gYnVuZGxl
SWRlbnRpZmllckl0ZXItPnZhbHVlLmVuZCgpOyArK3ZlcnNpb25JdGVyKQotICAgICAgICAgICAg
ICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pih2ZXJzaW9uSXRlci0+
dmFsdWUpLCBob3N0SXRlci0+a2V5LCBidW5kbGVJZGVudGlmaWVySXRlci0+a2V5LCB2ZXJzaW9u
SXRlci0+a2V5KTsKLSAgICAgICAgfQotICAgIH0KKyAgICByZXNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcyhwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShHQU1FUEFEKQpAQCAtOTI2LDYgKzkyMSwyMCBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIGNvbnN0IFN0cmluZyYg
aG9zdCwgYwogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxXVEY6OlN0cmlu
ZywgSGFzaE1hcDxXVEY6OlN0cmluZywgdWludDhfdD4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzKQoreworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMp
CisgICAgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOworCisgICAgZm9yIChhdXRvJiBob3N0
UGFpciA6IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykgeworICAgICAgICBmb3IgKGF1dG8mIGJ1
bmRsZUlkZW50aWZpZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkKKyAgICAgICAg
ICAgICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4odmVyc2lvblBh
aXIudmFsdWUpLCBob3N0UGFpci5rZXksIGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleSwgdmVyc2lv
blBhaXIua2V5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nl
c3M6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IDZlZDE5OThkYmUxNmY2MDliNDg2NmVmN2IyYWI2ZDZhNjE4Yjk4MWUuLjc4
MmQ1M2JkNDRhOTc5ZTBlZDgxNzU0YmIxZmEyYjJhODUyNDMxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5n
KTsKKyAgICB2b2lkIHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4mKTsKICAg
ICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICAgICB2b2lkIHJlZnJlc2hQbHVn
aW5zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA2ODBiZjRkNjNmMDdjNDAwZjhjYWNjZjM2NTM0MTJhZGJiMThkNWRkLi44
NGY1NWUwMDUwMjkzZThmZWIyODNlYzBjNDBhMTU2MzQ1NjYwNjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NSw2ICs1NSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4g
aGFzaGVzKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8V2Vi
Q29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4+IGhhc2hlcykKICAgICBT
ZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBTdHJpbmcgaG9zdCwgU3Ry
aW5nIGJ1bmRsZUlkZW50aWZpZXIsIFN0cmluZyB2ZXJzaW9uU3RyaW5nKQorICAgIFJlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFz
aE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQogICAgIENs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogICAgIFJlZnJlc2hQbHVnaW5zKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313126</attachid>
            <date>2017-06-16 13:57:08 -0700</date>
            <delta_ts>2017-06-16 14:27:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616135707.patch</filename>
            <type>text/plain</type>
            <size>29537</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uNTQ3NDJiNmI2ZjIxOTNmNGZkYjA2MTJjNjQ4OWFk
MTc0NWYzMmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vz
c1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9s
aWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lNYXhpbXVtIHZhbHVlIHRvIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgZW51bWVyYXRpb24KKyAg
ICAgICAgdG8gZmFjaWxpdGF0ZSBpbnB1dCB2YWx1ZSB2YWxpZGF0aW9uIG9uIEFQSSBzaWRlLgor
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisKIDIwMTctMDYtMTUgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IFtpT1NdIEdl
bmVyYXRlIGEgc2ltdWxhdGVkIGNyYXNoIHdoZW4gdGhlIFdlYlRocmVhZCBzdGFydHMgaW4gTW9i
aWxlU2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGQ0ZDU2YmU4NTExN2RiNDEyMjIyYzk1MmIzMzRmNjYz
ZjUxYmY5OS4uMzVhNWQxYmI5ZTUyMTAxNmFjNDkxMjc5NzEyMzk3MzE0NmIwNjJiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA2LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmlj
aWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ3MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFdLUHJvY2Vzc1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0
IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9saWNpZXM6CisgICAgICAgIFtXS1Byb2Nlc3NQb29s
IF9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc10uIFRoaXMgbmV3IFNQSSBjbGVhcnMgYWxs
CisgICAgICAgIGV4aXN0aW5nIHBvbGljaWVzIGFuZCB0aGVuIHNldHMgYWxsIG9mIHRoZW0gd2l0
aCBuZXcgdmFsdWVzLCB3aXRoIGEKKyAgICAgICAgbWluaW1hbCBhbW91bnQgb2YgSVBDLgorCisg
ICAgICAgIFRvIGFjaGlldmUgdGhpcywgY2xpZW50cyB3b3VsZCBwcmV2aW91c2x5IGhhdmUgdG8g
Y2FsbAorICAgICAgICAxLiBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgd2hp
Y2ggd291bGQgY2F1c2UgYSBicm9hZGNhc3QgSVBDIHRvCisgICAgICAgICAgIGV2ZXJ5IFdlYkNv
bnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgMi4gV0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBv
bGljeSgpIHJlcGVhdGVkbHkgdG8gYWRkIGVhY2ggcG9saWN5IG9uZSBieQorICAgICAgICAgICBv
bmUuIEVhY2ggY2FsbCB0byBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KCkgd291
bGQgY2F1c2UgYSBicm9hZGNhc3QKKyAgICAgICAgICAgSVBDIHRvIGV2ZXJ5IFdlYkNvbnRlbnQg
cHJvY2Vzcy4KKworICAgICAgICBUaGUgbmV3IFNQSSBkb2VzIHRoZSBzYW1lIGpvYiB3aXRoIGEg
c2luZ2xlIGJyb2FkY2FzdCBJUEMgdG8gZXZlcnkgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAoaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZSk6CisgICAgICAgICh0b1Bs
dWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXApOgorICAgICAgICAocG9saWNpZXNIYXNoTWFw
VG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXM6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3BsdWdpbkxvYWRD
bGllbnRQb2xpY2llc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCiAyMDE3LTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFVzaW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlk
ZXJzOl0gdG8gc3dhcCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRl
bSBwcm92aWRlciBsb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCmluZGV4IDA4
OTNmYzk5YTdlOGNmNjcyZmUxZmFhYjYyZjU5MTEzZWFiYTM1NWYuLjRjZTg1NDEyODZlYWU4ZGQ4
NDhjN2IyM2E5NjA1ZTgyOGRlYjQ1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5o
CkBAIC00NSw2ICs0NSw4IEBAIGVudW0gUGx1Z2luTG9hZENsaWVudFBvbGljeSA6IHVpbnQ4X3Qg
ewogCiAgICAgLy8gVGhlIHBsdWctaW4gbW9kdWxlIHNob3VsZCBiZSBsb2FkZWQgaXJyZXNwZWN0
aXZlIG9mIHdoZXRoZXIgV2ViS2l0IGhhcyBhc2tlZCBpdCB0byBiZSBibG9ja2VkLgogICAgIFBs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cywKKworICAgIFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3lNYXhpbXVtID0gUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzCiB9OwogCiBz
dHJ1Y3QgTWltZUNsYXNzSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggNzBmYjZlODk2MzI3MzdiMWM0MWQ0ODE2
YmJhYjA2OWUzODcwYTAyYi4uMjQ5YzEyZjZhYWZmNzRkMjg1NjFmMWZmZWI4YWQzZDg5YzA4YTEz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVudC5o
IgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgogI2ltcG9ydCAiRG93bmxvYWRDbGllbnQuaCIKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlVJR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgpAQCAtNDUsNiArNDYs
NyBAQAogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmlj
YXRlSW5mby5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yNDgsNiArMjUwLDEwMSBAQCAt
ICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5OihOU0Rp
Y3Rpb25hcnkgKilkaWN0aW9uYXJ5CiAgICAgX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhJUEM6
OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pKSk7CiB9CiAKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorCisjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKK3N0YXRpYyBib29sIGlzUGx1Z2luTG9hZENsaWVu
dFBvbGljeUFjY2VwdGFibGUodW5zaWduZWQgcG9saWN5KQoreworICAgIHJldHVybiBwb2xpY3kg
PD0gV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeU1heGltdW07Cit9CitzdGF0aWMgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiB0
b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAoTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5
KQoreworICAgIF9fYmxvY2sgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFw
PFN0cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CisgICAgW2RpY3Rp
b25hcnkgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgbnNIb3N0LCBpZCBu
c1BvbGljaWVzRm9ySG9zdCwgQk9PTCAqc3RvcCkgeworICAgICAgICBpZiAoIVtuc0hvc3QgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVk
IHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIVtuc1BvbGljaWVzRm9ySG9zdCBpc0tpbmRPZkNsYXNz
OltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
UGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGgg
ZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFN0cmluZyBob3N0ID0gKE5TU3RyaW5nICopbnNIb3N0OworICAgICAg
ICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+IHBvbGlj
aWVzRm9ySG9zdDsKKyAgICAgICAgW25zUG9saWNpZXNGb3JIb3N0IGVudW1lcmF0ZUtleXNBbmRP
YmplY3RzVXNpbmdCbG9jazpeKGlkIG5zSWRlbnRpZmllciwgaWQgbnNWZXJzaW9uc1RvUG9saWNp
ZXMsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghW25zSWRlbnRpZmllciBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVk
IHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVtuc1ZlcnNpb25zVG9Qb2xpY2ll
cyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcgYnVu
ZGxlSWRlbnRpZmllciA9IChOU1N0cmluZyAqKW5zSWRlbnRpZmllcjsKKyAgICAgICAgICAgIF9f
YmxvY2sgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsKKyAgICAg
ICAgICAgIFtuc1ZlcnNpb25zVG9Qb2xpY2llcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5n
QmxvY2s6XihpZCBuc1ZlcnNpb24sIGlkIG5zUG9saWN5LCBCT09MICpzdG9wKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFbbnNWZXJzaW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
IHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3
cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIVtuc1BvbGljeSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBs
dWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRp
Y3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdW5zaWduZWQgcG9saWN5ID0gKChO
U051bWJlciAqKW5zUG9saWN5KS51bnNpZ25lZEludFZhbHVlOworICAgICAgICAgICAgICAgIGlm
ICghaXNQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWNjZXB0YWJsZShwb2xpY3kpKSB7CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0
Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgU3RyaW5nIHZlcnNpb24gPSAoTlNTdHJpbmcgKiluc1ZlcnNpb247CisgICAg
ICAgICAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzLmFkZCh2ZXJzaW9uLCBzdGF0aWNfY2FzdDx1
aW50OF90Pihwb2xpY3kpKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgICAgaWYgKCF2ZXJz
aW9uc1RvUG9saWNpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHBvbGljaWVzRm9ySG9z
dC5hZGQoYnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZSh2ZXJzaW9uc1RvUG9saWNpZXMpKTsKKyAg
ICAgICAgfV07CisgICAgICAgIGlmICghcG9saWNpZXNGb3JIb3N0LmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5hZGQoaG9zdCwgV1RGTW92ZShwb2xpY2ll
c0Zvckhvc3QpKTsKKyAgICB9XTsKKyAgICByZXR1cm4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVz
OworfQorCitzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnko
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWlu
dDhfdD4+PiYgbWFwKQoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBvbGljaWVzID0gW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBmb3IgKGF1dG8mIGhvc3RQYWly
IDogbWFwKSB7CisgICAgICAgIE5TU3RyaW5nICpob3N0ID0gaG9zdFBhaXIua2V5OworICAgICAg
ICBwb2xpY2llc1tob3N0XSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkg
eworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZXJJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRp
ZmllclBhaXIua2V5OworICAgICAgICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZp
ZXJdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkgeworICAg
ICAgICAgICAgICAgIE5TU3RyaW5nICp2ZXJzaW9uID0gdmVyc2lvblBhaXIua2V5OworICAgICAg
ICAgICAgICAgIHBvbGljaWVzW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2ZXJzaW9uXSA9IFtO
U051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6dmVyc2lvblBhaXIudmFsdWVdOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwb2xpY2llczsKK30KKworI2Vu
ZGlmCisKKy0gKHZvaWQpX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOihOU0RpY3Rpb25h
cnkgKilwb2xpY2llcworeworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIF9w
cm9jZXNzUG9vbC0+cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXModG9QbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXNIYXNoTWFwKHBvbGljaWVzKSk7CisjZW5kaWYKK30KKworLShOU0RpY3Rpb25h
cnkgKilfcGx1Z2luTG9hZENsaWVudFBvbGljaWVzCit7CisgICAgYXV0byYgbWFwID0gX3Byb2Nl
c3NQb29sLT5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoKTsKKyAgICByZXR1cm4gcG9saWNpZXNI
YXNoTWFwVG9EaWN0aW9uYXJ5KG1hcCk7Cit9CisjZW5kaWYKKwogCiAtIChpZCA8X1dLRG93bmxv
YWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3
ZTkwOTc1OGVhNWU1N2FmN2M0MmQ5NjUxOGZjY2Y3MjQ0ZjAxODY5Li5iOWI4Njg3ZjE4MDZjNDY2
ODFjZjhkNzhmMDhhNDc2OTdhOTYxYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC01Miw2ICs1
MiwxMSBAQAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4+CiAtICh2b2lkKV9zZXRPYmplY3RzRm9y
QnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorI2lmICFUQVJH
RVRfT1NfSVBIT05FCistICh2b2lkKV9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczooTlNE
aWN0aW9uYXJ5ICopcG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9w
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSkpOworI2VuZGlmCisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERv
d25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdh
dGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVs
ZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggN2Y5ZmZhZWYxYzY1ODI1Mjhi
ZTk1NDU1NjdkZjRlMWU4ZTkwYTk5Mi4uZDA3MmQ3NGQ2ZDAxODdlZmJhZDVmNmRlNjY4MDU0YjY1
MGYyNTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0xNTg4LDIxICsxNTg4LDI4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3ksIGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHZlcnNpb25TdHJpbmcpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5n
LCB1aW50OF90Pj4gcG9saWNpZXNCeUlkZW50aWZpZXI7Ci0gICAgaWYgKG1fcGx1Z2luTG9hZENs
aWVudFBvbGljaWVzLmNvbnRhaW5zKGhvc3QpKQotICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmll
ciA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmdldChob3N0KTsKLQotICAgIEhhc2hNYXA8
U3RyaW5nLCB1aW50OF90PiB2ZXJzaW9uc1RvUG9saWNpZXM7Ci0gICAgaWYgKHBvbGljaWVzQnlJ
ZGVudGlmaWVyLmNvbnRhaW5zKGJ1bmRsZUlkZW50aWZpZXIpKQotICAgICAgICB2ZXJzaW9uc1Rv
UG9saWNpZXMgPSBwb2xpY2llc0J5SWRlbnRpZmllci5nZXQoYnVuZGxlSWRlbnRpZmllcik7Ci0K
KyAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3QgPSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5l
bnN1cmUoaG9zdCwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1
aW50OF90Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHZlcnNpb25zVG9Qb2xp
Y2llcyA9IHBvbGljaWVzRm9ySG9zdC5lbnN1cmUoYnVuZGxlSWRlbnRpZmllciwgW10geyByZXR1
cm4gSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB2
ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNpb25TdHJpbmcsIHBvbGljeSk7Ci0gICAgcG9saWNp
ZXNCeUlkZW50aWZpZXIuc2V0KGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25zVG9Qb2xpY2llcyk7
Ci0gICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuc2V0KGhvc3QsIHBvbGljaWVzQnlJZGVu
dGlmaWVyKTsKIAogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShwb2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIs
IHZlcnNpb25TdHJpbmcpKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQorewor
ICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8m
IGhvc3RQYWlyIDogcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKSB7CisgICAgICAgIGF1dG8mIHBv
bGljaWVzRm9ySG9zdCA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuc3VyZShob3N0UGFp
ci5rZXksIFtdIHsgcmV0dXJuIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhf
dD4+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVu
dGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7CisgICAgICAgICAgICBhdXRvJiB2ZXJzaW9u
c1RvUG9saWNpZXMgPSBwb2xpY2llc0Zvckhvc3QuZW5zdXJlKGJ1bmRsZUlkZW50aWZpZXJQYWly
LmtleSwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+KCk7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVu
dGlmaWVyUGFpci52YWx1ZSkKKyAgICAgICAgICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0
KHZlcnNpb25QYWlyLmtleSwgdmVyc2lvblBhaXIudmFsdWUpOworICAgICAgICB9CisgICAgfQor
ICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMobV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpKTsKK30KKwogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCiB7CiAgICAgbV9w
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMzY4MWNlODA1NmZhNGQyOWJlMGU2NmQyYWQ4ZTg4MjEw
MDYzNjNmOC4uMTlhNTVkNDFlMDhjNjZkZTM4NjUyYjY1NmMyMjg5NzM1MWUyNDdmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE5Nyw3ICsxOTcsOSBA
QCBwdWJsaWM6CiAgICAgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5JbmZvU3RvcmUoKSB7IHJldHVy
biBtX3BsdWdpbkluZm9TdG9yZTsgfQogCiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpOworICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1h
cDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYpOwog
ICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOworICAgIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4mIHBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzOyB9CiAjZW5kaWYKIAogICAgIHBpZF90IG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGJiYjBhNjRk
MjljNmEyYmIzNzhjNDYyY2U0YmEyNWY0MmIzMDY0OC4uNmI5MmY5Yzc4MjFjZDBkMTM5MWEzYWE3
NGZmYWE2NjY5NjgzZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC00MDAsMTIgKzQwMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAg
Zm9yIChhdXRvIGhvc3RJdGVyID0gcGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMu
YmVnaW4oKTsgaG9zdEl0ZXIgIT0gcGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMu
ZW5kKCk7ICsraG9zdEl0ZXIpIHsKLSAgICAgICAgZm9yIChhdXRvIGJ1bmRsZUlkZW50aWZpZXJJ
dGVyID0gaG9zdEl0ZXItPnZhbHVlLmJlZ2luKCk7IGJ1bmRsZUlkZW50aWZpZXJJdGVyICE9IGhv
c3RJdGVyLT52YWx1ZS5lbmQoKTsgKytidW5kbGVJZGVudGlmaWVySXRlcikgewotICAgICAgICAg
ICAgZm9yIChhdXRvIHZlcnNpb25JdGVyID0gYnVuZGxlSWRlbnRpZmllckl0ZXItPnZhbHVlLmJl
Z2luKCk7IHZlcnNpb25JdGVyICE9IGJ1bmRsZUlkZW50aWZpZXJJdGVyLT52YWx1ZS5lbmQoKTsg
Kyt2ZXJzaW9uSXRlcikKLSAgICAgICAgICAgICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9h
ZENsaWVudFBvbGljeT4odmVyc2lvbkl0ZXItPnZhbHVlKSwgaG9zdEl0ZXItPmtleSwgYnVuZGxl
SWRlbnRpZmllckl0ZXItPmtleSwgdmVyc2lvbkl0ZXItPmtleSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMocGFyYW1ldGVycy5wbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTkyNiw2
ICs5MjEsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVp
bnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGMKICNlbmRpZgogfQogCit2b2lkIFdl
YlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8V1RG
OjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcsIHVpbnQ4
X3Q+Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQorICAgIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNp
ZXMoKTsKKworICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlmaWVyUGFpciA6IGhvc3RQYWly
LnZhbHVlKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRl
bnRpZmllclBhaXIudmFsdWUpCisgICAgICAgICAgICAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
OjpzaW5nbGV0b24oKS5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0PFBsdWdp
bkxvYWRDbGllbnRQb2xpY3k+KHZlcnNpb25QYWlyLnZhbHVlKSwgaG9zdFBhaXIua2V5LCBidW5k
bGVJZGVudGlmaWVyUGFpci5rZXksIHZlcnNpb25QYWlyLmtleSk7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVz
KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA2ZWQxOTk4ZGJlMTZmNjA5
YjQ4NjZlZjdiMmFiNmQ2YTYxOGI5ODFlLi43ODJkNTNiZDQ0YTk3OWUwZWQ4MTc1NGJiMWZhMmIy
YTg1MjQzMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTMy
LDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihj
b25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcGx1Z0lu
RGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpT
ZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50OF90IHBv
bGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgdm9pZCByZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCB1aW50OF90Pj4+Jik7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGlj
aWVzKCk7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjgwYmY0ZDYzZjA3YzQw
MGY4Y2FjY2YzNjUzNDEyYWRiYjE4ZDVkZC4uODRmNTVlMDA1MDI5M2U4ZmViMjgzZWMwYzQwYTE1
NjM0NTY2MDY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkRlZmF1bHRIYXNo
ZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKICAgICBSZXNldFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1aW50
MzJfdCxkb3VibGU+PiBoYXNoZXMpCiAgICAgU2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50
OF90IHBvbGljeSwgU3RyaW5nIGhvc3QsIFN0cmluZyBidW5kbGVJZGVudGlmaWVyLCBTdHJpbmcg
dmVyc2lvblN0cmluZykKKyAgICBSZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhIYXNoTWFw
PFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+IHBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcykKICAgICBDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKICAg
ICBSZWZyZXNoUGx1Z2lucygpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA2NTUzMzM3MjBlZjM4MjM2YmQ5NzJiMGRjNWUwYTlkZGQ2ZDQ1ODAx
Li4yY2M5ZmI2N2E3YjM3ZjM3YmYxMjljMzQyYjQxOWQwZGY2YjExMjE1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTctMDYtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0sy
XSBBZGQgV0tQcm9jZXNzUG9vbCBTUEkgdG8gZWZmaWNpZW50bHkgcmVzZXQgYWxsIHBsdWdpbiBs
b2FkIGNsaWVudCBwb2xpY2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNDcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODg1ODgxNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9QbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW06IEFkZGVkLgorICAgICAgICAo
VEVTVCk6CisKIDIwMTctMDYtMTUgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVGhlIHJ1bi1taW5pYnJvd3NlciBzY3JpcHQg
c2hvdWxkIGFsbG93IHRvIGV4ZWN1dGUgYWxzbyBhIFdQRSBsYXVuY2hlcgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkY2I2NjkzNTNiMWIxM2YwNDc3M2YxZDQxYmY4NWE1OGQ2ZWU0MWUwLi41
NDU1OWY3NzBmZDNkOTVmMmY0OTM0MzQ2ZWFhZTY5MzFlYjU0MmZkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDg0LDYgKzQ4NCw3IEBACiAJCTgzNjFGMTc4MUU2MTBCNEUwMDc1OUIyNSAv
KiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjFGMTc3MUU2
MTBCMjEwMDc1OUIyNSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hl
cy5odG1sICovOyB9OwogCQk4MzdBMzVGMTFEOUExRTdEMDA2NjNDNTcgLyogRG93bmxvYWRSZXF1
ZXN0QmxvYlVSTC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzN0EzNUYwMUQ5QTFFNjQwMDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RC
bG9iVVJMLmh0bWwgKi87IH07CiAJCTgzQjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3Jl
U2Vzc2lvblN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzQjZERTZFMUVFNzUyMEYwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNw
cCAqLzsgfTsKKwkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0g
Ki87IH07CiAJCTgzREUxMzREMUVGMUM1MDgwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzREUx
MzRDMUVGMUM0RkUwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLzsgfTsKIAkJ
OEU0QTg1MzcxRTFEMUFCMjAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTRBODUzNjFFMUQxQUExMDBGNTNC
MEYgLyogR3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBG
IC8qIGxvdHMtb2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRl
eHQuaHRtbCAqLzsgfTsKQEAgLTEyOTQsNiArMTI5NSw3IEBACiAJCTgzN0EzNUYwMUQ5QTFFNjQw
MDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzQjZERTZFMUVFNzUyMEYwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3RvcmVTZXNz
aW9uU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I4OEEzMzFDODAw
NTZEMDBCQjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIVE1MUGFyc2VySWRpb21zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNE
RTEzNEMxRUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBS
ZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNv
dW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTJDNzUwRDE2Q0VEOTU1
MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODgsNiArMTc5MCw3IEBACiAJCQkJMzdBMjJBQTUxRENB
QTI3MjAwQUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNBZnRlckNyYXNo
Lm1tICovLAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5k
b3cubW0gKi8sCiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5Lm1tICovLAorCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlC
RTNFIC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCTdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAv
KiBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tICovLAogCQkJCTU3OThFMkFGMUNBRjVDMjgwMEM1
Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLywKQEAgLTMwOTksNiArMzEwMiw3
IEBACiAJCQkJN0NDRTdFQ0YxQTQxMUE3RTAwNDQ3QzRDIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJl
Y2VpdmVSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTcxMUQ0MjhFNEIwMERE
N0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
RDAxQTQxMUE3RTAwNDQ3QzRDIC8qIFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBs
dWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQxMUE0
MTFBN0UwMDQ0N0M0QyAvKiBTdHJpbmdUcnVuY2F0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlF
Q0E2ODBDRTFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFRDIxQTQxMUE3RTAwNDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFz
aC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYzNDVjODViNmVhZWVlZjk4NjcxMzQ5YWVlYTZmMjM2Y2EwZjUzZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9QbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMubW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGVNYWMuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1BsdWdpbkluZm9ybWF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaD4KKworVEVTVChXS1Byb2Nlc3NQb29sLCByZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRXSyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKKyAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0gKFdL
Q29udGV4dFJlZilwcm9jZXNzUG9vbC5nZXQoKTsKKyAgICAKKyAgICBhdXRvIGVtcHR5SG9zdCA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKKyAgICBhdXRvIGFw
cGxlSG9zdCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFwcGxlLmNv
bSIpKTsKKyAgICBhdXRvIGZsYXNoSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iKSk7Cisg
ICAgYXV0byBmbGFzaFZlcnNpb24gPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCIyNi4wLjAuMTI2IikpOworICAgIGF1dG8gc2lsdmVybGlnaHRJZGVudGlmaWVyID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29tLm1pY3Jvc29mdC5TaWx2ZXJs
aWdodFBsdWdpbiIpKTsKKyAgICBhdXRvIHNpbHZlcmxpZ2h0VmVyc2lvbiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIjUuMS41MDkwMS4wIikpOworICAgIFdLQ29udGV4
dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5QXNrLCBlbXB0eUhvc3QuZ2V0KCksIGZsYXNoSWRlbnRpZmllci5nZXQoKSwgZmxhc2hW
ZXJzaW9uLmdldCgpKTsKKyAgICBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHdr
Q29udGV4dCwga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzLCBhcHBsZUhvc3Qu
Z2V0KCksIGZsYXNoSWRlbnRpZmllci5nZXQoKSwgZmxhc2hWZXJzaW9uLmdldCgpKTsKKyAgICBX
S0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHdrQ29udGV4dCwga1dLUGx1Z2luTG9h
ZENsaWVudFBvbGljeUJsb2NrLCBlbXB0eUhvc3QuZ2V0KCksIHNpbHZlcmxpZ2h0SWRlbnRpZmll
ci5nZXQoKSwgc2lsdmVybGlnaHRWZXJzaW9uLmdldCgpKTsKKyAgICBXS0NvbnRleHRTZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KHdrQ29udGV4dCwga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFs
bG93LCBhcHBsZUhvc3QuZ2V0KCksIHNpbHZlcmxpZ2h0SWRlbnRpZmllci5nZXQoKSwgc2lsdmVy
bGlnaHRWZXJzaW9uLmdldCgpKTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzID0g
cHJvY2Vzc1Bvb2wuZ2V0KCkuX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKKyAgICBFWFBFQ1Rf
RVEoMlUsIHBvbGljaWVzLmNvdW50KTsKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzRm9yRW1w
dHlIb3N0ID0gcG9saWNpZXNbQCIiXTsKKyAgICBFWFBFQ1RfRVEoMlUsIHBvbGljaWVzRm9yRW1w
dHlIb3N0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9saWNp
ZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl0pLmNv
dW50KTsKKyAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFzaywgW3BvbGlj
aWVzRm9yRW1wdHlIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdW0Ai
MjYuMC4wLjEyNiJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDFVLCAo
KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1pY3Jvc29mdC5TaWx2
ZXJsaWdodFBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGll
bnRQb2xpY3lCbG9jaywgW3BvbGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1pY3Jvc29mdC5TaWx2
ZXJsaWdodFBsdWdpbiJdW0AiNS4xLjUwOTAxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOwor
ICAgIAorICAgIE5TRGljdGlvbmFyeSAqcG9saWNpZXNGb3JBcHBsZUhvc3QgPSBwb2xpY2llc1tA
ImFwcGxlLmNvbSJdOworICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXNGb3JBcHBsZUhvc3QuY291
bnQpOworICAgIEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckFwcGxl
SG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSkuY291bnQpOworICAg
IEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsIFtwb2xpY2ll
c0ZvckFwcGxlSG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXVtAIjI2
LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOworICAgIEVYUEVDVF9FUSgxVSwgKChO
U0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckFwcGxlSG9zdFtAImNvbS5taWNyb3NvZnQuU2lsdmVy
bGlnaHRQbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5QWxsb3csIFtwb2xpY2llc0ZvckFwcGxlSG9zdFtAImNvbS5taWNyb3NvZnQuU2lsdmVy
bGlnaHRQbHVnaW4iXVtAIjUuMS41MDkwMS4wIl0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKKyAg
ICAKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpuZXdQb2xpY2llcyA9IFtwb2xpY2llcyBtdXRh
YmxlQ29weV07CisgICAgW25ld1BvbGljaWVzIHJlbW92ZU9iamVjdEZvcktleTpAImFwcGxlLmNv
bSJdOworICAgIG5ld1BvbGljaWVzW0AiZ29vZ2xlLmNvbSJdID0gW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XTsKKyAgICBuZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtAImNvbS5t
YWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF07CisgICAgbmV3UG9saWNpZXNbQCJnb29nbGUuY29tIl1bQCJjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl1bQCIyNi4wLjAuMTI2Il0gPSBbW05TTnVtYmVyIGFs
bG9jXSBpbml0V2l0aFVuc2lnbmVkSW50OmtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fs
d2F5c107CisgICAgbmV3UG9saWNpZXNbQCJnb29nbGUuY29tIl1bQCJjb20uYXBwbGUuUXVpY2tU
aW1lLnBsdWdpbiJdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBu
ZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1b
QCIxLjAiXSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoVW5zaWduZWRJbnQ6a1dLUGx1Z2lu
TG9hZENsaWVudFBvbGljeUJsb2NrXTsKKyAgICBuZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtA
ImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjEiXSA9IFtbTlNOdW1iZXIgYWxsb2Nd
IGluaXRXaXRoVW5zaWduZWRJbnQ6a1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93XTsKKyAg
ICAKKyAgICBbcHJvY2Vzc1Bvb2wuZ2V0KCkgX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVz
Om5ld1BvbGljaWVzXTsKKyAgICAKKyAgICBwb2xpY2llcyA9IHByb2Nlc3NQb29sLmdldCgpLl9w
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CisgICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llcy5jb3Vu
dCk7CisgICAgcG9saWNpZXNGb3JFbXB0eUhvc3QgPSBwb2xpY2llc1tAIiJdOworICAgIEVYUEVD
VF9FUSgyVSwgcG9saWNpZXNGb3JFbXB0eUhvc3QuY291bnQpOworICAgIEVYUEVDVF9FUSgxVSwg
KChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5tYWNyb21lZGlhLkZs
YXNoIFBsYXllci5wbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5QXNrLCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRpYS5G
bGFzaCBQbGF5ZXIucGx1Z2luIl1bQCIyNi4wLjAuMTI2Il0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
KTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9saWNpZXNGb3JFbXB0eUhv
c3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl0pLmNvdW50KTsKKyAgICBFWFBF
Q1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2NrLCBbcG9saWNpZXNGb3JFbXB0eUhv
c3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl1bQCI1LjEuNTA5MDEuMCJdIHVu
c2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgCisgICAgRVhQRUNUX0VRKHRydWUsICFwb2xpY2ll
c1tAImFwcGxlLmNvbSJdKTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzRm9yR29v
Z2xlSG9zdCA9IHBvbGljaWVzW0AiZ29vZ2xlLmNvbSJdOworICAgIEVYUEVDVF9FUSgyVSwgcG9s
aWNpZXNGb3JHb29nbGVIb3N0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9u
YXJ5ICopcG9saWNpZXNGb3JHb29nbGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVy
LnBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xp
Y3lBbGxvd0Fsd2F5cywgW3BvbGljaWVzRm9yR29vZ2xlSG9zdFtAImNvbS5tYWNyb21lZGlhLkZs
YXNoIFBsYXllci5wbHVnaW4iXVtAIjI2LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0p
OworICAgIEVYUEVDVF9FUSgyVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0Zvckdvb2dsZUhv
c3RbQCJjb20uYXBwbGUuUXVpY2tUaW1lLnBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VR
KGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaywgW3BvbGljaWVzRm9yR29vZ2xlSG9zdFtA
ImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1
ZV0pOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3csIFtwb2xp
Y2llc0Zvckdvb2dsZUhvc3RbQCJjb20uYXBwbGUuUXVpY2tUaW1lLnBsdWdpbiJdW0AiMS4xIl0g
dW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKKyAgICAKKyAgICBXS0NvbnRleHRDbGVhclBsdWdpbkNs
aWVudFBvbGljaWVzKHdrQ29udGV4dCk7CisgICAgcG9saWNpZXMgPSBwcm9jZXNzUG9vbC5nZXQo
KS5fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOworICAgIEVYUEVDVF9FUSgwVSwgcG9saWNpZXMu
Y291bnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313135</attachid>
            <date>2017-06-16 14:27:59 -0700</date>
            <delta_ts>2017-06-16 14:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616142758.patch</filename>
            <type>text/plain</type>
            <size>29672</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uMzdjMTUzMDAxZGY5ZDFmNzIwZjk2NWFiNzllMDg0
YmE2YWVlMDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vz
c1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9s
aWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIEFkZCBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
TWF4aW11bSB2YWx1ZSB0byBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGVudW1lcmF0aW9uCisgICAg
ICAgIHRvIGZhY2lsaXRhdGUgaW5wdXQgdmFsdWUgdmFsaWRhdGlvbiBvbiBBUEkgc2lkZS4KKwor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5oOgorCiAyMDE3LTA2LTE1ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4OiBbaU9TXSBHZW5l
cmF0ZSBhIHNpbXVsYXRlZCBjcmFzaCB3aGVuIHRoZSBXZWJUaHJlYWQgc3RhcnRzIGluIE1vYmls
ZVNhZmFyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGRkNGQ1NmJlODUxMTdkYjQxMjIyMmM5NTJiMzM0ZjY2M2Y1
MWJmOTkuLmI0Yjc2MTI5MTc1M2Y1ZTlhMTMxNTY2MzEyN2EzOTE1NjQ1N2ViNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nlc3NQb29sIFNQSSB0byBlZmZpY2ll
bnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBvbGljaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0NzIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI4ODU4ODE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4K
KworICAgICAgICBBZGQgV0tQcm9jZXNzUG9vbCBTUEkgdG8gZWZmaWNpZW50bHkgcmVzZXQgYWxs
IHBsdWdpbiBsb2FkIGNsaWVudCBwb2xpY2llczoKKyAgICAgICAgW1dLUHJvY2Vzc1Bvb2wgX3Jl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzXS4gVGhpcyBuZXcgU1BJIGNsZWFycyBhbGwKKyAg
ICAgICAgZXhpc3RpbmcgcG9saWNpZXMgYW5kIHRoZW4gc2V0cyBhbGwgb2YgdGhlbSB3aXRoIG5l
dyB2YWx1ZXMsIHdpdGggYQorICAgICAgICBtaW5pbWFsIGFtb3VudCBvZiBJUEMuCisKKyAgICAg
ICAgVG8gYWNoaWV2ZSB0aGlzLCBjbGllbnRzIHdvdWxkIHByZXZpb3VzbHkgaGF2ZSB0byBjYWxs
CisgICAgICAgIDEuIFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSB3aGljaCB3
b3VsZCBjYXVzZSBhIGJyb2FkY2FzdCBJUEMgdG8KKyAgICAgICAgICAgZXZlcnkgV2ViQ29udGVu
dCBwcm9jZXNzLgorICAgICAgICAyLiBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KCkgcmVwZWF0ZWRseSB0byBhZGQgZWFjaCBwb2xpY3kgb25lIGJ5CisgICAgICAgICAgIG9uZS4g
RWFjaCBjYWxsIHRvIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koKSB3b3VsZCBj
YXVzZSBhIGJyb2FkY2FzdAorICAgICAgICAgICBJUEMgdG8gZXZlcnkgV2ViQ29udGVudCBwcm9j
ZXNzLgorCisgICAgICAgIFRoZSBuZXcgU1BJIGRvZXMgdGhlIHNhbWUgam9iIHdpdGggYSBzaW5n
bGUgYnJvYWRjYXN0IElQQyB0byBldmVyeSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAg
IChpc1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKToKKyAgICAgICAgKHRvUGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzSGFzaE1hcCk6CisgICAgICAgIChwb2xpY2llc0hhc2hNYXBUb0Rp
Y3Rpb25hcnkpOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llczpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBv
bGljaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisK
IDIwMTctMDYtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNpbmcgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6
XSB0byBzd2FwIG91dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHBy
b3ZpZGVyIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMDg5M2Zj
OTlhN2U4Y2Y2NzJmZTFmYWFiNjJmNTkxMTNlYWJhMzU1Zi4uNGNlODU0MTI4NmVhZThkZDg0OGM3
YjIzYTk2MDVlODI4ZGViNDUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAg
LTQ1LDYgKzQ1LDggQEAgZW51bSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IDogdWludDhfdCB7CiAK
ICAgICAvLyBUaGUgcGx1Zy1pbiBtb2R1bGUgc2hvdWxkIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUg
b2Ygd2hldGhlciBXZWJLaXQgaGFzIGFza2VkIGl0IHRvIGJlIGJsb2NrZWQuCiAgICAgUGx1Z2lu
TG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzLAorCisgICAgUGx1Z2luTG9hZENsaWVudFBvbGlj
eU1heGltdW0gPSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMKIH07CiAKIHN0cnVj
dCBNaW1lQ2xhc3NJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA3MGZiNmU4OTYzMjczN2IxYzQxZDQ4MTZiYmFi
MDY5ZTM4NzBhMDJiLi4yNDljMTJmNmFhZmY3NGQyODU2MWYxZmZlYjhhZDNkODljMDhhMTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAj
aW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlH
YW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCkBAIC00NSw2ICs0Niw3IEBA
CiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI0OCw2ICsyNTAsMTAxIEBAIC0gKHZv
aWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnkKICAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXJzKElQQzo6RGF0
YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2Rh
dGEgbGVuZ3RoXSkpKTsKIH0KIAorI2lmICFUQVJHRVRfT1NfSVBIT05FCisKKyNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKworc3RhdGljIGJvb2wgaXNQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5QWNjZXB0YWJsZSh1bnNpZ25lZCBwb2xpY3kpCit7CisgICAgcmV0dXJuIHBvbGljeSA8PSBX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5TWF4aW11bTsKK30KK3N0YXRpYyBIYXNoTWFw
PFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+IHRvUGx1
Z2luTG9hZENsaWVudFBvbGljaWVzSGFzaE1hcChOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkpCit7
CisgICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3Ry
aW5nLCB1aW50OF90Pj4+IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKKyAgICBbZGljdGlvbmFy
eSBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBuc0hvc3QsIGlkIG5zUG9s
aWNpZXNGb3JIb3N0LCBCT09MICpzdG9wKSB7CisgICAgICAgIGlmICghW25zSG9zdCBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0
aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmICghW25zUG9saWNpZXNGb3JIb3N0IGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVn
aW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0
aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgU3RyaW5nIGhvc3QgPSAoTlNTdHJpbmcgKiluc0hvc3Q7CisgICAgICAgIF9f
YmxvY2sgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9saWNpZXNG
b3JIb3N0OworICAgICAgICBbbnNQb2xpY2llc0Zvckhvc3QgZW51bWVyYXRlS2V5c0FuZE9iamVj
dHNVc2luZ0Jsb2NrOl4oaWQgbnNJZGVudGlmaWVyLCBpZCBuc1ZlcnNpb25zVG9Qb2xpY2llcywg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCFbbnNJZGVudGlmaWVyIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0
aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghW25zVmVyc2lvbnNUb1BvbGljaWVzIGlz
S2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3
YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBidW5kbGVJ
ZGVudGlmaWVyID0gKE5TU3RyaW5nICopbnNJZGVudGlmaWVyOworICAgICAgICAgICAgX19ibG9j
ayBIYXNoTWFwPFN0cmluZywgdWludDhfdD4gdmVyc2lvbnNUb1BvbGljaWVzOworICAgICAgICAg
ICAgW25zVmVyc2lvbnNUb1BvbGljaWVzIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9j
azpeKGlkIG5zVmVyc2lvbiwgaWQgbnNQb2xpY3ksIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIVtuc1ZlcnNpb24gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewor
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25n
IGZvcm1hdCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICghW25zUG9saWN5IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0pIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lu
cywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlv
bmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwb2xpY3kgPSAoKE5TTnVt
YmVyICopbnNQb2xpY3kpLnVuc2lnbmVkSW50VmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKCFp
c1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKHBvbGljeSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBTdHJpbmcgdmVyc2lvbiA9IChOU1N0cmluZyAqKW5zVmVyc2lvbjsKKyAgICAgICAg
ICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuYWRkKHZlcnNpb24sIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHBvbGljeSkpOworICAgICAgICAgICAgfV07CisgICAgICAgICAgICBpZiAoIXZlcnNpb25z
VG9Qb2xpY2llcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcG9saWNpZXNGb3JIb3N0LmFk
ZChidW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKHZlcnNpb25zVG9Qb2xpY2llcykpOworICAgICAg
ICB9XTsKKyAgICAgICAgaWYgKCFwb2xpY2llc0Zvckhvc3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmFkZChob3N0LCBXVEZNb3ZlKHBvbGljaWVzRm9y
SG9zdCkpOworICAgIH1dOworICAgIHJldHVybiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7Cit9
CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25z
dCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90
Pj4+JiBtYXApCit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcG9saWNpZXMgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBt
YXApIHsKKyAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBob3N0UGFpci5rZXk7CisgICAgICAgIHBv
bGljaWVzW2hvc3RdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7Cisg
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlcklkZW50aWZpZXIgPSBidW5kbGVJZGVudGlmaWVy
UGFpci5rZXk7CisgICAgICAgICAgICBwb2xpY2llc1tob3N0XVtidW5kbGVySWRlbnRpZmllcl0g
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgZm9yIChh
dXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgTlNTdHJpbmcgKnZlcnNpb24gPSB2ZXJzaW9uUGFpci5rZXk7CisgICAgICAgICAg
ICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdW3ZlcnNpb25dID0gW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDp2ZXJzaW9uUGFpci52YWx1ZV07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHBvbGljaWVzOworfQorCisjZW5kaWYK
KworLSAodm9pZClfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6KE5TRGljdGlvbmFyeSAq
KXBvbGljaWVzCit7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgX3Byb2Nl
c3NQb29sLT5yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyh0b1BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llc0hhc2hNYXAocG9saWNpZXMpKTsKKyNlbmRpZgorfQorCistKE5TRGljdGlvbmFyeSAq
KV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMKK3sKKyAgICBhdXRvJiBtYXAgPSBfcHJvY2Vzc1Bv
b2wtPnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcygpOworICAgIHJldHVybiBwb2xpY2llc0hhc2hN
YXBUb0RpY3Rpb25hcnkobWFwKTsKK30KKyNlbmRpZgorCiAKIC0gKGlkIDxfV0tEb3dubG9hZERl
bGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDdlOTA5
NzU4ZWE1ZTU3YWY3YzQyZDk2NTE4ZmNjZjcyNDRmMDE4NjkuLmI5Yjg2ODdmMTgwNmM0NjY4MWNm
OGQ3OGYwOGE0NzY5N2E5NjFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDEx
IEBACiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlk
IDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPj4KIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5k
bGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCisjaWYgIVRBUkdFVF9P
U19JUEhPTkUKKy0gKHZvaWQpX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOihOU0RpY3Rp
b25hcnkgKilwb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7
CisjZW5kaWYKKwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxv
YWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0
ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZjlmZmFlZjFjNjU4MjUyOGJlOTU0
NTU2N2RmNGUxZThlOTBhOTkyLi5jMDA0MWVkZWJkN2U0YTY5MzQ1NmE0MzhkZjEzNDJjNDY3Mjk1
YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTE1ODgsMjEgKzE1ODgsMzAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVp
bnQ4X3Q+PiBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAobV9wbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMuY29udGFpbnMoaG9zdCkpCi0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVyID0g
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZ2V0KGhvc3QpOwotCi0gICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBpZiAocG9saWNpZXNCeUlkZW50
aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllcikpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xp
Y2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJZGVudGlmaWVyKTsKLQorICAg
IGF1dG8mIHBvbGljaWVzRm9ySG9zdCA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuc3Vy
ZShob3N0LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4
X3Q+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVz
ID0gcG9saWNpZXNGb3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyLCBbXSB7IHJldHVybiBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHZlcnNp
b25zVG9Qb2xpY2llcy5zZXQodmVyc2lvblN0cmluZywgcG9saWN5KTsKLSAgICBwb2xpY2llc0J5
SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllciwgdmVyc2lvbnNUb1BvbGljaWVzKTsKLSAg
ICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5zZXQoaG9zdCwgcG9saWNpZXNCeUlkZW50aWZp
ZXIpOwogCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRlbnRpZmllciwgdmVy
c2lvblN0cmluZykpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCB1aW50OF90Pj4+JiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpCit7CisgICAg
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgaG9z
dFBhaXIgOiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKKyAgICAgICAgYXV0byYgcG9saWNp
ZXNGb3JIb3N0ID0gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5zdXJlKGhvc3RQYWlyLmtl
eSwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZp
ZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8mIHZlcnNpb25zVG9Q
b2xpY2llcyA9IHBvbGljaWVzRm9ySG9zdC5lbnN1cmUoYnVuZGxlSWRlbnRpZmllclBhaXIua2V5
LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZp
ZXJQYWlyLnZhbHVlKQorICAgICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcy5zZXQodmVy
c2lvblBhaXIua2V5LCB2ZXJzaW9uUGFpci52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
c3RhdGljIHVuc2lnbmVkIGxvbmcgY291bnQgPSAwOworICAgIFdURkxvZ0Fsd2F5cygiY291bnQ6
ICVsdSIsICsrY291bnQpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMobV9wbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMpKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQbHVnaW5DbGllbnRQb2xp
Y2llcygpCiB7CiAgICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMzY4MWNlODA1NmZhNGQy
OWJlMGU2NmQyYWQ4ZTg4MjEwMDYzNjNmOC4uMTlhNTVkNDFlMDhjNjZkZTM4NjUyYjY1NmMyMjg5
NzM1MWUyNDdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTE5Nyw3ICsxOTcsOSBAQCBwdWJsaWM6CiAgICAgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5J
bmZvU3RvcmUoKSB7IHJldHVybiBtX3BsdWdpbkluZm9TdG9yZTsgfQogCiAgICAgdm9pZCBzZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmlu
ZywgdWludDhfdD4+PiYpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IHVpbnQ4X3Q+Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcygpIGNvbnN0IHsgcmV0dXJuIG1f
cGx1Z2luTG9hZENsaWVudFBvbGljaWVzOyB9CiAjZW5kaWYKIAogICAgIHBpZF90IG5ldHdvcmtQ
cm9jZXNzSWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggZGJiYjBhNjRkMjljNmEyYmIzNzhjNDYyY2U0YmEyNWY0MmIzMDY0OC4uNmI5MmY5
Yzc4MjFjZDBkMTM5MWEzYWE3NGZmYWE2NjY5NjgzZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00MDAsMTIgKzQwMCw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQ
TEFURk9STShNQUMpCi0gICAgZm9yIChhdXRvIGhvc3RJdGVyID0gcGFyYW1ldGVycy5wbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMuYmVnaW4oKTsgaG9zdEl0ZXIgIT0gcGFyYW1ldGVycy5wbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMuZW5kKCk7ICsraG9zdEl0ZXIpIHsKLSAgICAgICAgZm9yIChhdXRv
IGJ1bmRsZUlkZW50aWZpZXJJdGVyID0gaG9zdEl0ZXItPnZhbHVlLmJlZ2luKCk7IGJ1bmRsZUlk
ZW50aWZpZXJJdGVyICE9IGhvc3RJdGVyLT52YWx1ZS5lbmQoKTsgKytidW5kbGVJZGVudGlmaWVy
SXRlcikgewotICAgICAgICAgICAgZm9yIChhdXRvIHZlcnNpb25JdGVyID0gYnVuZGxlSWRlbnRp
Zmllckl0ZXItPnZhbHVlLmJlZ2luKCk7IHZlcnNpb25JdGVyICE9IGJ1bmRsZUlkZW50aWZpZXJJ
dGVyLT52YWx1ZS5lbmQoKTsgKyt2ZXJzaW9uSXRlcikKLSAgICAgICAgICAgICAgICBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3Rh
dGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4odmVyc2lvbkl0ZXItPnZhbHVlKSwgaG9z
dEl0ZXItPmtleSwgYnVuZGxlSWRlbnRpZmllckl0ZXItPmtleSwgdmVyc2lvbkl0ZXItPmtleSk7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMocGFy
YW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
R0FNRVBBRCkKQEAgLTkyNiw2ICs5MjEsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGMKICNl
bmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVz
KGNvbnN0IEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8
V1RGOjpTdHJpbmcsIHVpbnQ4X3Q+Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKK3sKKyNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQorICAgIGNsZWFy
UGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKKworICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBwbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlm
aWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHZlcnNp
b25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpCisgICAgICAgICAgICAgICAgV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHZlcnNpb25QYWlyLnZhbHVlKSwg
aG9zdFBhaXIua2V5LCBidW5kbGVJZGVudGlmaWVyUGFpci5rZXksIHZlcnNpb25QYWlyLmtleSk7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBs
dWdpbkNsaWVudFBvbGljaWVzKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkg
JiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCA2ZWQxOTk4ZGJlMTZmNjA5YjQ4NjZlZjdiMmFiNmQ2YTYxOGI5ODFlLi43ODJkNTNiZDQ0YTk3
OWUwZWQ4MTc1NGJiMWZhMmIyYTg1MjQzMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJbkRp
ZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYg
cGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQp
OwogICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeSh1aW50OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcm
IGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CisgICAgdm9p
ZCByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+Jik7CiAgICAgdm9pZCBjbGVh
clBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggNjgwYmY0ZDYzZjA3YzQwMGY4Y2FjY2YzNjUzNDEyYWRiYjE4ZDVkZC4uODRmNTVlMDA1MDI5
M2U4ZmViMjgzZWMwYzQwYTE1NjM0NTY2MDY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkRlZmF1bHRIYXNoZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKICAg
ICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPFdlYkNvcmU6OlNlc3Np
b25JRCwgSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+PiBoYXNoZXMpCiAgICAgU2V0UGx1Z2luTG9h
ZENsaWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgU3RyaW5nIGhvc3QsIFN0cmluZyBidW5kbGVJ
ZGVudGlmaWVyLCBTdHJpbmcgdmVyc2lvblN0cmluZykKKyAgICBSZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyhIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5n
LCB1aW50OF90Pj4+IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykKICAgICBDbGVhclBsdWdpbkNs
aWVudFBvbGljaWVzKCkKICAgICBSZWZyZXNoUGx1Z2lucygpCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTUzMzM3MjBlZjM4MjM2YmQ5NzJi
MGRjNWUwYTlkZGQ2ZDQ1ODAxLi45YjRhMTM4OGI5OWFkM2NlNGZhMWMxY2NmMGY3MmE2Mjg1NWIw
ZjlhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTctMDYtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBbV0syXSBBZGQgV0tQcm9jZXNzUG9vbCBTUEkgdG8gZWZmaWNpZW50bHkg
cmVzZXQgYWxsIHBsdWdpbiBsb2FkIGNsaWVudCBwb2xpY2llcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDcyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yODg1ODgxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAg
ICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA2LTE1ICBDYXJsb3MgQWxiZXJ0byBMb3Bl
eiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFRoZSBydW4tbWlu
aWJyb3dzZXIgc2NyaXB0IHNob3VsZCBhbGxvdyB0byBleGVjdXRlIGFsc28gYSBXUEUgbGF1bmNo
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGNiNjY5MzUzYjFiMTNmMDQ3NzNmMWQ0MWJm
ODVhNThkNmVlNDFlMC4uNTQ1NTlmNzcwZmQzZDk1ZjJmNDkzNDM0NmVhYWU2OTMxZWI1NDJmZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4NCw2ICs0ODQsNyBAQAogCQk4MzYxRjE3ODFF
NjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS13aXRoLXNsYXNo
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJp
YnV0ZS13aXRoLXNsYXNoZXMuaHRtbCAqLzsgfTsKIAkJODM3QTM1RjExRDlBMUU3RDAwNjYzQzU3
IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMzVGMDFEOUExRTY0MDA2NjNDNTcgLyog
RG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovOyB9OwogCQk4M0I2REU2RjFFRTc1MjIxMDAx
RTc5MkYgLyogUmVzdG9yZVNlc3Npb25TdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I2REU2RTFFRTc1MjBGMDAxRTc5MkYgLyogUmVzdG9y
ZVNlc3Npb25TdGF0ZS5jcHAgKi87IH07CisJCTgzQkFFRThEMUVGNDYyNTUwMERERTg5NCAvKiBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENs
aWVudFBvbGljaWVzLm1tICovOyB9OwogCQk4M0RFMTM0RDFFRjFDNTA4MDBDMUIzNTUgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0RFMTM0QzFFRjFDNEZFMDBDMUIzNTUgLyogUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAgKi87IH07CiAJCThFNEE4NTM3MUUxRDFBQjIwMEY1M0IwRiAvKiBHcmlkUG9zaXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0QTg1
MzYxRTFEMUFBMTAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAgKi87IH07CiAJCTkzMEFENDAy
MTUwNjk4RDAwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3
MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi87IH07CkBAIC0xMjk0LDYgKzEyOTUsNyBAQAogCQk4
MzdBMzVGMDFEOUExRTY0MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I2REU2RTFFRTc1MjBGMDAxRTc5MkYgLyog
UmVzdG9yZVNlc3Npb25TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODNCODhBMzMxQzgwMDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlcklkaW9tcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzREUxMzRDMUVGMUM0RkUwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkJEMTk5NzFBMkRC
MDVCMDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWZDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OEEyQzc1MEQxNkNFRDk1NTAwMjRGMzUyIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzaXplV2luZG93QWZ0ZXJDcmFz
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg4LDYgKzE3OTAsNyBAQAog
CQkJCTM3QTIyQUE1MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzQWZ0ZXJDcmFzaC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyog
T3BlbkFuZENsb3NlV2luZG93Lm1tICovLAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAv
KiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLywKKwkJCQk4M0JBRUU4QzFFRjQ2
MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLAogCQkJCUM5NTUw
MUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAqLywKIAkJCQk3QzFBRjc5MzFF
OERDQkFCMDAyNjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSAqLywKIAkJCQk1Nzk4
RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi8sCkBA
IC0zMDk5LDYgKzMxMDIsNyBAQAogCQkJCTdDQ0U3RUNGMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTVC
RTE3MTFENDI4RTRCMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQwMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTgzQkFFRThEMUVGNDYy
NTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VEMTFBNDExQTdFMDA0NDdDNEMgLyogU3RyaW5nVHJ1bmNhdG9yLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGll
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQyMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJy
ZXNvdXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1BsdWdpbkxvYWRDbGll
bnRQb2xpY2llcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWQyMjlhZDE2Zjc0YTEzY2FhMDk4NGZhZGUyMTc0
M2JiOGQ3ODVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tDb250ZXh0UHJpdmF0ZU1hYy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUGx1Z2lu
SW5mb3JtYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworVEVTVChXS1Byb2Nlc3NQb29sLCByZXNldFBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRXSyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKKyAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0g
KFdLQ29udGV4dFJlZilwcm9jZXNzUG9vbC5nZXQoKTsKKyAgICAKKyAgICBhdXRvIGVtcHR5SG9z
dCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKKyAgICBhdXRv
IGFwcGxlSG9zdCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFwcGxl
LmNvbSIpKTsKKyAgICBhdXRvIGZsYXNoSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iKSk7
CisgICAgYXV0byBmbGFzaFZlcnNpb24gPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCIyNi4wLjAuMTI2IikpOworICAgIGF1dG8gc2lsdmVybGlnaHRJZGVudGlmaWVyID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29tLm1pY3Jvc29mdC5TaWx2
ZXJsaWdodFBsdWdpbiIpKTsKKyAgICBhdXRvIHNpbHZlcmxpZ2h0VmVyc2lvbiA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIjUuMS41MDkwMS4wIikpOworICAgIFdLQ29u
dGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5QXNrLCBlbXB0eUhvc3QuZ2V0KCksIGZsYXNoSWRlbnRpZmllci5nZXQoKSwgZmxh
c2hWZXJzaW9uLmdldCgpKTsKKyAgICBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KHdrQ29udGV4dCwga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzLCBhcHBsZUhv
c3QuZ2V0KCksIGZsYXNoSWRlbnRpZmllci5nZXQoKSwgZmxhc2hWZXJzaW9uLmdldCgpKTsKKyAg
ICBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHdrQ29udGV4dCwga1dLUGx1Z2lu
TG9hZENsaWVudFBvbGljeUJsb2NrLCBlbXB0eUhvc3QuZ2V0KCksIHNpbHZlcmxpZ2h0SWRlbnRp
Zmllci5nZXQoKSwgc2lsdmVybGlnaHRWZXJzaW9uLmdldCgpKTsKKyAgICBXS0NvbnRleHRTZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHdrQ29udGV4dCwga1dLUGx1Z2luTG9hZENsaWVudFBvbGlj
eUFsbG93LCBhcHBsZUhvc3QuZ2V0KCksIHNpbHZlcmxpZ2h0SWRlbnRpZmllci5nZXQoKSwgc2ls
dmVybGlnaHRWZXJzaW9uLmdldCgpKTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVz
ID0gcHJvY2Vzc1Bvb2wuZ2V0KCkuX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKKyAgICBFWFBF
Q1RfRVEoMlUsIHBvbGljaWVzLmNvdW50KTsKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzRm9y
RW1wdHlIb3N0ID0gcG9saWNpZXNbQCIiXTsKKyAgICBFWFBFQ1RfRVEoMlUsIHBvbGljaWVzRm9y
RW1wdHlIb3N0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9s
aWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl0p
LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFzaywgW3Bv
bGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJd
W0AiMjYuMC4wLjEyNiJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDFV
LCAoKE5TRGljdGlvbmFyeSAqKXBvbGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1pY3Jvc29mdC5T
aWx2ZXJsaWdodFBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRD
bGllbnRQb2xpY3lCbG9jaywgW3BvbGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1pY3Jvc29mdC5T
aWx2ZXJsaWdodFBsdWdpbiJdW0AiNS4xLjUwOTAxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0p
OworICAgIAorICAgIE5TRGljdGlvbmFyeSAqcG9saWNpZXNGb3JBcHBsZUhvc3QgPSBwb2xpY2ll
c1tAImFwcGxlLmNvbSJdOworICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXNGb3JBcHBsZUhvc3Qu
Y291bnQpOworICAgIEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckFw
cGxlSG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSkuY291bnQpOwor
ICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsIFtwb2xp
Y2llc0ZvckFwcGxlSG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXVtA
IjI2LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOworICAgIEVYUEVDVF9FUSgxVSwg
KChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckFwcGxlSG9zdFtAImNvbS5taWNyb3NvZnQuU2ls
dmVybGlnaHRQbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5QWxsb3csIFtwb2xpY2llc0ZvckFwcGxlSG9zdFtAImNvbS5taWNyb3NvZnQuU2ls
dmVybGlnaHRQbHVnaW4iXVtAIjUuMS41MDkwMS4wIl0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsK
KyAgICAKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpuZXdQb2xpY2llcyA9IFtwb2xpY2llcyBt
dXRhYmxlQ29weV07CisgICAgW25ld1BvbGljaWVzIHJlbW92ZU9iamVjdEZvcktleTpAImFwcGxl
LmNvbSJdOworICAgIG5ld1BvbGljaWVzW0AiZ29vZ2xlLmNvbSJdID0gW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBuZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtAImNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSA9IFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF07CisgICAgbmV3UG9saWNpZXNbQCJnb29nbGUuY29tIl1bQCJjb20ubWFj
cm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl1bQCIyNi4wLjAuMTI2Il0gPSBbW05TTnVtYmVy
IGFsbG9jXSBpbml0V2l0aFVuc2lnbmVkSW50OmtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxv
d0Fsd2F5c107CisgICAgbmV3UG9saWNpZXNbQCJnb29nbGUuY29tIl1bQCJjb20uYXBwbGUuUXVp
Y2tUaW1lLnBsdWdpbiJdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAg
ICBuZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2lu
Il1bQCIxLjAiXSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoVW5zaWduZWRJbnQ6a1dLUGx1
Z2luTG9hZENsaWVudFBvbGljeUJsb2NrXTsKKyAgICBuZXdQb2xpY2llc1tAImdvb2dsZS5jb20i
XVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjEiXSA9IFtbTlNOdW1iZXIgYWxs
b2NdIGluaXRXaXRoVW5zaWduZWRJbnQ6a1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93XTsK
KyAgICAKKyAgICBbcHJvY2Vzc1Bvb2wuZ2V0KCkgX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzOm5ld1BvbGljaWVzXTsKKyAgICAKKyAgICBwb2xpY2llcyA9IHByb2Nlc3NQb29sLmdldCgp
Ll9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CisgICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llcy5j
b3VudCk7CisgICAgcG9saWNpZXNGb3JFbXB0eUhvc3QgPSBwb2xpY2llc1tAIiJdOworICAgIEVY
UEVDVF9FUSgyVSwgcG9saWNpZXNGb3JFbXB0eUhvc3QuY291bnQpOworICAgIEVYUEVDVF9FUSgx
VSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllci5wbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QXNrLCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRp
YS5GbGFzaCBQbGF5ZXIucGx1Z2luIl1bQCIyNi4wLjAuMTI2Il0gdW5zaWduZWRJbnRlZ2VyVmFs
dWVdKTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9saWNpZXNGb3JFbXB0
eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl0pLmNvdW50KTsKKyAgICBF
WFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2NrLCBbcG9saWNpZXNGb3JFbXB0
eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl1bQCI1LjEuNTA5MDEuMCJd
IHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgCisgICAgRVhQRUNUX0VRKHRydWUsICFwb2xp
Y2llc1tAImFwcGxlLmNvbSJdKTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzRm9y
R29vZ2xlSG9zdCA9IHBvbGljaWVzW0AiZ29vZ2xlLmNvbSJdOworICAgIEVYUEVDVF9FUSgyVSwg
cG9saWNpZXNGb3JHb29nbGVIb3N0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0
aW9uYXJ5ICopcG9saWNpZXNGb3JHb29nbGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxh
eWVyLnBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQ
b2xpY3lBbGxvd0Fsd2F5cywgW3BvbGljaWVzRm9yR29vZ2xlSG9zdFtAImNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllci5wbHVnaW4iXVtAIjI2LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1
ZV0pOworICAgIEVYUEVDVF9FUSgyVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0Zvckdvb2ds
ZUhvc3RbQCJjb20uYXBwbGUuUXVpY2tUaW1lLnBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNU
X0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaywgW3BvbGljaWVzRm9yR29vZ2xlSG9z
dFtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjAiXSB1bnNpZ25lZEludGVnZXJW
YWx1ZV0pOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3csIFtw
b2xpY2llc0Zvckdvb2dsZUhvc3RbQCJjb20uYXBwbGUuUXVpY2tUaW1lLnBsdWdpbiJdW0AiMS4x
Il0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKKyAgICAKKyAgICBXS0NvbnRleHRDbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKHdrQ29udGV4dCk7CisgICAgcG9saWNpZXMgPSBwcm9jZXNzUG9vbC5n
ZXQoKS5fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOworICAgIEVYUEVDVF9FUSgwVSwgcG9saWNp
ZXMuY291bnQpOworfQorCisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313139</attachid>
            <date>2017-06-16 14:36:47 -0700</date>
            <delta_ts>2017-06-16 18:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173472-20170616143646.patch</filename>
            <type>text/plain</type>
            <size>29593</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEyOTEyZTI2ZDcyMmFk
ZmU3ZDQ5YjY0ZGNiOTk1ODRjNGQzNGUyMC4uMzdjMTUzMDAxZGY5ZDFmNzIwZjk2NWFiNzllMDg0
YmE2YWVlMDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIFdLUHJvY2Vz
c1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9s
aWNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4NTg4MTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIEFkZCBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
TWF4aW11bSB2YWx1ZSB0byBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGVudW1lcmF0aW9uCisgICAg
ICAgIHRvIGZhY2lsaXRhdGUgaW5wdXQgdmFsdWUgdmFsaWRhdGlvbiBvbiBBUEkgc2lkZS4KKwor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5oOgorCiAyMDE3LTA2LTE1ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4OiBbaU9TXSBHZW5l
cmF0ZSBhIHNpbXVsYXRlZCBjcmFzaCB3aGVuIHRoZSBXZWJUaHJlYWQgc3RhcnRzIGluIE1vYmls
ZVNhZmFyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGRkNGQ1NmJlODUxMTdkYjQxMjIyMmM5NTJiMzM0ZjY2M2Y1
MWJmOTkuLmI0Yjc2MTI5MTc1M2Y1ZTlhMTMxNTY2MzEyN2EzOTE1NjQ1N2ViNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MyBAQAorMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBXS1Byb2Nlc3NQb29sIFNQSSB0byBlZmZpY2ll
bnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQgY2xpZW50IHBvbGljaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0NzIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI4ODU4ODE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4K
KworICAgICAgICBBZGQgV0tQcm9jZXNzUG9vbCBTUEkgdG8gZWZmaWNpZW50bHkgcmVzZXQgYWxs
IHBsdWdpbiBsb2FkIGNsaWVudCBwb2xpY2llczoKKyAgICAgICAgW1dLUHJvY2Vzc1Bvb2wgX3Jl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzXS4gVGhpcyBuZXcgU1BJIGNsZWFycyBhbGwKKyAg
ICAgICAgZXhpc3RpbmcgcG9saWNpZXMgYW5kIHRoZW4gc2V0cyBhbGwgb2YgdGhlbSB3aXRoIG5l
dyB2YWx1ZXMsIHdpdGggYQorICAgICAgICBtaW5pbWFsIGFtb3VudCBvZiBJUEMuCisKKyAgICAg
ICAgVG8gYWNoaWV2ZSB0aGlzLCBjbGllbnRzIHdvdWxkIHByZXZpb3VzbHkgaGF2ZSB0byBjYWxs
CisgICAgICAgIDEuIFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSB3aGljaCB3
b3VsZCBjYXVzZSBhIGJyb2FkY2FzdCBJUEMgdG8KKyAgICAgICAgICAgZXZlcnkgV2ViQ29udGVu
dCBwcm9jZXNzLgorICAgICAgICAyLiBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KCkgcmVwZWF0ZWRseSB0byBhZGQgZWFjaCBwb2xpY3kgb25lIGJ5CisgICAgICAgICAgIG9uZS4g
RWFjaCBjYWxsIHRvIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koKSB3b3VsZCBj
YXVzZSBhIGJyb2FkY2FzdAorICAgICAgICAgICBJUEMgdG8gZXZlcnkgV2ViQ29udGVudCBwcm9j
ZXNzLgorCisgICAgICAgIFRoZSBuZXcgU1BJIGRvZXMgdGhlIHNhbWUgam9iIHdpdGggYSBzaW5n
bGUgYnJvYWRjYXN0IElQQyB0byBldmVyeSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAg
IChpc1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKToKKyAgICAgICAgKHRvUGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzSGFzaE1hcCk6CisgICAgICAgIChwb2xpY2llc0hhc2hNYXBUb0Rp
Y3Rpb25hcnkpOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llczpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBv
bGljaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisK
IDIwMTctMDYtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNpbmcgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6
XSB0byBzd2FwIG91dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHBy
b3ZpZGVyIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMDg5M2Zj
OTlhN2U4Y2Y2NzJmZTFmYWFiNjJmNTkxMTNlYWJhMzU1Zi4uNGNlODU0MTI4NmVhZThkZDg0OGM3
YjIzYTk2MDVlODI4ZGViNDUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAg
LTQ1LDYgKzQ1LDggQEAgZW51bSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IDogdWludDhfdCB7CiAK
ICAgICAvLyBUaGUgcGx1Zy1pbiBtb2R1bGUgc2hvdWxkIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUg
b2Ygd2hldGhlciBXZWJLaXQgaGFzIGFza2VkIGl0IHRvIGJlIGJsb2NrZWQuCiAgICAgUGx1Z2lu
TG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzLAorCisgICAgUGx1Z2luTG9hZENsaWVudFBvbGlj
eU1heGltdW0gPSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMKIH07CiAKIHN0cnVj
dCBNaW1lQ2xhc3NJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA3MGZiNmU4OTYzMjczN2IxYzQxZDQ4MTZiYmFi
MDY5ZTM4NzBhMDJiLi4yNDljMTJmNmFhZmY3NGQyODU2MWYxZmZlYjhhZDNkODljMDhhMTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAj
aW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlH
YW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCkBAIC00NSw2ICs0Niw3IEBA
CiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI0OCw2ICsyNTAsMTAxIEBAIC0gKHZv
aWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnkKICAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXJzKElQQzo6RGF0
YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2Rh
dGEgbGVuZ3RoXSkpKTsKIH0KIAorI2lmICFUQVJHRVRfT1NfSVBIT05FCisKKyNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKworc3RhdGljIGJvb2wgaXNQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5QWNjZXB0YWJsZSh1bnNpZ25lZCBwb2xpY3kpCit7CisgICAgcmV0dXJuIHBvbGljeSA8PSBX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5TWF4aW11bTsKK30KK3N0YXRpYyBIYXNoTWFw
PFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+IHRvUGx1
Z2luTG9hZENsaWVudFBvbGljaWVzSGFzaE1hcChOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkpCit7
CisgICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3Ry
aW5nLCB1aW50OF90Pj4+IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKKyAgICBbZGljdGlvbmFy
eSBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBuc0hvc3QsIGlkIG5zUG9s
aWNpZXNGb3JIb3N0LCBCT09MICpzdG9wKSB7CisgICAgICAgIGlmICghW25zSG9zdCBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0
aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmICghW25zUG9saWNpZXNGb3JIb3N0IGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVn
aW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0
aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgU3RyaW5nIGhvc3QgPSAoTlNTdHJpbmcgKiluc0hvc3Q7CisgICAgICAgIF9f
YmxvY2sgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9saWNpZXNG
b3JIb3N0OworICAgICAgICBbbnNQb2xpY2llc0Zvckhvc3QgZW51bWVyYXRlS2V5c0FuZE9iamVj
dHNVc2luZ0Jsb2NrOl4oaWQgbnNJZGVudGlmaWVyLCBpZCBuc1ZlcnNpb25zVG9Qb2xpY2llcywg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCFbbnNJZGVudGlmaWVyIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0
aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghW25zVmVyc2lvbnNUb1BvbGljaWVzIGlz
S2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3
YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBidW5kbGVJ
ZGVudGlmaWVyID0gKE5TU3RyaW5nICopbnNJZGVudGlmaWVyOworICAgICAgICAgICAgX19ibG9j
ayBIYXNoTWFwPFN0cmluZywgdWludDhfdD4gdmVyc2lvbnNUb1BvbGljaWVzOworICAgICAgICAg
ICAgW25zVmVyc2lvbnNUb1BvbGljaWVzIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9j
azpeKGlkIG5zVmVyc2lvbiwgaWQgbnNQb2xpY3ksIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIVtuc1ZlcnNpb24gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewor
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25n
IGZvcm1hdCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICghW25zUG9saWN5IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0pIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lu
cywgIl9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlv
bmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwb2xpY3kgPSAoKE5TTnVt
YmVyICopbnNQb2xpY3kpLnVuc2lnbmVkSW50VmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKCFp
c1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBY2NlcHRhYmxlKHBvbGljeSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGx1Z2lucywgIl9yZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyB3YXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBpbiB3cm9uZyBmb3JtYXQiKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBTdHJpbmcgdmVyc2lvbiA9IChOU1N0cmluZyAqKW5zVmVyc2lvbjsKKyAgICAgICAg
ICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMuYWRkKHZlcnNpb24sIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHBvbGljeSkpOworICAgICAgICAgICAgfV07CisgICAgICAgICAgICBpZiAoIXZlcnNpb25z
VG9Qb2xpY2llcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcG9saWNpZXNGb3JIb3N0LmFk
ZChidW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKHZlcnNpb25zVG9Qb2xpY2llcykpOworICAgICAg
ICB9XTsKKyAgICAgICAgaWYgKCFwb2xpY2llc0Zvckhvc3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmFkZChob3N0LCBXVEZNb3ZlKHBvbGljaWVzRm9y
SG9zdCkpOworICAgIH1dOworICAgIHJldHVybiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7Cit9
CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25z
dCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90
Pj4+JiBtYXApCit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcG9saWNpZXMgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBt
YXApIHsKKyAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBob3N0UGFpci5rZXk7CisgICAgICAgIHBv
bGljaWVzW2hvc3RdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgZm9yIChhdXRvJiBidW5kbGVJZGVudGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7Cisg
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlcklkZW50aWZpZXIgPSBidW5kbGVJZGVudGlmaWVy
UGFpci5rZXk7CisgICAgICAgICAgICBwb2xpY2llc1tob3N0XVtidW5kbGVySWRlbnRpZmllcl0g
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgZm9yIChh
dXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgTlNTdHJpbmcgKnZlcnNpb24gPSB2ZXJzaW9uUGFpci5rZXk7CisgICAgICAgICAg
ICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdW3ZlcnNpb25dID0gW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDp2ZXJzaW9uUGFpci52YWx1ZV07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHBvbGljaWVzOworfQorCisjZW5kaWYK
KworLSAodm9pZClfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6KE5TRGljdGlvbmFyeSAq
KXBvbGljaWVzCit7CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgX3Byb2Nl
c3NQb29sLT5yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyh0b1BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llc0hhc2hNYXAocG9saWNpZXMpKTsKKyNlbmRpZgorfQorCistKE5TRGljdGlvbmFyeSAq
KV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMKK3sKKyAgICBhdXRvJiBtYXAgPSBfcHJvY2Vzc1Bv
b2wtPnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcygpOworICAgIHJldHVybiBwb2xpY2llc0hhc2hN
YXBUb0RpY3Rpb25hcnkobWFwKTsKK30KKyNlbmRpZgorCiAKIC0gKGlkIDxfV0tEb3dubG9hZERl
bGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDdlOTA5
NzU4ZWE1ZTU3YWY3YzQyZDk2NTE4ZmNjZjcyNDRmMDE4NjkuLmI5Yjg2ODdmMTgwNmM0NjY4MWNm
OGQ3OGYwOGE0NzY5N2E5NjFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTUyLDYgKzUyLDEx
IEBACiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlk
IDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPj4KIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5k
bGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCisjaWYgIVRBUkdFVF9P
U19JUEhPTkUKKy0gKHZvaWQpX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOihOU0RpY3Rp
b25hcnkgKilwb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7
CisjZW5kaWYKKwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxv
YWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0
ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZjlmZmFlZjFjNjU4MjUyOGJlOTU0
NTU2N2RmNGUxZThlOTBhOTkyLi5kMDcyZDc0ZDZkMDE4N2VmYmFkNWY2ZGU2NjgwNTRiNjUwZjI1
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTE1ODgsMjEgKzE1ODgsMjggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVp
bnQ4X3Q+PiBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAobV9wbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMuY29udGFpbnMoaG9zdCkpCi0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVyID0g
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZ2V0KGhvc3QpOwotCi0gICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBpZiAocG9saWNpZXNCeUlkZW50
aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllcikpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xp
Y2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJZGVudGlmaWVyKTsKLQorICAg
IGF1dG8mIHBvbGljaWVzRm9ySG9zdCA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuc3Vy
ZShob3N0LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4
X3Q+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVz
ID0gcG9saWNpZXNGb3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyLCBbXSB7IHJldHVybiBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHZlcnNp
b25zVG9Qb2xpY2llcy5zZXQodmVyc2lvblN0cmluZywgcG9saWN5KTsKLSAgICBwb2xpY2llc0J5
SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllciwgdmVyc2lvbnNUb1BvbGljaWVzKTsKLSAg
ICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5zZXQoaG9zdCwgcG9saWNpZXNCeUlkZW50aWZp
ZXIpOwogCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRlbnRpZmllciwgdmVy
c2lvblN0cmluZykpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCB1aW50OF90Pj4+JiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpCit7CisgICAg
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgaG9z
dFBhaXIgOiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKKyAgICAgICAgYXV0byYgcG9saWNp
ZXNGb3JIb3N0ID0gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5zdXJlKGhvc3RQYWlyLmtl
eSwgW10geyByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZp
ZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8mIHZlcnNpb25zVG9Q
b2xpY2llcyA9IHBvbGljaWVzRm9ySG9zdC5lbnN1cmUoYnVuZGxlSWRlbnRpZmllclBhaXIua2V5
LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywgdWludDhfdD4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFpciA6IGJ1bmRsZUlkZW50aWZp
ZXJQYWlyLnZhbHVlKQorICAgICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcy5zZXQodmVy
c2lvblBhaXIua2V5LCB2ZXJzaW9uUGFpci52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyhtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcykpOworfQorCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKIHsKICAgICBtX3BsdWdp
bkxvYWRDbGllbnRQb2xpY2llcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAzNjgxY2U4MDU2ZmE0ZDI5YmUwZTY2ZDJhZDhlODgyMTAwNjM2
M2Y4Li4xOWE1NWQ0MWUwOGM2NmRlMzg2NTJiNjU2YzIyODk3MzUxZTI0N2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTk3LDcgKzE5Nyw5IEBAIHB1
YmxpYzoKICAgICBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbkluZm9TdG9yZSgpIHsgcmV0dXJuIG1f
cGx1Z2luSW5mb1N0b3JlOyB9CiAKICAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7
CisgICAgdm9pZCByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhjb25zdCBIYXNoTWFwPFN0
cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+Jik7CiAgICAg
dm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CisgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXM7IH0KICNlbmRpZgogCiAgICAgcGlkX3QgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkYmJiMGE2NGQyOWM2
YTJiYjM3OGM0NjJjZTRiYTI1ZjQyYjMwNjQ4Li42YjkyZjljNzgyMWNkMGQxMzkxYTNhYTc0ZmZh
YTY2Njk2ODNmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTQwMCwxMiArNDAwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAgICBmb3Ig
KGF1dG8gaG9zdEl0ZXIgPSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5iZWdp
bigpOyBob3N0SXRlciAhPSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbmQo
KTsgKytob3N0SXRlcikgewotICAgICAgICBmb3IgKGF1dG8gYnVuZGxlSWRlbnRpZmllckl0ZXIg
PSBob3N0SXRlci0+dmFsdWUuYmVnaW4oKTsgYnVuZGxlSWRlbnRpZmllckl0ZXIgIT0gaG9zdEl0
ZXItPnZhbHVlLmVuZCgpOyArK2J1bmRsZUlkZW50aWZpZXJJdGVyKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8gdmVyc2lvbkl0ZXIgPSBidW5kbGVJZGVudGlmaWVySXRlci0+dmFsdWUuYmVnaW4o
KTsgdmVyc2lvbkl0ZXIgIT0gYnVuZGxlSWRlbnRpZmllckl0ZXItPnZhbHVlLmVuZCgpOyArK3Zl
cnNpb25JdGVyKQotICAgICAgICAgICAgICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xl
dG9uKCkuc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5Pih2ZXJzaW9uSXRlci0+dmFsdWUpLCBob3N0SXRlci0+a2V5LCBidW5kbGVJZGVu
dGlmaWVySXRlci0+a2V5LCB2ZXJzaW9uSXRlci0+a2V5KTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpAQCAtOTI2LDYgKzky
MSwyMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodWludDhf
dCBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgYwogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJv
Y2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxXVEY6OlN0
cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgdWludDhfdD4+
PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQoreworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKSAmJiBQTEFURk9STShNQUMpCisgICAgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygp
OworCisgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykg
eworICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZpZXJQYWlyIDogaG9zdFBhaXIudmFs
dWUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlm
aWVyUGFpci52YWx1ZSkKKyAgICAgICAgICAgICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9h
ZENsaWVudFBvbGljeT4odmVyc2lvblBhaXIudmFsdWUpLCBob3N0UGFpci5rZXksIGJ1bmRsZUlk
ZW50aWZpZXJQYWlyLmtleSwgdmVyc2lvblBhaXIua2V5KTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDZlZDE5OThkYmUxNmY2MDliNDg2
NmVmN2IyYWI2ZDZhNjE4Yjk4MWUuLjc4MmQ1M2JkNDRhOTc5ZTBlZDgxNzU0YmIxZmEyYjJhODUy
NDMxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzIsNiAr
MTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0
IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBwbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Np
b25JRCk7CiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5
LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICB2b2lkIHJlc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxT
dHJpbmcsIHVpbnQ4X3Q+Pj4mKTsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMo
KTsKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2ODBiZjRkNjNmMDdjNDAwZjhj
YWNjZjM2NTM0MTJhZGJiMThkNWRkLi44NGY1NWUwMDUwMjkzZThmZWIyODNlYzBjNDBhMTU2MzQ1
NjYwNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC01NSw2ICs1NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhI
YXNoTWFwPHVpbnQzMl90LGRvdWJsZT4gaGFzaGVzKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzKEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVpbnQzMl90
LGRvdWJsZT4+IGhhc2hlcykKICAgICBTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3Qg
cG9saWN5LCBTdHJpbmcgaG9zdCwgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIsIFN0cmluZyB2ZXJz
aW9uU3RyaW5nKQorICAgIFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8U3Ry
aW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4gcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKQogICAgIENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogICAgIFJl
ZnJlc2hQbHVnaW5zKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDY1NTMzMzcyMGVmMzgyMzZiZDk3MmIwZGM1ZTBhOWRkZDZkNDU4MDEuLjli
NGExMzg4Yjk5YWQzY2U0ZmExYzFjY2YwZjcyYTYyODU1YjBmOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0w
Ni0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFk
ZCBXS1Byb2Nlc3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2luIGxvYWQg
Y2xpZW50IHBvbGljaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzM0NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODU4ODE3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292
ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9QbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW06IEFkZGVkLgorICAgICAgICAoVEVTVCk6
CisKIDIwMTctMDYtMTUgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gVGhlIHJ1bi1taW5pYnJvd3NlciBzY3JpcHQgc2hvdWxk
IGFsbG93IHRvIGV4ZWN1dGUgYWxzbyBhIFdQRSBsYXVuY2hlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkY2I2NjkzNTNiMWIxM2YwNDc3M2YxZDQxYmY4NWE1OGQ2ZWU0MWUwLi41NDU1OWY3
NzBmZDNkOTVmMmY0OTM0MzQ2ZWFhZTY5MzFlYjU0MmZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDg0LDYgKzQ4NCw3IEBACiAJCTgzNjFGMTc4MUU2MTBCNEUwMDc1OUIyNSAvKiBsaW5r
LXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjFGMTc3MUU2MTBCMjEw
MDc1OUIyNSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLXdpdGgtc2xhc2hlcy5odG1s
ICovOyB9OwogCQk4MzdBMzVGMTFEOUExRTdEMDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0Qmxv
YlVSTC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzN0EzNUYwMUQ5QTFFNjQwMDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJM
Lmh0bWwgKi87IH07CiAJCTgzQjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lv
blN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQjZERTZFMUVFNzUyMEYwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcCAqLzsg
fTsKKwkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkFF
RThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi87IH07
CiAJCTgzREUxMzREMUVGMUM1MDgwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzREUxMzRDMUVG
MUM0RkUwMEMxQjM1NSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLzsgfTsKIAkJOEU0QTg1
MzcxRTFEMUFCMjAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTRBODUzNjFFMUQxQUExMDBGNTNCMEYgLyog
R3JpZFBvc2l0aW9uLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxv
dHMtb2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRt
bCAqLzsgfTsKQEAgLTEyOTQsNiArMTI5NSw3IEBACiAJCTgzN0EzNUYwMUQ5QTFFNjQwMDY2M0M1
NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzQjZERTZFMUVFNzUyMEYwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3RvcmVTZXNzaW9uU3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I4OEEzMzFDODAwNTZEMDBC
QjI0MTggLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVE1MUGFyc2VySWRpb21zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNERTEzNEMx
RUYxQzRGRTAwQzFCMzU1IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3Vu
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYz
NTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3ODgsNiArMTc5MCw3IEBACiAJCQkJMzdBMjJBQTUxRENBQTI3MjAw
QUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNBZnRlckNyYXNoLm1tICov
LAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0g
Ki8sCiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5Lm1tICovLAorCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8q
IFByZWZlcmVuY2VzLm1tICovLAogCQkJCTdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAvKiBQcmVw
YXJlRm9yTW92ZVRvV2luZG93Lm1tICovLAogCQkJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAv
KiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLywKQEAgLTMwOTksNiArMzEwMiw3IEBACiAJ
CQkJN0NDRTdFQ0YxQTQxMUE3RTAwNDQ3QzRDIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVS
ZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTcxMUQ0MjhFNEIwMEREN0M2OCAv
KiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDAxQTQx
MUE3RTAwNDQ3QzRDIC8qIFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQxMUE0MTFBN0Uw
MDQ0N0M0QyAvKiBTdHJpbmdUcnVuY2F0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlFQ0E2ODBD
RTFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFRDIxQTQxMUE3RTAwNDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlZDIyOWFkMTZmNzRhMTNjYWEwOTg0ZmFkZTIxNzQzYmI4ZDc4NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9QbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMubW0KQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRleHRQcml2
YXRlTWFjLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQbHVnaW5JbmZvcm1hdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAor
CitURVNUKFdLUHJvY2Vzc1Bvb2wsIHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQorewor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdFdLKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5p
dF0pOworICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSAoV0tDb250ZXh0UmVmKXByb2Nlc3NQ
b29sLmdldCgpOworICAgIAorICAgIGF1dG8gZW1wdHlIb3N0ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOworICAgIGF1dG8gYXBwbGVIb3N0ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYXBwbGUuY29tIikpOworICAgIGF1dG8gZmxh
c2hJZGVudGlmaWVyID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29t
Lm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiIpKTsKKyAgICBhdXRvIGZsYXNoVmVyc2lv
biA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIjI2LjAuMC4xMjYiKSk7
CisgICAgYXV0byBzaWx2ZXJsaWdodElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIikpOworICAg
IGF1dG8gc2lsdmVybGlnaHRWZXJzaW9uID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiNS4xLjUwOTAxLjAiKSk7CisgICAgV0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeSh3a0NvbnRleHQsIGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2ssIGVtcHR5SG9z
dC5nZXQoKSwgZmxhc2hJZGVudGlmaWVyLmdldCgpLCBmbGFzaFZlcnNpb24uZ2V0KCkpOworICAg
IFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsIGFwcGxlSG9zdC5nZXQoKSwgZmxhc2hJZGVudGlm
aWVyLmdldCgpLCBmbGFzaFZlcnNpb24uZ2V0KCkpOworICAgIFdLQ29udGV4dFNldFBsdWdpbkxv
YWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QmxvY2ss
IGVtcHR5SG9zdC5nZXQoKSwgc2lsdmVybGlnaHRJZGVudGlmaWVyLmdldCgpLCBzaWx2ZXJsaWdo
dFZlcnNpb24uZ2V0KCkpOworICAgIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
d2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3csIGFwcGxlSG9zdC5nZXQo
KSwgc2lsdmVybGlnaHRJZGVudGlmaWVyLmdldCgpLCBzaWx2ZXJsaWdodFZlcnNpb24uZ2V0KCkp
OworICAgIAorICAgIE5TRGljdGlvbmFyeSAqcG9saWNpZXMgPSBwcm9jZXNzUG9vbC5nZXQoKS5f
cGx1Z2luTG9hZENsaWVudFBvbGljaWVzOworICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXMuY291
bnQpOworICAgIE5TRGljdGlvbmFyeSAqcG9saWNpZXNGb3JFbXB0eUhvc3QgPSBwb2xpY2llc1tA
IiJdOworICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXNGb3JFbXB0eUhvc3QuY291bnQpOworICAg
IEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9F
UShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrLCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJj
b20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl1bQCIyNi4wLjAuMTI2Il0gdW5zaWdu
ZWRJbnRlZ2VyVmFsdWVdKTsKKyAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9s
aWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl0pLmNv
dW50KTsKKyAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2NrLCBbcG9s
aWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl1bQCI1
LjEuNTA5MDEuMCJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgCisgICAgTlNEaWN0aW9u
YXJ5ICpwb2xpY2llc0ZvckFwcGxlSG9zdCA9IHBvbGljaWVzW0AiYXBwbGUuY29tIl07CisgICAg
RVhQRUNUX0VRKDJVLCBwb2xpY2llc0ZvckFwcGxlSG9zdC5jb3VudCk7CisgICAgRVhQRUNUX0VR
KDFVLCAoKE5TRGljdGlvbmFyeSAqKXBvbGljaWVzRm9yQXBwbGVIb3N0W0AiY29tLm1hY3JvbWVk
aWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdKS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdp
bkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cywgW3BvbGljaWVzRm9yQXBwbGVIb3N0W0AiY29t
Lm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdW0AiMjYuMC4wLjEyNiJdIHVuc2lnbmVk
SW50ZWdlclZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDFVLCAoKE5TRGljdGlvbmFyeSAqKXBvbGlj
aWVzRm9yQXBwbGVIb3N0W0AiY29tLm1pY3Jvc29mdC5TaWx2ZXJsaWdodFBsdWdpbiJdKS5jb3Vu
dCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdywgW3BvbGlj
aWVzRm9yQXBwbGVIb3N0W0AiY29tLm1pY3Jvc29mdC5TaWx2ZXJsaWdodFBsdWdpbiJdW0AiNS4x
LjUwOTAxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOworICAgIAorICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKm5ld1BvbGljaWVzID0gW3BvbGljaWVzIG11dGFibGVDb3B5XTsKKyAgICBbbmV3
UG9saWNpZXMgcmVtb3ZlT2JqZWN0Rm9yS2V5OkAiYXBwbGUuY29tIl07CisgICAgbmV3UG9saWNp
ZXNbQCJnb29nbGUuY29tIl0gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwor
ICAgIG5ld1BvbGljaWVzW0AiZ29vZ2xlLmNvbSJdW0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxh
eWVyLnBsdWdpbiJdID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBu
ZXdQb2xpY2llc1tAImdvb2dsZS5jb20iXVtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5w
bHVnaW4iXVtAIjI2LjAuMC4xMjYiXSA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoVW5zaWdu
ZWRJbnQ6a1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzXTsKKyAgICBuZXdQb2xp
Y2llc1tAImdvb2dsZS5jb20iXVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl0gPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIG5ld1BvbGljaWVzW0AiZ29vZ2xl
LmNvbSJdW0AiY29tLmFwcGxlLlF1aWNrVGltZS5wbHVnaW4iXVtAIjEuMCJdID0gW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDprV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Qmxv
Y2tdOworICAgIG5ld1BvbGljaWVzW0AiZ29vZ2xlLmNvbSJdW0AiY29tLmFwcGxlLlF1aWNrVGlt
ZS5wbHVnaW4iXVtAIjEuMSJdID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZElu
dDprV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3ddOworICAgIAorICAgIFtwcm9jZXNzUG9v
bC5nZXQoKSBfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6bmV3UG9saWNpZXNdOworICAg
IAorICAgIHBvbGljaWVzID0gcHJvY2Vzc1Bvb2wuZ2V0KCkuX3BsdWdpbkxvYWRDbGllbnRQb2xp
Y2llczsKKyAgICBFWFBFQ1RfRVEoMlUsIHBvbGljaWVzLmNvdW50KTsKKyAgICBwb2xpY2llc0Zv
ckVtcHR5SG9zdCA9IHBvbGljaWVzW0AiIl07CisgICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llc0Zv
ckVtcHR5SG9zdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKDFVLCAoKE5TRGljdGlvbmFyeSAqKXBv
bGljaWVzRm9yRW1wdHlIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJd
KS5jb3VudCk7CisgICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2ssIFtw
b2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4i
XVtAIjI2LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOworICAgIEVYUEVDVF9FUSgx
VSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5taWNyb3NvZnQu
U2lsdmVybGlnaHRQbHVnaW4iXSkuY291bnQpOworICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5QmxvY2ssIFtwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5taWNyb3NvZnQu
U2lsdmVybGlnaHRQbHVnaW4iXVtAIjUuMS41MDkwMS4wIl0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
KTsKKyAgICAKKyAgICBFWFBFQ1RfRVEodHJ1ZSwgIXBvbGljaWVzW0AiYXBwbGUuY29tIl0pOwor
ICAgIAorICAgIE5TRGljdGlvbmFyeSAqcG9saWNpZXNGb3JHb29nbGVIb3N0ID0gcG9saWNpZXNb
QCJnb29nbGUuY29tIl07CisgICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llc0Zvckdvb2dsZUhvc3Qu
Y291bnQpOworICAgIEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0Zvckdv
b2dsZUhvc3RbQCJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl0pLmNvdW50KTsK
KyAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93QWx3YXlzLCBbcG9s
aWNpZXNGb3JHb29nbGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJd
W0AiMjYuMC4wLjEyNiJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDJV
LCAoKE5TRGljdGlvbmFyeSAqKXBvbGljaWVzRm9yR29vZ2xlSG9zdFtAImNvbS5hcHBsZS5RdWlj
a1RpbWUucGx1Z2luIl0pLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENsaWVu
dFBvbGljeUJsb2NrLCBbcG9saWNpZXNGb3JHb29nbGVIb3N0W0AiY29tLmFwcGxlLlF1aWNrVGlt
ZS5wbHVnaW4iXVtAIjEuMCJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7CisgICAgRVhQRUNUX0VR
KGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdywgW3BvbGljaWVzRm9yR29vZ2xlSG9zdFtA
ImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjEiXSB1bnNpZ25lZEludGVnZXJWYWx1
ZV0pOworICAgIAorICAgIFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMod2tDb250
ZXh0KTsKKyAgICBwb2xpY2llcyA9IHByb2Nlc3NQb29sLmdldCgpLl9wbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXM7CisgICAgRVhQRUNUX0VRKDBVLCBwb2xpY2llcy5jb3VudCk7Cit9CisKKyNlbmRp
ZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313170</attachid>
            <date>2017-06-16 18:11:43 -0700</date>
            <delta_ts>2017-06-19 11:22:02 -0700</delta_ts>
            <desc>Follow-up improvement</desc>
            <filename>bug-173472-20170616181142.patch</filename>
            <type>text/plain</type>
            <size>3541</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAzNTQzNTk4ZjlhZjk1
OTVlODY1ZjhjNDM0NWUyOWU1ZDZkYmQyNy4uYjk4ZWY3NzI5N2E4M2IwNjg0M2YxNTdiNDg5NjM4
NjFjNWZlMThjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtNCw2ICs0LDIwIEBACiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0NzIKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI4ODU4ODE3PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZvbGxvdy11cCB0byByMjE4NDE5IHRvIGF2b2lkIGNvcHlpbmcgdGhlIEhhc2hN
YXAgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKzIw
MTctMDYtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0sy
XSBBZGQgV0tQcm9jZXNzUG9vbCBTUEkgdG8gZWZmaWNpZW50bHkgcmVzZXQgYWxsIHBsdWdpbiBs
b2FkIGNsaWVudCBwb2xpY2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNDcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODg1ODgxNz4KKwog
ICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCiAKICAgICAgICAgQWRkIFdLUHJvY2Vz
c1Bvb2wgU1BJIHRvIGVmZmljaWVudGx5IHJlc2V0IGFsbCBwbHVnaW4gbG9hZCBjbGllbnQgcG9s
aWNpZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBkMDcyZDc0ZDZkMDE4N2VmYmFkNWY2ZGU2NjgwNTRiNjUwZjI1ODkyLi5hMjEzNDQxYzczNDQ4
MzYxMDk0MzE4OWFmZDU0YjcxYWNkZGY1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE1OTUsMTggKzE1OTUsOSBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGll
bnRQb2xpY3kgcAogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShwb2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIs
IHZlcnNpb25TdHJpbmcpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoSGFzaE1hcDxT
dHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYmIHBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcykKIHsKLSAgICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5j
bGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHBsdWdpbkxvYWRDbGllbnRQb2xp
Y2llcykgewotICAgICAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3QgPSBtX3BsdWdpbkxvYWRDbGll
bnRQb2xpY2llcy5lbnN1cmUoaG9zdFBhaXIua2V5LCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmlu
ZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAg
ICAgIGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgewot
ICAgICAgICAgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNGb3JIb3N0LmVu
c3VyZShidW5kbGVJZGVudGlmaWVyUGFpci5rZXksIFtdIHsgcmV0dXJuIEhhc2hNYXA8U3RyaW5n
LCB1aW50OF90PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpCi0gICAgICAgICAgICAg
ICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uUGFpci5rZXksIHZlcnNpb25QYWlyLnZh
bHVlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyA9
IFdURk1vdmUocGx1Z2luTG9hZENsaWVudFBvbGljaWVzKTsKICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKG1f
cGx1Z2luTG9hZENsaWVudFBvbGljaWVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMTlhNTVkNDFlMDhjNjZkZTM4NjUyYjY1NmMyMjg5NzM1
MWUyNDdmYS4uZTYxMWZhYjVhNjI0Njk5MjBjYjBiMjQxMDhlMWZkMjhjM2ViMTM3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE5Nyw3ICsxOTcsNyBA
QCBwdWJsaWM6CiAgICAgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5JbmZvU3RvcmUoKSB7IHJldHVy
biBtX3BsdWdpbkluZm9TdG9yZTsgfQogCiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpOwotICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1h
cDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYpOwor
ICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoSGFzaE1hcDxTdHJpbmcsIEhh
c2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYmKTsKICAgICB2b2lkIGNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+JiBwbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llczsgfQog
I2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>