<?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>95084</bug_id>
          
          <creation_ts>2012-08-27 07:11:36 -0700</creation_ts>
          <short_desc>[WK2] WebAudio WKTR support</short_desc>
          <delta_ts>2012-12-21 04:51:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105623</dependson>
          <blocked>103531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Dominik Röttsches (drott)">d-r</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705244</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-27 07:11:36 -0700</bug_when>
    <thetext>The WKTR interface needs to expose a setAudioData() method at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705319</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-27 09:19:20 -0700</bug_when>
    <thetext>Which tests are affected by this? I couldn&apos;t find anything related in platform/wk2/Skipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705323</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-27 09:33:38 -0700</bug_when>
    <thetext>The webaudio tests are affected by this, IIUC. It&apos;s odd they&apos;re not skipped on the mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705331</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-27 09:44:21 -0700</bug_when>
    <thetext>Oh, they&apos;re skipped from LayoutTests/platform/mac/Skipped, which is the generic Skipped list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791489</commentid>
    <comment_count>4</comment_count>
      <attachid>179455</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-14 02:38:05 -0800</bug_when>
    <thetext>Created attachment 179455
wip patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793606</commentid>
    <comment_count>5</comment_count>
      <attachid>179934</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 07:12:16 -0800</bug_when>
    <thetext>Created attachment 179934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793609</commentid>
    <comment_count>6</comment_count>
      <attachid>179935</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 07:15:06 -0800</bug_when>
    <thetext>Created attachment 179935
Patch, v2. Credit for wip patch in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793613</commentid>
    <comment_count>7</comment_count>
      <attachid>179935</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-18 07:19:25 -0800</bug_when>
    <thetext>Comment on attachment 179935
Patch, v2. Credit for wip patch in ChangeLog

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

Looks good but I&apos;d rather defer official review to a more experienced WK2 reviewer.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:312
&gt; +    printf(&quot;Content-Type: %s\n&quot;, &quot;audio/wav&quot;);

Format string looks useless here.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:326
&gt; +    printf(&quot;#EOF\n&quot;);
&gt; +    fprintf(stderr, &quot;#EOF\n&quot;);

Out of curiosity, why both are needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793616</commentid>
    <comment_count>8</comment_count>
      <attachid>179935</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-18 07:23:14 -0800</bug_when>
    <thetext>Comment on attachment 179935
Patch, v2. Credit for wip patch in ChangeLog

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:272
&gt; +WKDataRef WKBundleDataFromUint8Array(WKBundleRef bundle, JSContextRef context, JSValueRef data)

isnt this normally called UInt? Yeah, apparently both are used in WebCore, but UInt is what is used in /WebKit2

&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:185
&gt; +    // Audio testing

dot at end

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:294
&gt; +    if (m_textOutput.length())
&gt; +        dump(m_textOutput.toString().utf8().data());
&gt; +    else if (m_audioResult)
&gt; +        dumpAudio(m_audioResult.get());

You never need to dump both? assert?

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:312
&gt; +    printf(&quot;Content-Type: %s\n&quot;, &quot;audio/wav&quot;);

Why compose it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793618</commentid>
    <comment_count>9</comment_count>
      <attachid>179935</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-18 07:24:39 -0800</bug_when>
    <thetext>Comment on attachment 179935
Patch, v2. Credit for wip patch in ChangeLog

Attachment 179935 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15418115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793625</commentid>
    <comment_count>10</comment_count>
      <attachid>179935</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-18 07:34:11 -0800</bug_when>
    <thetext>Comment on attachment 179935
Patch, v2. Credit for wip patch in ChangeLog

Attachment 179935 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15402224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793730</commentid>
    <comment_count>11</comment_count>
      <attachid>179961</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 09:33:22 -0800</bug_when>
    <thetext>Created attachment 179961
Patch, v3, review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793737</commentid>
    <comment_count>12</comment_count>
      <attachid>179961</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-18 09:40:56 -0800</bug_when>
    <thetext>Comment on attachment 179961
Patch, v3, review comments addressed.

Attachment 179961 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15408230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793744</commentid>
    <comment_count>13</comment_count>
      <attachid>179967</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 09:48:12 -0800</bug_when>
    <thetext>Created attachment 179967
Patch, v4, review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793750</commentid>
    <comment_count>14</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 09:52:37 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 179935 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179935&amp;action=review
&gt; 
&gt; Looks good but I&apos;d rather defer official review to a more experienced WK2 reviewer.

Thanks.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:312
&gt; &gt; +    printf(&quot;Content-Type: %s\n&quot;, &quot;audio/wav&quot;);
&gt; 
&gt; Format string looks useless here.

It does, replaced with fixed string.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:326
&gt; &gt; +    printf(&quot;#EOF\n&quot;);
&gt; &gt; +    fprintf(stderr, &quot;#EOF\n&quot;);
&gt; 
&gt; Out of curiosity, why both are needed?

webkitpy expects an #EOF on stderr - that&apos;s the same way as Chromium&apos;s TestShell outputs it.

(In reply to comment #8)
&gt; (From update of attachment 179935 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179935&amp;action=review

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:272
&gt; &gt; +WKDataRef WKBundleDataFromUint8Array(WKBundleRef bundle, JSContextRef context, JSValueRef data)
&gt; 
&gt; isnt this normally called UInt? Yeah, apparently both are used in WebCore, but UInt is what is used in /WebKit2

Renamed to UInt, uppercased variant.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:185
&gt; &gt; +    // Audio testing
&gt; 
&gt; dot at end

Done.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:294
&gt; &gt; +    if (m_textOutput.length())
&gt; &gt; +        dump(m_textOutput.toString().utf8().data());
&gt; &gt; +    else if (m_audioResult)
&gt; &gt; +        dumpAudio(m_audioResult.get());
&gt; 
&gt; You never need to dump both? assert?

Unfortuntely, run-webkit-tests accepts only either text, or audio for the first element in dumped data and can only compare one. We give text priority, but we can&apos;t assert for audio to be empty at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793752</commentid>
    <comment_count>15</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-18 09:53:42 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 179961 [details])
&gt; Attachment 179961 [details] did not pass qt-wk2-ews (qt):
&gt; Output: http://queues.webkit.org/results/15408230

Ossy, could you help me with this one? Seems to be that the newly used JSUint8Array.h header is not included in the step that generates forwarding headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793775</commentid>
    <comment_count>16</comment_count>
      <attachid>179967</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-18 10:04:14 -0800</bug_when>
    <thetext>Comment on attachment 179967
Patch, v4, review comments addressed.

Attachment 179967 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15411204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793987</commentid>
    <comment_count>17</comment_count>
      <attachid>179967</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-18 13:20:27 -0800</bug_when>
    <thetext>Comment on attachment 179967
Patch, v4, review comments addressed.

Attachment 179967 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15411267</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794527</commentid>
    <comment_count>18</comment_count>
      <attachid>180135</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-19 04:54:43 -0800</bug_when>
    <thetext>Created attachment 180135
Patch v4, mac &amp; qt build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794545</commentid>
    <comment_count>19</comment_count>
      <attachid>180135</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-19 05:07:43 -0800</bug_when>
    <thetext>Comment on attachment 180135
Patch v4, mac &amp; qt build fixes.

Attachment 180135 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15411593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794599</commentid>
    <comment_count>20</comment_count>
      <attachid>180149</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-19 06:07:55 -0800</bug_when>
    <thetext>Created attachment 180149
Patch v5, hopefully last qt build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794615</commentid>
    <comment_count>21</comment_count>
      <attachid>180149</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-19 06:19:47 -0800</bug_when>
    <thetext>Comment on attachment 180149
Patch v5, hopefully last qt build fix

Attachment 180149 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15402719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794631</commentid>
    <comment_count>22</comment_count>
      <attachid>180159</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-19 06:43:18 -0800</bug_when>
    <thetext>Created attachment 180159
Patch, v6, more qt build fixing. thanks ossy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794634</commentid>
    <comment_count>23</comment_count>
      <attachid>180159</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-12-19 06:58:32 -0800</bug_when>
    <thetext>Comment on attachment 180159
Patch, v6, more qt build fixing. thanks ossy.

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:272
&gt; +WKDataRef WKBundleDataFromUInt8Array(WKBundleRef bundle, JSContextRef context, JSValueRef data)

This returns a new WKDataRef and should have Create in its name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794643</commentid>
    <comment_count>24</comment_count>
      <attachid>180159</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-19 07:11:20 -0800</bug_when>
    <thetext>Comment on attachment 180159
Patch, v6, more qt build fixing. thanks ossy.

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

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:439
&gt; +    WKDataRef audioData = WKBundleDataFromUInt8Array(InjectedBundle::shared().bundle(), context, data);

Missing adoptWK().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794667</commentid>
    <comment_count>25</comment_count>
      <attachid>180164</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-19 07:47:13 -0800</bug_when>
    <thetext>Created attachment 180164
Patch, v7, new review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794675</commentid>
    <comment_count>26</comment_count>
      <attachid>180164</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-19 07:57:25 -0800</bug_when>
    <thetext>Comment on attachment 180164
Patch, v7, new review comments addressed.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795247</commentid>
    <comment_count>27</comment_count>
      <attachid>180164</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 01:01:51 -0800</bug_when>
    <thetext>Comment on attachment 180164
Patch, v7, new review comments addressed.

Clearing flags on attachment: 180164

Committed r138232: &lt;http://trac.webkit.org/changeset/138232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795248</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 01:01:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796235</commentid>
    <comment_count>29</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-12-21 04:37:10 -0800</bug_when>
    <thetext>Weird regression: bug 105623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796240</commentid>
    <comment_count>30</comment_count>
      <attachid>180164</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-21 04:51:04 -0800</bug_when>
    <thetext>Comment on attachment 180164
Patch, v7, new review comments addressed.

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

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:294
&gt; -    dump(m_textOutput.toString().utf8().data());
&gt; +    if (m_textOutput.length())
&gt; +        dump(m_textOutput.toString().utf8().data());
&gt; +    else if (m_audioResult)
&gt; +        dumpAudio(m_audioResult.get());

Maybe the regression is related with this change? Just an unverified hunch though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179455</attachid>
            <date>2012-12-14 02:38:05 -0800</date>
            <delta_ts>2012-12-18 07:12:08 -0800</delta_ts>
            <desc>wip patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>6752</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5MWNmODYwNGU2ZmViYTg4Nzk4MzkwOTdjNjEyOTI2YjU3MmM3ZTQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDQgU2VwIDIwMTIgMTQ6NTY6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIXSB3
aXAKCi0tLQogU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmggICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsrCiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0dO
VW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIC4uLi9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCAgICAgICAgICAgICAgICB8ICAgIDQgKysrKwog
Li4uL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgICAgICAgICAgICAgICAg
IHwgICAgMyArKysKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggICAgICAgIHwgICAgOSArKysrKysrKy0KIDcg
ZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL1dURi93dGYvQXJy
YXlCdWZmZXJWaWV3LmgKaW5kZXggNDUxYzFiNi4uMTJjY2Y0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvQXJyYXlCdWZm
ZXJWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5o
IGIvU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgKaW5kZXggZWY5YmQyMy4uZjY4NTA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRXhwb3J0TWFjcm9zLmgKQEAgLTEyNSwxMSArMTI1LDEzIEBACiAKICNlbmRpZiAvLyBV
U0UoRVhQT1JUX01BQ1JPU19GT1JfVEVTVElORykKIAorI2lmbmRlZiBXVEZfRVhQT1JUX1BSSVZB
VEUKICNpZiBkZWZpbmVkKFdURl9JU19MSU5LRURfSU5fU0FNRV9CSU5BUlkpCiAjZGVmaW5lIFdU
Rl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCiAjZWxzZQogI2RlZmluZSBXVEZfRVhQT1JUX1BS
SVZBVEUgV1RGX0lNUE9SVAogI2VuZGlmCisjZW5kaWYgLy8gV1RGX0VYUE9SVF9QUklWQVRFCiAK
IC8vIHd4V2ViS2l0IHVzZXMgUlRUSSBiZWNhdXNlIHd4IGl0c2VsZiBkb2VzLCBzbyB1c2UgYSBz
cGVjaWFsIG1hY3JvIGZvcgogLy8gZXh0cmEgZXhwb3J0cyBpdCBuZWVkcy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM3MDYwMDMuLmExNGNjNjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQpAQCAtMTM0LDYgKzEzNCw3IEBAIExpYnJhcmllc19s
aWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2Rpcikv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcyBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvSW5qZWN0ZWRCdW5kbGUgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvaW5jbHVkZSBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2Nw
cGZsYWdzKSBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBkMzY4YzU5Li5mODNkMmE3
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI2LDYgKzI2LDcgQEAKIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICAvLyBUaGUgYmFzaWNzLgogICAgIHZvaWQgZHVtcEFzVGV4dChp
biBib29sZWFuIGR1bXBQaXhlbHMpOworICAgIHZvaWQgZHVtcEFzQXVkaW8oKTsKICAgICB2b2lk
IGR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRl
KCk7CiAgICAgdm9pZCB3YWl0VW50aWxEb25lKCk7CkBAIC0xODIsNiArMTgzLDkgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oaW4g
ZG91YmxlIGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBkb3VibGUgYWNjdXJhY3ks
IGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBhbHRpdHVkZSwgaW4gW09w
dGlvbmFsXSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlvbmFsXSBvYmplY3QgaGVh
ZGluZywgaW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmluZyBlcnJvck1lc3NhZ2Up
OwogCisgICAgLy8gQXVkaW8gdGVzdGluZworICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRBdWRp
b0RhdGEoaW4gb2JqZWN0IGRhdGEpOworCiAgICAgYm9vbGVhbiBjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcoKTsKIAogICAgIC8vIFdvcmsgcXVldWUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5k
ZXggMTAxMDIwMC4uNTQ3ODA2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtOTQ2LDYg
Kzk0Niw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAgICBjYXNlIFRlc3RS
dW5uZXI6OkFsbEZyYW1lc1RleHQ6CiAgICAgICAgIGR1bXBBbGxGcmFtZXNUZXh0KHN0cmluZ0J1
aWxkZXIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRlc3RSdW5uZXI6OkF1ZGlvOgorICAg
ICAgICAvLyBUT0RPCisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3Np
dGlvbnMoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDg1YzY4MTcuLjYzYTA3MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVQYWdlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UnVubmVyLmgiCisjaW5jbHVkZSAiSlNV
aW50OEFycmF5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiU3Ry
aW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKQEAgLTEyNSw2ICsx
MjYsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkdW1wQXNUZXh0KGJvb2wgZHVtcFBpeGVscykKICAg
ICBtX2R1bXBQaXhlbHMgPSBkdW1wUGl4ZWxzOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmR1bXBB
c0F1ZGlvKCkKK3sKKyAgICBtX3doYXRUb0R1bXAgPSBBdWRpbzsKK30KKwogdm9pZCBUZXN0UnVu
bmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2
ZSkKIHsKICAgICBtX3BvbGljeURlbGVnYXRlRW5hYmxlZCA9IGVuYWJsZWQ7CkBAIC00MzMsNiAr
NDM5LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyCiAgICAgV0tCdW5kbGVOb2RlSGFuZGxl
U2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihub2RlSGFuZGxlLmdldCgpLCB0b1dLKHZh
bHVlKS5nZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9EYXRhKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7CisgICAgLy9KU0NvbnRleHRHZXRHbG9i
YWxPYmplY3QoY29udGV4dCkgV2ViQ29yZTo6dG9VaW50OEFycmF5KFdlYkNvcmU6OnRvSlMocmVp
bnRlcnByZXRfY2FzdDxKU0M6OkV4ZWNTdGF0ZSo+KGNvbnN0X2Nhc3Q8T3BhcXVlSlNDb250ZXh0
Kj4oY29udGV4dCkpLCBkYXRhKSk7CisgICAgbV9hdWRpb0RhdGEgPSBXZWJDb3JlOjp0b1VpbnQ4
QXJyYXkodG9KUyh0b0pTKGNvbnRleHQpLCBkYXRhKSk7CisgICAgLy9tX2F1ZGlvRGF0YSA9IGRh
dGE7Cit9CisKIHVuc2lnbmVkIFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KCkKIHsKICAgICByZXR1
cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2VDb3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAzMjBkYTM1
Li43MzJmZDUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tC
dW5kbGVTY3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjMsNiArNjQsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaGUgYmFzaWNzLgogICAgIHZvaWQgZHVtcEFzVGV4dChib29sIGR1
bXBQaXhlbHMpOworICAgIHZvaWQgZHVtcEFzQXVkaW8oKTsKICAgICB2b2lkIHdhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpOwogICAgIHZvaWQgZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkgeyBtX3doYXRU
b0R1bXAgPSBBbGxGcmFtZXNUZXh0OyB9CiAgICAgdm9pZCB3YWl0VW50aWxEb25lKCk7CkBAIC0x
NjAsNyArMTYyLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CiAKLSAgICBl
bnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0
IH07CisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICB2b2lkIHNldEF1ZGlvRGF0YShKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgZGF0YSk7CisgICAgVWludDhBcnJheSogYXVkaW9EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpb0RhdGEuZ2V0KCk7IH0KKworICAgIGVudW0gV2hhdFRvRHVtcCB7
IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvIH07CiAgICAg
V2hhdFRvRHVtcCB3aGF0VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CiAK
ICAgICBib29sIHNob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOyB9CkBAIC0zMTksNiArMzI1
LDcgQEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV91c2VyU3R5bGVT
aGVldExvY2F0aW9uOwogCiAgICAgUGxhdGZvcm1UaW1lclJlZiBtX3dhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyOworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2F1ZGlvRGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdUUgotLSAKMS43LjEwLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179934</attachid>
            <date>2012-12-18 07:12:16 -0800</date>
            <delta_ts>2012-12-18 07:14:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95084-20121218170932.patch</filename>
            <type>text/plain</type>
            <size>17075</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTA4ZWJjMWE1ZWU5Njcx
MDcwYjEzM2RhMjAxMzJiZGE2ZjQ4YTc3MS4uNTUyZGU1MmI0OGRhNTc5YzI0ZmE1MDNiMzAxNjk2
OWFlNjcxMGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTE4ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBm
b3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAgICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElE
TCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2ZlcnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEg
YXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBpdCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdl
YmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgSSBhbSBhZGRpbmcg
YSB0ZXN0cnVubmVyIHNwZWNpZmljIGJ1bmRsZSBtZXRob2QgdG8gZXh0cmFjdCBkYXRhCisgICAg
ICAgIGZyb20gYSBVaW50OEFycmF5IGludG8gYSBieXRlYnVmZmVyLiBUaGlzIEFQSSBpcyB1c2Vk
IGJ5CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIncyBUZXN0UnVubmVyIHRvIGV4dHJhY3QgdGhl
IGRhdGEgaW50byBhIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLCB0aGVuIHNlbmRpbmcgaXQgb3Zl
ciBJUEMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBBZGRp
bmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENvbnZlcnQgVWludDhBcnJheSB0byBXZWJE
YXRhLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGF0YUZyb21VaW50OEFycmF5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlKToKKwogMjAxMi0xMi0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFRyeSB0byBmaXggdGhlIE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5k
ZXggZTdkNTYxMWYwYTE2N2RkMjBkNGM3MWMyZGFkNGM3NDc4NWIzMDFiNC4uNmY4NzhhNjk5NWNk
YTY0MzBhMTYwY2IyZjA2NjMyM2ExOGJhMDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTI2OCw2ICsyNjksMTIgQEAg
dm9pZCBXS0J1bmRsZVNldE1pbmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYKICAgICB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwodG9JbXBsKHBhZ2VHcm91cFJlZiksIHNlY29uZHMpOwogfQogCitXS0Rh
dGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJEYXRh
PiB3ZWJEYXRhID0gdG9JbXBsKGJ1bmRsZSktPmRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBk
YXRhKTsKKyAgICByZXR1cm4gdG9BUEkod2ViRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KwogaW50IFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBh
Z2VIZWlnaHRJblBpeGVscykKIHsKICAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPm51bWJl
ck9mUGFnZXModG9JbXBsKGZyYW1lUmVmKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJ
blBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCAyY2FjYjU5NzZh
M2RhN2UyNWExZWZkMzAyNmI1NzkwMmIzMGIxYTM2Li42NzhkZTE4ZDU0NzU4MDhiZDMxMWM5YTUz
YjkxOTEwNjRjZDBlZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTY3
LDYgKzY3LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGUKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRX
ZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldE1p
bmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmLCBkb3VibGUgaW50ZXJ2YWwpOworV0tfRVhQT1JUIFdLRGF0YVJl
ZiBXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogCiAvLyBVc2VyQ29udGVudCBBUEkKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYgd2hp
dGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxYjRlODVhZjdjZmE4ODJhNjliMTRkM2YyNmFi
ODM1MDE0ZjFmNjE1Li5iM2U0NzA4ZDkyZTdmZTEwZDcyNTVhNTYxYWRhYWQzZGE4Yzg3MWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTTm90aWZpY2F0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9KU1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVZp
c2liaWxpdHlTdGF0ZS5oPgpAQCAtNjMxLDYgKzYzMywxMyBAQCB1aW50NjRfdCBJbmplY3RlZEJ1
bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJl
ZiBqcwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmRh
dGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQor
eworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRleHQpOworICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBhcnJheURhdGEgPSBXZWJDb3JlOjp0b1VpbnQ4QXJyYXkodG9KUyhl
eGVjU3RhdGUsIGRhdGEpKTsKKyAgICByZXR1cm4gV2ViRGF0YTo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihhcnJheURhdGEtPmJhc2VBZGRyZXNzKCkpLCBhcnJheURhdGEtPmJ5
dGVMZW5ndGgoKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+
Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDhjMDY1Y2MxNGQwYWJkZDQ5NzQ4MzRmN2Y1Y2I1N2ZhYTk0ZWJi
N2YuLjBjOTMwZmM3YjA2NWNhYmI1NDY3ZTEzYTZlYzRjMTljNDQ3OGU2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgV2ViQ29ubmVjdGlvbjsKK2NsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKQEAgLTEzNCw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50NjRfdCB3
ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFBhc3NSZWZQ
dHI8V2ViRGF0YT4gZGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11
dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwg
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg0OTM3MjhhMzU4MzNjZGIyMTkyM2Nk
MjcxMTMzOWM1MzZlZjExZi4uZTdhYzQzMTYwOGIxMmE0MTRjZGFhMzgyOTkyMTIwZDA4OTI2YTA1
YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDEyLTEyLTE4ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJv
dHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBmb3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAg
ICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElETCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2Zl
cnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEgYXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBp
dCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdlYmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3Rh
dGlvbnMuCisgICAgICAgIFRoaXMgZW5hYmxlcyBhdWRpbyB0ZXN0aW5nIG9uIFdlYktpdDIgcG9y
dHMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOiBBZGRpbmcgc2V0QXVkaW9EYXRhIEFQSS4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOiBBc3NpZ24gYXVkaW8g
YnVmZmVyIGRhdGEgdG8gYSBsb2NhbCBXS0RhdGFSZWYgYWZ0ZXIgZXh0cmFjdGluZyBpdCBmcm9t
IFdLMiB1c2luZyBXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheSBidW5kbGUgQVBJLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb0RhdGEpOgorICAgICAgICAoV1RSKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDogQWRkIGEg
d2hhdFRvRHVtcCBzdGF0ZSBmb3IgZHVtcGluZyBBdWRpby4KKyAgICAgICAgKFRlc3RSdW5uZXIp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwOiBBZGQgYXVkaW8gdG8gdGhlIG1lc3NhZ2UgdGhhdCdzIHRyYW5zZmVycmVkIHRvIHRo
ZSBXS1RSIHByb2Nlc3MuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkb25lKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6
IEFsbG93IHNldHRpbmcgYW5kIGF1ZGlvIHJlc3VsdCBoYW5kbGUgdG8gYmUgdHJhbnNmZXJyZWQu
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpzZXRBdWRpb1Jlc3VsdCk6CisgICAgICAg
IChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6IEF1ZGlvIGR1bXAgc3VwcG9ydCwgZHVtcCBhdWRpbyBpZiB3ZSBoYXZlbid0IHJl
Y2VpdmVkIGEgdGV4dCBkdW1wIGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmR1bXBBdWRpbyk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IFN0b3JpbmcgcmVjZWl2
ZWQgYXVkaW8gZGF0YSBiZWZvcmUgZHVtcGluZy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChUZXN0SW52b2NhdGlvbik6CisKIDIwMTItMTIt
MTggIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAK
ICAgICAgICAgW0VGTF1bV0syXSBHYXJkZW5pbmcgb2YgVGVzdFdlYktpdEFQSSB0ZXN0cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDM2OGM1OTA4NmJiNzg2ZDM0M2U1NzM4YmI2ZDAw
ZDZjMTY4MGZhNi4uMjJhOWJiOGM5MDQzOTk0NTZhYjZkNjJmMzdlYTViMzZjN2RiOGUwNiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xODIsNiArMTgyLDkgQEAgaW50ZXJmYWNlIFRl
c3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oaW4gZG91Ymxl
IGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBkb3VibGUgYWNjdXJhY3ksIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBhbHRpdHVkZSwgaW4gW09wdGlvbmFs
XSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlvbmFsXSBvYmplY3QgaGVhZGluZywg
aW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmluZyBlcnJvck1lc3NhZ2UpOwogCisg
ICAgLy8gQXVkaW8gdGVzdGluZworICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRBdWRpb0RhdGEo
aW4gb2JqZWN0IGRhdGEpOworCiAgICAgYm9vbGVhbiBjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXco
KTsKIAogICAgIC8vIFdvcmsgcXVldWUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDE0Y2JjNGM2YTJh
YTY5MTBjN2FhMDI2MjAyNDY5MGYyNThkNzI5M2QuLjlkMzBhZDkyOGEwMjk0ZDAyY2Y2MDkzYWNm
ZjkwMWQzYTBjNzAxZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yOTQsNiArMjk0LDkgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZG9uZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJl
cGFpbnRSZWN0c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJl
cGFpbnRSZWN0cyIpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGRvbmVNZXNzYWdlQm9keS5n
ZXQoKSwgcmVwYWludFJlY3RzS2V5LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSk7CiAKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKKyAgICBXS0RpY3Rpb25h
cnlBZGRJdGVtKGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCksIG1f
YXVkaW9SZXN1bHQuZ2V0KCkpOworCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwg
ZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOwogCiAgICAgY2xv
c2VPdGhlclBhZ2VzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMzk1ZDIwNDU2ZDRhZGNhYjdjNDMwYzBj
MWQwMDdkNjI2ZjBjZWYzMC4uYzYxYzcyNDViNzhhODdhODI0NzJiZWYwOWU5MzE4MmYxM2RlZTM0
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaApAQCAtNjYsOSArNjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZHVt
cEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhTdHJpbmdCdWlsZGVyJik7CiAKICAgICB2b2lk
IGRvbmUoKTsKKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KFdLRGF0YVJlZiBhdWRpb0RhdGEpIHsg
bV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogICAgIHZvaWQgc2V0UGl4ZWxSZXN1bHQoV0tJ
bWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVzdWx0ID0gaW1hZ2U7IH0KICAgICB2b2lkIHNldFJl
cGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVwYWludFJlY3RzID0gcmVjdHM7IH0K
IAorCiAgICAgYm9vbCBpc1Rlc3RSdW5uaW5nKCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBUZXN0aW5n
OyB9CiAKICAgICBXS0J1bmRsZUZyYW1lUmVmIHRvcExvYWRpbmdGcmFtZSgpIHsgcmV0dXJuIG1f
dG9wTG9hZGluZ0ZyYW1lOyB9CkBAIC0xNTEsNiArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CiAgICAgYm9vbCBtX3VzZVdvcmtRdWV1ZTsK
IAorICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFp
blB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlS
ZWY+IG1fcmVwYWludFJlY3RzOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDg1YzY4MTcxNjlhNWMzNWM3MDVk
YjU0MjA2ZjE1MTc5YzVlZWZmZmQuLjM0OTE4ZGIwNjNhODNkNjdkNjA3YWI4Mjg0MGM1MzEyYmIx
Yjg0ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V2ViS2l0Ml9DLmg+CkBAIC00MzMsNiArNDM0LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFs
dWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3Ry
CiAgICAgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihu
b2RlSGFuZGxlLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXVkaW9EYXRhKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7
CisgICAgV0tEYXRhUmVmIGF1ZGlvRGF0YSA9IFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5KElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgY29udGV4dCwgZGF0YSk7CisgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldEF1ZGlvUmVzdWx0KGF1ZGlvRGF0YSk7CisgICAgbV93
aGF0VG9EdW1wID0gQXVkaW87Cit9CisKIHVuc2lnbmVkIFRlc3RSdW5uZXI6OndpbmRvd0NvdW50
KCkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2VDb3VudCgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAppbmRleCAzMjBkYTM1OGM1ZGE5NzQ4MDU1NmVkMTk2ZDU1N2MxZTIwYmU2ZDIwLi45NDNiNTZl
OWExZWQ0YWMyMWUxODQ2M2NkMGM3NzUxYjFkYzA2ZjY5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTYwLDcgKzE2MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpOwogCi0gICAgZW51bSBXaGF0VG9E
dW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCB9OworICAgIC8v
IEF1ZGlvIHRlc3RpbmcuCisgICAgdm9pZCBzZXRBdWRpb0RhdGEoSlNDb250ZXh0UmVmLCBKU1Zh
bHVlUmVmIGRhdGEpOworCisgICAgZW51bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZy
YW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVkaW8gfTsKICAgICBXaGF0VG9EdW1wIHdoYXRUb0R1
bXAoKSBjb25zdCB7IHJldHVybiBtX3doYXRUb0R1bXA7IH0KIAogICAgIGJvb2wgc2hvdWxkRHVt
cEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxs
RnJhbWVTY3JvbGxQb3NpdGlvbnM7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKaW5kZXggNzI4N2U5MTQ3YjRiYWE0ZTAxZTUxNmNjY2M4YzcxOWQyMWY4MWYxMy4u
MjMxM2QxMGU2NWNjYWNmNzg4ZDIxODYyNzY4MDg4OTU1MDYwOGIzYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTMyLDggKzMyLDkgQEAKICNpbmNsdWRl
ICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVkZSA8Y3N0ZGlv
PgotI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3Iu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CkBAIC0yODcsMTMgKzI4OCw0MiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1w
KGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBibwog
CiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZHVtcChtX3RleHRP
dXRwdXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV90ZXh0T3V0cHV0Lmxl
bmd0aCgpKQorICAgICAgICBkdW1wKG1fdGV4dE91dHB1dC50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGVsc2UgaWYgKG1fYXVkaW9SZXN1bHQpCisgICAgICAgIGR1bXBBdWRpbyhtX2F1
ZGlvUmVzdWx0LmdldCgpKTsKIAogICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgbV9waXhlbFJlc3Vs
dCkKICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQobV9waXhlbFJlc3Vs
dC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwogCiAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0
ZG91dCk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZsdXNoKHN0ZGVycik7Cit9CisKK3Zv
aWQgVGVzdEludm9jYXRpb246OmR1bXBBdWRpbyhXS0RhdGFSZWYgYXVkaW9EYXRhKQoreworICAg
IHNpemVfdCBsZW5ndGggPSBXS0RhdGFHZXRTaXplKGF1ZGlvRGF0YSk7CisgICAgaWYgKCFsZW5n
dGgpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBX
S0RhdGFHZXRCeXRlcyhhdWRpb0RhdGEpOworCisgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6ICVz
XG4iLCAiYXVkaW8vd2F2Iik7CisgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWx1XG4iLCBs
ZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVzVG9Xcml0ZUluT25lQ2h1bmsgPSAxIDw8
IDE1OworICAgIHNpemVfdCBkYXRhUmVtYWluaW5nVG9Xcml0ZSA9IGxlbmd0aDsKKyAgICB3aGls
ZSAoZGF0YVJlbWFpbmluZ1RvV3JpdGUpIHsKKyAgICAgICAgc2l6ZV90IGJ5dGVzVG9Xcml0ZUlu
VGhpc0NodW5rID0gc3RkOjptaW4oZGF0YVJlbWFpbmluZ1RvV3JpdGUsIGJ5dGVzVG9Xcml0ZUlu
T25lQ2h1bmspOworICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gZndyaXRlKGRhdGEsIDEs
IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rLCBzdGRvdXQpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuICE9IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRhdGFSZW1haW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgZGF0YSAr
PSBieXRlc1dyaXR0ZW47CisgICAgfQorICAgIHByaW50ZigiI0VPRlxuIik7CisgICAgZnByaW50
ZihzdGRlcnIsICIjRU9GXG4iKTsKIH0KIAogYm9vbCBUZXN0SW52b2NhdGlvbjo6Y29tcGFyZUFj
dHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhciBhY3R1YWxIYXNoWzMz
XSkKQEAgLTM0Niw2ICszNzYsOSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcmVwYWludFJlY3RzS2V5ID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVwYWludFJlY3RzIikpOwogICAgICAgICBtX3JlcGFp
bnRSZWN0cyA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCByZXBhaW50UmVjdHNLZXkuZ2V0KCkpKTsKIAorICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSAgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1bHQiKSk7CisgICAgICAgIG1f
YXVkaW9SZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBhdWRpb1Jlc3VsdEtleS5nZXQoKSkpOworCiAg
ICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGI5ZWFkMTRhYTRjMDU4MGFmMDlkODFhYWJlMjcw
NTM5ZTQ2MmEwZWYuLjI3MmMxZjdlMDU4NjU1OTMzOTE4YWM2NWMzNjMzY2JlY2FhZTNhZGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcChj
b25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAsIGJv
b2wgc2VlbkVycm9yID0gZmFsc2UpOwogICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOworICAgIHZvaWQg
ZHVtcEF1ZGlvKFdLRGF0YVJlZik7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0
ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKICNpZiBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oRUZMKQpAQCAtNzAsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9lcnJv
cjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90ZXh0T3V0cHV0OworICAgIFdLUmV0YWluUHRyPFdL
RGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3Bp
eGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwog
ICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNzYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179935</attachid>
            <date>2012-12-18 07:15:06 -0800</date>
            <delta_ts>2012-12-18 09:33:14 -0800</delta_ts>
            <desc>Patch, v2. Credit for wip patch in ChangeLog</desc>
            <filename>bug-95084-20121218171222.patch</filename>
            <type>text/plain</type>
            <size>17143</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTA4ZWJjMWE1ZWU5Njcx
MDcwYjEzM2RhMjAxMzJiZGE2ZjQ4YTc3MS4uNTUyZGU1MmI0OGRhNTc5YzI0ZmE1MDNiMzAxNjk2
OWFlNjcxMGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTE4ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBm
b3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAgICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElE
TCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2ZlcnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEg
YXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBpdCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdl
YmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgSSBhbSBhZGRpbmcg
YSB0ZXN0cnVubmVyIHNwZWNpZmljIGJ1bmRsZSBtZXRob2QgdG8gZXh0cmFjdCBkYXRhCisgICAg
ICAgIGZyb20gYSBVaW50OEFycmF5IGludG8gYSBieXRlYnVmZmVyLiBUaGlzIEFQSSBpcyB1c2Vk
IGJ5CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIncyBUZXN0UnVubmVyIHRvIGV4dHJhY3QgdGhl
IGRhdGEgaW50byBhIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLCB0aGVuIHNlbmRpbmcgaXQgb3Zl
ciBJUEMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBBZGRp
bmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENvbnZlcnQgVWludDhBcnJheSB0byBXZWJE
YXRhLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGF0YUZyb21VaW50OEFycmF5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlKToKKwogMjAxMi0xMi0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFRyeSB0byBmaXggdGhlIE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5k
ZXggZTdkNTYxMWYwYTE2N2RkMjBkNGM3MWMyZGFkNGM3NDc4NWIzMDFiNC4uNmY4NzhhNjk5NWNk
YTY0MzBhMTYwY2IyZjA2NjMyM2ExOGJhMDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTI2OCw2ICsyNjksMTIgQEAg
dm9pZCBXS0J1bmRsZVNldE1pbmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYKICAgICB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwodG9JbXBsKHBhZ2VHcm91cFJlZiksIHNlY29uZHMpOwogfQogCitXS0Rh
dGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJEYXRh
PiB3ZWJEYXRhID0gdG9JbXBsKGJ1bmRsZSktPmRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBk
YXRhKTsKKyAgICByZXR1cm4gdG9BUEkod2ViRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KwogaW50IFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBh
Z2VIZWlnaHRJblBpeGVscykKIHsKICAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPm51bWJl
ck9mUGFnZXModG9JbXBsKGZyYW1lUmVmKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJ
blBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCAyY2FjYjU5NzZh
M2RhN2UyNWExZWZkMzAyNmI1NzkwMmIzMGIxYTM2Li42NzhkZTE4ZDU0NzU4MDhiZDMxMWM5YTUz
YjkxOTEwNjRjZDBlZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTY3
LDYgKzY3LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGUKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRX
ZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldE1p
bmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmLCBkb3VibGUgaW50ZXJ2YWwpOworV0tfRVhQT1JUIFdLRGF0YVJl
ZiBXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogCiAvLyBVc2VyQ29udGVudCBBUEkKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYgd2hp
dGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxYjRlODVhZjdjZmE4ODJhNjliMTRkM2YyNmFi
ODM1MDE0ZjFmNjE1Li5iM2U0NzA4ZDkyZTdmZTEwZDcyNTVhNTYxYWRhYWQzZGE4Yzg3MWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTTm90aWZpY2F0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9KU1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVZp
c2liaWxpdHlTdGF0ZS5oPgpAQCAtNjMxLDYgKzYzMywxMyBAQCB1aW50NjRfdCBJbmplY3RlZEJ1
bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJl
ZiBqcwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmRh
dGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQor
eworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRleHQpOworICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBhcnJheURhdGEgPSBXZWJDb3JlOjp0b1VpbnQ4QXJyYXkodG9KUyhl
eGVjU3RhdGUsIGRhdGEpKTsKKyAgICByZXR1cm4gV2ViRGF0YTo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihhcnJheURhdGEtPmJhc2VBZGRyZXNzKCkpLCBhcnJheURhdGEtPmJ5
dGVMZW5ndGgoKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+
Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDhjMDY1Y2MxNGQwYWJkZDQ5NzQ4MzRmN2Y1Y2I1N2ZhYTk0ZWJi
N2YuLjBjOTMwZmM3YjA2NWNhYmI1NDY3ZTEzYTZlYzRjMTljNDQ3OGU2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgV2ViQ29ubmVjdGlvbjsKK2NsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKQEAgLTEzNCw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50NjRfdCB3
ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFBhc3NSZWZQ
dHI8V2ViRGF0YT4gZGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11
dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwg
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg0OTM3MjhhMzU4MzNjZGIyMTkyM2Nk
MjcxMTMzOWM1MzZlZjExZi4uN2U4ZmI3M2QyZWNjNDgxZTY3NjgyYzFkMzc0YTMzZDAwMTk1MDc1
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDEyLTEyLTE4ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJv
dHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBmb3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAg
ICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElETCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2Zl
cnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEgYXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBp
dCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdlYmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3Rh
dGlvbnMuCisgICAgICAgIFRoaXMgZW5hYmxlcyBhdWRpbyB0ZXN0aW5nIG9uIFdlYktpdDIgcG9y
dHMuCisgICAgICAgIEJhc2VkIG9uIGluaXRpYWwgd2lwLXBhdGNoIGZyb20gUGhpbGlwcGUgTm9y
bWFuZCAtIHRoYW5rcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6IEFkZGluZyBzZXRBdWRpb0RhdGEgQVBJLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6IEFz
c2lnbiBhdWRpbyBidWZmZXIgZGF0YSB0byBhIGxvY2FsIFdLRGF0YVJlZiBhZnRlciBleHRyYWN0
aW5nIGl0IGZyb20gV0syIHVzaW5nIFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5IGJ1bmRsZSBB
UEkuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YSk6CisgICAgICAgIChX
VFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOiBBZGQgYSB3aGF0VG9EdW1wIHN0YXRlIGZvciBkdW1waW5nIEF1ZGlvLgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6IEFkZCBhdWRpbyB0byB0aGUgbWVzc2FnZSB0aGF0J3MgdHJhbnNm
ZXJyZWQgdG8gdGhlIFdLVFIgcHJvY2Vzcy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaDogQWxsb3cgc2V0dGluZyBhbmQgYXVkaW8gcmVzdWx0IGhhbmRsZSB0byBiZSB0
cmFuc2ZlcnJlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEF1ZGlvUmVzdWx0
KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcDogQXVkaW8gZHVtcCBzdXBwb3J0LCBkdW1wIGF1ZGlvIGlmIHdl
IGhhdmVuJ3QgcmVjZWl2ZWQgYSB0ZXh0IGR1bXAgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChXVFIpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogU3Rv
cmluZyByZWNlaXZlZCBhdWRpbyBkYXRhIGJlZm9yZSBkdW1waW5nLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToK
KwogMjAxMi0xMi0xOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEdhcmRlbmluZyBvZiBUZXN0V2ViS2l0QVBJ
IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBkMzY4YzU5MDg2YmI3ODZkMzQz
ZTU3MzhiYjZkMDBkNmMxNjgwZmE2Li4yMmE5YmI4YzkwNDM5OTQ1NmFiNmQ2MmYzN2VhNWIzNmM3
ZGI4ZTA2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTE4Miw2ICsxODIsOSBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihpbiBkb3VibGUgbGF0aXR1ZGUsIGluIGRvdWJsZSBsb25naXR1ZGUsIGluIGRvdWJsZSBhY2N1
cmFjeSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gb2JqZWN0IGFsdGl0dWRlLCBp
biBbT3B0aW9uYWxdIG9iamVjdCBhbHRpdHVkZUFjY3VyYWN5LCBpbiBbT3B0aW9uYWxdIG9iamVj
dCBoZWFkaW5nLCBpbiBbT3B0aW9uYWxdIG9iamVjdCBzcGVlZCk7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoaW4gRE9NU3RyaW5nIGVycm9yTWVz
c2FnZSk7CiAKKyAgICAvLyBBdWRpbyB0ZXN0aW5nCisgICAgW1Bhc3NDb250ZXh0XSB2b2lkIHNl
dEF1ZGlvRGF0YShpbiBvYmplY3QgZGF0YSk7CisKICAgICBib29sZWFuIGNhbGxTaG91bGRDbG9z
ZU9uV2ViVmlldygpOwogCiAgICAgLy8gV29yayBxdWV1ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
MTRjYmM0YzZhMmFhNjkxMGM3YWEwMjYyMDI0NjkwZjI1OGQ3MjkzZC4uOWQzMGFkOTI4YTAyOTRk
MDJjZjYwOTNhY2ZmOTAxZDNhMGM3MDFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5NCw2ICsy
OTQsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkb25lKCkKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gcmVwYWludFJlY3RzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUmVwYWludFJlY3RzIikpOwogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oZG9uZU1l
c3NhZ2VCb2R5LmdldCgpLCByZXBhaW50UmVjdHNLZXkuZ2V0KCksIG1fcmVwYWludFJlY3RzLmdl
dCgpKTsKIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdWRpb1Jlc3VsdEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkF1ZGlvUmVzdWx0IikpOworICAg
IFdLRGljdGlvbmFyeUFkZEl0ZW0oZG9uZU1lc3NhZ2VCb2R5LmdldCgpLCBhdWRpb1Jlc3VsdEtl
eS5nZXQoKSwgbV9hdWRpb1Jlc3VsdC5nZXQoKSk7CisKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBkb25lTWVzc2FnZU5hbWUuZ2V0KCksIGRvbmVNZXNzYWdlQm9keS5nZXQoKSk7
CiAKICAgICBjbG9zZU90aGVyUGFnZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAzOTVkMjA0NTZkNGFk
Y2FiN2M0MzBjMGMxZDAwN2Q2MjZmMGNlZjMwLi5jNjFjNzI0NWI3OGE4N2E4MjQ3MmJlZjA5ZTkz
MTgyZjEzZGVlMzQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC02Niw5ICs2NiwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBhZ2VzKFN0cmluZ0J1aWxkZXImKTsK
IAogICAgIHZvaWQgZG9uZSgpOworICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoV0tEYXRhUmVmIGF1
ZGlvRGF0YSkgeyBtX2F1ZGlvUmVzdWx0ID0gYXVkaW9EYXRhOyB9CiAgICAgdm9pZCBzZXRQaXhl
bFJlc3VsdChXS0ltYWdlUmVmIGltYWdlKSB7IG1fcGl4ZWxSZXN1bHQgPSBpbWFnZTsgfQogICAg
IHZvaWQgc2V0UmVwYWludFJlY3RzKFdLQXJyYXlSZWYgcmVjdHMpIHsgbV9yZXBhaW50UmVjdHMg
PSByZWN0czsgfQogCisKICAgICBib29sIGlzVGVzdFJ1bm5pbmcoKSB7IHJldHVybiBtX3N0YXRl
ID09IFRlc3Rpbmc7IH0KIAogICAgIFdLQnVuZGxlRnJhbWVSZWYgdG9wTG9hZGluZ0ZyYW1lKCkg
eyByZXR1cm4gbV90b3BMb2FkaW5nRnJhbWU7IH0KQEAgLTE1MSw2ICsxNTMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsKICAgICBib29sIG1fdXNl
V29ya1F1ZXVlOwogCisgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBtX2F1ZGlvUmVzdWx0Owog
ICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4ZWxSZXN1bHQ7CiAgICAgV0tSZXRhaW5Q
dHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggODVjNjgxNzE2
OWE1YzM1YzcwNWRiNTQyMDZmMTUxNzljNWVlZmZmZC4uMzQ5MThkYjA2M2E4M2Q2N2Q2MDdhYjgy
ODQwYzUzMTJiYjFiODQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0V29ybGQuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLRGF0YS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XZWJLaXQyX0MuaD4KQEAgLTQzMyw2ICs0MzQsMTMgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZWxl
bWVudCwgSlNTdHIKICAgICBXS0J1bmRsZU5vZGVIYW5kbGVTZXRIVE1MSW5wdXRFbGVtZW50VmFs
dWVGb3JVc2VyKG5vZGVIYW5kbGUuZ2V0KCksIHRvV0sodmFsdWUpLmdldCgpKTsKIH0KIAordm9p
ZCBUZXN0UnVubmVyOjpzZXRBdWRpb0RhdGEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgZGF0YSkKK3sKKyAgICBXS0RhdGFSZWYgYXVkaW9EYXRhID0gV0tCdW5kbGVEYXRhRnJvbVVp
bnQ4QXJyYXkoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBjb250ZXh0LCBkYXRh
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc2V0QXVkaW9SZXN1bHQoYXVkaW9EYXRh
KTsKKyAgICBtX3doYXRUb0R1bXAgPSBBdWRpbzsKK30KKwogdW5zaWduZWQgVGVzdFJ1bm5lcjo6
d2luZG93Q291bnQoKQogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFn
ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IDMyMGRhMzU4YzVkYTk3NDgwNTU2ZWQxOTZkNTU3YzFlMjBiZTZk
MjAuLjk0M2I1NmU5YTFlZDRhYzIxZTE4NDYzY2QwYzc3NTFiMWRjMDZmNjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0x
NjAsNyArMTYwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CiAKLSAgICBl
bnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0
IH07CisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICB2b2lkIHNldEF1ZGlvRGF0YShKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgZGF0YSk7CisKKyAgICBlbnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJU
cmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0LCBBdWRpbyB9OwogICAgIFdoYXRUb0R1
bXAgd2hhdFRvRHVtcCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hhdFRvRHVtcDsgfQogCiAgICAgYm9v
bCBzaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9uczsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA3Mjg3ZTkxNDdiNGJhYTRlMDFlNTE2Y2NjYzhjNzE5
ZDIxZjgxZjEzLi4yMzEzZDEwZTY1Y2NhY2Y3ODhkMjE4NjI3NjgwODg5NTUwNjA4YjNjIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMzIsOCArMzIsOSBA
QAogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Y2xpbWl0cz4KICNpbmNs
dWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0RpY3Rpb25hcnkuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLQ29udGV4dFByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLRGF0YS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0luc3BlY3Rvci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KQEAgLTI4NywxMyArMjg4LDQyIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9T
dGRlcnIsIGJvCiAKIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBk
dW1wKG1fdGV4dE91dHB1dC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX3Rl
eHRPdXRwdXQubGVuZ3RoKCkpCisgICAgICAgIGR1bXAobV90ZXh0T3V0cHV0LnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgZWxzZSBpZiAobV9hdWRpb1Jlc3VsdCkKKyAgICAgICAgZHVt
cEF1ZGlvKG1fYXVkaW9SZXN1bHQuZ2V0KCkpOwogCiAgICAgaWYgKG1fZHVtcFBpeGVscyAmJiBt
X3BpeGVsUmVzdWx0KQogICAgICAgICBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCht
X3BpeGVsUmVzdWx0LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSk7CiAKICAgICBmcHV0cygi
I0VPRlxuIiwgc3Rkb3V0KTsKICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJy
KTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKFdLRGF0YVJlZiBhdWRpb0Rh
dGEpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IFdLRGF0YUdldFNpemUoYXVkaW9EYXRhKTsKKyAg
ICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSA9IFdLRGF0YUdldEJ5dGVzKGF1ZGlvRGF0YSk7CisKKyAgICBwcmludGYoIkNvbnRl
bnQtVHlwZTogJXNcbiIsICJhdWRpby93YXYiKTsKKyAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3Ro
OiAlbHVcbiIsIGxlbmd0aCk7CisKKyAgICBjb25zdCBzaXplX3QgYnl0ZXNUb1dyaXRlSW5PbmVD
aHVuayA9IDEgPDwgMTU7CisgICAgc2l6ZV90IGRhdGFSZW1haW5pbmdUb1dyaXRlID0gbGVuZ3Ro
OworICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgeworICAgICAgICBzaXplX3QgYnl0
ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBzdGQ6Om1pbihkYXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0
ZXNUb1dyaXRlSW5PbmVDaHVuayk7CisgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBmd3Jp
dGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHN0ZG91dCk7CisgICAgICAgIGlm
IChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmspCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGF0YVJlbWFpbmluZ1RvV3JpdGUgLT0gYnl0ZXNXcml0dGVuOworICAg
ICAgICBkYXRhICs9IGJ5dGVzV3JpdHRlbjsKKyAgICB9CisgICAgcHJpbnRmKCIjRU9GXG4iKTsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiNFT0ZcbiIpOwogfQogCiBib29sIFRlc3RJbnZvY2F0aW9u
Ojpjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyIGFj
dHVhbEhhc2hbMzNdKQpAQCAtMzQ2LDYgKzM3Niw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CiAgICAg
ICAgIG1fcmVwYWludFJlY3RzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHJlcGFpbnRSZWN0c0tleS5nZXQo
KSkpOwogCisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdWRpb1Jlc3VsdEtleSA9
ICBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsK
KyAgICAgICAgbV9hdWRpb1Jlc3VsdCA9IHN0YXRpY19jYXN0PFdLRGF0YVJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGF1ZGlvUmVzdWx0S2V5Lmdl
dCgpKSk7CisKICAgICAgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOwogICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggYjllYWQxNGFhNGMwNTgwYWYw
OWQ4MWFhYmUyNzA1MzllNDYyYTBlZi4uMjcyYzFmN2UwNTg2NTU5MzM5MThhYzY1YzM2MzNjYmVj
YWFlM2FkYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNTEs
NiArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKICAgICBzdGF0aWMg
dm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3Rk
ZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5k
Q29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7
CisgICAgdm9pZCBkdW1wQXVkaW8oV0tEYXRhUmVmKTsKICAgICBib29sIGNvbXBhcmVBY3R1YWxI
YXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJbMzNdKTsKIAogI2lmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCkBAIC03MCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2Vycm9yOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3RleHRPdXRwdXQ7CisgICAgV0tS
ZXRhaW5QdHI8V0tEYXRhUmVmPiBtX2F1ZGlvUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLSW1h
Z2VSZWY+IG1fcGl4ZWxSZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbV9yZXBh
aW50UmVjdHM7CiAgICAgc3RkOjpzdHJpbmcgbV9lcnJvck1lc3NhZ2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179961</attachid>
            <date>2012-12-18 09:33:22 -0800</date>
            <delta_ts>2012-12-18 09:48:04 -0800</delta_ts>
            <desc>Patch, v3, review comments addressed.</desc>
            <filename>bug-95084-20121218193038.patch</filename>
            <type>text/plain</type>
            <size>17074</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTA4ZWJjMWE1ZWU5Njcx
MDcwYjEzM2RhMjAxMzJiZGE2ZjQ4YTc3MS4uNTUyZGU1MmI0OGRhNTc5YzI0ZmE1MDNiMzAxNjk2
OWFlNjcxMGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTE4ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBm
b3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAgICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElE
TCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2ZlcnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEg
YXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBpdCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdl
YmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgSSBhbSBhZGRpbmcg
YSB0ZXN0cnVubmVyIHNwZWNpZmljIGJ1bmRsZSBtZXRob2QgdG8gZXh0cmFjdCBkYXRhCisgICAg
ICAgIGZyb20gYSBVaW50OEFycmF5IGludG8gYSBieXRlYnVmZmVyLiBUaGlzIEFQSSBpcyB1c2Vk
IGJ5CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIncyBUZXN0UnVubmVyIHRvIGV4dHJhY3QgdGhl
IGRhdGEgaW50byBhIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLCB0aGVuIHNlbmRpbmcgaXQgb3Zl
ciBJUEMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBBZGRp
bmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENvbnZlcnQgVWludDhBcnJheSB0byBXZWJE
YXRhLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGF0YUZyb21VaW50OEFycmF5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlKToKKwogMjAxMi0xMi0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFRyeSB0byBmaXggdGhlIE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5k
ZXggZTdkNTYxMWYwYTE2N2RkMjBkNGM3MWMyZGFkNGM3NDc4NWIzMDFiNC4uOWVkNzY3OGE3NzIy
MDE0YmM3NWJjZDUzN2E3MTYyZWI3ZjJlZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTI2OCw2ICsyNjksMTIgQEAg
dm9pZCBXS0J1bmRsZVNldE1pbmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYKICAgICB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwodG9JbXBsKHBhZ2VHcm91cFJlZiksIHNlY29uZHMpOwogfQogCitXS0Rh
dGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVJbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJEYXRh
PiB3ZWJEYXRhID0gdG9JbXBsKGJ1bmRsZSktPmRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBk
YXRhKTsKKyAgICByZXR1cm4gdG9BUEkod2ViRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KwogaW50IFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBh
Z2VIZWlnaHRJblBpeGVscykKIHsKICAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPm51bWJl
ck9mUGFnZXModG9JbXBsKGZyYW1lUmVmKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJ
blBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCAyY2FjYjU5NzZh
M2RhN2UyNWExZWZkMzAyNmI1NzkwMmIzMGIxYTM2Li4zMTg4YmJlOGFmMTE0NDRiYzg1ZTM5MWM4
NWE1OGI2YzZmYzhlMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTY3
LDYgKzY3LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGUKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRX
ZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldE1p
bmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmLCBkb3VibGUgaW50ZXJ2YWwpOworV0tfRVhQT1JUIFdLRGF0YVJl
ZiBXS0J1bmRsZURhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogCiAvLyBVc2VyQ29udGVudCBBUEkKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYgd2hp
dGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxYjRlODVhZjdjZmE4ODJhNjliMTRkM2YyNmFi
ODM1MDE0ZjFmNjE1Li5iM2U0NzA4ZDkyZTdmZTEwZDcyNTVhNTYxYWRhYWQzZGE4Yzg3MWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTTm90aWZpY2F0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9KU1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVZp
c2liaWxpdHlTdGF0ZS5oPgpAQCAtNjMxLDYgKzYzMywxMyBAQCB1aW50NjRfdCBJbmplY3RlZEJ1
bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJl
ZiBqcwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmRh
dGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQor
eworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRleHQpOworICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBhcnJheURhdGEgPSBXZWJDb3JlOjp0b1VpbnQ4QXJyYXkodG9KUyhl
eGVjU3RhdGUsIGRhdGEpKTsKKyAgICByZXR1cm4gV2ViRGF0YTo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihhcnJheURhdGEtPmJhc2VBZGRyZXNzKCkpLCBhcnJheURhdGEtPmJ5
dGVMZW5ndGgoKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+
Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDhjMDY1Y2MxNGQwYWJkZDQ5NzQ4MzRmN2Y1Y2I1N2ZhYTk0ZWJi
N2YuLjBjOTMwZmM3YjA2NWNhYmI1NDY3ZTEzYTZlYzRjMTljNDQ3OGU2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgV2ViQ29ubmVjdGlvbjsKK2NsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKQEAgLTEzNCw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50NjRfdCB3
ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFBhc3NSZWZQ
dHI8V2ViRGF0YT4gZGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11
dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwg
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODViNzU1YjAxOGZkYzFjNWNhMDM2OTg2
NjhhMmM5MTRkZmQyNmY4Ny4uYzU0MDljODBjNzZlZGY2MDE1Y2Q5MTRkYzJjODE0NzQ1ZTYyZDNm
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDEyLTEyLTE4ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJv
dHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBmb3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAg
ICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElETCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2Zl
cnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEgYXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBp
dCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdlYmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3Rh
dGlvbnMuCisgICAgICAgIFRoaXMgZW5hYmxlcyBhdWRpbyB0ZXN0aW5nIG9uIFdlYktpdDIgcG9y
dHMuCisgICAgICAgIEJhc2VkIG9uIGluaXRpYWwgd2lwLXBhdGNoIGZyb20gUGhpbGlwcGUgTm9y
bWFuZCAtIHRoYW5rcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6IEFkZGluZyBzZXRBdWRpb0RhdGEgQVBJLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6IEFz
c2lnbiBhdWRpbyBidWZmZXIgZGF0YSB0byBhIGxvY2FsIFdLRGF0YVJlZiBhZnRlciBleHRyYWN0
aW5nIGl0IGZyb20gV0syIHVzaW5nIFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5IGJ1bmRsZSBB
UEkuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YSk6CisgICAgICAgIChX
VFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOiBBZGQgYSB3aGF0VG9EdW1wIHN0YXRlIGZvciBkdW1waW5nIEF1ZGlvLgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6IEFkZCBhdWRpbyB0byB0aGUgbWVzc2FnZSB0aGF0J3MgdHJhbnNm
ZXJyZWQgdG8gdGhlIFdLVFIgcHJvY2Vzcy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaDogQWxsb3cgc2V0dGluZyBhbmQgYXVkaW8gcmVzdWx0IGhhbmRsZSB0byBiZSB0
cmFuc2ZlcnJlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEF1ZGlvUmVzdWx0
KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcDogQXVkaW8gZHVtcCBzdXBwb3J0LCBkdW1wIGF1ZGlvIGlmIHdl
IGhhdmVuJ3QgcmVjZWl2ZWQgYSB0ZXh0IGR1bXAgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChXVFIpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogU3Rv
cmluZyByZWNlaXZlZCBhdWRpbyBkYXRhIGJlZm9yZSBkdW1waW5nLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToK
KwogMjAxMi0xMi0xOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBJbWFnZURpZmYgZG9lcyBub3QgYnVpbGQgb24gV2Vi
S2l0MiBvbmx5IGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDM2OGM1OTA4
NmJiNzg2ZDM0M2U1NzM4YmI2ZDAwZDZjMTY4MGZhNi4uNDdiMDE4MDc0OWQ1YmQ5YWZjMzBiMzAw
YjZhMDFiMTkxZGRhOTMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xODIsNiAr
MTgyLDkgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oaW4gZG91YmxlIGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBk
b3VibGUgYWNjdXJhY3ksIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBh
bHRpdHVkZSwgaW4gW09wdGlvbmFsXSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlv
bmFsXSBvYmplY3QgaGVhZGluZywgaW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmlu
ZyBlcnJvck1lc3NhZ2UpOwogCisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICBbUGFzc0NvbnRl
eHRdIHZvaWQgc2V0QXVkaW9EYXRhKGluIG9iamVjdCBkYXRhKTsKKwogICAgIGJvb2xlYW4gY2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KCk7CiAKICAgICAvLyBXb3JrIHF1ZXVlLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCAxNGNiYzRjNmEyYWE2OTEwYzdhYTAyNjIwMjQ2OTBmMjU4ZDcyOTNkLi45ZDMw
YWQ5MjhhMDI5NGQwMmNmNjA5M2FjZmY5MDFkM2EwYzcwMWU2IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApA
QCAtMjk0LDYgKzI5NCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUoKQogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRk
SXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSwgbV9yZXBh
aW50UmVjdHMuZ2V0KCkpOwogCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvUmVz
dWx0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1
bHQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIGF1
ZGlvUmVzdWx0S2V5LmdldCgpLCBtX2F1ZGlvUmVzdWx0LmdldCgpKTsKKwogICAgIFdLQnVuZGxl
UG9zdE1lc3NhZ2UobV9idW5kbGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VC
b2R5LmdldCgpKTsKIAogICAgIGNsb3NlT3RoZXJQYWdlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM5
NWQyMDQ1NmQ0YWRjYWI3YzQzMGMwYzFkMDA3ZDYyNmYwY2VmMzAuLmQ0NDViNGE4MzNiNzAxNTdk
YTEzZjIyNzE3Yzg3MjI4NTg4YTA5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTY2LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhTdHJpbmdC
dWlsZGVyJik7CiAKICAgICB2b2lkIGRvbmUoKTsKKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KFdL
RGF0YVJlZiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogICAgIHZv
aWQgc2V0UGl4ZWxSZXN1bHQoV0tJbWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVzdWx0ID0gaW1h
Z2U7IH0KICAgICB2b2lkIHNldFJlcGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVw
YWludFJlY3RzID0gcmVjdHM7IH0KIApAQCAtMTUxLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogICAgIGJvb2wgbV91c2VXb3JrUXVl
dWU7CiAKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tS
ZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA4NWM2ODE3MTY5YTVjMzVj
NzA1ZGI1NDIwNmYxNTE3OWM1ZWVmZmZkLi42NjYyZmI2ODAxZTM2NThlOTlkOWIwNTlkNTZhYzg4
ZmJkMDE1Y2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVTY3JpcHRXb3JsZC5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dlYktpdDJfQy5oPgpAQCAtNDMzLDYgKzQzNCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBK
U1N0cgogICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVz
ZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OnNldEF1ZGlvRGF0YShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRh
KQoreworICAgIFdLRGF0YVJlZiBhdWRpb0RhdGEgPSBXS0J1bmRsZURhdGFGcm9tVUludDhBcnJh
eShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGNvbnRleHQsIGRhdGEpOworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zZXRBdWRpb1Jlc3VsdChhdWRpb0RhdGEpOworICAg
IG1fd2hhdFRvRHVtcCA9IEF1ZGlvOworfQorCiB1bnNpZ25lZCBUZXN0UnVubmVyOjp3aW5kb3dD
b3VudCgpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlQ291bnQo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKaW5kZXggMzIwZGEzNThjNWRhOTc0ODA1NTZlZDE5NmQ1NTdjMWUyMGJlNmQyMC4uOTQz
YjU2ZTlhMWVkNGFjMjFlMTg0NjNjZDBjNzc1MWIxZGMwNmY2OSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE2MCw3ICsx
NjAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKTsKIAotICAgIGVudW0gV2hh
dFRvRHVtcCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQgfTsKKyAg
ICAvLyBBdWRpbyB0ZXN0aW5nLgorICAgIHZvaWQgc2V0QXVkaW9EYXRhKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBkYXRhKTsKKworICAgIGVudW0gV2hhdFRvRHVtcCB7IFJlbmRlclRyZWUsIE1h
aW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvIH07CiAgICAgV2hhdFRvRHVtcCB3aGF0
VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CiAKICAgICBib29sIHNob3Vs
ZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVt
cEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDcyODdlOTE0N2I0YmFhNGUwMWU1MTZjY2NjOGM3MTlkMjFmODFm
MTMuLmNjZWNjMjA3NWVlNjVhNzE2MDQ2ZjdlNGM1YjRmYjI0OGY3MTE4YzYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0zMiw4ICszMiw5IEBACiAjaW5j
bHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNz
dGRpbz4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tDb250ZXh0UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRhLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0RpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVj
dG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgpAQCAtMjg3LDEzICsyODgsNDQgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciwg
Ym8KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMoKQogewotICAgIGR1bXAobV90
ZXh0T3V0cHV0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQVNTRVJUKCEobV90ZXh0
T3V0cHV0Lmxlbmd0aCgpICYmIG1fYXVkaW9SZXN1bHQpKTsKKworICAgIGlmIChtX3RleHRPdXRw
dXQubGVuZ3RoKCkpCisgICAgICAgIGR1bXAobV90ZXh0T3V0cHV0LnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgZWxzZSBpZiAobV9hdWRpb1Jlc3VsdCkKKyAgICAgICAgZHVtcEF1ZGlv
KG1fYXVkaW9SZXN1bHQuZ2V0KCkpOwogCiAgICAgaWYgKG1fZHVtcFBpeGVscyAmJiBtX3BpeGVs
UmVzdWx0KQogICAgICAgICBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChtX3BpeGVs
UmVzdWx0LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSk7CiAKICAgICBmcHV0cygiI0VPRlxu
Iiwgc3Rkb3V0KTsKICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30K
Kwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKFdLRGF0YVJlZiBhdWRpb0RhdGEpCit7
CisgICAgc2l6ZV90IGxlbmd0aCA9IFdLRGF0YUdldFNpemUoYXVkaW9EYXRhKTsKKyAgICBpZiAo
IWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSA9IFdLRGF0YUdldEJ5dGVzKGF1ZGlvRGF0YSk7CisKKyAgICBwcmludGYoIkNvbnRlbnQtVHlw
ZTogYXVkaW8vd2F2XG4iKTsKKyAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAlbHVcbiIsIGxl
bmd0aCk7CisKKyAgICBjb25zdCBzaXplX3QgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayA9IDEgPDwg
MTU7CisgICAgc2l6ZV90IGRhdGFSZW1haW5pbmdUb1dyaXRlID0gbGVuZ3RoOworICAgIHdoaWxl
IChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgeworICAgICAgICBzaXplX3QgYnl0ZXNUb1dyaXRlSW5U
aGlzQ2h1bmsgPSBzdGQ6Om1pbihkYXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5P
bmVDaHVuayk7CisgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwg
Ynl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHN0ZG91dCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0
ZW4gIT0gYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmspCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGF0YVJlbWFpbmluZ1RvV3JpdGUgLT0gYnl0ZXNXcml0dGVuOworICAgICAgICBkYXRhICs9
IGJ5dGVzV3JpdHRlbjsKKyAgICB9CisgICAgcHJpbnRmKCIjRU9GXG4iKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIiNFT0ZcbiIpOwogfQogCiBib29sIFRlc3RJbnZvY2F0aW9uOjpjb21wYXJlQWN0
dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyIGFjdHVhbEhhc2hbMzNd
KQpAQCAtMzQ2LDYgKzM3OCw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CiAgICAgICAgIG1fcmVwYWlu
dFJlY3RzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSkpOwogCisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdWRpb1Jlc3VsdEtleSA9ICBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKKyAgICAgICAgbV9h
dWRpb1Jlc3VsdCA9IHN0YXRpY19jYXN0PFdLRGF0YVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGF1ZGlvUmVzdWx0S2V5LmdldCgpKSk7CisKICAg
ICAgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggYjllYWQxNGFhNGMwNTgwYWYwOWQ4MWFhYmUyNzA1
MzllNDYyYTBlZi4uMjcyYzFmN2UwNTg2NTU5MzM5MThhYzY1YzM2MzNjYmVjYWFlM2FkYiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNTEsNiArNTEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wKGNv
bnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9v
bCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhF
eHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7CisgICAgdm9pZCBk
dW1wQXVkaW8oV0tEYXRhUmVmKTsKICAgICBib29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3Rl
ZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJbMzNdKTsKIAogI2lmIFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpCkBAIC03MCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Vycm9y
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3RleHRPdXRwdXQ7CisgICAgV0tSZXRhaW5QdHI8V0tE
YXRhUmVmPiBtX2F1ZGlvUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4
ZWxSZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CiAg
ICAgc3RkOjpzdHJpbmcgbV9lcnJvck1lc3NhZ2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179967</attachid>
            <date>2012-12-18 09:48:12 -0800</date>
            <delta_ts>2012-12-19 04:54:33 -0800</delta_ts>
            <desc>Patch, v4, review comments addressed.</desc>
            <filename>bug-95084-20121218194528.patch</filename>
            <type>text/plain</type>
            <size>17016</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTA4ZWJjMWE1ZWU5Njcx
MDcwYjEzM2RhMjAxMzJiZGE2ZjQ4YTc3MS4uNTUyZGU1MmI0OGRhNTc5YzI0ZmE1MDNiMzAxNjk2
OWFlNjcxMGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTE4ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBm
b3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAgICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElE
TCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2ZlcnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEg
YXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBpdCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdl
YmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgSSBhbSBhZGRpbmcg
YSB0ZXN0cnVubmVyIHNwZWNpZmljIGJ1bmRsZSBtZXRob2QgdG8gZXh0cmFjdCBkYXRhCisgICAg
ICAgIGZyb20gYSBVaW50OEFycmF5IGludG8gYSBieXRlYnVmZmVyLiBUaGlzIEFQSSBpcyB1c2Vk
IGJ5CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIncyBUZXN0UnVubmVyIHRvIGV4dHJhY3QgdGhl
IGRhdGEgaW50byBhIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLCB0aGVuIHNlbmRpbmcgaXQgb3Zl
ciBJUEMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBBZGRp
bmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENvbnZlcnQgVWludDhBcnJheSB0byBXZWJE
YXRhLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGF0YUZyb21VaW50OEFycmF5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlKToKKwogMjAxMi0xMi0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFRyeSB0byBmaXggdGhlIE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5k
ZXggZTdkNTYxMWYwYTE2N2RkMjBkNGM3MWMyZGFkNGM3NDc4NWIzMDFiNC4uOWVkNzY3OGE3NzIy
MDE0YmM3NWJjZDUzN2E3MTYyZWI3ZjJlZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTI2OCw2ICsyNjksMTIgQEAg
dm9pZCBXS0J1bmRsZVNldE1pbmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYKICAgICB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwodG9JbXBsKHBhZ2VHcm91cFJlZiksIHNlY29uZHMpOwogfQogCitXS0Rh
dGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVJbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJEYXRh
PiB3ZWJEYXRhID0gdG9JbXBsKGJ1bmRsZSktPmRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBk
YXRhKTsKKyAgICByZXR1cm4gdG9BUEkod2ViRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KwogaW50IFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBh
Z2VIZWlnaHRJblBpeGVscykKIHsKICAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPm51bWJl
ck9mUGFnZXModG9JbXBsKGZyYW1lUmVmKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJ
blBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCAyY2FjYjU5NzZh
M2RhN2UyNWExZWZkMzAyNmI1NzkwMmIzMGIxYTM2Li4zMTg4YmJlOGFmMTE0NDRiYzg1ZTM5MWM4
NWE1OGI2YzZmYzhlMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTY3
LDYgKzY3LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGUKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRX
ZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldE1p
bmltdW1UaW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmLCBkb3VibGUgaW50ZXJ2YWwpOworV0tfRVhQT1JUIFdLRGF0YVJl
ZiBXS0J1bmRsZURhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogCiAvLyBVc2VyQ29udGVudCBBUEkKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYgd2hp
dGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxYjRlODVhZjdjZmE4ODJhNjliMTRkM2YyNmFi
ODM1MDE0ZjFmNjE1Li5iM2U0NzA4ZDkyZTdmZTEwZDcyNTVhNTYxYWRhYWQzZGE4Yzg3MWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkNv
bnRleHRNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTTm90aWZpY2F0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9KU1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVZp
c2liaWxpdHlTdGF0ZS5oPgpAQCAtNjMxLDYgKzYzMywxMyBAQCB1aW50NjRfdCBJbmplY3RlZEJ1
bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJl
ZiBqcwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8V2ViRGF0YT4gSW5qZWN0ZWRCdW5kbGU6OmRh
dGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQor
eworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRleHQpOworICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBhcnJheURhdGEgPSBXZWJDb3JlOjp0b1VpbnQ4QXJyYXkodG9KUyhl
eGVjU3RhdGUsIGRhdGEpKTsKKyAgICByZXR1cm4gV2ViRGF0YTo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihhcnJheURhdGEtPmJhc2VBZGRyZXNzKCkpLCBhcnJheURhdGEtPmJ5
dGVMZW5ndGgoKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhXZWJQYWdlKiBwYWdlLCBib29sIGVuYWJsZWQpCiB7CiAgICAgcGFnZS0+
Y29yZVBhZ2UoKS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDhjMDY1Y2MxNGQwYWJkZDQ5NzQ4MzRmN2Y1Y2I1N2ZhYTk0ZWJi
N2YuLjBjOTMwZmM3YjA2NWNhYmI1NDY3ZTEzYTZlYzRjMTljNDQ3OGU2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgV2ViQ29ubmVjdGlvbjsKK2NsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKQEAgLTEzNCw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50NjRfdCB3
ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFBhc3NSZWZQ
dHI8V2ViRGF0YT4gZGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11
dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwg
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODViNzU1YjAxOGZkYzFjNWNhMDM2OTg2
NjhhMmM5MTRkZmQyNmY4Ny4uYzU0MDljODBjNzZlZGY2MDE1Y2Q5MTRkYzJjODE0NzQ1ZTYyZDNm
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDEyLTEyLTE4ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJv
dHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dGluZyBhdWRpbyBkYXRhIGR1bXAgc3VwcG9ydCBmb3IgV2ViS2l0VGVzdFJ1bm5lciwKKyAgICAg
ICAgYnkgYWRkaW5nIHRoZSBBUEkgdG8gdGhlIElETCwgZW5hYmxpbmcgSVBDIGZvciB0cmFuc2Zl
cnJpbmcKKyAgICAgICAgdGhlIGF1ZGlvIGRhdGEgYXMgYnl0ZWJ1ZmZlciBhbmQgZHVtcGluZyBp
dCBhY2NvcmRpbmcKKyAgICAgICAgdG8gcnVuLXdlYmtpdC10ZXN0cyBzY3JpcHQncyBleHBlY3Rh
dGlvbnMuCisgICAgICAgIFRoaXMgZW5hYmxlcyBhdWRpbyB0ZXN0aW5nIG9uIFdlYktpdDIgcG9y
dHMuCisgICAgICAgIEJhc2VkIG9uIGluaXRpYWwgd2lwLXBhdGNoIGZyb20gUGhpbGlwcGUgTm9y
bWFuZCAtIHRoYW5rcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6IEFkZGluZyBzZXRBdWRpb0RhdGEgQVBJLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6IEFz
c2lnbiBhdWRpbyBidWZmZXIgZGF0YSB0byBhIGxvY2FsIFdLRGF0YVJlZiBhZnRlciBleHRyYWN0
aW5nIGl0IGZyb20gV0syIHVzaW5nIFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5IGJ1bmRsZSBB
UEkuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YSk6CisgICAgICAgIChX
VFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOiBBZGQgYSB3aGF0VG9EdW1wIHN0YXRlIGZvciBkdW1waW5nIEF1ZGlvLgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6IEFkZCBhdWRpbyB0byB0aGUgbWVzc2FnZSB0aGF0J3MgdHJhbnNm
ZXJyZWQgdG8gdGhlIFdLVFIgcHJvY2Vzcy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaDogQWxsb3cgc2V0dGluZyBhbmQgYXVkaW8gcmVzdWx0IGhhbmRsZSB0byBiZSB0
cmFuc2ZlcnJlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEF1ZGlvUmVzdWx0
KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcDogQXVkaW8gZHVtcCBzdXBwb3J0LCBkdW1wIGF1ZGlvIGlmIHdl
IGhhdmVuJ3QgcmVjZWl2ZWQgYSB0ZXh0IGR1bXAgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChXVFIpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogU3Rv
cmluZyByZWNlaXZlZCBhdWRpbyBkYXRhIGJlZm9yZSBkdW1waW5nLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToK
KwogMjAxMi0xMi0xOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBJbWFnZURpZmYgZG9lcyBub3QgYnVpbGQgb24gV2Vi
S2l0MiBvbmx5IGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDM2OGM1OTA4
NmJiNzg2ZDM0M2U1NzM4YmI2ZDAwZDZjMTY4MGZhNi4uNDdiMDE4MDc0OWQ1YmQ5YWZjMzBiMzAw
YjZhMDFiMTkxZGRhOTMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xODIsNiAr
MTgyLDkgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oaW4gZG91YmxlIGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBk
b3VibGUgYWNjdXJhY3ksIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBh
bHRpdHVkZSwgaW4gW09wdGlvbmFsXSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlv
bmFsXSBvYmplY3QgaGVhZGluZywgaW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmlu
ZyBlcnJvck1lc3NhZ2UpOwogCisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICBbUGFzc0NvbnRl
eHRdIHZvaWQgc2V0QXVkaW9EYXRhKGluIG9iamVjdCBkYXRhKTsKKwogICAgIGJvb2xlYW4gY2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KCk7CiAKICAgICAvLyBXb3JrIHF1ZXVlLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCAxNGNiYzRjNmEyYWE2OTEwYzdhYTAyNjIwMjQ2OTBmMjU4ZDcyOTNkLi45ZDMw
YWQ5MjhhMDI5NGQwMmNmNjA5M2FjZmY5MDFkM2EwYzcwMWU2IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApA
QCAtMjk0LDYgKzI5NCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUoKQogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRk
SXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSwgbV9yZXBh
aW50UmVjdHMuZ2V0KCkpOwogCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvUmVz
dWx0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1
bHQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIGF1
ZGlvUmVzdWx0S2V5LmdldCgpLCBtX2F1ZGlvUmVzdWx0LmdldCgpKTsKKwogICAgIFdLQnVuZGxl
UG9zdE1lc3NhZ2UobV9idW5kbGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VC
b2R5LmdldCgpKTsKIAogICAgIGNsb3NlT3RoZXJQYWdlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM5
NWQyMDQ1NmQ0YWRjYWI3YzQzMGMwYzFkMDA3ZDYyNmYwY2VmMzAuLmQ0NDViNGE4MzNiNzAxNTdk
YTEzZjIyNzE3Yzg3MjI4NTg4YTA5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTY2LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhTdHJpbmdC
dWlsZGVyJik7CiAKICAgICB2b2lkIGRvbmUoKTsKKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KFdL
RGF0YVJlZiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogICAgIHZv
aWQgc2V0UGl4ZWxSZXN1bHQoV0tJbWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVzdWx0ID0gaW1h
Z2U7IH0KICAgICB2b2lkIHNldFJlcGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVw
YWludFJlY3RzID0gcmVjdHM7IH0KIApAQCAtMTUxLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogICAgIGJvb2wgbV91c2VXb3JrUXVl
dWU7CiAKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tS
ZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA4NWM2ODE3MTY5YTVjMzVj
NzA1ZGI1NDIwNmYxNTE3OWM1ZWVmZmZkLi42NjYyZmI2ODAxZTM2NThlOTlkOWIwNTlkNTZhYzg4
ZmJkMDE1Y2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVTY3JpcHRXb3JsZC5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dlYktpdDJfQy5oPgpAQCAtNDMzLDYgKzQzNCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBK
U1N0cgogICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVz
ZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OnNldEF1ZGlvRGF0YShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRh
KQoreworICAgIFdLRGF0YVJlZiBhdWRpb0RhdGEgPSBXS0J1bmRsZURhdGFGcm9tVUludDhBcnJh
eShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGNvbnRleHQsIGRhdGEpOworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zZXRBdWRpb1Jlc3VsdChhdWRpb0RhdGEpOworICAg
IG1fd2hhdFRvRHVtcCA9IEF1ZGlvOworfQorCiB1bnNpZ25lZCBUZXN0UnVubmVyOjp3aW5kb3dD
b3VudCgpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlQ291bnQo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKaW5kZXggMzIwZGEzNThjNWRhOTc0ODA1NTZlZDE5NmQ1NTdjMWUyMGJlNmQyMC4uOTQz
YjU2ZTlhMWVkNGFjMjFlMTg0NjNjZDBjNzc1MWIxZGMwNmY2OSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE2MCw3ICsx
NjAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKTsKIAotICAgIGVudW0gV2hh
dFRvRHVtcCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQgfTsKKyAg
ICAvLyBBdWRpbyB0ZXN0aW5nLgorICAgIHZvaWQgc2V0QXVkaW9EYXRhKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBkYXRhKTsKKworICAgIGVudW0gV2hhdFRvRHVtcCB7IFJlbmRlclRyZWUsIE1h
aW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvIH07CiAgICAgV2hhdFRvRHVtcCB3aGF0
VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CiAKICAgICBib29sIHNob3Vs
ZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVt
cEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDcyODdlOTE0N2I0YmFhNGUwMWU1MTZjY2NjOGM3MTlkMjFmODFm
MTMuLjBmNzliMjI5MDA4Y2UwMTIyMDNjNWE5ZDY3NDAyMjk2NTU0OTliNGYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0zMiw4ICszMiw5IEBACiAjaW5j
bHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNz
dGRpbz4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tDb250ZXh0UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRhLmg+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0RpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVj
dG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgpAQCAtMjg3LDEzICsyODgsNDIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciwg
Ym8KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMoKQogewotICAgIGR1bXAobV90
ZXh0T3V0cHV0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fdGV4dE91dHB1
dC5sZW5ndGgoKSkKKyAgICAgICAgZHVtcChtX3RleHRPdXRwdXQudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBlbHNlIGlmIChtX2F1ZGlvUmVzdWx0KQorICAgICAgICBkdW1wQXVkaW8o
bV9hdWRpb1Jlc3VsdC5nZXQoKSk7CiAKICAgICBpZiAobV9kdW1wUGl4ZWxzICYmIG1fcGl4ZWxS
ZXN1bHQpCiAgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKG1fcGl4ZWxS
ZXN1bHQuZ2V0KCksIG1fcmVwYWludFJlY3RzLmdldCgpKTsKIAogICAgIGZwdXRzKCIjRU9GXG4i
LCBzdGRvdXQpOwogICAgIGZmbHVzaChzdGRvdXQpOworICAgIGZmbHVzaChzdGRlcnIpOworfQor
Cit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wQXVkaW8oV0tEYXRhUmVmIGF1ZGlvRGF0YSkKK3sK
KyAgICBzaXplX3QgbGVuZ3RoID0gV0tEYXRhR2V0U2l6ZShhdWRpb0RhdGEpOworICAgIGlmICgh
bGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
ID0gV0tEYXRhR2V0Qnl0ZXMoYXVkaW9EYXRhKTsKKworICAgIHByaW50ZigiQ29udGVudC1UeXBl
OiBhdWRpby93YXZcbiIpOworICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwgbGVu
Z3RoKTsKKworICAgIGNvbnN0IHNpemVfdCBieXRlc1RvV3JpdGVJbk9uZUNodW5rID0gMSA8PCAx
NTsKKyAgICBzaXplX3QgZGF0YVJlbWFpbmluZ1RvV3JpdGUgPSBsZW5ndGg7CisgICAgd2hpbGUg
KGRhdGFSZW1haW5pbmdUb1dyaXRlKSB7CisgICAgICAgIHNpemVfdCBieXRlc1RvV3JpdGVJblRo
aXNDaHVuayA9IHN0ZDo6bWluKGRhdGFSZW1haW5pbmdUb1dyaXRlLCBieXRlc1RvV3JpdGVJbk9u
ZUNodW5rKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZShkYXRhLCAxLCBi
eXRlc1RvV3JpdGVJblRoaXNDaHVuaywgc3Rkb3V0KTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBieXRlc1RvV3JpdGVJblRoaXNDaHVuaykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkYXRhUmVtYWluaW5nVG9Xcml0ZSAtPSBieXRlc1dyaXR0ZW47CisgICAgICAgIGRhdGEgKz0g
Ynl0ZXNXcml0dGVuOworICAgIH0KKyAgICBwcmludGYoIiNFT0ZcbiIpOworICAgIGZwcmludGYo
c3RkZXJyLCAiI0VPRlxuIik7CiB9CiAKIGJvb2wgVGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1
YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXIgYWN0dWFsSGFzaFszM10p
CkBAIC0zNDYsNiArMzc2LDkgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJlcGFpbnRSZWN0c0tleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlcGFpbnRSZWN0cyIpKTsKICAgICAgICAgbV9yZXBhaW50
UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgcmVwYWludFJlY3RzS2V5LmdldCgpKSk7CiAKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvUmVzdWx0S2V5ID0gIGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkF1ZGlvUmVzdWx0IikpOworICAgICAgICBtX2F1
ZGlvUmVzdWx0ID0gc3RhdGljX2Nhc3Q8V0tEYXRhUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCkpKTsKKwogICAg
ICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9IHRydWU7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aGFyZWQoKS5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAppbmRleCBiOWVhZDE0YWE0YzA1ODBhZjA5ZDgxYWFiZTI3MDUz
OWU0NjJhMGVmLi4yNzJjMWY3ZTA1ODY1NTkzMzkxOGFjNjVjMzYzM2NiZWNhYWUzYWRiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1bXAoY29u
c3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29s
IHNlZW5FcnJvciA9IGZhbHNlKTsKICAgICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4
cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKKyAgICB2b2lkIGR1
bXBBdWRpbyhXS0RhdGFSZWYpOwogICAgIGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVk
QW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOwogCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEVGTCkKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXJyb3I7
CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fdGV4dE91dHB1dDsKKyAgICBXS1JldGFpblB0cjxXS0Rh
dGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhl
bFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKICAg
ICBzdGQ6OnN0cmluZyBtX2Vycm9yTWVzc2FnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180135</attachid>
            <date>2012-12-19 04:54:43 -0800</date>
            <delta_ts>2012-12-19 06:07:40 -0800</delta_ts>
            <desc>Patch v4, mac &amp; qt build fixes.</desc>
            <filename>bug-95084-20121219145158.patch</filename>
            <type>text/plain</type>
            <size>22847</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1NWYxNTA0MWIzN2Nk
NTMwOTkwMTkzYzFiZGExY2VkYTg5MjhhMy4uYTIyNjk0Y2ViNjFmYjMxZDExNTQ1Y2FkMmI1MmUx
ZWU5ZTk4ODY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTE5ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hYyBidWlsZCBmaXhlcyBmb3IgYWRkaW5nIFdlYkF1ZGlvIFdL
VFIgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVuYWJsZXMgYXVkaW8gdGVzdGlu
ZyB1c2luZyBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IHRv
VWludDhBcnJheSBzeW1ib2wgZXhwb3J0ZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBKU1VpbnQ4QXJyYXkuaCBhbmQgSlNBcnJheUJ1ZmZlclZpZXcuaCBo
ZWFkZXJzIG1hZGUgYXZhaWxhYmxlIGFzIHByaXZhdGUgaGVhZGVycy4KKwogMjAxMi0xMi0xOSAg
UmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ1NTUGFyc2VyIGNy
YXNlcywgd2hlbiBubyBjb250ZXh0IGlzIGF2YWlsYWJsZSwgYW5kIHRoZSB2YWx1ZSBpcyBhIHZh
bGlkIGtleXdvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNzZkMGZlNzNkYTk4NWRmZjU1Y2E0YmRmN2RiM2Vh
OWY3Y2FkODYxLi4yYjY4MWNhNTJiMjQ3MjkxODkwMjVkZmJiZGUyMmE1YTY1MGYwZTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTItMTkgIERvbWluaWsgUsO2dHRzY2hlcyAg
PGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBXZWJBdWRpbyBX
S1RSIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50aW5nIGF1ZGlvIGRhdGEgZHVtcCBzdXBwb3J0IGZvciBXZWJLaXRUZXN0UnVu
bmVyLAorICAgICAgICBieSBhZGRpbmcgdGhlIEFQSSB0byB0aGUgSURMLCBlbmFibGluZyBJUEMg
Zm9yIHRyYW5zZmVycmluZworICAgICAgICB0aGUgYXVkaW8gZGF0YSBhcyBieXRlYnVmZmVyIGFu
ZCBkdW1waW5nIGl0IGFjY29yZGluZworICAgICAgICB0byBydW4td2Via2l0LXRlc3RzIHNjcmlw
dCdzIGV4cGVjdGF0aW9ucy4KKworICAgICAgICBJIGFtIGFkZGluZyBhIHRlc3RydW5uZXIgc3Bl
Y2lmaWMgYnVuZGxlIG1ldGhvZCB0byBleHRyYWN0IGRhdGEKKyAgICAgICAgZnJvbSBhIFVpbnQ4
QXJyYXkgaW50byBhIGJ5dGVidWZmZXIuIFRoaXMgQVBJIGlzIHVzZWQgYnkKKyAgICAgICAgV2Vi
S2l0VGVzdFJ1bm5lcidzIFRlc3RSdW5uZXIgdG8gZXh0cmFjdCB0aGUgZGF0YSBpbnRvIGEgbG9j
YWwKKyAgICAgICAgdmFyaWFibGUsIHRoZW4gc2VuZGluZyBpdCBvdmVyIElQQy4KKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLnByaTogRml4aW5nIFF0IGJ1aWxkIGJ5IGFkZGluZyBKU1VpbnQ4
QXJyYXkuaCBoZWFkZXIgdG8gbGlzdCBvZiBmb3J3YXJkaW5nIGhlYWRlcnMuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChX
S0J1bmRsZURhdGFGcm9tVWludDhBcnJheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaDogQWRkaW5nIFdLQnVuZGxlRGF0YUZyb21V
aW50OEFycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOiBDb252ZXJ0IFVpbnQ4QXJyYXkgdG8gV2ViRGF0YS4KKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OmRhdGFGcm9tVWludDhBcnJheSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisKIDIwMTItMTIt
MTkgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW51c2Vk
IHBhcmFtZXRlcnMgb24gV2ViQ29udGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmIx
OGJhYjY4ZTA4MmNlMDcxODgxYWY3MGI1MzZkODRkNzI2NzI1NC4uNDhkMmJkY2Q4MTgzMWU4M2Ux
MjVkNjg2Mzk1ZmZhMWNkMjExNTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxMCw2ICsy
MTAsNyBAQCBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQS05TXzVSYW5nZUVQTjNXVEY2VmVj
dG9ySVBOU180Tm9kZUVMbTBFRUVOU18yM0VBbm5vdAogX19aTjdXZWJDb3JlMTJkZWxldGVDb29r
aWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTEyZ2NDb250cm9sbGVyRXYKIF9fWk43V2ViQ29yZTEyaWNvbkRhdGFiYXNlRXYK
K19fWk43V2ViQ29yZTEydG9VaW50OEFycmF5RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUx
M0FYT2JqZWN0Q2FjaGUxMHJvb3RPYmplY3RFdgogX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hl
MThyb290T2JqZWN0Rm9yRnJhbWVFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTEzQVhPYmplY3RD
YWNoZTIxZ0FjY2Vzc2liaWxpdHlFbmFibGVkRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZWZjZDJjOGU1ZDYwZTQyZTdhZmRi
NTFhOGNhY2Q1ZWY2NGQyYjguLjgzNTNkZjhmZjk1ZGQ0M2I2NGFiYWY4YzU2MDY5ZDI1Y2RiMDIx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0MDMsMTMgKzE0MDMsMTMgQEAKIAkJNDlFRUNGMDYxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTSW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUVFQ0VGODEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5LmNwcCAq
LzsgfTsKIAkJNDlFRUNGMDcxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRjkxMDUwNzBD
NDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oICovOyB9OwogCQk0OUVFQ0YwODEwNTA3MEM0MDAw
OTlGQUIgLyogSlNVaW50OEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZBMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXku
Y3BwICovOyB9OwotCQk0OUVFQ0YwOTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGQjEw
NTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5LmggKi87IH07CisJCTQ5RUVDRjA5MTA1MDcw
QzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZCMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
OUVFQ0YwQTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGQzEwNTA3MEM0MDAwOTlG
QUIgLyogSlNVaW50MzJBcnJheS5jcHAgKi87IH07CiAJCTQ5RUVDRjBCMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUVFQ0VGRDEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5oICov
OyB9OwogCQk0OUVFQ0YwQzEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGRTEwNTA3
MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5jcHAgKi87IH07CiAJCTQ5RUVDRjBEMTA1MDcw
QzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGRjEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZB
cnJheS5oICovOyB9OwogCQk0OUVFQ0YxQjEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZl
clZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsK
LQkJNDlFRUNGMUMxMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0YxQTEwNTA3MkYz
MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLzsgfTsKKwkJNDlFRUNGMUMxMDUwNzJG
MzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0YxQTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJh
eUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0OUVFRDE0MjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
RUVEMTNDMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwICov
OyB9OwogCQk0OUVFRDE0MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDEzRDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi87IH07
CiAJCTQ5RUVEMTQ0MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDEzRTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICov
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IDQ0NDgzMzhmZmViYzljM2YyZjk4
NjhhOTE0MGQxYjAyN2MxZDdhMzcuLjFlMmMzNTBkMGQ3NDIwM2UwODdmMzg5NGZmZDBmYTQwN2Y3
ZGRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTI0LDYgKzI0LDcgQEAgV0VC
Q09SRV9HRU5FUkFURURfSEVBREVSU19GT1JfV0VCS0lUMiArPSBcCiAgICAgJCRXRUJDT1JFX0dF
TkVSQVRFRF9TT1VSQ0VTX0RJUi9KU05vZGUuaCBcCiAgICAgJCRXRUJDT1JFX0dFTkVSQVRFRF9T
T1VSQ0VTX0RJUi9KU05vdGlmaWNhdGlvbi5oIFwKICAgICAkJFdFQkNPUkVfR0VORVJBVEVEX1NP
VVJDRVNfRElSL0pTUmFuZ2UuaCBcCisgICAgJCRXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJ
Ui9KU1VpbnQ4QXJyYXkuaCBcCiAKIGRlZmluZVJlcGxhY2UobWVzc2FnZV9oZWFkZXJfZ2VuZXJh
dG9yX291dHB1dCkgewogICBGSUxFTkFNRT0kJGJhc2VuYW1lKDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCmluZGV4IGU3ZDU2MTFmMGExNjdkZDIwZDRjNzFjMmRhZDRjNzQ3ODViMzAxYjQuLjllZDc2
NzhhNzcyMjAxNGJjNzViY2Q1MzdhNzE2MmViN2YyZWU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQcml2YXRlLmgiCisjaW5jbHVk
ZSAiV2ViRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0yNjgsNiArMjY5
LDEyIEBAIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmCiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnNl
dE1pbmltdW1UaW1lckludGVydmFsKHRvSW1wbChwYWdlR3JvdXBSZWYpLCBzZWNvbmRzKTsKIH0K
IAorV0tEYXRhUmVmIFdLQnVuZGxlRGF0YUZyb21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKK3sKKyAgICBSZWZQdHI8
V2ViRGF0YT4gd2ViRGF0YSA9IHRvSW1wbChidW5kbGUpLT5kYXRhRnJvbVVpbnQ4QXJyYXkoY29u
dGV4dCwgZGF0YSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkRhdGEucmVsZWFzZSgpLmxlYWtSZWYo
KSk7Cit9CisKIGludCBXS0J1bmRsZU51bWJlck9mUGFnZXMoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRv
dWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChidW5kbGVSZWYp
LT5udW1iZXJPZlBhZ2VzKHRvSW1wbChmcmFtZVJlZiksIHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdl
SGVpZ2h0SW5QaXhlbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggMmNh
Y2I1OTc2YTNkYTdlMjVhMWVmZDMwMjZiNTc5MDJiMzBiMWEzNi4uMzE4OGJiZThhZjExNDQ0YmM4
NWUzOTFjODVhNThiNmM2ZmM4ZTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
CkBAIC02Nyw2ICs2Nyw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlCiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHVpbnQ2NF90IFdLQnVu
ZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVTZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxl
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgZG91YmxlIGludGVydmFsKTsKK1dLX0VYUE9SVCBX
S0RhdGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVJbnQ4QXJyYXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKTsKIAogLy8gVXNlckNvbnRlbnQg
QVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVu
ZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVmIHNvdXJjZSwgV0tVUkxSZWYgdXJsLCBXS0FycmF5
UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xpc3QsIFdLVXNlclNjcmlwdEluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZSwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMWI0ZTg1YWY3Y2ZhODgyYTY5YjE0
ZDNmMjZhYjgzNTAxNGYxZjYxNS4uYjNlNDcwOGQ5MmU3ZmUxMGQ3MjU1YTU2MWFkYWFkM2RhOGM4
NzFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkRhdGEu
aCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTU2LDYgKzU3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU05vdGlmaWNhdGlvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSlNVaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VWaXNpYmlsaXR5U3RhdGUuaD4KQEAgLTYzMSw2ICs2MzMsMTMgQEAgdWludDY0X3QgSW5q
ZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpT
VmFsdWVSZWYganMKICNlbmRpZgogfQogCitQYXNzUmVmUHRyPFdlYkRhdGE+IEluamVjdGVkQnVu
ZGxlOjpkYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
ZGF0YSkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlID0gdG9KUyhjb250ZXh0KTsK
KyAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXlEYXRhID0gV2ViQ29yZTo6dG9VaW50OEFycmF5
KHRvSlMoZXhlY1N0YXRlLCBkYXRhKSk7CisgICAgcmV0dXJuIFdlYkRhdGE6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYXJyYXlEYXRhLT5iYXNlQWRkcmVzcygpKSwgYXJyYXlE
YXRhLT5ieXRlTGVuZ3RoKCkpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRUYWJLZXlD
eWNsZXNUaHJvdWdoRWxlbWVudHMoV2ViUGFnZSogcGFnZSwgYm9vbCBlbmFibGVkKQogewogICAg
IHBhZ2UtPmNvcmVQYWdlKCktPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhlbmFibGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA4YzA2NWNjMTRkMGFiZGQ0OTc0ODM0ZjdmNWNiNTdm
YWE5NGViYjdmLi4wYzkzMGZjN2IwNjVjYWJiNTQ2N2UxM2E2ZWM0YzE5YzQ0NzhlNmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEltbXV0YWJsZUFycmF5Owog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5m
bzsKIGNsYXNzIFdlYkNvbm5lY3Rpb247CitjbGFzcyBXZWJEYXRhOwogY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CkBAIC0xMzQsNiArMTM1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQ
YWdlKiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9p
ZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7CiAgICAgdWlu
dDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKKyAgICBQ
YXNzUmVmUHRyPFdlYkRhdGE+IGRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFs
dWVSZWYpOwogCiAgICAgLy8gVXNlckNvbnRlbnQgQVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlz
dCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJiMzUzM2JmYjcyYjhhZGQx
ZDNhZWQ3ZGVkYzUyMDgxNzEyNDYwMWQuLjA2OGYwZjA3ZDUxNjRmMzU1YTk3M2I3YTEwZDVjOTZh
NDRmNmJhYmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0xMi0xOSAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9t
aW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIFdlYkF1ZGlvIFdLVFIg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUwODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRpbmcgYXVkaW8gZGF0YSBkdW1wIHN1cHBvcnQgZm9yIFdlYktpdFRlc3RSdW5uZXIs
CisgICAgICAgIGJ5IGFkZGluZyB0aGUgQVBJIHRvIHRoZSBJREwsIGVuYWJsaW5nIElQQyBmb3Ig
dHJhbnNmZXJyaW5nCisgICAgICAgIHRoZSBhdWRpbyBkYXRhIGFzIGJ5dGVidWZmZXIgYW5kIGR1
bXBpbmcgaXQgYWNjb3JkaW5nCisgICAgICAgIHRvIHJ1bi13ZWJraXQtdGVzdHMgc2NyaXB0J3Mg
ZXhwZWN0YXRpb25zLgorICAgICAgICBUaGlzIGVuYWJsZXMgYXVkaW8gdGVzdGluZyBvbiBXZWJL
aXQyIHBvcnRzLgorICAgICAgICBCYXNlZCBvbiBpbml0aWFsIHdpcC1wYXRjaCBmcm9tIFBoaWxp
cHBlIE5vcm1hbmQgLSB0aGFua3MuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOiBBZGRpbmcgc2V0QXVkaW9EYXRhIEFQ
SS4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOiBBc3NpZ24gYXVkaW8gYnVmZmVyIGRhdGEgdG8gYSBsb2NhbCBXS0RhdGFSZWYgYWZ0ZXIg
ZXh0cmFjdGluZyBpdCBmcm9tIFdLMiB1c2luZyBXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheSBi
dW5kbGUgQVBJLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb0RhdGEpOgorICAg
ICAgICAoV1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaDogQWRkIGEgd2hhdFRvRHVtcCBzdGF0ZSBmb3IgZHVtcGluZyBBdWRpby4KKyAg
ICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOiBBZGQgYXVkaW8gdG8gdGhlIG1lc3NhZ2UgdGhhdCdz
IHRyYW5zZmVycmVkIHRvIHRoZSBXS1RSIHByb2Nlc3MuCisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpkb25lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6IEFsbG93IHNldHRpbmcgYW5kIGF1ZGlvIHJlc3VsdCBoYW5kbGUg
dG8gYmUgdHJhbnNmZXJyZWQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpzZXRBdWRp
b1Jlc3VsdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXApOiBEdW1teSBoYW5kbGluZyB0aGUgQXVkaW8g
Y2FzZSBpbiB0aGUgc3dpdGNoLCBidWlsZCBmaXggZm9yIE1hYy4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDogQXVkaW8gZHVtcCBzdXBwb3J0LCBkdW1wIGF1
ZGlvIGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYSB0ZXh0IGR1bXAgZnJvbSB0aGUgd2ViIHByb2Nl
c3MuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6CisgICAgICAg
IChXVFIpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKToKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKTogU3RvcmluZyByZWNlaXZlZCBhdWRpbyBkYXRhIGJlZm9yZSBkdW1waW5nLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZv
Y2F0aW9uKToKKwogMjAxMi0xMi0xOSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdW01hY10gcnVuLWxhdW5jaGVyIGNhbm5vdCBmaW5kIFF0NVdlYktpdFdp
ZGdldHMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBkMzY4YzU5MDg2YmI3ODZkMzQz
ZTU3MzhiYjZkMDBkNmMxNjgwZmE2Li40N2IwMTgwNzQ5ZDViZDlhZmMzMGIzMDBiNmEwMWIxOTFk
ZGE5MzNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTE4Miw2ICsxODIsOSBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihpbiBkb3VibGUgbGF0aXR1ZGUsIGluIGRvdWJsZSBsb25naXR1ZGUsIGluIGRvdWJsZSBhY2N1
cmFjeSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gb2JqZWN0IGFsdGl0dWRlLCBp
biBbT3B0aW9uYWxdIG9iamVjdCBhbHRpdHVkZUFjY3VyYWN5LCBpbiBbT3B0aW9uYWxdIG9iamVj
dCBoZWFkaW5nLCBpbiBbT3B0aW9uYWxdIG9iamVjdCBzcGVlZCk7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoaW4gRE9NU3RyaW5nIGVycm9yTWVz
c2FnZSk7CiAKKyAgICAvLyBBdWRpbyB0ZXN0aW5nLgorICAgIFtQYXNzQ29udGV4dF0gdm9pZCBz
ZXRBdWRpb0RhdGEoaW4gb2JqZWN0IGRhdGEpOworCiAgICAgYm9vbGVhbiBjYWxsU2hvdWxkQ2xv
c2VPbldlYlZpZXcoKTsKIAogICAgIC8vIFdvcmsgcXVldWUuCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4
IDE0Y2JjNGM2YTJhYTY5MTBjN2FhMDI2MjAyNDY5MGYyNThkNzI5M2QuLjlkMzBhZDkyOGEwMjk0
ZDAyY2Y2MDkzYWNmZjkwMWQzYTBjNzAxZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yOTQsNiAr
Mjk0LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZG9uZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHJlcGFpbnRSZWN0c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlJlcGFpbnRSZWN0cyIpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGRvbmVN
ZXNzYWdlQm9keS5nZXQoKSwgcmVwYWludFJlY3RzS2V5LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5n
ZXQoKSk7CiAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKKyAg
ICBXS0RpY3Rpb25hcnlBZGRJdGVtKGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgYXVkaW9SZXN1bHRL
ZXkuZ2V0KCksIG1fYXVkaW9SZXN1bHQuZ2V0KCkpOworCiAgICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShtX2J1bmRsZSwgZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkp
OwogCiAgICAgY2xvc2VPdGhlclBhZ2VzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMzk1ZDIwNDU2ZDRh
ZGNhYjdjNDMwYzBjMWQwMDdkNjI2ZjBjZWYzMC4uZDQ0NWI0YTgzM2I3MDE1N2RhMTNmMjI3MTdj
ODcyMjg1ODhhMDk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBhZ2VzKFN0cmluZ0J1aWxkZXImKTsK
IAogICAgIHZvaWQgZG9uZSgpOworICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoV0tEYXRhUmVmIGF1
ZGlvRGF0YSkgeyBtX2F1ZGlvUmVzdWx0ID0gYXVkaW9EYXRhOyB9CiAgICAgdm9pZCBzZXRQaXhl
bFJlc3VsdChXS0ltYWdlUmVmIGltYWdlKSB7IG1fcGl4ZWxSZXN1bHQgPSBpbWFnZTsgfQogICAg
IHZvaWQgc2V0UmVwYWludFJlY3RzKFdLQXJyYXlSZWYgcmVjdHMpIHsgbV9yZXBhaW50UmVjdHMg
PSByZWN0czsgfQogCkBAIC0xNTEsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNl
V2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CiAgICAgYm9vbCBtX3VzZVdvcmtRdWV1ZTsKIAorICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxX
S0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1f
cmVwYWludFJlY3RzOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxMDEwMjAwZTk0
NDNiYmIwZjQ1M2JkMTUyMTllYzFkNDA4YjQ5NTVmLi4yZTg0ODE5MTI4MzViZGE2MDUyM2M4NGE2
MTBiNzM1MWIyNGMyYWNmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC05NDYsNiArOTQ2
LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgIGNhc2UgVGVzdFJ1bm5l
cjo6QWxsRnJhbWVzVGV4dDoKICAgICAgICAgZHVtcEFsbEZyYW1lc1RleHQoc3RyaW5nQnVpbGRl
cik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGVzdFJ1bm5lcjo6QXVkaW86CisgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDg1YzY4MTcxNjlhNWMzNWM3MDVkYjU0MjA2ZjE1MTc5YzVlZWZmZmQuLjY2NjJmYjY4MDFlMzY1
OGU5OWQ5YjA1OWQ1NmFjODhmYmQwMTVjYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tCdW5kbGVQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdv
cmxkLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Ml9DLmg+CkBAIC00MzMsNiArNDM0LDEzIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIGVsZW1lbnQsIEpTU3RyCiAgICAgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0
RWxlbWVudFZhbHVlRm9yVXNlcihub2RlSGFuZGxlLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7
CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9EYXRhKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIGRhdGEpCit7CisgICAgV0tEYXRhUmVmIGF1ZGlvRGF0YSA9IFdLQnVuZGxl
RGF0YUZyb21VSW50OEFycmF5KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgY29u
dGV4dCwgZGF0YSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldEF1ZGlvUmVzdWx0
KGF1ZGlvRGF0YSk7CisgICAgbV93aGF0VG9EdW1wID0gQXVkaW87Cit9CisKIHVuc2lnbmVkIFRl
c3RSdW5uZXI6OndpbmRvd0NvdW50KCkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2VDb3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAzMjBkYTM1OGM1ZGE5NzQ4MDU1NmVkMTk2ZDU1
N2MxZTIwYmU2ZDIwLi45NDNiNTZlOWExZWQ0YWMyMWUxODQ2M2NkMGM3NzUxYjFkYzA2ZjY5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaApAQCAtMTYwLDcgKzE2MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZhbHVlRm9y
VXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUp
OwogCi0gICAgZW51bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxs
RnJhbWVzVGV4dCB9OworICAgIC8vIEF1ZGlvIHRlc3RpbmcuCisgICAgdm9pZCBzZXRBdWRpb0Rh
dGEoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGRhdGEpOworCisgICAgZW51bSBXaGF0VG9EdW1w
IHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVkaW8gfTsKICAg
ICBXaGF0VG9EdW1wIHdoYXRUb0R1bXAoKSBjb25zdCB7IHJldHVybiBtX3doYXRUb0R1bXA7IH0K
IAogICAgIGJvb2wgc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7IH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzI4N2U5MTQ3YjRiYWE0ZTAxZTUx
NmNjY2M4YzcxOWQyMWY4MWYxMy4uMGY3OWIyMjkwMDhjZTAxMjIwM2M1YTlkNjc0MDIyOTY1NTQ5
OWI0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTMy
LDggKzMyLDkgQEAKICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGNsaW1p
dHM+CiAjaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC0yODcsMTMgKzI4OCw0MiBAQCB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hh
ciogdGV4dFRvU3RkZXJyLCBibwogCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygp
CiB7Ci0gICAgZHVtcChtX3RleHRPdXRwdXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBpZiAobV90ZXh0T3V0cHV0Lmxlbmd0aCgpKQorICAgICAgICBkdW1wKG1fdGV4dE91dHB1dC50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGVsc2UgaWYgKG1fYXVkaW9SZXN1bHQpCisg
ICAgICAgIGR1bXBBdWRpbyhtX2F1ZGlvUmVzdWx0LmdldCgpKTsKIAogICAgIGlmIChtX2R1bXBQ
aXhlbHMgJiYgbV9waXhlbFJlc3VsdCkKICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwogCiAg
ICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZs
dXNoKHN0ZGVycik7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXBBdWRpbyhXS0RhdGFS
ZWYgYXVkaW9EYXRhKQoreworICAgIHNpemVfdCBsZW5ndGggPSBXS0RhdGFHZXRTaXplKGF1ZGlv
RGF0YSk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEgPSBXS0RhdGFHZXRCeXRlcyhhdWRpb0RhdGEpOworCisgICAgcHJp
bnRmKCJDb250ZW50LVR5cGU6IGF1ZGlvL3dhdlxuIik7CisgICAgcHJpbnRmKCJDb250ZW50LUxl
bmd0aDogJWx1XG4iLCBsZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVzVG9Xcml0ZUlu
T25lQ2h1bmsgPSAxIDw8IDE1OworICAgIHNpemVfdCBkYXRhUmVtYWluaW5nVG9Xcml0ZSA9IGxl
bmd0aDsKKyAgICB3aGlsZSAoZGF0YVJlbWFpbmluZ1RvV3JpdGUpIHsKKyAgICAgICAgc2l6ZV90
IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rID0gc3RkOjptaW4oZGF0YVJlbWFpbmluZ1RvV3JpdGUs
IGJ5dGVzVG9Xcml0ZUluT25lQ2h1bmspOworICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0g
ZndyaXRlKGRhdGEsIDEsIGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rLCBzdGRvdXQpOworICAgICAg
ICBpZiAoYnl0ZXNXcml0dGVuICE9IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRhdGFSZW1haW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsK
KyAgICAgICAgZGF0YSArPSBieXRlc1dyaXR0ZW47CisgICAgfQorICAgIHByaW50ZigiI0VPRlxu
Iik7CisgICAgZnByaW50ZihzdGRlcnIsICIjRU9GXG4iKTsKIH0KIAogYm9vbCBUZXN0SW52b2Nh
dGlvbjo6Y29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hh
ciBhY3R1YWxIYXNoWzMzXSkKQEAgLTM0Niw2ICszNzYsOSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZQogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcmVwYWludFJlY3RzS2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVwYWludFJlY3RzIikpOwog
ICAgICAgICBtX3JlcGFpbnRSZWN0cyA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCByZXBhaW50UmVjdHNLZXku
Z2V0KCkpKTsKIAorICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRL
ZXkgPSAgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1bHQi
KSk7CisgICAgICAgIG1fYXVkaW9SZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBhdWRpb1Jlc3VsdEtl
eS5nZXQoKSkpOworCiAgICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKICAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGI5ZWFkMTRhYTRjMDU4
MGFmMDlkODFhYWJlMjcwNTM5ZTQ2MmEwZWYuLjI3MmMxZjdlMDU4NjU1OTMzOTE4YWM2NWMzNjMz
Y2JlY2FhZTNhZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAg
LTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAgICAgc3Rh
dGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRU
b1N0ZGVyciA9IDAsIGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwogICAgIHZvaWQgZHVtcFBpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVj
dHMpOworICAgIHZvaWQgZHVtcEF1ZGlvKFdLRGF0YVJlZik7CiAgICAgYm9vbCBjb21wYXJlQWN0
dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKICNpZiBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQpAQCAtNzAsNiArNzEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9lcnJvcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90ZXh0T3V0cHV0OworICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxX
S0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1f
cmVwYWludFJlY3RzOwogICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNzYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180149</attachid>
            <date>2012-12-19 06:07:55 -0800</date>
            <delta_ts>2012-12-19 06:43:08 -0800</delta_ts>
            <desc>Patch v5, hopefully last qt build fix</desc>
            <filename>bug-95084-20121219160509.patch</filename>
            <type>text/plain</type>
            <size>22911</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1NWYxNTA0MWIzN2Nk
NTMwOTkwMTkzYzFiZGExY2VkYTg5MjhhMy4uNjcyYmMwZThhNWQzNmViMGY5NzZiY2FlYjRjMzAz
ZDJmMGFjYTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTE5ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIE1hYyBidWlsZCBmaXhlcyBmb3IgYWRkaW5n
IFdlYkF1ZGlvIFdLVFIgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVuYWJsZXMg
YXVkaW8gdGVzdGluZyB1c2luZyBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46IHRvVWludDhBcnJheSBzeW1ib2wgZXhwb3J0ZWQuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBKU1VpbnQ4QXJyYXkuaCBhbmQgSlNBcnJheUJ1
ZmZlclZpZXcuaCBoZWFkZXJzIG1hZGUgYXZhaWxhYmxlIGFzIHByaXZhdGUgaGVhZGVycy4KKwog
MjAxMi0xMi0xOSAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Q1NTUGFyc2VyIGNyYXNlcywgd2hlbiBubyBjb250ZXh0IGlzIGF2YWlsYWJsZSwgYW5kIHRoZSB2
YWx1ZSBpcyBhIHZhbGlkIGtleXdvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNzZkMGZlNzNkYTk4NWRmZjU1
Y2E0YmRmN2RiM2VhOWY3Y2FkODYxLi5iOWMyMWMyNjY3OGFlMmZiOThmOGE2NGJlODFmMzg0ZDU3
OGU2ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTItMTkgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbV0sy
XSBXZWJBdWRpbyBXS1RSIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgSW1wbGVtZW50aW5nIGF1ZGlvIGRhdGEgZHVtcCBz
dXBwb3J0IGZvciBXZWJLaXRUZXN0UnVubmVyLAorICAgICAgICBieSBhZGRpbmcgdGhlIEFQSSB0
byB0aGUgSURMLCBlbmFibGluZyBJUEMgZm9yIHRyYW5zZmVycmluZworICAgICAgICB0aGUgYXVk
aW8gZGF0YSBhcyBieXRlYnVmZmVyIGFuZCBkdW1waW5nIGl0IGFjY29yZGluZworICAgICAgICB0
byBydW4td2Via2l0LXRlc3RzIHNjcmlwdCdzIGV4cGVjdGF0aW9ucy4KKworICAgICAgICBJIGFt
IGFkZGluZyBhIHRlc3RydW5uZXIgc3BlY2lmaWMgYnVuZGxlIG1ldGhvZCB0byBleHRyYWN0IGRh
dGEKKyAgICAgICAgZnJvbSBhIFVpbnQ4QXJyYXkgaW50byBhIGJ5dGVidWZmZXIuIFRoaXMgQVBJ
IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lcidzIFRlc3RSdW5uZXIgdG8gZXh0
cmFjdCB0aGUgZGF0YSBpbnRvIGEgbG9jYWwKKyAgICAgICAgdmFyaWFibGUsIHRoZW4gc2VuZGlu
ZyBpdCBvdmVyIElQQy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogRml4aW5nIFF0
IGJ1aWxkIGJ5IGFkZGluZyBKU1VpbnQ4QXJyYXkuaCBoZWFkZXIgdG8gbGlzdCBvZiBmb3J3YXJk
aW5nIGhlYWRlcnMuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaDog
QWRkaW5nIFdLQnVuZGxlRGF0YUZyb21VaW50OEFycmF5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOiBDb252ZXJ0IFVpbnQ4QXJyYXkgdG8g
V2ViRGF0YS4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmRhdGFGcm9tVWludDhB
cnJheSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmpl
Y3RlZEJ1bmRsZSk6CisKIDIwMTItMTItMTkgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgVW51c2VkIHBhcmFtZXRlcnMgb24gV2ViQ29udGV4dC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggMmIxOGJhYjY4ZTA4MmNlMDcxODgxYWY3MGI1MzZkODRkNzI2
NzI1NC4uNDhkMmJkY2Q4MTgzMWU4M2UxMjVkNjg2Mzk1ZmZhMWNkMjExNTM0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTIxMCw2ICsyMTAsNyBAQCBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1
cEVQS05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUVOU18yM0VBbm5vdAog
X19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180
S1VSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyZ2NDb250cm9sbGVyRXYKIF9fWk43
V2ViQ29yZTEyaWNvbkRhdGFiYXNlRXYKK19fWk43V2ViQ29yZTEydG9VaW50OEFycmF5RU4zSlND
N0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUxMHJvb3RPYmplY3RFdgogX19a
TjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMThyb290T2JqZWN0Rm9yRnJhbWVFUE5TXzVGcmFtZUUK
IF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTIxZ0FjY2Vzc2liaWxpdHlFbmFibGVkRQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ1ZWZjZDJjOGU1ZDYwZTQyZTdhZmRiNTFhOGNhY2Q1ZWY2NGQyYjguLjgzNTNkZjhmZjk1ZGQ0
M2I2NGFiYWY4YzU2MDY5ZDI1Y2RiMDIxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MDMsMTMgKzE0MDMsMTMgQEAKIAkJ
NDlFRUNGMDYxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGODEwNTA3MEM0MDAwOTlG
QUIgLyogSlNJbnQxNkFycmF5LmNwcCAqLzsgfTsKIAkJNDlFRUNGMDcxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlFRUNFRjkxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oICovOyB9
OwogCQk0OUVFQ0YwODEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZBMTA1MDcwQzQw
MDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXkuY3BwICovOyB9OwotCQk0OUVFQ0YwOTEwNTA3MEM0MDAw
OTlGQUIgLyogSlNVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUVFQ0VGQjEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5Lmgg
Ki87IH07CisJCTQ5RUVDRjA5MTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZCMTA1MDcw
QzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFQ0YwQTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50
MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUVFQ0VGQzEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5jcHAgKi87IH07CiAJ
CTQ5RUVDRjBCMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGRDEwNTA3MEM0MDAwOTlG
QUIgLyogSlNVaW50MzJBcnJheS5oICovOyB9OwogCQk0OUVFQ0YwQzEwNTA3MEM0MDAwOTlGQUIg
LyogSlNVaW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUVFQ0VGRTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5jcHAg
Ki87IH07CiAJCTQ5RUVDRjBEMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGRjEwNTA3
MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5oICovOyB9OwogCQk0OUVFQ0YxQjEwNTA3MkYz
MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJy
YXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKLQkJNDlFRUNGMUMxMDUwNzJGMzAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUVFQ0YxQTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAq
LzsgfTsKKwkJNDlFRUNGMUMxMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0YxQTEw
NTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0MjEwNTE5Njk0MDAwOTlGQUIg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNDMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwICovOyB9OwogCQk0OUVFRDE0MzEwNTE5Njk0MDAwOTlGQUIg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCTQ5RUVEMTQ0MTA1MTk2OTQwMDA5OUZBQiAvKiBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCmlu
ZGV4IDQ0NDgzMzhmZmViYzljM2YyZjk4NjhhOTE0MGQxYjAyN2MxZDdhMzcuLjFlMmMzNTBkMGQ3
NDIwM2UwODdmMzg5NGZmZDBmYTQwN2Y3ZGRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5w
cmkKQEAgLTI0LDYgKzI0LDcgQEAgV0VCQ09SRV9HRU5FUkFURURfSEVBREVSU19GT1JfV0VCS0lU
MiArPSBcCiAgICAgJCRXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9KU05vZGUuaCBcCiAg
ICAgJCRXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9KU05vdGlmaWNhdGlvbi5oIFwKICAg
ICAkJFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSL0pTUmFuZ2UuaCBcCisgICAgJCRXRUJD
T1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9KU1VpbnQ4QXJyYXkuaCBcCiAKIGRlZmluZVJlcGxh
Y2UobWVzc2FnZV9oZWFkZXJfZ2VuZXJhdG9yX291dHB1dCkgewogICBGSUxFTkFNRT0kJGJhc2Vu
YW1lKDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGU3ZDU2MTFmMGExNjdkZDIwZDRjNzFj
MmRhZDRjNzQ3ODViMzAxYjQuLjllZDc2NzhhNzcyMjAxNGJjNzViY2Q1MzdhNzE2MmViN2YyZWU4
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tC
dW5kbGVQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkBAIC0yNjgsNiArMjY5LDEyIEBAIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmCiAg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnNldE1pbmltdW1UaW1lckludGVydmFsKHRvSW1wbChwYWdl
R3JvdXBSZWYpLCBzZWNvbmRzKTsKIH0KIAorV0tEYXRhUmVmIFdLQnVuZGxlRGF0YUZyb21VSW50
OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgZGF0YSkKK3sKKyAgICBSZWZQdHI8V2ViRGF0YT4gd2ViRGF0YSA9IHRvSW1wbChidW5kbGUp
LT5kYXRhRnJvbVVpbnQ4QXJyYXkoY29udGV4dCwgZGF0YSk7CisgICAgcmV0dXJuIHRvQVBJKHdl
YkRhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKIGludCBXS0J1bmRsZU51bWJlck9mUGFn
ZXMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3Vi
bGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAg
cmV0dXJuIHRvSW1wbChidW5kbGVSZWYpLT5udW1iZXJPZlBhZ2VzKHRvSW1wbChmcmFtZVJlZiks
IHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQcml2YXRlLmgKaW5kZXggMmNhY2I1OTc2YTNkYTdlMjVhMWVmZDMwMjZiNTc5MDJiMzBi
MWEzNi4uMzE4OGJiZThhZjExNDQ0YmM4NWUzOTFjODVhNThiNmM2ZmM4ZTEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwog
V0tfRVhQT1JUIHVpbnQ2NF90IFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24p
OwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXS0J1bmRs
ZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgZG91Ymxl
IGludGVydmFsKTsKK1dLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVEYXRhRnJvbVVJbnQ4QXJy
YXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBk
YXRhKTsKIAogLy8gVXNlckNvbnRlbnQgQVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFkZFVz
ZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3Jv
dXAsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVmIHNvdXJj
ZSwgV0tVUkxSZWYgdXJsLCBXS0FycmF5UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xp
c3QsIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgV0tVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggMWI0ZTg1YWY3Y2ZhODgyYTY5YjE0ZDNmMjZhYjgzNTAxNGYxZjYxNS4uYjNlNDcwOGQ5MmU3
ZmUxMGQ3MjU1YTU2MWFkYWFkM2RhOGM4NzFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmgiCiAjaW5j
bHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9u
UG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU05vdGlmaWNhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSlNVaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3Jv
dXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuaD4KQEAgLTYzMSw2
ICs2MzMsMTMgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpT
Q29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganMKICNlbmRpZgogfQogCitQYXNzUmVm
UHRyPFdlYkRhdGE+IEluamVjdGVkQnVuZGxlOjpkYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
Y1N0YXRlID0gdG9KUyhjb250ZXh0KTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXlEYXRh
ID0gV2ViQ29yZTo6dG9VaW50OEFycmF5KHRvSlMoZXhlY1N0YXRlLCBkYXRhKSk7CisgICAgcmV0
dXJuIFdlYkRhdGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYXJyYXlEYXRh
LT5iYXNlQWRkcmVzcygpKSwgYXJyYXlEYXRhLT5ieXRlTGVuZ3RoKCkpOworfQorCiB2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoV2ViUGFnZSogcGFn
ZSwgYm9vbCBlbmFibGVkKQogewogICAgIHBhZ2UtPmNvcmVQYWdlKCktPnNldFRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50cyhlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA4YzA2NWNj
MTRkMGFiZGQ0OTc0ODM0ZjdmNWNiNTdmYWE5NGViYjdmLi4wYzkzMGZjN2IwNjVjYWJiNTQ2N2Ux
M2E2ZWM0YzE5YzQ0NzhlNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC03NSw2ICs3NSw3IEBA
IGNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsK
IGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkNvbm5lY3Rpb247CitjbGFzcyBX
ZWJEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdy
b3VwUHJveHk7CkBAIC0xMzQsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViTm90
aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9ucyhXZWJQYWdlKik7CiAgICAgdWludDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkRhdGE+IGRhdGFGcm9tVWludDhB
cnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAgLy8gVXNlckNvbnRlbnQgQVBJ
CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwg
SW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2Vi
Q29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJiMzUzM2JmYjcyYjhhZGQxZDNhZWQ3ZGVkYzUyMDgxNzEyNDYwMWQuLjUzNWE3YjE3
MTk1NWE1MDFmNGFjMWIzYjg0ZmZjY2VkMDRhNTEwZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0xMi0xOSAg
RG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAg
ICAgIFtXSzJdIFdlYkF1ZGlvIFdLVFIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwODQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBJbXBsZW1lbnRpbmcgYXVkaW8gZGF0
YSBkdW1wIHN1cHBvcnQgZm9yIFdlYktpdFRlc3RSdW5uZXIsCisgICAgICAgIGJ5IGFkZGluZyB0
aGUgQVBJIHRvIHRoZSBJREwsIGVuYWJsaW5nIElQQyBmb3IgdHJhbnNmZXJyaW5nCisgICAgICAg
IHRoZSBhdWRpbyBkYXRhIGFzIGJ5dGVidWZmZXIgYW5kIGR1bXBpbmcgaXQgYWNjb3JkaW5nCisg
ICAgICAgIHRvIHJ1bi13ZWJraXQtdGVzdHMgc2NyaXB0J3MgZXhwZWN0YXRpb25zLgorICAgICAg
ICBUaGlzIGVuYWJsZXMgYXVkaW8gdGVzdGluZyBvbiBXZWJLaXQyIHBvcnRzLgorICAgICAgICBC
YXNlZCBvbiBpbml0aWFsIHdpcC1wYXRjaCBmcm9tIFBoaWxpcHBlIE5vcm1hbmQgLSB0aGFua3Mu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOiBBZGRpbmcgc2V0QXVkaW9EYXRhIEFQSS4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOiBBc3NpZ24gYXVkaW8gYnVm
ZmVyIGRhdGEgdG8gYSBsb2NhbCBXS0RhdGFSZWYgYWZ0ZXIgZXh0cmFjdGluZyBpdCBmcm9tIFdL
MiB1c2luZyBXS0J1bmRsZURhdGFGcm9tVWludDhBcnJheSBidW5kbGUgQVBJLgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb0RhdGEpOgorICAgICAgICAoV1RSKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDogQWRkIGEgd2hh
dFRvRHVtcCBzdGF0ZSBmb3IgZHVtcGluZyBBdWRpby4KKyAgICAgICAgKFRlc3RSdW5uZXIpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOiBBZGQgYXVkaW8gdG8gdGhlIG1lc3NhZ2UgdGhhdCdzIHRyYW5zZmVycmVkIHRvIHRoZSBX
S1RSIHByb2Nlc3MuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkb25lKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6IEFs
bG93IHNldHRpbmcgYW5kIGF1ZGlvIHJlc3VsdCBoYW5kbGUgdG8gYmUgdHJhbnNmZXJyZWQuCisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpzZXRBdWRpb1Jlc3VsdCk6CisgICAgICAgIChJ
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBh
Z2U6OmR1bXApOiBEdW1teSBoYW5kbGluZyB0aGUgQXVkaW8gY2FzZSBpbiB0aGUgc3dpdGNoLCBi
dWlsZCBmaXggZm9yIE1hYy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDogQXVkaW8gZHVtcCBzdXBwb3J0LCBkdW1wIGF1ZGlvIGlmIHdlIGhhdmVuJ3QgcmVj
ZWl2ZWQgYSB0ZXh0IGR1bXAgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogU3RvcmluZyByZWNlaXZl
ZCBhdWRpbyBkYXRhIGJlZm9yZSBkdW1waW5nLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKwogMjAxMi0xMi0x
OSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01hY10g
cnVuLWxhdW5jaGVyIGNhbm5vdCBmaW5kIFF0NVdlYktpdFdpZGdldHMuCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCBkMzY4YzU5MDg2YmI3ODZkMzQzZTU3MzhiYjZkMDBkNmMxNjgwZmE2
Li40N2IwMTgwNzQ5ZDViZDlhZmMzMGIzMDBiNmEwMWIxOTFkZGE5MzNlIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTE4Miw2ICsxODIsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihpbiBkb3VibGUgbGF0aXR1ZGUs
IGluIGRvdWJsZSBsb25naXR1ZGUsIGluIGRvdWJsZSBhY2N1cmFjeSwgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gb2JqZWN0IGFsdGl0dWRlLCBpbiBbT3B0aW9uYWxdIG9iamVjdCBh
bHRpdHVkZUFjY3VyYWN5LCBpbiBbT3B0aW9uYWxdIG9iamVjdCBoZWFkaW5nLCBpbiBbT3B0aW9u
YWxdIG9iamVjdCBzcGVlZCk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IoaW4gRE9NU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAKKyAgICAvLyBBdWRp
byB0ZXN0aW5nLgorICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRBdWRpb0RhdGEoaW4gb2JqZWN0
IGRhdGEpOworCiAgICAgYm9vbGVhbiBjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKTsKIAogICAg
IC8vIFdvcmsgcXVldWUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDE0Y2JjNGM2YTJhYTY5MTBjN2Fh
MDI2MjAyNDY5MGYyNThkNzI5M2QuLjlkMzBhZDkyOGEwMjk0ZDAyY2Y2MDkzYWNmZjkwMWQzYTBj
NzAxZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yOTQsNiArMjk0LDkgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZG9uZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJlcGFpbnRSZWN0
c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlcGFpbnRSZWN0
cyIpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgcmVw
YWludFJlY3RzS2V5LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSk7CiAKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVt
KGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCksIG1fYXVkaW9SZXN1
bHQuZ2V0KCkpOworCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgZG9uZU1lc3Nh
Z2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOwogCiAgICAgY2xvc2VPdGhlclBh
Z2VzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgKaW5kZXggMzk1ZDIwNDU2ZDRhZGNhYjdjNDMwYzBjMWQwMDdkNjI2
ZjBjZWYzMC4uZDQ0NWI0YTgzM2I3MDE1N2RhMTNmMjI3MTdjODcyMjg1ODhhMDk0YyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wQmFja0Zvcndh
cmRMaXN0c0ZvckFsbFBhZ2VzKFN0cmluZ0J1aWxkZXImKTsKIAogICAgIHZvaWQgZG9uZSgpOwor
ICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoV0tEYXRhUmVmIGF1ZGlvRGF0YSkgeyBtX2F1ZGlvUmVz
dWx0ID0gYXVkaW9EYXRhOyB9CiAgICAgdm9pZCBzZXRQaXhlbFJlc3VsdChXS0ltYWdlUmVmIGlt
YWdlKSB7IG1fcGl4ZWxSZXN1bHQgPSBpbWFnZTsgfQogICAgIHZvaWQgc2V0UmVwYWludFJlY3Rz
KFdLQXJyYXlSZWYgcmVjdHMpIHsgbV9yZXBhaW50UmVjdHMgPSByZWN0czsgfQogCkBAIC0xNTEs
NiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXI7CiAgICAgYm9vbCBtX3VzZVdvcmtRdWV1ZTsKIAorICAgIFdLUmV0YWluUHRyPFdLRGF0YVJl
Zj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVz
dWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwogfTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxMDEwMjAwZTk0NDNiYmIwZjQ1M2JkMTUyMTllYzFk
NDA4YjQ5NTVmLi4yZTg0ODE5MTI4MzViZGE2MDUyM2M4NGE2MTBiNzM1MWIyNGMyYWNmIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC05NDYsNiArOTQ2LDggQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmR1bXAoKQogICAgIGNhc2UgVGVzdFJ1bm5lcjo6QWxsRnJhbWVzVGV4dDoKICAg
ICAgICAgZHVtcEFsbEZyYW1lc1RleHQoc3RyaW5nQnVpbGRlcik7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVGVzdFJ1bm5lcjo6QXVkaW86CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wQWxs
RnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDg1YzY4MTcxNjlhNWMzNWM3MDVk
YjU0MjA2ZjE1MTc5YzVlZWZmZmQuLjY2NjJmYjY4MDFlMzY1OGU5OWQ5YjA1OWQ1NmFjODhmYmQw
MTVjYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V2ViS2l0Ml9DLmg+CkBAIC00MzMsNiArNDM0LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFs
dWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3Ry
CiAgICAgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihu
b2RlSGFuZGxlLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXVkaW9EYXRhKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7
CisgICAgV0tEYXRhUmVmIGF1ZGlvRGF0YSA9IFdLQnVuZGxlRGF0YUZyb21VSW50OEFycmF5KElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgY29udGV4dCwgZGF0YSk7CisgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldEF1ZGlvUmVzdWx0KGF1ZGlvRGF0YSk7CisgICAgbV93
aGF0VG9EdW1wID0gQXVkaW87Cit9CisKIHVuc2lnbmVkIFRlc3RSdW5uZXI6OndpbmRvd0NvdW50
KCkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2VDb3VudCgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAppbmRleCAzMjBkYTM1OGM1ZGE5NzQ4MDU1NmVkMTk2ZDU1N2MxZTIwYmU2ZDIwLi45NDNiNTZl
OWExZWQ0YWMyMWUxODQ2M2NkMGM3NzUxYjFkYzA2ZjY5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTYwLDcgKzE2MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpOwogCi0gICAgZW51bSBXaGF0VG9E
dW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCB9OworICAgIC8v
IEF1ZGlvIHRlc3RpbmcuCisgICAgdm9pZCBzZXRBdWRpb0RhdGEoSlNDb250ZXh0UmVmLCBKU1Zh
bHVlUmVmIGRhdGEpOworCisgICAgZW51bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZy
YW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVkaW8gfTsKICAgICBXaGF0VG9EdW1wIHdoYXRUb0R1
bXAoKSBjb25zdCB7IHJldHVybiBtX3doYXRUb0R1bXA7IH0KIAogICAgIGJvb2wgc2hvdWxkRHVt
cEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxs
RnJhbWVTY3JvbGxQb3NpdGlvbnM7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKaW5kZXggNzI4N2U5MTQ3YjRiYWE0ZTAxZTUxNmNjY2M4YzcxOWQyMWY4MWYxMy4u
Zjg2OTEwMGEyNGFkM2I1OTc3NWJjZGMwMTU2ZWQ4YWExYzYzMzFjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTMyLDggKzMyLDkgQEAKICNpbmNsdWRl
ICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVkZSA8Y3N0ZGlv
PgotI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3Iu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CkBAIC0yODcsMTMgKzI4OCw0MiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1w
KGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBibwog
CiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZHVtcChtX3RleHRP
dXRwdXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV90ZXh0T3V0cHV0Lmxl
bmd0aCgpKQorICAgICAgICBkdW1wKG1fdGV4dE91dHB1dC50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGVsc2UgaWYgKG1fYXVkaW9SZXN1bHQpCisgICAgICAgIGR1bXBBdWRpbyhtX2F1
ZGlvUmVzdWx0LmdldCgpKTsKIAogICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgbV9waXhlbFJlc3Vs
dCkKICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQobV9waXhlbFJlc3Vs
dC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwogCiAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0
ZG91dCk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZsdXNoKHN0ZGVycik7Cit9CisKK3Zv
aWQgVGVzdEludm9jYXRpb246OmR1bXBBdWRpbyhXS0RhdGFSZWYgYXVkaW9EYXRhKQoreworICAg
IHNpemVfdCBsZW5ndGggPSBXS0RhdGFHZXRTaXplKGF1ZGlvRGF0YSk7CisgICAgaWYgKCFsZW5n
dGgpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBX
S0RhdGFHZXRCeXRlcyhhdWRpb0RhdGEpOworCisgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6IGF1
ZGlvL3dhdlxuIik7CisgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWx1XG4iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihsZW5ndGgpKTsKKworICAgIGNvbnN0IHNpemVfdCBieXRlc1Rv
V3JpdGVJbk9uZUNodW5rID0gMSA8PCAxNTsKKyAgICBzaXplX3QgZGF0YVJlbWFpbmluZ1RvV3Jp
dGUgPSBsZW5ndGg7CisgICAgd2hpbGUgKGRhdGFSZW1haW5pbmdUb1dyaXRlKSB7CisgICAgICAg
IHNpemVfdCBieXRlc1RvV3JpdGVJblRoaXNDaHVuayA9IHN0ZDo6bWluKGRhdGFSZW1haW5pbmdU
b1dyaXRlLCBieXRlc1RvV3JpdGVJbk9uZUNodW5rKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVzV3Jp
dHRlbiA9IGZ3cml0ZShkYXRhLCAxLCBieXRlc1RvV3JpdGVJblRoaXNDaHVuaywgc3Rkb3V0KTsK
KyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRlc1RvV3JpdGVJblRoaXNDaHVuaykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkYXRhUmVtYWluaW5nVG9Xcml0ZSAtPSBieXRlc1dy
aXR0ZW47CisgICAgICAgIGRhdGEgKz0gYnl0ZXNXcml0dGVuOworICAgIH0KKyAgICBwcmludGYo
IiNFT0ZcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiI0VPRlxuIik7CiB9CiAKIGJvb2wgVGVz
dEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNv
bnN0IGNoYXIgYWN0dWFsSGFzaFszM10pCkBAIC0zNDYsNiArMzc2LDkgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJlcGFpbnRSZWN0
c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlcGFpbnRSZWN0
cyIpKTsKICAgICAgICAgbV9yZXBhaW50UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgcmVwYWludFJl
Y3RzS2V5LmdldCgpKSk7CiAKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlv
UmVzdWx0S2V5ID0gIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkF1ZGlv
UmVzdWx0IikpOworICAgICAgICBtX2F1ZGlvUmVzdWx0ID0gc3RhdGljX2Nhc3Q8V0tEYXRhUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYXVkaW9S
ZXN1bHRLZXkuZ2V0KCkpKTsKKwogICAgICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9IHRydWU7CiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCBiOWVhZDE0
YWE0YzA1ODBhZjA5ZDgxYWFiZTI3MDUzOWU0NjJhMGVmLi4yNzJjMWY3ZTA1ODY1NTkzMzkxOGFj
NjVjMzYzM2NiZWNhYWUzYWRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCkBAIC01MSw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwog
ICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFy
KiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKICAgICB2b2lkIGR1
bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVw
YWludFJlY3RzKTsKKyAgICB2b2lkIGR1bXBBdWRpbyhXS0RhdGFSZWYpOwogICAgIGJvb2wgY29t
cGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOwog
CiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTcwLDYgKzcxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZXJyb3I7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fdGV4dE91dHB1
dDsKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tSZXRh
aW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0FycmF5
UmVmPiBtX3JlcGFpbnRSZWN0czsKICAgICBzdGQ6OnN0cmluZyBtX2Vycm9yTWVzc2FnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180159</attachid>
            <date>2012-12-19 06:43:18 -0800</date>
            <delta_ts>2012-12-19 07:47:03 -0800</delta_ts>
            <desc>Patch, v6, more qt build fixing. thanks ossy.</desc>
            <filename>bug-95084-20121219164033.patch</filename>
            <type>text/plain</type>
            <size>23779</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1NWYxNTA0MWIzN2Nk
NTMwOTkwMTkzYzFiZGExY2VkYTg5MjhhMy4uNjcyYmMwZThhNWQzNmViMGY5NzZiY2FlYjRjMzAz
ZDJmMGFjYTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTE5ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIE1hYyBidWlsZCBmaXhlcyBmb3IgYWRkaW5n
IFdlYkF1ZGlvIFdLVFIgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVuYWJsZXMg
YXVkaW8gdGVzdGluZyB1c2luZyBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46IHRvVWludDhBcnJheSBzeW1ib2wgZXhwb3J0ZWQuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBKU1VpbnQ4QXJyYXkuaCBhbmQgSlNBcnJheUJ1
ZmZlclZpZXcuaCBoZWFkZXJzIG1hZGUgYXZhaWxhYmxlIGFzIHByaXZhdGUgaGVhZGVycy4KKwog
MjAxMi0xMi0xOSAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Q1NTUGFyc2VyIGNyYXNlcywgd2hlbiBubyBjb250ZXh0IGlzIGF2YWlsYWJsZSwgYW5kIHRoZSB2
YWx1ZSBpcyBhIHZhbGlkIGtleXdvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNzZkMGZlNzNkYTk4NWRmZjU1
Y2E0YmRmN2RiM2VhOWY3Y2FkODYxLi42MDYyODNmMjVhNDI3ZWY3YmEzNGM2NDYxZWU5Y2RlOWY5
MGRjNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTItMTkgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbV0sy
XSBXZWJBdWRpbyBXS1RSIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgSW1wbGVtZW50aW5nIGF1ZGlvIGRhdGEgZHVtcCBz
dXBwb3J0IGZvciBXZWJLaXRUZXN0UnVubmVyLAorICAgICAgICBieSBhZGRpbmcgdGhlIEFQSSB0
byB0aGUgSURMLCBlbmFibGluZyBJUEMgZm9yIHRyYW5zZmVycmluZworICAgICAgICB0aGUgYXVk
aW8gZGF0YSBhcyBieXRlYnVmZmVyIGFuZCBkdW1waW5nIGl0IGFjY29yZGluZworICAgICAgICB0
byBydW4td2Via2l0LXRlc3RzIHNjcmlwdCdzIGV4cGVjdGF0aW9ucy4KKworICAgICAgICBJIGFt
IGFkZGluZyBhIHRlc3RydW5uZXIgc3BlY2lmaWMgYnVuZGxlIG1ldGhvZCB0byBleHRyYWN0IGRh
dGEKKyAgICAgICAgZnJvbSBhIFVpbnQ4QXJyYXkgaW50byBhIGJ5dGVidWZmZXIuIFRoaXMgQVBJ
IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lcidzIFRlc3RSdW5uZXIgdG8gZXh0
cmFjdCB0aGUgZGF0YSBpbnRvIGEgbG9jYWwKKyAgICAgICAgdmFyaWFibGUsIHRoZW4gc2VuZGlu
ZyBpdCBvdmVyIElQQy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogRml4aW5nIFF0
IGJ1aWxkIGJ5IGFkZGluZyBKU1VpbnQ4QXJyYXkuaCBoZWFkZXIgdG8gbGlzdCBvZiBmb3J3YXJk
aW5nIGhlYWRlcnMuCisgICAgICAgICogVGFyZ2V0LnByaTogQWRkaW5nIG1pc3NpbmcgV0tEYXRh
LiogZmlsZXMuIFF0IGJ1aWxkIGZpeC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRGF0YUZyb21VaW50OEFy
cmF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UHJpdmF0ZS5oOiBBZGRpbmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENvbnZlcnQgVWlu
dDhBcnJheSB0byBXZWJEYXRhLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGF0
YUZyb21VaW50OEFycmF5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKEluamVjdGVkQnVuZGxlKToKKwogMjAxMi0xMi0xOSAgS3l1bmdUYWUgS2ltICA8a3Rm
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnVzZWQgcGFyYW1ldGVycyBvbiBXZWJDb250
ZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyYjE4YmFiNjhlMDgyY2UwNzE4ODFhZjcw
YjUzNmQ4NGQ3MjY3MjU0Li40OGQyYmRjZDgxODMxZTgzZTEyNWQ2ODYzOTVmZmExY2QyMTE1MzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjEwLDYgKzIxMCw3IEBAIF9fWk43V2ViQ29yZTEy
Y3JlYXRlTWFya3VwRVBLTlNfNVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5T
XzIzRUFubm90CiBfX1pON1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVQTlNfMTdOZXR3b3JraW5nQ29u
dGV4dEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJnY0NvbnRyb2xs
ZXJFdgogX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VFdgorX19aTjdXZWJDb3JlMTJ0b1VpbnQ4
QXJyYXlFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTEwcm9vdE9i
amVjdEV2CiBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUxOHJvb3RPYmplY3RGb3JGcmFtZUVQ
TlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVu
YWJsZWRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZDVlZmNkMmM4ZTVkNjBlNDJlN2FmZGI1MWE4Y2FjZDVlZjY0ZDJiOC4uODM1
M2RmOGZmOTVkZDQzYjY0YWJhZjhjNTYwNjlkMjVjZGIwMjE0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwMywxMyArMTQw
MywxMyBAQAogCQk0OUVFQ0YwNjEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUY4MTA1
MDcwQzQwMDA5OUZBQiAvKiBKU0ludDE2QXJyYXkuY3BwICovOyB9OwogCQk0OUVFQ0YwNzEwNTA3
MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGOTEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFy
cmF5LmggKi87IH07CiAJCTQ5RUVDRjA4MTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNF
RkExMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDhBcnJheS5jcHAgKi87IH07Ci0JCTQ5RUVDRjA5
MTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZCMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1Vp
bnQ4QXJyYXkuaCAqLzsgfTsKKwkJNDlFRUNGMDkxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDhB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlF
RUNFRkIxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5RUVDRjBBMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU1VpbnQzMkFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5RUVDRUZDMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5LmNw
cCAqLzsgfTsKIAkJNDlFRUNGMEIxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZEMTA1
MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5LmggKi87IH07CiAJCTQ5RUVDRjBDMTA1MDcw
QzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRUZFMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQx
NkFycmF5LmNwcCAqLzsgfTsKIAkJNDlFRUNGMEQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
RUVDRUZGMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmggKi87IH07CiAJCTQ5RUVD
RjFCMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0YxOTEwNTA3MkYzMDAwOTlG
QUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovOyB9OwotCQk0OUVFQ0YxQzEwNTA3MkYzMDAw
OTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVm
ZmVyVmlldy5oICovOyB9OworCQk0OUVFQ0YxQzEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1
ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5RUVEMTQyMTA1MTk2
OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxM0MxMDUxOTY5NDAwMDk5RkFC
IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CiAJCTQ5RUVEMTQzMTA1MTk2
OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNEMTA1MTk2OTQwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKIAkJNDlFRUQxNDQxMDUxOTY5NDAw
MDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNFMTA1MTk2OTQwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5wcmkKaW5kZXggNDQ0ODMzOGZmZWJjOWMzZjJmOTg2OGE5MTQwZDFiMDI3YzFkN2EzNy4u
MWUyYzM1MGQwZDc0MjAzZTA4N2YzODk0ZmZkMGZhNDA3ZjdkZGZmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLnByaQpAQCAtMjQsNiArMjQsNyBAQCBXRUJDT1JFX0dFTkVSQVRFRF9IRUFERVJT
X0ZPUl9XRUJLSVQyICs9IFwKICAgICAkJFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSL0pT
Tm9kZS5oIFwKICAgICAkJFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSL0pTTm90aWZpY2F0
aW9uLmggXAogICAgICQkV0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIvSlNSYW5nZS5oIFwK
KyAgICAkJFdFQkNPUkVfR0VORVJBVEVEX1NPVVJDRVNfRElSL0pTVWludDhBcnJheS5oIFwKIAog
ZGVmaW5lUmVwbGFjZShtZXNzYWdlX2hlYWRlcl9nZW5lcmF0b3Jfb3V0cHV0KSB7CiAgIEZJTEVO
QU1FPSQkYmFzZW5hbWUoMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGJjYzIxOWEwNjg0YzczMDBkNTU2OGYy
OGQ4ZTgzYmYxNjQ4NWM3YmEuLmIzMDQ2OGE1NjY0NTY1MDE0MDk2NTU0ZTAwNDBkMWJlMzc2MzY5
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQpAQCAtNDcsNiArNDcsNyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFy
ZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRN
ZW51SXRlbS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIFwK
KyAgICBTaGFyZWQvQVBJL2MvV0tEYXRhLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLRXJyb3IuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dL
R2VvbWV0cnkuaCBcCkBAIC00MjEsNiArNDIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLQ2VydGlmaWNhdGVJbmZvLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQ29ubmVj
dGlvblJlZi5jcHAgXAogICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAgXAor
ICAgIFNoYXJlZC9BUEkvYy9XS0RhdGEuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tEaWN0aW9u
YXJ5LmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLRXJyb3IuY3BwIFwKICAgICBTaGFyZWQvQVBJ
L2MvV0tHZW9tZXRyeS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBlN2Q1NjExZjBh
MTY3ZGQyMGQ0YzcxYzJkYWQ0Yzc0Nzg1YjMwMWI0Li45ZWQ3Njc4YTc3MjIwMTRiYzc1YmNkNTM3
YTcxNjJlYjdmMmVlOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMjY4LDYgKzI2OSwxMiBAQCB2b2lkIFdLQnVuZGxl
U2V0TWluaW11bVRpbWVySW50ZXJ2YWwoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBh
Z2VHcm91cFJlZgogICAgIHRvSW1wbChidW5kbGVSZWYpLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCh0b0ltcGwocGFnZUdyb3VwUmVmKSwgc2Vjb25kcyk7CiB9CiAKK1dLRGF0YVJlZiBXS0J1bmRs
ZURhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7CisgICAgUmVmUHRyPFdlYkRhdGE+IHdlYkRhdGEgPSB0
b0ltcGwoYnVuZGxlKS0+ZGF0YUZyb21VaW50OEFycmF5KGNvbnRleHQsIGRhdGEpOworICAgIHJl
dHVybiB0b0FQSSh3ZWJEYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCiBpbnQgV0tCdW5k
bGVOdW1iZXJPZlBhZ2VzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZVJlZiwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4
ZWxzKQogewogICAgIHJldHVybiB0b0ltcGwoYnVuZGxlUmVmKS0+bnVtYmVyT2ZQYWdlcyh0b0lt
cGwoZnJhbWVSZWYpLCBwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCmluZGV4IDJjYWNiNTk3NmEzZGE3ZTI1YTFlZmQz
MDI2YjU3OTAyYjMwYjFhMzYuLjMxODhiYmU4YWYxMTQ0NGJjODVlMzkxYzg1YTU4YjZjNmZjOGUx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaApAQCAtNjcsNiArNjcsNyBAQCBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZQogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB1aW50NjRfdCBXS0J1bmRsZUdldFdlYk5vdGlmaWNhdGlv
bklEKFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYsIGRvdWJsZSBpbnRlcnZhbCk7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLQnVuZGxlRGF0
YUZyb21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgZGF0YSk7CiAKIC8vIFVzZXJDb250ZW50IEFQSQogV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0
cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJy
YXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUs
IFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCmluZGV4IDFiNGU4NWFmN2NmYTg4MmE2OWIxNGQzZjI2YWI4MzUwMTRmMWY2MTUu
LmIzZTQ3MDhkOTJlN2ZlMTBkNzI1NWE1NjFhZGFhZDNkYThjODcxZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VL
aW5kcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCkBAIC01Niw2ICs1Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNOb3RpZmljYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0pTVWludDhBcnJheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlVmlzaWJpbGl0eVN0YXRl
Lmg+CkBAIC02MzEsNiArNjMzLDEzIEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3Rp
ZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiAjZW5kaWYK
IH0KIAorUGFzc1JlZlB0cjxXZWJEYXRhPiBJbmplY3RlZEJ1bmRsZTo6ZGF0YUZyb21VaW50OEFy
cmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7CisgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7CisgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IGFycmF5RGF0YSA9IFdlYkNvcmU6OnRvVWludDhBcnJheSh0b0pTKGV4ZWNTdGF0ZSwgZGF0
YSkpOworICAgIHJldHVybiBXZWJEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGFycmF5RGF0YS0+YmFzZUFkZHJlc3MoKSksIGFycmF5RGF0YS0+Ynl0ZUxlbmd0aCgpKTsK
K30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRz
KFdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBwYWdlLT5jb3JlUGFnZSgpLT5z
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
aW5kZXggOGMwNjVjYzE0ZDBhYmRkNDk3NDgzNGY3ZjVjYjU3ZmFhOTRlYmI3Zi4uMGM5MzBmYzdi
MDY1Y2FiYjU0NjdlMTNhNmVjNGMxOWM0NDc4ZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
NzUsNiArNzUsNyBAQCBjbGFzcyBJbW11dGFibGVBcnJheTsKIGNsYXNzIEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ7CiBjbGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBXZWJDb25uZWN0
aW9uOworY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIGNs
YXNzIFdlYlBhZ2VHcm91cFByb3h5OwpAQCAtMTM0LDYgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwogICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlv
bklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgUGFzc1JlZlB0cjxXZWJEYXRhPiBk
YXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFVz
ZXJDb250ZW50IEFQSQogICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSos
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBi
bGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiYjM1MzNiZmI3MmI4YWRkMWQzYWVkN2RlZGM1MjA4MTcxMjQ2
MDFkLi41MzVhN2IxNzE5NTVhNTAxZjRhYzFiM2I4NGZmY2NlZDA0YTUxMGU5IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTItMTItMTkgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVs
LmNvbT4KKworICAgICAgICBbV0syXSBXZWJBdWRpbyBXS1RSIHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgSW1wbGVtZW50
aW5nIGF1ZGlvIGRhdGEgZHVtcCBzdXBwb3J0IGZvciBXZWJLaXRUZXN0UnVubmVyLAorICAgICAg
ICBieSBhZGRpbmcgdGhlIEFQSSB0byB0aGUgSURMLCBlbmFibGluZyBJUEMgZm9yIHRyYW5zZmVy
cmluZworICAgICAgICB0aGUgYXVkaW8gZGF0YSBhcyBieXRlYnVmZmVyIGFuZCBkdW1waW5nIGl0
IGFjY29yZGluZworICAgICAgICB0byBydW4td2Via2l0LXRlc3RzIHNjcmlwdCdzIGV4cGVjdGF0
aW9ucy4KKyAgICAgICAgVGhpcyBlbmFibGVzIGF1ZGlvIHRlc3Rpbmcgb24gV2ViS2l0MiBwb3J0
cy4KKyAgICAgICAgQmFzZWQgb24gaW5pdGlhbCB3aXAtcGF0Y2ggZnJvbSBQaGlsaXBwZSBOb3Jt
YW5kIC0gdGhhbmtzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDogQWRkaW5nIHNldEF1ZGlvRGF0YSBBUEkuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDogQXNz
aWduIGF1ZGlvIGJ1ZmZlciBkYXRhIHRvIGEgbG9jYWwgV0tEYXRhUmVmIGFmdGVyIGV4dHJhY3Rp
bmcgaXQgZnJvbSBXSzIgdXNpbmcgV0tCdW5kbGVEYXRhRnJvbVVpbnQ4QXJyYXkgYnVuZGxlIEFQ
SS4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0QXVkaW9EYXRhKToKKyAgICAgICAgKFdU
Uik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
Lmg6IEFkZCBhIHdoYXRUb0R1bXAgc3RhdGUgZm9yIGR1bXBpbmcgQXVkaW8uCisgICAgICAgIChU
ZXN0UnVubmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcDogQWRkIGF1ZGlvIHRvIHRoZSBtZXNzYWdlIHRoYXQncyB0cmFuc2Zl
cnJlZCB0byB0aGUgV0tUUiBwcm9jZXNzLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
ZG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oOiBBbGxvdyBzZXR0aW5nIGFuZCBhdWRpbyByZXN1bHQgaGFuZGxlIHRvIGJlIHRy
YW5zZmVycmVkLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0QXVkaW9SZXN1bHQp
OgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKTogRHVtbXkgaGFuZGxpbmcgdGhlIEF1ZGlvIGNhc2UgaW4g
dGhlIHN3aXRjaCwgYnVpbGQgZml4IGZvciBNYWMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6IEF1ZGlvIGR1bXAgc3VwcG9ydCwgZHVtcCBhdWRpbyBpZiB3
ZSBoYXZlbid0IHJlY2VpdmVkIGEgdGV4dCBkdW1wIGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoV1RSKToK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBBdWRpbyk6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IFN0
b3JpbmcgcmVjZWl2ZWQgYXVkaW8gZGF0YSBiZWZvcmUgZHVtcGluZy4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChUZXN0SW52b2NhdGlvbik6
CisKIDIwMTItMTItMTkgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XVtNYWNdIHJ1bi1sYXVuY2hlciBjYW5ub3QgZmluZCBRdDVXZWJLaXRXaWRnZXRzLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDM2OGM1OTA4NmJiNzg2ZDM0M2U1NzM4YmI2
ZDAwZDZjMTY4MGZhNi4uNDdiMDE4MDc0OWQ1YmQ5YWZjMzBiMzAwYjZhMDFiMTkxZGRhOTMzZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xODIsNiArMTgyLDkgQEAgaW50ZXJmYWNl
IFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oaW4gZG91
YmxlIGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBkb3VibGUgYWNjdXJhY3ksIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBhbHRpdHVkZSwgaW4gW09wdGlv
bmFsXSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlvbmFsXSBvYmplY3QgaGVhZGlu
ZywgaW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmluZyBlcnJvck1lc3NhZ2UpOwog
CisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICBbUGFzc0NvbnRleHRdIHZvaWQgc2V0QXVkaW9E
YXRhKGluIG9iamVjdCBkYXRhKTsKKwogICAgIGJvb2xlYW4gY2FsbFNob3VsZENsb3NlT25XZWJW
aWV3KCk7CiAKICAgICAvLyBXb3JrIHF1ZXVlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxNGNiYzRj
NmEyYWE2OTEwYzdhYTAyNjIwMjQ2OTBmMjU4ZDcyOTNkLi45ZDMwYWQ5MjhhMDI5NGQwMmNmNjA5
M2FjZmY5MDFkM2EwYzcwMWU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMjk0LDYgKzI5NCw5IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUoKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJSZXBhaW50UmVjdHMiKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShkb25lTWVzc2FnZUJv
ZHkuZ2V0KCksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwog
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvUmVzdWx0S2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1bHQiKSk7CisgICAgV0tEaWN0
aW9uYXJ5QWRkSXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIGF1ZGlvUmVzdWx0S2V5LmdldCgp
LCBtX2F1ZGlvUmVzdWx0LmdldCgpKTsKKwogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5k
bGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAg
IGNsb3NlT3RoZXJQYWdlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM5NWQyMDQ1NmQ0YWRjYWI3YzQz
MGMwYzFkMDA3ZDYyNmYwY2VmMzAuLmQ0NDViNGE4MzNiNzAxNTdkYTEzZjIyNzE3Yzg3MjI4NTg4
YTA5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhTdHJpbmdCdWlsZGVyJik7CiAKICAgICB2
b2lkIGRvbmUoKTsKKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KFdLRGF0YVJlZiBhdWRpb0RhdGEp
IHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogICAgIHZvaWQgc2V0UGl4ZWxSZXN1bHQo
V0tJbWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVzdWx0ID0gaW1hZ2U7IH0KICAgICB2b2lkIHNl
dFJlcGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVwYWludFJlY3RzID0gcmVjdHM7
IH0KIApAQCAtMTUxLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZVdhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVyOwogICAgIGJvb2wgbV91c2VXb3JrUXVldWU7CiAKKyAgICBXS1JldGFp
blB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJl
Zj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRS
ZWN0czsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMTAxMDIwMGU5NDQzYmJiMGY0
NTNiZDE1MjE5ZWMxZDQwOGI0OTU1Zi4uMmU4NDgxOTEyODM1YmRhNjA1MjNjODRhNjEwYjczNTFi
MjRjMmFjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtOTQ2LDYgKzk0Niw4IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAgICBjYXNlIFRlc3RSdW5uZXI6OkFsbEZy
YW1lc1RleHQ6CiAgICAgICAgIGR1bXBBbGxGcmFtZXNUZXh0KHN0cmluZ0J1aWxkZXIpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRlc3RSdW5uZXI6OkF1ZGlvOgorICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA4NWM2ODE3
MTY5YTVjMzVjNzA1ZGI1NDIwNmYxNTE3OWM1ZWVmZmZkLi42NjYyZmI2ODAxZTM2NThlOTlkOWIw
NTlkNTZhYzg4ZmJkMDE1Y2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
IDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVu
ZGxlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVTY3JpcHRXb3JsZC5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dlYktpdDJfQy5oPgpAQCAtNDMzLDYgKzQzNCwxMyBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBl
bGVtZW50LCBKU1N0cgogICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNldEhUTUxJbnB1dEVsZW1lbnRW
YWx1ZUZvclVzZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1ZSkuZ2V0KCkpOwogfQogCit2
b2lkIFRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBkYXRhKQoreworICAgIFdLRGF0YVJlZiBhdWRpb0RhdGEgPSBXS0J1bmRsZURhdGFGcm9t
VUludDhBcnJheShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGNvbnRleHQsIGRh
dGEpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zZXRBdWRpb1Jlc3VsdChhdWRpb0Rh
dGEpOworICAgIG1fd2hhdFRvRHVtcCA9IEF1ZGlvOworfQorCiB1bnNpZ25lZCBUZXN0UnVubmVy
Ojp3aW5kb3dDb3VudCgpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
YWdlQ291bnQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKaW5kZXggMzIwZGEzNThjNWRhOTc0ODA1NTZlZDE5NmQ1NTdjMWUyMGJl
NmQyMC4uOTQzYjU2ZTlhMWVkNGFjMjFlMTg0NjNjZDBjNzc1MWIxZGMwNmY2OSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAg
LTE2MCw3ICsxNjAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIEpTU3RyaW5nUmVmIHZhbHVlKTsKIAotICAg
IGVudW0gV2hhdFRvRHVtcCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1Rl
eHQgfTsKKyAgICAvLyBBdWRpbyB0ZXN0aW5nLgorICAgIHZvaWQgc2V0QXVkaW9EYXRhKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiBkYXRhKTsKKworICAgIGVudW0gV2hhdFRvRHVtcCB7IFJlbmRl
clRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvIH07CiAgICAgV2hhdFRv
RHVtcCB3aGF0VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CiAKICAgICBi
b29sIHNob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOyB9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDcyODdlOTE0N2I0YmFhNGUwMWU1MTZjY2NjOGM3
MTlkMjFmODFmMTMuLmY4NjkxMDBhMjRhZDNiNTk3NzViY2RjMDE1NmVkOGFhMWM2MzMxYzEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0zMiw4ICszMiw5
IEBACiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2lu
Y2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRh
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtMjg3LDEzICsyODgsNDIgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRU
b1N0ZGVyciwgYm8KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMoKQogewotICAg
IGR1bXAobV90ZXh0T3V0cHV0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1f
dGV4dE91dHB1dC5sZW5ndGgoKSkKKyAgICAgICAgZHVtcChtX3RleHRPdXRwdXQudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBlbHNlIGlmIChtX2F1ZGlvUmVzdWx0KQorICAgICAgICBk
dW1wQXVkaW8obV9hdWRpb1Jlc3VsdC5nZXQoKSk7CiAKICAgICBpZiAobV9kdW1wUGl4ZWxzICYm
IG1fcGl4ZWxSZXN1bHQpCiAgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVk
KG1fcGl4ZWxSZXN1bHQuZ2V0KCksIG1fcmVwYWludFJlY3RzLmdldCgpKTsKIAogICAgIGZwdXRz
KCIjRU9GXG4iLCBzdGRvdXQpOwogICAgIGZmbHVzaChzdGRvdXQpOworICAgIGZmbHVzaChzdGRl
cnIpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wQXVkaW8oV0tEYXRhUmVmIGF1ZGlv
RGF0YSkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gV0tEYXRhR2V0U2l6ZShhdWRpb0RhdGEpOwor
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhID0gV0tEYXRhR2V0Qnl0ZXMoYXVkaW9EYXRhKTsKKworICAgIHByaW50ZigiQ29u
dGVudC1UeXBlOiBhdWRpby93YXZcbiIpOworICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVs
dVxuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVuZ3RoKSk7CisKKyAgICBjb25zdCBz
aXplX3QgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayA9IDEgPDwgMTU7CisgICAgc2l6ZV90IGRhdGFS
ZW1haW5pbmdUb1dyaXRlID0gbGVuZ3RoOworICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0
ZSkgeworICAgICAgICBzaXplX3QgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBzdGQ6Om1pbihk
YXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayk7CisgICAgICAgIHNp
emVfdCBieXRlc1dyaXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1
bmssIHN0ZG91dCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRlSW5U
aGlzQ2h1bmspCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGF0YVJlbWFpbmluZ1RvV3Jp
dGUgLT0gYnl0ZXNXcml0dGVuOworICAgICAgICBkYXRhICs9IGJ5dGVzV3JpdHRlbjsKKyAgICB9
CisgICAgcHJpbnRmKCIjRU9GXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiNFT0ZcbiIpOwog
fQogCiBib29sIFRlc3RJbnZvY2F0aW9uOjpjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmRE
dW1wUmVzdWx0cyhjb25zdCBjaGFyIGFjdHVhbEhhc2hbMzNdKQpAQCAtMzQ2LDYgKzM3Niw5IEBA
IHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJSZXBhaW50UmVjdHMiKSk7CiAgICAgICAgIG1fcmVwYWludFJlY3RzID0gc3RhdGljX2Nhc3Q8
V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSkpOwogCisgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBhdWRpb1Jlc3VsdEtleSA9ICBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKKyAgICAgICAgbV9hdWRpb1Jlc3VsdCA9IHN0YXRpY19j
YXN0PFdLRGF0YVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rp
b25hcnksIGF1ZGlvUmVzdWx0S2V5LmdldCgpKSk7CisKICAgICAgICAgbV9nb3RGaW5hbE1lc3Nh
Z2UgPSB0cnVlOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
aW5kZXggYjllYWQxNGFhNGMwNTgwYWYwOWQ4MWFhYmUyNzA1MzllNDYyYTBlZi4uMjcyYzFmN2Uw
NTg2NTU5MzM5MThhYzY1YzM2MzNjYmVjYWFlM2FkYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaApAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVt
cFJlc3VsdHMoKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91
dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7
CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBX
S0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7CisgICAgdm9pZCBkdW1wQXVkaW8oV0tEYXRhUmVmKTsK
ICAgICBib29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0
IGNoYXJbMzNdKTsKIAogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCkBAIC03MCw2
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Vycm9yOwogCiAgICAgU3RyaW5nQnVpbGRl
ciBtX3RleHRPdXRwdXQ7CisgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBtX2F1ZGlvUmVzdWx0
OwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4ZWxSZXN1bHQ7CiAgICAgV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CiAgICAgc3RkOjpzdHJpbmcgbV9lcnJv
ck1lc3NhZ2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180164</attachid>
            <date>2012-12-19 07:47:13 -0800</date>
            <delta_ts>2012-12-21 04:51:04 -0800</delta_ts>
            <desc>Patch, v7, new review comments addressed.</desc>
            <filename>bug-95084-20121219174427.patch</filename>
            <type>text/plain</type>
            <size>23889</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1NWYxNTA0MWIzN2Nk
NTMwOTkwMTkzYzFiZGExY2VkYTg5MjhhMy4uNjcyYmMwZThhNWQzNmViMGY5NzZiY2FlYjRjMzAz
ZDJmMGFjYTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTE5ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W1dLMl0gV2ViQXVkaW8gV0tUUiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIE1hYyBidWlsZCBmaXhlcyBmb3IgYWRkaW5n
IFdlYkF1ZGlvIFdLVFIgc3VwcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVuYWJsZXMg
YXVkaW8gdGVzdGluZyB1c2luZyBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46IHRvVWludDhBcnJheSBzeW1ib2wgZXhwb3J0ZWQuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBKU1VpbnQ4QXJyYXkuaCBhbmQgSlNBcnJheUJ1
ZmZlclZpZXcuaCBoZWFkZXJzIG1hZGUgYXZhaWxhYmxlIGFzIHByaXZhdGUgaGVhZGVycy4KKwog
MjAxMi0xMi0xOSAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Q1NTUGFyc2VyIGNyYXNlcywgd2hlbiBubyBjb250ZXh0IGlzIGF2YWlsYWJsZSwgYW5kIHRoZSB2
YWx1ZSBpcyBhIHZhbGlkIGtleXdvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNzZkMGZlNzNkYTk4NWRmZjU1
Y2E0YmRmN2RiM2VhOWY3Y2FkODYxLi41NGU0YmU1ZmFiZWFkZjYzZmU4MzU5NGUyODhjODljYTNk
Y2Y1NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTItMTkgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbV0sy
XSBXZWJBdWRpbyBXS1RSIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgSW1wbGVtZW50aW5nIGF1ZGlvIGRhdGEgZHVtcCBz
dXBwb3J0IGZvciBXZWJLaXRUZXN0UnVubmVyLAorICAgICAgICBieSBhZGRpbmcgdGhlIEFQSSB0
byB0aGUgSURMLCBlbmFibGluZyBJUEMgZm9yIHRyYW5zZmVycmluZworICAgICAgICB0aGUgYXVk
aW8gZGF0YSBhcyBieXRlYnVmZmVyIGFuZCBkdW1waW5nIGl0IGFjY29yZGluZworICAgICAgICB0
byBydW4td2Via2l0LXRlc3RzIHNjcmlwdCdzIGV4cGVjdGF0aW9ucy4KKworICAgICAgICBJIGFt
IGFkZGluZyBhIHRlc3RydW5uZXIgc3BlY2lmaWMgYnVuZGxlIG1ldGhvZCB0byBleHRyYWN0IGRh
dGEKKyAgICAgICAgZnJvbSBhIFVpbnQ4QXJyYXkgaW50byBhIGJ5dGVidWZmZXIuIFRoaXMgQVBJ
IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lcidzIFRlc3RSdW5uZXIgdG8gZXh0
cmFjdCB0aGUgZGF0YSBpbnRvIGEgbG9jYWwKKyAgICAgICAgdmFyaWFibGUsIHRoZW4gc2VuZGlu
ZyBpdCBvdmVyIElQQy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogRml4aW5nIFF0
IGJ1aWxkIGJ5IGFkZGluZyBKU1VpbnQ4QXJyYXkuaCBoZWFkZXIgdG8gbGlzdCBvZiBmb3J3YXJk
aW5nIGhlYWRlcnMuCisgICAgICAgICogVGFyZ2V0LnByaTogQWRkaW5nIG1pc3NpbmcgV0tEYXRh
LiogZmlsZXMuIFF0IGJ1aWxkIGZpeC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJv
bVVpbnQ4QXJyYXkpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBBZGRpbmcgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9t
VWludDhBcnJheS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcDogQ29udmVydCBVaW50OEFycmF5IHRvIFdlYkRhdGEuCisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGUpOgor
CiAyMDEyLTEyLTE5ICBLeXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFVudXNlZCBwYXJhbWV0ZXJzIG9uIFdlYkNvbnRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDJiMThiYWI2OGUwODJjZTA3MTg4MWFmNzBiNTM2ZDg0ZDcyNjcyNTQuLjQ4ZDJiZGNk
ODE4MzFlODNlMTI1ZDY4NjM5NWZmYTFjZDIxMTUzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0yMTAsNiArMjEwLDcgQEAgX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU181UmFuZ2VF
UE4zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRUVFTlNfMjNFQW5ub3QKIF9fWk43V2ViQ29yZTEy
ZGVsZXRlQ29va2llRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pON1dlYkNvcmUxMmljb25E
YXRhYmFzZUV2CitfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pTQzdKU1ZhbHVlRQogX19a
TjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMTByb290T2JqZWN0RXYKIF9fWk43V2ViQ29yZTEzQVhP
YmplY3RDYWNoZTE4cm9vdE9iamVjdEZvckZyYW1lRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUx
M0FYT2JqZWN0Q2FjaGUyMWdBY2Nlc3NpYmlsaXR5RW5hYmxlZEUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNWVmY2QyYzhlNWQ2
MGU0MmU3YWZkYjUxYThjYWNkNWVmNjRkMmI4Li44MzUzZGY4ZmY5NWRkNDNiNjRhYmFmOGM1NjA2
OWQyNWNkYjAyMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDAzLDEzICsxNDAzLDEzIEBACiAJCTQ5RUVDRjA2MTA1MDcw
QzQwMDA5OUZBQiAvKiBKU0ludDE2QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRjgxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZB
cnJheS5jcHAgKi87IH07CiAJCTQ5RUVDRjA3MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0ludDE2QXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVD
RUY5MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0ludDE2QXJyYXkuaCAqLzsgfTsKIAkJNDlFRUNGMDgx
MDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDhBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGQTEwNTA3MEM0MDAwOTlGQUIgLyogSlNV
aW50OEFycmF5LmNwcCAqLzsgfTsKLQkJNDlFRUNGMDkxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWlu
dDhBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUNFRkIxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDhBcnJheS5oICovOyB9OworCQk0OUVF
Q0YwOTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0VGQjEwNTA3MEM0MDAwOTlGQUIgLyog
SlNVaW50OEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUNGMEExMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRkMxMDUw
NzBDNDAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXkuY3BwICovOyB9OwogCQk0OUVFQ0YwQjEwNTA3
MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRkQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDMy
QXJyYXkuaCAqLzsgfTsKIAkJNDlFRUNGMEMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDE2QXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlF
RUNFRkUxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXkuY3BwICovOyB9OwogCQk0OUVF
Q0YwRDEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRkYxMDUwNzBDNDAwMDk5RkFCIC8q
IEpTVWludDE2QXJyYXkuaCAqLzsgfTsKIAkJNDlFRUNGMUIxMDUwNzJGMzAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5j
cHAgKi87IH07Ci0JCTQ5RUVDRjFDMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNG
MUExMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IH07CisJCTQ5RUVD
RjFDMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGMUExMDUwNzJGMzAwMDk5RkFC
IC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDlFRUQxNDIxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUVFRDEzQzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcCAqLzsgfTsKIAkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDlFRUQxM0QxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oICovOyB9OwogCQk0OUVFRDE0NDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDlFRUQxM0UxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
LnByaSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA0NDQ4MzM4ZmZl
YmM5YzNmMmY5ODY4YTkxNDBkMWIwMjdjMWQ3YTM3Li4xZTJjMzUwZDBkNzQyMDNlMDg3ZjM4OTRm
ZmQwZmE0MDdmN2RkZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0yNCw2ICsy
NCw3IEBAIFdFQkNPUkVfR0VORVJBVEVEX0hFQURFUlNfRk9SX1dFQktJVDIgKz0gXAogICAgICQk
V0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIvSlNOb2RlLmggXAogICAgICQkV0VCQ09SRV9H
RU5FUkFURURfU09VUkNFU19ESVIvSlNOb3RpZmljYXRpb24uaCBcCiAgICAgJCRXRUJDT1JFX0dF
TkVSQVRFRF9TT1VSQ0VTX0RJUi9KU1JhbmdlLmggXAorICAgICQkV0VCQ09SRV9HRU5FUkFURURf
U09VUkNFU19ESVIvSlNVaW50OEFycmF5LmggXAogCiBkZWZpbmVSZXBsYWNlKG1lc3NhZ2VfaGVh
ZGVyX2dlbmVyYXRvcl9vdXRwdXQpIHsKICAgRklMRU5BTUU9JCRiYXNlbmFtZSgxKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5w
cmkKaW5kZXggYmNjMjE5YTA2ODRjNzMwMGQ1NTY4ZjI4ZDhlODNiZjE2NDg1YzdiYS4uYjMwNDY4
YTU2NjQ1NjUwMTQwOTY1NTRlMDA0MGQxYmUzNzYzNjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC00Nyw2
ICs0Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rpb25SZWYu
aCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmggXAogICAgIFNoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmggXAorICAgIFNoYXJlZC9BUEkvYy9XS0RhdGEu
aCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5oIFwKICAgICBTaGFyZWQvQVBJL2Mv
V0tFcnJvci5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oIFwKQEAgLTQyMSw2ICs0
MjIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8u
Y3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcCBcCisgICAgU2hhcmVkL0FQSS9jL1dLRGF0YS5j
cHAgXAogICAgIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwIFwKICAgICBTaGFyZWQvQVBJ
L2MvV0tFcnJvci5jcHAgXAogICAgIFNoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCmluZGV4IGU3ZDU2MTFmMGExNjdkZDIwZDRjNzFjMmRhZDRjNzQ3ODVi
MzAxYjQuLjU0NTVjM2I3OWMzN2UzNGExZGM3OTdiZjA0MzRkMThjNzg5MWYyZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBA
IC0yNjgsNiArMjY5LDEyIEBAIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGltZXJJbnRlcnZhbChX
S0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmCiAgICAgdG9JbXBsKGJ1
bmRsZVJlZiktPnNldE1pbmltdW1UaW1lckludGVydmFsKHRvSW1wbChwYWdlR3JvdXBSZWYpLCBz
ZWNvbmRzKTsKIH0KIAorV0tEYXRhUmVmIFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJy
YXkoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBk
YXRhKQoreworICAgIFJlZlB0cjxXZWJEYXRhPiB3ZWJEYXRhID0gdG9JbXBsKGJ1bmRsZSktPmNy
ZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBkYXRhKTsKKyAgICByZXR1cm4gdG9B
UEkod2ViRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKwogaW50IFdLQnVuZGxlTnVtYmVy
T2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYs
IGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKIHsK
ICAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPm51bWJlck9mUGFnZXModG9JbXBsKGZyYW1l
UmVmKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCAyY2FjYjU5NzZhM2RhN2UyNWExZWZkMzAyNmI1Nzkw
MmIzMGIxYTM2Li40ZjlmYzQ2NTViY2Y1NDJhOTJhYTc3NDQzYTVlN2RkNWNkYWU0YjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTY3LDYgKzY3LDcgQEAgV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tCdW5kbGUKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSk7CiBXS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChXS0J1
bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNh
dGlvbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldE1pbmltdW1UaW1lckludGVydmFsKFdL
QnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBk
b3VibGUgaW50ZXJ2YWwpOworV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0
YUZyb21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgZGF0YSk7CiAKIC8vIFVzZXJDb250ZW50IEFQSQogV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0
cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJy
YXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUs
IFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCmluZGV4IDFiNGU4NWFmN2NmYTg4MmE2OWIxNGQzZjI2YWI4MzUwMTRmMWY2MTUu
LjkxM2QwZTQ5MTM3YTA3MzMzOTA0NWU5NDZmZDFmY2Y5OWFhYTIyZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VL
aW5kcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCkBAIC01Niw2ICs1Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNOb3RpZmljYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0pTVWludDhBcnJheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlVmlzaWJpbGl0eVN0YXRl
Lmg+CkBAIC02MzEsNiArNjMzLDEzIEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3Rp
ZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiAjZW5kaWYK
IH0KIAorUGFzc1JlZlB0cjxXZWJEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZy
b21VaW50OEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCit7Cisg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7CisgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IGFycmF5RGF0YSA9IFdlYkNvcmU6OnRvVWludDhBcnJheSh0b0pTKGV4ZWNT
dGF0ZSwgZGF0YSkpOworICAgIHJldHVybiBXZWJEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KGFycmF5RGF0YS0+YmFzZUFkZHJlc3MoKSksIGFycmF5RGF0YS0+Ynl0ZUxl
bmd0aCgpKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzKFdlYlBhZ2UqIHBhZ2UsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBwYWdlLT5jb3Jl
UGFnZSgpLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoZW5hYmxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKaW5kZXggOGMwNjVjYzE0ZDBhYmRkNDk3NDgzNGY3ZjVjYjU3ZmFhOTRlYmI3Zi4u
ZTg4N2UyNzk3MWIwYmExNzRmYjIyZjM2MDYxNGNlZmZiMDk3NDliMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBJbW11dGFibGVBcnJheTsKIGNsYXNzIEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBX
ZWJDb25uZWN0aW9uOworY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwpAQCAtMTM0LDYgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNvbnN0
IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxs
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwogICAgIHVpbnQ2NF90IHdlYk5v
dGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgUGFzc1JlZlB0cjxX
ZWJEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmKTsKIAogICAgIC8vIFVzZXJDb250ZW50IEFQSQogICAgIHZvaWQgYWRkVXNlclNjcmlwdChX
ZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3Qs
IEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYjM1MzNiZmI3MmI4YWRkMWQz
YWVkN2RlZGM1MjA4MTcxMjQ2MDFkLi41MzVhN2IxNzE5NTVhNTAxZjRhYzFiM2I4NGZmY2NlZDA0
YTUxMGU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMTItMTkgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWlu
aWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBXZWJBdWRpbyBXS1RSIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgSW1wbGVtZW50aW5nIGF1ZGlvIGRhdGEgZHVtcCBzdXBwb3J0IGZvciBXZWJLaXRU
ZXN0UnVubmVyLAorICAgICAgICBieSBhZGRpbmcgdGhlIEFQSSB0byB0aGUgSURMLCBlbmFibGlu
ZyBJUEMgZm9yIHRyYW5zZmVycmluZworICAgICAgICB0aGUgYXVkaW8gZGF0YSBhcyBieXRlYnVm
ZmVyIGFuZCBkdW1waW5nIGl0IGFjY29yZGluZworICAgICAgICB0byBydW4td2Via2l0LXRlc3Rz
IHNjcmlwdCdzIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgVGhpcyBlbmFibGVzIGF1ZGlvIHRlc3Rp
bmcgb24gV2ViS2l0MiBwb3J0cy4KKyAgICAgICAgQmFzZWQgb24gaW5pdGlhbCB3aXAtcGF0Y2gg
ZnJvbSBQaGlsaXBwZSBOb3JtYW5kIC0gdGhhbmtzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDogQWRkaW5nIHNldEF1
ZGlvRGF0YSBBUEkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDogQXNzaWduIGF1ZGlvIGJ1ZmZlciBkYXRhIHRvIGEgbG9jYWwgV0tEYXRh
UmVmIGFmdGVyIGV4dHJhY3RpbmcgaXQgZnJvbSBXSzIgdXNpbmcgV0tCdW5kbGVEYXRhRnJvbVVp
bnQ4QXJyYXkgYnVuZGxlIEFQSS4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0QXVkaW9E
YXRhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6IEFkZCBhIHdoYXRUb0R1bXAgc3RhdGUgZm9yIGR1bXBpbmcg
QXVkaW8uCisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDogQWRkIGF1ZGlvIHRvIHRoZSBtZXNz
YWdlIHRoYXQncyB0cmFuc2ZlcnJlZCB0byB0aGUgV0tUUiBwcm9jZXNzLgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZTo6ZG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOiBBbGxvdyBzZXR0aW5nIGFuZCBhdWRpbyByZXN1
bHQgaGFuZGxlIHRvIGJlIHRyYW5zZmVycmVkLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6c2V0QXVkaW9SZXN1bHQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKTogRHVtbXkgaGFuZGxpbmcg
dGhlIEF1ZGlvIGNhc2UgaW4gdGhlIHN3aXRjaCwgYnVpbGQgZml4IGZvciBNYWMuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6IEF1ZGlvIGR1bXAgc3VwcG9y
dCwgZHVtcCBhdWRpbyBpZiB3ZSBoYXZlbid0IHJlY2VpdmVkIGEgdGV4dCBkdW1wIGZyb20gdGhl
IHdlYiBwcm9jZXNzLgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMp
OgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBBdWRp
byk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6IFN0b3JpbmcgcmVjZWl2ZWQgYXVkaW8gZGF0YSBiZWZvcmUgZHVtcGlu
Zy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAg
IChUZXN0SW52b2NhdGlvbik6CisKIDIwMTItMTItMTkgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtNYWNdIHJ1bi1sYXVuY2hlciBjYW5ub3QgZmluZCBR
dDVXZWJLaXRXaWRnZXRzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZDM2OGM1OTA4
NmJiNzg2ZDM0M2U1NzM4YmI2ZDAwZDZjMTY4MGZhNi4uNDdiMDE4MDc0OWQ1YmQ5YWZjMzBiMzAw
YjZhMDFiMTkxZGRhOTMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0xODIsNiAr
MTgyLDkgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oaW4gZG91YmxlIGxhdGl0dWRlLCBpbiBkb3VibGUgbG9uZ2l0dWRlLCBpbiBk
b3VibGUgYWNjdXJhY3ksIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIG9iamVjdCBh
bHRpdHVkZSwgaW4gW09wdGlvbmFsXSBvYmplY3QgYWx0aXR1ZGVBY2N1cmFjeSwgaW4gW09wdGlv
bmFsXSBvYmplY3QgaGVhZGluZywgaW4gW09wdGlvbmFsXSBvYmplY3Qgc3BlZWQpOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGluIERPTVN0cmlu
ZyBlcnJvck1lc3NhZ2UpOwogCisgICAgLy8gQXVkaW8gdGVzdGluZy4KKyAgICBbUGFzc0NvbnRl
eHRdIHZvaWQgc2V0QXVkaW9EYXRhKGluIG9iamVjdCBkYXRhKTsKKwogICAgIGJvb2xlYW4gY2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KCk7CiAKICAgICAvLyBXb3JrIHF1ZXVlLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCAxNGNiYzRjNmEyYWE2OTEwYzdhYTAyNjIwMjQ2OTBmMjU4ZDcyOTNkLi45ZDMw
YWQ5MjhhMDI5NGQwMmNmNjA5M2FjZmY5MDFkM2EwYzcwMWU2IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApA
QCAtMjk0LDYgKzI5NCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUoKQogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRk
SXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSwgbV9yZXBh
aW50UmVjdHMuZ2V0KCkpOwogCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvUmVz
dWx0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1
bHQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShkb25lTWVzc2FnZUJvZHkuZ2V0KCksIGF1
ZGlvUmVzdWx0S2V5LmdldCgpLCBtX2F1ZGlvUmVzdWx0LmdldCgpKTsKKwogICAgIFdLQnVuZGxl
UG9zdE1lc3NhZ2UobV9idW5kbGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VC
b2R5LmdldCgpKTsKIAogICAgIGNsb3NlT3RoZXJQYWdlcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDM5
NWQyMDQ1NmQ0YWRjYWI3YzQzMGMwYzFkMDA3ZDYyNmYwY2VmMzAuLmQ0NDViNGE4MzNiNzAxNTdk
YTEzZjIyNzE3Yzg3MjI4NTg4YTA5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTY2LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhTdHJpbmdC
dWlsZGVyJik7CiAKICAgICB2b2lkIGRvbmUoKTsKKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KFdL
RGF0YVJlZiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogICAgIHZv
aWQgc2V0UGl4ZWxSZXN1bHQoV0tJbWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVzdWx0ID0gaW1h
Z2U7IH0KICAgICB2b2lkIHNldFJlcGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVw
YWludFJlY3RzID0gcmVjdHM7IH0KIApAQCAtMTUxLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogICAgIGJvb2wgbV91c2VXb3JrUXVl
dWU7CiAKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tS
ZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXgg
MTAxMDIwMGU5NDQzYmJiMGY0NTNiZDE1MjE5ZWMxZDQwOGI0OTU1Zi4uMmU4NDgxOTEyODM1YmRh
NjA1MjNjODRhNjEwYjczNTFiMjRjMmFjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAt
OTQ2LDYgKzk0Niw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAgICBjYXNl
IFRlc3RSdW5uZXI6OkFsbEZyYW1lc1RleHQ6CiAgICAgICAgIGR1bXBBbGxGcmFtZXNUZXh0KHN0
cmluZ0J1aWxkZXIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRlc3RSdW5uZXI6OkF1ZGlv
OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCA4NWM2ODE3MTY5YTVjMzVjNzA1ZGI1NDIwNmYxNTE3OWM1ZWVmZmZkLi5kZTA2
YzUxNjMzOWRiMGU0ODI2NzQ5MDkyNzRmMWZhNjQ3NDRiODc0IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5k
bGVTY3JpcHRXb3JsZC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDJfQy5oPgpAQCAtNDMzLDYgKzQz
NCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBKU1N0cgogICAgIFdLQnVuZGxlTm9kZUhhbmRsZVNl
dEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIobm9kZUhhbmRsZS5nZXQoKSwgdG9XSyh2YWx1
ZSkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQoreworICAgIFdLUmV0YWluUHRyPFdLRGF0YVJl
Zj4gYXVkaW9EYXRhKEFkb3B0V0ssIFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJyYXko
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBjb250ZXh0LCBkYXRhKSk7CisgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldEF1ZGlvUmVzdWx0KGF1ZGlvRGF0YS5nZXQoKSk7
CisgICAgbV93aGF0VG9EdW1wID0gQXVkaW87Cit9CisKIHVuc2lnbmVkIFRlc3RSdW5uZXI6Ondp
bmRvd0NvdW50KCkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2VD
b3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCAzMjBkYTM1OGM1ZGE5NzQ4MDU1NmVkMTk2ZDU1N2MxZTIwYmU2ZDIw
Li45NDNiNTZlOWExZWQ0YWMyMWUxODQ2M2NkMGM3NzUxYjFkYzA2ZjY5IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTYw
LDcgKzE2MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgSlNTdHJpbmdSZWYgdmFsdWUpOwogCi0gICAgZW51
bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCB9
OworICAgIC8vIEF1ZGlvIHRlc3RpbmcuCisgICAgdm9pZCBzZXRBdWRpb0RhdGEoSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmIGRhdGEpOworCisgICAgZW51bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJl
ZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVkaW8gfTsKICAgICBXaGF0VG9EdW1w
IHdoYXRUb0R1bXAoKSBjb25zdCB7IHJldHVybiBtX3doYXRUb0R1bXA7IH0KIAogICAgIGJvb2wg
c2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzI4N2U5MTQ3YjRiYWE0ZTAxZTUxNmNjY2M4YzcxOWQy
MWY4MWYxMy4uZjg2OTEwMGEyNGFkM2I1OTc3NWJjZGMwMTU2ZWQ4YWExYzYzMzFjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTMyLDggKzMyLDkgQEAK
ICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVk
ZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJ
bnNwZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CkBAIC0yODcsMTMgKzI4OCw0MiBAQCB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3Rk
ZXJyLCBibwogCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZHVt
cChtX3RleHRPdXRwdXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV90ZXh0
T3V0cHV0Lmxlbmd0aCgpKQorICAgICAgICBkdW1wKG1fdGV4dE91dHB1dC50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIGVsc2UgaWYgKG1fYXVkaW9SZXN1bHQpCisgICAgICAgIGR1bXBB
dWRpbyhtX2F1ZGlvUmVzdWx0LmdldCgpKTsKIAogICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgbV9w
aXhlbFJlc3VsdCkKICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQobV9w
aXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOwogCiAgICAgZnB1dHMoIiNF
T0ZcbiIsIHN0ZG91dCk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZsdXNoKHN0ZGVycik7
Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXBBdWRpbyhXS0RhdGFSZWYgYXVkaW9EYXRh
KQoreworICAgIHNpemVfdCBsZW5ndGggPSBXS0RhdGFHZXRTaXplKGF1ZGlvRGF0YSk7CisgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEgPSBXS0RhdGFHZXRCeXRlcyhhdWRpb0RhdGEpOworCisgICAgcHJpbnRmKCJDb250ZW50
LVR5cGU6IGF1ZGlvL3dhdlxuIik7CisgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWx1XG4i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW5ndGgpKTsKKworICAgIGNvbnN0IHNpemVf
dCBieXRlc1RvV3JpdGVJbk9uZUNodW5rID0gMSA8PCAxNTsKKyAgICBzaXplX3QgZGF0YVJlbWFp
bmluZ1RvV3JpdGUgPSBsZW5ndGg7CisgICAgd2hpbGUgKGRhdGFSZW1haW5pbmdUb1dyaXRlKSB7
CisgICAgICAgIHNpemVfdCBieXRlc1RvV3JpdGVJblRoaXNDaHVuayA9IHN0ZDo6bWluKGRhdGFS
ZW1haW5pbmdUb1dyaXRlLCBieXRlc1RvV3JpdGVJbk9uZUNodW5rKTsKKyAgICAgICAgc2l6ZV90
IGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZShkYXRhLCAxLCBieXRlc1RvV3JpdGVJblRoaXNDaHVuaywg
c3Rkb3V0KTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRlc1RvV3JpdGVJblRoaXND
aHVuaykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkYXRhUmVtYWluaW5nVG9Xcml0ZSAt
PSBieXRlc1dyaXR0ZW47CisgICAgICAgIGRhdGEgKz0gYnl0ZXNXcml0dGVuOworICAgIH0KKyAg
ICBwcmludGYoIiNFT0ZcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiI0VPRlxuIik7CiB9CiAK
IGJvb2wgVGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBS
ZXN1bHRzKGNvbnN0IGNoYXIgYWN0dWFsSGFzaFszM10pCkBAIC0zNDYsNiArMzc2LDkgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJl
cGFpbnRSZWN0c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJl
cGFpbnRSZWN0cyIpKTsKICAgICAgICAgbV9yZXBhaW50UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0Fy
cmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
cmVwYWludFJlY3RzS2V5LmdldCgpKSk7CiAKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGF1ZGlvUmVzdWx0S2V5ID0gIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkF1ZGlvUmVzdWx0IikpOworICAgICAgICBtX2F1ZGlvUmVzdWx0ID0gc3RhdGljX2Nhc3Q8
V0tEYXRhUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCkpKTsKKwogICAgICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9
IHRydWU7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRl
eCBiOWVhZDE0YWE0YzA1ODBhZjA5ZDgxYWFiZTI3MDUzOWU0NjJhMGVmLi4yNzJjMWY3ZTA1ODY1
NTkzMzkxOGFjNjVjMzYzM2NiZWNhYWUzYWRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVz
dWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBj
b25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKICAg
ICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJy
YXlSZWYgcmVwYWludFJlY3RzKTsKKyAgICB2b2lkIGR1bXBBdWRpbyhXS0RhdGFSZWYpOwogICAg
IGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hh
clszM10pOwogCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTcwLDYgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXJyb3I7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1f
dGV4dE91dHB1dDsKKyAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAg
ICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKICAgICBzdGQ6OnN0cmluZyBtX2Vycm9yTWVz
c2FnZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>