<?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>72667</bug_id>
          
          <creation_ts>2011-11-17 15:01:36 -0800</creation_ts>
          <short_desc>[Chromium] Fix broken DRT build for Aura Linux</short_desc>
          <delta_ts>2011-11-30 01:38:14 -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>New Bugs</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>73244</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505260</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 15:01:36 -0800</bug_when>
    <thetext>[Chromium] Fix broken DRT build for Aura Linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505265</commentid>
    <comment_count>1</comment_count>
      <attachid>115695</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 15:05:47 -0800</bug_when>
    <thetext>Created attachment 115695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505338</commentid>
    <comment_count>2</comment_count>
      <attachid>115695</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-17 16:23:04 -0800</bug_when>
    <thetext>Comment on attachment 115695
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestShell.cpp:753
&gt; +#if OS(LINUX) &amp;&amp; !USE(GTK)

This looks like TestShellAndroid.cpp.  Here is my suggestion:

Make a TestShellLinux.cpp that has TestShell::waitTestFinished(), AlarmHandler(int), and checkLayoutTestSystemDependencies().  These methods appear to be the same everywhere.

Add a TestShellStub.cpp that has the other methods and use that on Android and Aura.

Alternately, you could just make a TestShellAura.cpp that is basically the same as TestShellAndroid.cpp with the belief that these will diverge over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505772</commentid>
    <comment_count>3</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 07:30:21 -0800</bug_when>
    <thetext>I&apos;m a bit confused. How does it decide to use TestShellGtk v.s. TestShellWin for example? They are both defined under variables in drt_files in Tools/DumpRenderTree/DumpRenderTree.gypi. I&apos;m doing a bit more digging to better understand how this build works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505792</commentid>
    <comment_count>4</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 08:06:30 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m a bit confused. How does it decide to use TestShellGtk v.s. TestShellWin for example? They are both defined under variables in drt_files in Tools/DumpRenderTree/DumpRenderTree.gypi. I&apos;m doing a bit more digging to better understand how this build works.

Ohh, I just found out that a lot of magic happens in Source/WebKit/chromium/WebKit.gyp where files are excluded by regexp based on the platform! Cool! Very unintuitive, but very cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505900</commentid>
    <comment_count>5</comment_count>
      <attachid>115833</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 10:46:09 -0800</bug_when>
    <thetext>Created attachment 115833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505905</commentid>
    <comment_count>6</comment_count>
      <attachid>115834</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 10:48:24 -0800</bug_when>
    <thetext>Created attachment 115834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505908</commentid>
    <comment_count>7</comment_count>
      <attachid>115837</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 10:55:37 -0800</bug_when>
    <thetext>Created attachment 115837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505926</commentid>
    <comment_count>8</comment_count>
      <attachid>115837</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-18 11:13:23 -0800</bug_when>
    <thetext>Comment on attachment 115837
Patch

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

One minor change, but otherwise, this looks great.

&gt; Tools/DumpRenderTree/chromium/TestShellStub.cpp:34
&gt; +#if OS(LINUX) &amp;&amp; !USE(GTK)

I would remove the #if and instead, in WebKit.gyp, exclude the file except on Aura.  That is, in the DumpRenderTree target, add the condition: [&apos;use_aura==0&apos;, { &apos;sources/&apos;: [[&apos;exclude&apos;, &apos;Stub\\.cpp$&apos;]] } ].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506045</commentid>
    <comment_count>9</comment_count>
      <attachid>115871</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 14:05:56 -0800</bug_when>
    <thetext>Created attachment 115871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506047</commentid>
    <comment_count>10</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-18 14:11:35 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 115837 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115837&amp;action=review
&gt; 
&gt; One minor change, but otherwise, this looks great.
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestShellStub.cpp:34
&gt; &gt; +#if OS(LINUX) &amp;&amp; !USE(GTK)
&gt; 
&gt; I would remove the #if and instead, in WebKit.gyp, exclude the file except on Aura.  That is, in the DumpRenderTree target, add the condition: [&apos;use_aura==0&apos;, { &apos;sources/&apos;: [[&apos;exclude&apos;, &apos;Stub\\.cpp$&apos;]] } ].

use_aura doesn&apos;t seem to be exposed in the webkit repo. Also, should I be excluding all stub files or just TestShellStub?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506055</commentid>
    <comment_count>11</comment_count>
      <attachid>115837</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-18 14:22:01 -0800</bug_when>
    <thetext>Comment on attachment 115837
Patch

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

&gt;&gt;&gt; Tools/DumpRenderTree/chromium/TestShellStub.cpp:34
&gt;&gt;&gt; +#if OS(LINUX) &amp;&amp; !USE(GTK)
&gt;&gt; 
&gt;&gt; I would remove the #if and instead, in WebKit.gyp, exclude the file except on Aura.  That is, in the DumpRenderTree target, add the condition: [&apos;use_aura==0&apos;, { &apos;sources/&apos;: [[&apos;exclude&apos;, &apos;Stub\\.cpp$&apos;]] } ].
&gt; 
&gt; use_aura doesn&apos;t seem to be exposed in the webkit repo. Also, should I be excluding all stub files or just TestShellStub?

use_aura should be pulled in via build/common.gypi.  We pull a bunch of chromium code when you run update-webkit --chromium.  Does your checkout not have Source/WebKit/chromium/build/common.gypi?

You&apos;re right, you should just exclude TestShellStub.cpp, not all Stub.cpp files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506073</commentid>
    <comment_count>12</comment_count>
      <attachid>115871</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 14:45:48 -0800</bug_when>
    <thetext>Comment on attachment 115871
Patch

Attachment 115871 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10518212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506151</commentid>
    <comment_count>13</comment_count>
      <attachid>115871</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-18 15:49:06 -0800</bug_when>
    <thetext>Comment on attachment 115871
Patch

r- since we&apos;re missing the the exclude gyp rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507660</commentid>
    <comment_count>14</comment_count>
      <attachid>116238</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-22 10:03:44 -0800</bug_when>
    <thetext>Created attachment 116238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507961</commentid>
    <comment_count>15</comment_count>
      <attachid>116238</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-22 23:37:40 -0800</bug_when>
    <thetext>Comment on attachment 116238
Patch

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

&gt; Source/WebKit/chromium/WebKit.gyp:1097
&gt; +                [&apos;use_aura==0&apos;, {
&gt; +                    &apos;sources/&apos;: [
&gt; +                        [&apos;exclude&apos;, &apos;TestShellStub\\.cpp$&apos;],

Is this needed?  It looks like we only add the file if it&apos;s aura or android.

&gt; Tools/DumpRenderTree/chromium/EventSender.cpp:579
&gt; +#if OS(LINUX) &amp;&amp; USE(GTK)

What happened to the WTF_USE_GTK define in WebKit.gyp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508593</commentid>
    <comment_count>16</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-23 20:28:17 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 116238 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116238&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:1097
&gt; &gt; +                [&apos;use_aura==0&apos;, {
&gt; &gt; +                    &apos;sources/&apos;: [
&gt; &gt; +                        [&apos;exclude&apos;, &apos;TestShellStub\\.cpp$&apos;],
&gt; 
&gt; Is this needed?  It looks like we only add the file if it&apos;s aura or android.

I&apos;m not sure how else to exclude it? I believe you suggested this?
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/EventSender.cpp:579
&gt; &gt; +#if OS(LINUX) &amp;&amp; USE(GTK)
&gt; 
&gt; What happened to the WTF_USE_GTK define in WebKit.gyp?

Oops, accidentally reverted, thanks for catching this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508598</commentid>
    <comment_count>17</comment_count>
      <attachid>116478</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-23 20:48:13 -0800</bug_when>
    <thetext>Created attachment 116478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508631</commentid>
    <comment_count>18</comment_count>
      <attachid>116478</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 22:31:35 -0800</bug_when>
    <thetext>Comment on attachment 116478
Patch

Attachment 116478 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10640084

New failing tests:
plugins/keyboard-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508810</commentid>
    <comment_count>19</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2011-11-24 08:58:08 -0800</bug_when>
    <thetext>Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508817</commentid>
    <comment_count>20</comment_count>
      <attachid>116478</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-24 09:28:56 -0800</bug_when>
    <thetext>Comment on attachment 116478
Patch

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

&gt; Source/WebKit/chromium/WebKit.gyp:756
&gt; +                    &apos;defines&apos;: [
&gt; +                        &apos;WTF_USE_GTK&apos;

I think this has to be WTF_USE_GTK=1.  My guess is that&apos;s why the test is failing.

&gt; Tools/DumpRenderTree/DumpRenderTree.gypi:74
&gt; +            [&apos;(OS==&quot;linux&quot; and toolkit_uses_gtk!=&quot;1&quot;) or OS==&quot;android&quot;&apos;, {

Nit: I think you don&apos;t want the &quot;s around the 1.  I think if you fix that, you don&apos;t need the exclude line.  TestShellStub.cpp is only included if it passes this condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509848</commentid>
    <comment_count>21</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 08:41:25 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?

(In reply to comment #19)
&gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?

I&apos;m not sure what you&apos;re referring to Dana.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509854</commentid>
    <comment_count>22</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2011-11-28 08:50:00 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; 
&gt; (In reply to comment #19)
&gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; 
&gt; I&apos;m not sure what you&apos;re referring to Dana.

You left setupFontconfig() in TestShellGTK rather than moving it to some place that it will still be used for Aura.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509857</commentid>
    <comment_count>23</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 08:54:08 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; &gt; 
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; &gt; 
&gt; &gt; I&apos;m not sure what you&apos;re referring to Dana.
&gt; 
&gt; You left setupFontconfig() in TestShellGTK rather than moving it to some place that it will still be used for Aura.

Ohh sorry, good catch. It doesn&apos;t seem like Android build needs this but I bet Aura build does. I&apos;ll add it back behind a define for Aura.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509963</commentid>
    <comment_count>24</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 10:57:01 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; &gt; &gt; 
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; Why drop all the FontConfig stuff when not using GTK? Does SKIA not use FontConfig still?
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure what you&apos;re referring to Dana.
&gt; &gt; 
&gt; &gt; You left setupFontconfig() in TestShellGTK rather than moving it to some place that it will still be used for Aura.
&gt; 
&gt; Ohh sorry, good catch. It doesn&apos;t seem like Android build needs this but I bet Aura build does. I&apos;ll add it back behind a define for Aura.

So we want to call setupFontconfig on GTK + AURA but not on other builds (like Android). I don&apos;t want to put too much code in TestShellStub, and I don&apos;t want to replicate too much code across files but it looks like setupFontconfig has to be in either in TestShell.cpp or replicated before both GTK and non-GTK (behind a define). 

I can&apos;t think of a pretty way to do this. Code replication is bad, but defines in code is not too nice either :( I&apos;ll have a patch up shortly and we can discuss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510039</commentid>
    <comment_count>25</comment_count>
      <attachid>116795</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 11:54:02 -0800</bug_when>
    <thetext>Created attachment 116795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510045</commentid>
    <comment_count>26</comment_count>
      <attachid>116795</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-28 12:00:03 -0800</bug_when>
    <thetext>Comment on attachment 116795
Patch

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

I would maybe just put all of TestShellStub and TestShellGtk into TestShellLinux (it&apos;s just 2 small functions now), but this is fine too.  I can do a follow up change with that.

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        Don&apos;t use TestShellStub if not building for Aura or Android.

Nit: remove this sentence

&gt; Tools/DumpRenderTree/chromium/TestShellLinux.cpp:201
&gt; +#endif

Nit: Can you add a // !OS(ANDROID) here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510058</commentid>
    <comment_count>27</comment_count>
      <attachid>116795</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 12:10:35 -0800</bug_when>
    <thetext>Comment on attachment 116795
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:8
&gt;&gt; +        Don&apos;t use TestShellStub if not building for Aura or Android.
&gt; 
&gt; Nit: remove this sentence

Done.

&gt;&gt; Tools/DumpRenderTree/chromium/TestShellLinux.cpp:201

&gt; 
&gt; Nit: Can you add a // !OS(ANDROID) here?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510061</commentid>
    <comment_count>28</comment_count>
      <attachid>116798</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 12:11:40 -0800</bug_when>
    <thetext>Created attachment 116798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510064</commentid>
    <comment_count>29</comment_count>
      <attachid>116798</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 12:21:32 -0800</bug_when>
    <thetext>Comment on attachment 116798
Patch

Clearing flags on attachment: 116798

Committed r101273: &lt;http://trac.webkit.org/changeset/101273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510065</commentid>
    <comment_count>30</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 12:21:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510128</commentid>
    <comment_count>31</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-28 13:40:03 -0800</bug_when>
    <thetext>Reverted in http://trac.webkit.org/changeset/101276 due to test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510373</commentid>
    <comment_count>32</comment_count>
      <attachid>116858</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-28 17:43:41 -0800</bug_when>
    <thetext>Created attachment 116858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510843</commentid>
    <comment_count>33</comment_count>
      <attachid>116981</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 09:13:33 -0800</bug_when>
    <thetext>Created attachment 116981
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510844</commentid>
    <comment_count>34</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 09:14:48 -0800</bug_when>
    <thetext>Oops, uploaded the wrong patch. Reuploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510850</commentid>
    <comment_count>35</comment_count>
      <attachid>116984</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 09:21:36 -0800</bug_when>
    <thetext>Created attachment 116984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510851</commentid>
    <comment_count>36</comment_count>
      <attachid>116985</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-29 09:22:52 -0800</bug_when>
    <thetext>Created attachment 116985
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511512</commentid>
    <comment_count>37</comment_count>
      <attachid>116985</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 01:38:07 -0800</bug_when>
    <thetext>Comment on attachment 116985
Patch for landing

Clearing flags on attachment: 116985

Committed r101464: &lt;http://trac.webkit.org/changeset/101464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511513</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 01:38:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115695</attachid>
            <date>2011-11-17 15:05:47 -0800</date>
            <delta_ts>2011-11-18 10:46:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111117180546.patch</filename>
            <type>text/plain</type>
            <size>4681</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDgzYTZmZDIzYWU4NDdlNDMxOTU3NzNkN2YyMjU0NzNlNzRiZDYzYTMuLmM1NTUxMGNiMzZjMjU4
OTE1NTNjOTRmZmU4YTA0NDIyZGVlY2Q2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMTcgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBEZWZpbmUgV1RGX1VTRV9HVEsgaWYgQ2hyb21pdW0gYnVpbGQgaXMg
dXNpbmcgR1RLCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCiAyMDExLTExLTE3ICBWc2V2b2xv
ZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFJlbW92ZSBvbmxpbmVEZXRlY3Rpb25FbmFibGVkIGZyb20gUHJlZmVyZW5jZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYTg1NGVhYmNkNmFmODc0NWI3MWFhYjljMTc2NTIzYzEw
ZTk5MjQ5Li5iNjhmYTkxNzcwYTQ0ZTA1NzQ1ZWI3ZjE2NDBiNTI0MjNlMjk5ZDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMTk2LDYgKzExOTYsOSBAQAogICAgICAgICAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgWyd0b29sa2l0
X3VzZXNfZ3RrID09IDEnLCB7CisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzogWworICAg
ICAgICAgICAgICAgICAgICAgICAgJ1dURl9VU0VfR1RLJworICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvbGludXgvc3lzdGVtLmd5cDpndGsn
LAogICAgICAgICAgICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIwODljZjUyYWZjY2YxMGJjYmJjYWJlNGJkZDQyMDYzZTk3
YjhiZGQuLmE4MTViNjk1YzhiMzU1MGJmYTc3OGI3NzIyNTMyOTJhZjI0OWFhODggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMS0xMS0xNyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbQ2hyb21pdW1dIEZpeCBicm9rZW4gRFJUIGJ1aWxkIGZvciBBdXJhIExpbnV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgZmV3IHN0dWJzIHRo
YXQgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBidXQgdGhpcyBpcyB0aGUgYmFzaWNzIHRvIGdldCBE
UlQgdG8gY29tcGlsZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAocGxhdGZvcm1J
bml0KToKKyAgICAgICAgKGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcyk6CisgICAg
ICAgIChvcGVuU3RhcnR1cERpYWxvZyk6CisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAg
ICAoVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKToKKwogMjAxMS0xMS0xNyAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IE5SV1QncyBwYXJzaW5nIG9mIHRo
ZSBudW1iZXIgb2YgZXhjbHVkZWQgbGVha3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0V2ZW50U2VuZGVyLmNwcAppbmRleCAyMGQ3N2E3NWEzNWE5MmZkNzg1ZGI5Yjg2ZWJlODYw
MTRlNzA3MTNjLi44ZDU0NmYxNjY4YTZmY2Q4YjIzNWEzNzVjN2E3OGQxOGJlMzVhNzI5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC01NzYs
NyArNTc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50RG93bi50eXBlID0g
V2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9kaWZpZXJzID0gMDsK
ICAgICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9TKExJTlVYKQorI2lm
IE9TKExJTlVYKSAmJiBVU0UoR1RLKQogICAgIGV2ZW50RG93bi5uYXRpdmVLZXlDb2RlID0gd2Vi
a2l0X3N1cHBvcnQ6Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2RlLCBuZWVkc1No
aWZ0S2V5TW9kaWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwCmluZGV4IGNiMWUyMTliMDc2NmI4YjkwOWU2M2MwZDhkYjAxMmMzMjhm
YmQ0OTguLjUwZWJmNjM0NTgxNGJkZjZiY2RkYWUxZWM1MzA5ZmRlYWRmNTY2YzIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtNjAsNiArNjAsOSBA
QAogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0X2dmeC5oIgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+CisjaWYgT1MoTElOVVgpICYmICFVU0Uo
R1RLKQorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8dmVjdG9yPgogI2lu
Y2x1ZGUgPHd0Zi9NRDUuaD4KIApAQCAtNzQ2LDMgKzc0OSw1MyBAQCBzdHJpbmcgVGVzdFNoZWxs
Ojpub3JtYWxpemVMYXlvdXRUZXN0VVJMKGNvbnN0IHN0cmluZyYgdXJsKQogewogICAgIHJldHVy
biBub3JtYWxpemVMYXlvdXRUZXN0VVJMSW50ZXJuYWwodXJsKTsKIH0KKworI2lmIE9TKExJTlVY
KSAmJiAhVVNFKEdUSykKK3ZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2
KQoreworfQorCitib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihp
bnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2lu
Y2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09V
VFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhp
dCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQoreworICAgIEFT
U0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOworCisg
ICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBp
ZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFs
YXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFs
YXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKKworICAg
IHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxh
cm1BY3Rpb24sICZvbGRBY3Rpb24pOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0
Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVp
dCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmluaXNo
ZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCisg
ICAgYWxhcm0oMCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOworfQor
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115833</attachid>
            <date>2011-11-18 10:46:09 -0800</date>
            <delta_ts>2011-11-18 10:48:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111118134608.patch</filename>
            <type>text/plain</type>
            <size>12569</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg0ZjNhOWFjYjQyODgxYjI5MGU0YjVlNGIwYmQ2YWJmNTU3Y2NlYjEuLjkwZDlkNDdkNDI1NDEz
NDBhMDAwYzM5MTYwNTQzMjQ1OTc3NzE3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMTggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
ZWZpbmUgV1RGX1VTRV9HVEsgaWYgQ2hyb21pdW0gYnVpbGQgaXMgdXNpbmcgR1RLLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMg
ZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNj
MTBlOTkyNDkuLmI2OGZhOTE3NzBhNDRlMDU3NDVlYjdmMTY0MGI1MjQyM2UyOTlkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExOTYsNiArMTE5Niw5IEBACiAgICAgICAgICAg
ICAgICAgICAgIF0KICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xr
aXRfdXNlc19ndGsgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnV1RGX1VTRV9HVEsnCisgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC9saW51eC9zeXN0ZW0uZ3lwOmd0
aycsCiAgICAgICAgICAgICAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk5YzgyNmRhYWMwYjJiZTI0NjUyZWQ3NDMxN2VjZTZk
NmU0MTRjMi4uNzU4ZjJiYjVmMWI2NTRjNDAwNTBlNWEwZTQwZmQ2ODFmZDgyNzJjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDExLTExLTE4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gRml4IGJyb2tlbiBEUlQgYnVpbGQgZm9yIEF1cmEgTGludXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRFJUIG5vdyBidWls
ZHMgZm9yIEF1cmEgTGludXguIFRoaXMsIG1vcmUgb3IgbGVzcywgc2hhcmVzIHRoZSBzYW1lIGNv
ZGUgYXMgQW5kcm9pZC4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBt
YWRlOgorCisgICAgICAgIDEuIFJlbmFtZWQgVGVzdFNoZWxsQW5kcm9pZCB0byBUZXN0U2hlbGxM
aW51eAorICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1YiB0
aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAgICAz
LiBDb2RlIGNvbW1vbiB0byBHdGssIEF1cmEsIGFuZCBBbmRyb2lkIG1vdmVkIHRvIFRlc3RTaGVs
bExpbnV4LgorCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAg
ICAgICAgKEV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwLgorICAgICAgICAoQWxhcm1IYW5kbGVyKToK
KyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6CisKIDIwMTEtMTEtMTggIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUg
V2ViU29ja2V0IGh5YmkgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpCmluZGV4IDIzNWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLjkyN2Q2
OGE5MWJmZjI2ZTY2ZGZkN2I5NGQxNzBkMTM3ZGY2YjY3OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzIsNyArMzIsOCBAQAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAnLAorICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsU3R1Yi5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMjBkNzdhNzVhMzVhOTJmZDc4NWRiOWI4NmViZTg2
MDE0ZTcwNzEzYy4uOGQ1NDZmMTY2OGE2ZmNkOGIyMzVhMzc1YzdhNzhkMThiZTM1YTcyOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcApAQCAtNTc2
LDcgKzU3Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVudERvd24udHlwZSA9
IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1vZGlmaWVycyA9IDA7
CiAgICAgZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBPUyhMSU5VWCkKKyNp
ZiBPUyhMSU5VWCkgJiYgVVNFKEdUSykKICAgICBldmVudERvd24ubmF0aXZlS2V5Q29kZSA9IHdl
YmtpdF9zdXBwb3J0OjpOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUoY29kZSwgbmVlZHNT
aGlmdEtleU1vZGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcAppbmRleCBjYjFlMjE5YjA3NjZiOGI5MDllNjNjMGQ4ZGIwMTJjMzI4
ZmJkNDk4Li5mOTgwMGM4YjUyMTViMTI3YTZiNWRmMjdlNGZjMjkzNzhkNGRhYjZiIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTYwLDYgKzYwLDkg
QEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydF9nZnguaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2N0eXBlPgorI2lmIE9TKExJTlVYKSAmJiAhVVNF
KEdUSykKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHZlY3Rvcj4KICNp
bmNsdWRlIDx3dGYvTUQ1Lmg+CiAKQEAgLTc0NiwzICs3NDksNCBAQCBzdHJpbmcgVGVzdFNoZWxs
Ojpub3JtYWxpemVMYXlvdXRUZXN0VVJMKGNvbnN0IHN0cmluZyYgdXJsKQogewogICAgIHJldHVy
biBub3JtYWxpemVMYXlvdXRUZXN0VVJMSW50ZXJuYWwodXJsKTsKIH0KKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmVhMmQyNDdlMzUzNWM3ZjNiN2Y4MjZmN2MxMWFmMWI5MDA1
ODlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdFNo
ZWxsLmgiCi0KLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgot
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0KLSNpbmNsdWRlIDxz
aWduYWwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVy
KGludCkKLXsKLSAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBz
aW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURf
T1VUXG4iKTsKLSAgICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICB3
ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsKLSAgICBleGl0KDApOwot
fQotCi12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFt
X3Rlc3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJ
bnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRp
bWUgb3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rp
b24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rp
b24uc2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0
IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlv
biwgJm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygp
IC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3Nh
Z2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2Fk
aW5nLgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFy
bSgwKTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KLXZvaWQg
cGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQotewotICAgIC8vIE5vdGhpbmcg
dG8gZG8gaGVyZS4KLX0KLQotdm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCi17Ci0gICAgLy8gRklY
TUU6IE5vdCBpbXBsZW1lbnRlZC4KLX0KLQotYm9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBl
bmRlbmNpZXMoKQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3Bw
CmluZGV4IDMzYmRlOWEwZTUzNjExOGFmZmYzN2IyMmJhNGMwNTYzOGRhNTk2MWYuLmIzMmE3Y2Y1
OWVlYThhN2Q4NmQwYzRlZGJkMTdmMmI0NTg1MTg5MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcApAQCAtMzYsMTUgKzM2LDYgQEAKICNpbmNs
dWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKLXN0YXRpYyB2b2lkIEFsYXJt
SGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHBy
b2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNU
X1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygiI0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7
Ci0gICAgZXhpdCgwKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkKIHsKICAg
ICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxheW91dCB0ZXN0cyByZXByb2R1Y2FibGUgd2l0aCBy
ZXNwZWN0IHRvIGZvbnRzLiBTa2lhCkBAIC0xNjgsMzEgKzE1OSw2IEBAIHN0YXRpYyB2b2lkIHNl
dHVwRm9udGNvbmZpZygpCiAgICAgfQogfQogCi12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5p
c2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVu
ZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRo
YXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxh
cm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAg
ICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2Ff
ZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0
aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0
VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQo
KSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBh
Z2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcp
Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVt
b3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgwKTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9s
ZEFjdGlvbiwgMCk7Ci19Ci0KIHZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBh
cmd2KQogewogICAgIC8vIEZJWE1FOiBJdCdzIGJldHRlciBjYWxsIGd0a19pbml0KCkgb25seSB3
aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNmZWQ2MTFmNzkwNjJlM2Y2ZTE2
MzgxN2MxYzJiMWFiMjNlZTI3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCisjaW5jbHVkZSAiU2tUeXBlZmFj
ZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oIgorCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJt
IGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFu
Zy4KKyAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7
CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6
OndhaXRUZXN0RmluaXNoZWQoKQoreworICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAg
ICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOworCisgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWdu
YWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qg
c2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFy
bUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFs
YXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKKworICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9u
OworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOworICAg
IGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8g
VGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9v
cCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmluaXNoZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90
ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsK
KworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCisgICAgYWxhcm0oMCk7CisgICAgc2lnYWN0aW9u
KFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115834</attachid>
            <date>2011-11-18 10:48:24 -0800</date>
            <delta_ts>2011-11-18 10:55:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111118134822.patch</filename>
            <type>text/plain</type>
            <size>11926</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg0ZjNhOWFjYjQyODgxYjI5MGU0YjVlNGIwYmQ2YWJmNTU3Y2NlYjEuLjkwZDlkNDdkNDI1NDEz
NDBhMDAwYzM5MTYwNTQzMjQ1OTc3NzE3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMTggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
ZWZpbmUgV1RGX1VTRV9HVEsgaWYgQ2hyb21pdW0gYnVpbGQgaXMgdXNpbmcgR1RLLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMg
ZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNj
MTBlOTkyNDkuLmI2OGZhOTE3NzBhNDRlMDU3NDVlYjdmMTY0MGI1MjQyM2UyOTlkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExOTYsNiArMTE5Niw5IEBACiAgICAgICAgICAg
ICAgICAgICAgIF0KICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xr
aXRfdXNlc19ndGsgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnV1RGX1VTRV9HVEsnCisgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC9saW51eC9zeXN0ZW0uZ3lwOmd0
aycsCiAgICAgICAgICAgICAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk5YzgyNmRhYWMwYjJiZTI0NjUyZWQ3NDMxN2VjZTZk
NmU0MTRjMi4uNzU4ZjJiYjVmMWI2NTRjNDAwNTBlNWEwZTQwZmQ2ODFmZDgyNzJjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDExLTExLTE4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gRml4IGJyb2tlbiBEUlQgYnVpbGQgZm9yIEF1cmEgTGludXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRFJUIG5vdyBidWls
ZHMgZm9yIEF1cmEgTGludXguIFRoaXMsIG1vcmUgb3IgbGVzcywgc2hhcmVzIHRoZSBzYW1lIGNv
ZGUgYXMgQW5kcm9pZC4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBt
YWRlOgorCisgICAgICAgIDEuIFJlbmFtZWQgVGVzdFNoZWxsQW5kcm9pZCB0byBUZXN0U2hlbGxM
aW51eAorICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1YiB0
aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAgICAz
LiBDb2RlIGNvbW1vbiB0byBHdGssIEF1cmEsIGFuZCBBbmRyb2lkIG1vdmVkIHRvIFRlc3RTaGVs
bExpbnV4LgorCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAg
ICAgICAgKEV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwLgorICAgICAgICAoQWxhcm1IYW5kbGVyKToK
KyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6CisKIDIwMTEtMTEtMTggIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUg
V2ViU29ja2V0IGh5YmkgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpCmluZGV4IDIzNWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLjkyN2Q2
OGE5MWJmZjI2ZTY2ZGZkN2I5NGQxNzBkMTM3ZGY2YjY3OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzIsNyArMzIsOCBAQAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAnLAorICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsU3R1Yi5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMjBkNzdhNzVhMzVhOTJmZDc4NWRiOWI4NmViZTg2
MDE0ZTcwNzEzYy4uOGQ1NDZmMTY2OGE2ZmNkOGIyMzVhMzc1YzdhNzhkMThiZTM1YTcyOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcApAQCAtNTc2
LDcgKzU3Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVudERvd24udHlwZSA9
IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1vZGlmaWVycyA9IDA7
CiAgICAgZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBPUyhMSU5VWCkKKyNp
ZiBPUyhMSU5VWCkgJiYgVVNFKEdUSykKICAgICBldmVudERvd24ubmF0aXZlS2V5Q29kZSA9IHdl
YmtpdF9zdXBwb3J0OjpOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUoY29kZSwgbmVlZHNT
aGlmdEtleU1vZGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiZWEyZDI0N2UzNTM1YzdmM2I3ZjgyNmY3YzExYWYxYjkwMDU4OWY4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXN0U2hlbGwuaCIKLQotI2luY2x1
ZGUgIlNrVHlwZWZhY2UuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKLQotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1
ZGUgPHVuaXN0ZC5oPgotCi1zdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQotewotICAgIC8v
IElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSBy
ZWFsbHkgYmFkIGhhbmcuCi0gICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOwotICAgIHB1
dHMoIiNFT0ZcbiIpOwotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpU
ZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOwotICAgIGV4aXQoMCk7Ci19Ci0KLXZvaWQgVGVzdFNo
ZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7
Ci0gICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQotICAgIC8vIEluc3RhbGwgYW4gYWxhcm0g
c2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCi0gICAgc3Ry
dWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0g
QWxhcm1IYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKLSAg
ICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFj
dGlvbjsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsK
LSAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKLQotICAg
IC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlz
IGxvb3Agd2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCi0gICAgd2hpbGUg
KG1fdGVzdElzUGVuZGluZykKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29w
KCk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgotICAgIGFsYXJtKDApOwotICAgIHNpZ2Fj
dGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0KLQotdm9pZCBwbGF0Zm9ybUluaXQoaW50
KiBhcmdjLCBjaGFyKioqIGFyZ3YpCi17Ci0gICAgLy8gTm90aGluZyB0byBkbyBoZXJlLgotfQot
Ci12b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKLXsKLSAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgotfQotCi1ib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCi17Ci0g
ICAgLy8gTm90aGluZyB0byBkbyBoZXJlLgotICAgIHJldHVybiB0cnVlOwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKaW5kZXggMzNiZGU5YTBl
NTM2MTE4YWZmZjM3YjIyYmE0YzA1NjM4ZGE1OTYxZi4uYjMyYTdjZjU5ZWVhOGE3ZDg2ZDBjNGVk
YmQxN2YyYjQ1ODUxODkwZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwCkBAIC0zNiwxNSArMzYsNiBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
ICNpbmNsdWRlIDxzaWduYWwuaD4KIAotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCkKLXsK
LSAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBo
YXZlIGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VUXG4iKTsK
LSAgICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KDApOwot
fQotCiBzdGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQogewogICAgIC8vIFdlIHdpc2ggdG8g
bWFrZSB0aGUgbGF5b3V0IHRlc3RzIHJlcHJvZHVjYWJsZSB3aXRoIHJlc3BlY3QgdG8gZm9udHMu
IFNraWEKQEAgLTE2OCwzMSArMTU5LDYgQEAgc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkK
ICAgICB9CiB9CiAKLXZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBB
U1NFUlQoIW1fdGVzdElzUGVuZGluZyk7Ci0gICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQot
ICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMg
aWYgd2UgdGltZSBvdXQuCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBh
bGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1IYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZh
bGFybUFjdGlvbi5zYV9tYXNrKTsKLSAgICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAg
ICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFs
YXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKLSAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldh
dGNoRG9nKCkgLyAxMDAwKTsKLQotICAgIC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1
aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxvb3Agd2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlz
aGVzIGxvYWRpbmcuCi0gICAgd2hpbGUgKG1fdGVzdElzUGVuZGluZykKLSAgICAgICAgd2Via2l0
X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgot
ICAgIGFsYXJtKDApOwotICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0K
LQogdm9pZCBwbGF0Zm9ybUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCiB7CiAgICAgLy8g
RklYTUU6IEl0J3MgYmV0dGVyIGNhbGwgZ3RrX2luaXQoKSBvbmx5IHdoZW4gd2UgcnVuIHBsdWdp
biB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbExpbnV4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExp
bnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45M2ZlZDYxMWY3OTA2MmUzZjZlMTYzODE3YzFjMmIxYWIyM2Vl
Mjc3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsTGludXguY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCisjaW5jbHVkZSAi
V2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisK
KyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworc3RhdGljIHZvaWQg
QWxhcm1IYW5kbGVyKGludCkKK3sKKyAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0
aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgorICAgIHB1dHMoIlxu
I1RFU1RfVElNRURfT1VUXG4iKTsKKyAgICBwdXRzKCIjRU9GXG4iKTsKKyAgICBmZmx1c2goc3Rk
b3V0KTsKKyAgICBleGl0KDApOworfQorCit2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hl
ZCgpCit7CisgICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOworICAgIG1fdGVzdElzUGVuZGlu
ZyA9IHRydWU7CisKKyAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQg
d2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1B
Y3Rpb247CisgICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKKyAgICBz
aWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7CisgICAgYWxhcm1BY3Rpb24uc2FfZmxh
Z3MgPSAwOworCisgICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247CisgICAgc2lnYWN0aW9u
KFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7CisgICAgYWxhcm0obGF5b3V0VGVz
dFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CisKKyAgICAvLyBUZXN0RmluaXNoZWQoKSB3
aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UK
KyAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgorICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCisg
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworCisgICAgLy8gUmVtb3Zl
IHRoZSBhbGFybS4KKyAgICBhbGFybSgwKTsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFj
dGlvbiwgMCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115837</attachid>
            <date>2011-11-18 10:55:37 -0800</date>
            <delta_ts>2011-11-18 14:22:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111118135535.patch</filename>
            <type>text/plain</type>
            <size>14262</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg0ZjNhOWFjYjQyODgxYjI5MGU0YjVlNGIwYmQ2YWJmNTU3Y2NlYjEuLjkwZDlkNDdkNDI1NDEz
NDBhMDAwYzM5MTYwNTQzMjQ1OTc3NzE3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMTggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
ZWZpbmUgV1RGX1VTRV9HVEsgaWYgQ2hyb21pdW0gYnVpbGQgaXMgdXNpbmcgR1RLLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMg
ZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNj
MTBlOTkyNDkuLmI2OGZhOTE3NzBhNDRlMDU3NDVlYjdmMTY0MGI1MjQyM2UyOTlkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExOTYsNiArMTE5Niw5IEBACiAgICAgICAgICAg
ICAgICAgICAgIF0KICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xr
aXRfdXNlc19ndGsgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnV1RGX1VTRV9HVEsnCisgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC9saW51eC9zeXN0ZW0uZ3lwOmd0
aycsCiAgICAgICAgICAgICAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk5YzgyNmRhYWMwYjJiZTI0NjUyZWQ3NDMxN2VjZTZk
NmU0MTRjMi4uYjAxNzRiMTA1ZjYyNmNkY2IwMzVlM2EwYjU4NTY1YWVkN2YxYzNlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDExLTExLTE4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gRml4IGJyb2tlbiBEUlQgYnVpbGQgZm9yIEF1cmEgTGludXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRFJUIG5vdyBidWls
ZHMgZm9yIEF1cmEgTGludXguIFRoaXMsIG1vcmUgb3IgbGVzcywgc2hhcmVzIHRoZSBzYW1lIGNv
ZGUgYXMgQW5kcm9pZC4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVu
IG1hZGU6CisKKyAgICAgICAgMS4gUmVuYW1lZCBUZXN0U2hlbGxBbmRyb2lkIHRvIFRlc3RTaGVs
bExpbnV4LgorICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1
YiB0aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAg
ICAzLiBDb2RlIGNvbW1vbiB0byBHdGssIEF1cmEsIGFuZCBBbmRyb2lkIG1vdmVkIHRvIFRlc3RT
aGVsbExpbnV4LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChFdmVudFNlbmRlcjo6a2V5RG93bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxMaW51eC5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6
CisgICAgICAgIChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHBs
YXRmb3JtSW5pdCk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMp
OgorICAgICAgICAob3BlblN0YXJ0dXBEaWFsb2cpOgorCiAyMDExLTExLTE4ICBZdXRhIEtpdGFt
dXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtRdF0gRW5hYmxlIFdlYlNvY2tl
dCBoeWJpIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRl
eCAyMzViOTUzNzI2YmNlYWFiMTg1ZTVkNDgyOTVjZjEzMzk5YWYyNzYzLi45MjdkNjhhOTFiZmYy
NmU2NmRmZDdiOTRkMTcwZDEzN2RmNmI2Nzk1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKQEAgLTMyLDcgKzMyLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmgnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGxMaW51eC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFN0
dWIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0nLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RTaGVsbFdpbi5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZl
bnRTZW5kZXIuY3BwCmluZGV4IDIwZDc3YTc1YTM1YTkyZmQ3ODVkYjliODZlYmU4NjAxNGU3MDcx
M2MuLjhkNTQ2ZjE2NjhhNmZjZDhiMjM1YTM3NWM3YTc4ZDE4YmUzNWE3MjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTU3Niw3ICs1NzYs
NyBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgZXZlbnREb3duLnR5cGUgPSBXZWJJbnB1
dEV2ZW50OjpSYXdLZXlEb3duOwogICAgIGV2ZW50RG93bi5tb2RpZmllcnMgPSAwOwogICAgIGV2
ZW50RG93bi53aW5kb3dzS2V5Q29kZSA9IGNvZGU7Ci0jaWYgT1MoTElOVVgpCisjaWYgT1MoTElO
VVgpICYmIFVTRShHVEspCiAgICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSB3ZWJraXRfc3Vw
cG9ydDo6TmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2RlKGNvZGUsIG5lZWRzU2hpZnRLZXlN
b2RpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGxBbmRyb2lkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVh
MmQyNDdlMzUzNWM3ZjNiN2Y4MjZmN2MxMWFmMWI5MDA1ODlmOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdFNoZWxsLmgiCi0KLSNpbmNsdWRlICJTa1R5
cGVmYWNlLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCi0KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLQotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCkKLXsKLSAgICAvLyBJZiB0aGUg
YWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJh
ZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VUXG4iKTsKLSAgICBwdXRzKCIjRU9G
XG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25U
ZXN0RW52aXJvbm1lbnQoKTsKLSAgICBleGl0KDApOwotfQotCi12b2lkIFRlc3RTaGVsbDo6d2Fp
dFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOwotICAgIG1f
dGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBo
YW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHN0cnVjdCBzaWdh
Y3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFu
ZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7Ci0gICAgYWxhcm1B
Y3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0g
ICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7Ci0gICAgYWxh
cm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0
RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdo
ZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgotICAgIHdoaWxlIChtX3Rlc3RJ
c1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0g
ICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgwKTsKLSAgICBzaWdhY3Rpb24oU0lH
QUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KLXZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywg
Y2hhcioqKiBhcmd2KQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBv
cGVuU3RhcnR1cERpYWxvZygpCi17Ci0gICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLX0K
LQotYm9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQotewotICAgIC8vIE5v
dGhpbmcgdG8gZG8gaGVyZS4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCmluZGV4IDMzYmRlOWEwZTUzNjExOGFm
ZmYzN2IyMmJhNGMwNTYzOGRhNTk2MWYuLmIzMmE3Y2Y1OWVlYThhN2Q4NmQwYzRlZGJkMTdmMmI0
NTg1MTg5MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbEd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
R3RrLmNwcApAQCAtMzYsMTUgKzM2LDYgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8c2lnbmFsLmg+CiAKLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17Ci0gICAgLy8g
SWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJl
YWxseSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7Ci0gICAgcHV0
cygiI0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgZXhpdCgwKTsKLX0KLQogc3Rh
dGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkKIHsKICAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhl
IGxheW91dCB0ZXN0cyByZXByb2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCkBA
IC0xNjgsMzEgKzE1OSw2IEBAIHN0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygpCiAgICAgfQog
fQogCi12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFt
X3Rlc3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJ
bnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRp
bWUgb3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rp
b24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rp
b24uc2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0
IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlv
biwgJm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygp
IC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3Nh
Z2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2Fk
aW5nLgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFy
bSgwKTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KIHZvaWQg
cGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQogewogICAgIC8vIEZJWE1FOiBJ
dCdzIGJldHRlciBjYWxsIGd0a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMu
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51
eC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTNmZWQ2MTFmNzkwNjJlM2Y2ZTE2MzgxN2MxYzJiMWFiMjNlZTI3NwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExp
bnV4LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
c3RTaGVsbC5oIgorCisjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIldlYlZpZXcu
aCIKKyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorCisjaW5jbHVk
ZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFu
ZGxlcihpbnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nl
c3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNURVNUX1RJ
TUVEX09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7Cisg
ICAgZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQorewor
ICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVl
OworCisgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2ls
bCB1cyBpZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOwor
ICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlz
ZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsK
KworICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2FjdGlvbihTSUdBTFJN
LCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0
Rm9yV2F0Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0
IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8g
ZmluaXNoZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxh
cm0uCisgICAgYWxhcm0oMCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDAp
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
U3R1Yi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmE2NjEyOGJlYTBjMzIwYzNmMWE1MGIzNGU1MDQ2MmZkMmM1YWY2Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
U3R1Yi5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgT1Mo
TElOVVgpICYmICFVU0UoR1RLKQorI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCit2b2lkIHBsYXRm
b3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKK3sKK30KKworYm9vbCBjaGVja0xheW91
dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IG9wZW5TdGFydHVwRGlhbG9nKCkKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgor
fQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115871</attachid>
            <date>2011-11-18 14:05:56 -0800</date>
            <delta_ts>2011-11-22 10:03:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111118170555.patch</filename>
            <type>text/plain</type>
            <size>14599</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg0ZjNhOWFjYjQyODgxYjI5MGU0YjVlNGIwYmQ2YWJmNTU3Y2NlYjEuLjkwZDlkNDdkNDI1NDEz
NDBhMDAwYzM5MTYwNTQzMjQ1OTc3NzE3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMTggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
ZWZpbmUgV1RGX1VTRV9HVEsgaWYgQ2hyb21pdW0gYnVpbGQgaXMgdXNpbmcgR1RLLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMg
ZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNj
MTBlOTkyNDkuLmI2OGZhOTE3NzBhNDRlMDU3NDVlYjdmMTY0MGI1MjQyM2UyOTlkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExOTYsNiArMTE5Niw5IEBACiAgICAgICAgICAg
ICAgICAgICAgIF0KICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xr
aXRfdXNlc19ndGsgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnV1RGX1VTRV9HVEsnCisgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC9saW51eC9zeXN0ZW0uZ3lwOmd0
aycsCiAgICAgICAgICAgICAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk5YzgyNmRhYWMwYjJiZTI0NjUyZWQ3NDMxN2VjZTZk
NmU0MTRjMi4uYjAxNzRiMTA1ZjYyNmNkY2IwMzVlM2EwYjU4NTY1YWVkN2YxYzNlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDExLTExLTE4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gRml4IGJyb2tlbiBEUlQgYnVpbGQgZm9yIEF1cmEgTGludXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRFJUIG5vdyBidWls
ZHMgZm9yIEF1cmEgTGludXguIFRoaXMsIG1vcmUgb3IgbGVzcywgc2hhcmVzIHRoZSBzYW1lIGNv
ZGUgYXMgQW5kcm9pZC4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVu
IG1hZGU6CisKKyAgICAgICAgMS4gUmVuYW1lZCBUZXN0U2hlbGxBbmRyb2lkIHRvIFRlc3RTaGVs
bExpbnV4LgorICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1
YiB0aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAg
ICAzLiBDb2RlIGNvbW1vbiB0byBHdGssIEF1cmEsIGFuZCBBbmRyb2lkIG1vdmVkIHRvIFRlc3RT
aGVsbExpbnV4LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChFdmVudFNlbmRlcjo6a2V5RG93bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxMaW51eC5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6
CisgICAgICAgIChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHBs
YXRmb3JtSW5pdCk6CisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMp
OgorICAgICAgICAob3BlblN0YXJ0dXBEaWFsb2cpOgorCiAyMDExLTExLTE4ICBZdXRhIEtpdGFt
dXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtRdF0gRW5hYmxlIFdlYlNvY2tl
dCBoeWJpIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRl
eCAyMzViOTUzNzI2YmNlYWFiMTg1ZTVkNDgyOTVjZjEzMzk5YWYyNzYzLi4xOGUzNjVhNDlkNjc0
MGVjNWYwZTg1YzIwNjJiNjRiZjk3YTE1M2VhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmgnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGxMaW51eC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0
ay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCkBAIC03MSw2ICs3MSwxMSBAQAogICAg
ICAgICAgICAgJ1Rlc3ROZXRzY2FwZVBsdWdJbi9tYWluLmNwcCcsCiAgICAgICAgIF0sCiAgICAg
ICAgICdjb25kaXRpb25zJzogWworICAgICAgICAgICAgWycoT1M9PSJsaW51eCIgYW5kIHRvb2xr
aXRfdXNlc19ndGshPSIxIikgb3IgT1M9PSJhbmRyb2lkIicsIHsKKyAgICAgICAgICAgICAgICAn
ZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsU3R1
Yi5jcHAnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9XSwKICAgICAgICAgICAg
IFsnT1M9PSJ3aW4iJywgewogICAgICAgICAgICAgICAgICdkcnRfZmlsZXMnOiBbCiAgICAgICAg
ICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwJywKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAppbmRleCAyMGQ3N2E3
NWEzNWE5MmZkNzg1ZGI5Yjg2ZWJlODYwMTRlNzA3MTNjLi44ZDU0NmYxNjY4YTZmY2Q4YjIzNWEz
NzVjN2E3OGQxOGJlMzVhNzI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RXZlbnRTZW5kZXIuY3BwCkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5
RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogICAgIGV2ZW50RG93bi50eXBlID0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBl
dmVudERvd24ubW9kaWZpZXJzID0gMDsKICAgICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBj
b2RlOwotI2lmIE9TKExJTlVYKQorI2lmIE9TKExJTlVYKSAmJiBVU0UoR1RLKQogICAgIGV2ZW50
RG93bi5uYXRpdmVLZXlDb2RlID0gd2Via2l0X3N1cHBvcnQ6Ok5hdGl2ZUtleUNvZGVGb3JXaW5k
b3dzS2V5Q29kZShjb2RlLCBuZWVkc1NoaWZ0S2V5TW9kaWZpZXIpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYTJkMjQ3ZTM1MzVjN2YzYjdmODI2ZjdjMTFh
ZjFiOTAwNTg5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlRlc3RTaGVsbC5oIgotCi0jaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgotI2luY2x1ZGUgIldlYlZp
ZXcuaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgotCi0jaW5j
bHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLXN0YXRpYyB2b2lkIEFsYXJt
SGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHBy
b2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNU
X1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygiI0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7
Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7Ci0gICAgZXhp
dCgwKTsKLX0KLQotdm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQotewotICAgIEFT
U0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKLSAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwotCi0g
ICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBp
ZiB3ZSB0aW1lIG91dC4KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOwotICAgIGFs
YXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFs
YXJtQWN0aW9uLnNhX21hc2spOwotICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKLQotICAg
IHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOwotICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxh
cm1BY3Rpb24sICZvbGRBY3Rpb24pOwotICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0
Y2hEb2coKSAvIDEwMDApOwotCi0gICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVp
dCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCi0gICAgLy8gZmluaXNo
ZXMgbG9hZGluZy4KLSAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQotICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0g
ICAgYWxhcm0oMCk7Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOwotfQot
Ci12b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKLXsKLSAgICAvLyBO
b3RoaW5nIHRvIGRvIGhlcmUuCi19Ci0KLXZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQotewotICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi19Ci0KLWJvb2wgY2hlY2tMYXlvdXRUZXN0U3lz
dGVtRGVwZW5kZW5jaWVzKCkKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgcmV0
dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
R3RrLmNwcAppbmRleCAzM2JkZTlhMGU1MzYxMThhZmZmMzdiMjJiYTRjMDU2MzhkYTU5NjFmLi5i
MzJhN2NmNTllZWE4YTdkODZkMGM0ZWRiZDE3ZjJiNDU4NTE4OTBmIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKQEAgLTM2LDE1ICszNiw2IEBA
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogCi1zdGF0aWMgdm9p
ZCBBbGFybUhhbmRsZXIoaW50KQotewotICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxs
IHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCi0gICAgcHV0cygi
XG4jVEVTVF9USU1FRF9PVVRcbiIpOwotICAgIHB1dHMoIiNFT0ZcbiIpOwotICAgIGZmbHVzaChz
dGRvdXQpOwotICAgIGV4aXQoMCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygp
CiB7CiAgICAgLy8gV2Ugd2lzaCB0byBtYWtlIHRoZSBsYXlvdXQgdGVzdHMgcmVwcm9kdWNhYmxl
IHdpdGggcmVzcGVjdCB0byBmb250cy4gU2tpYQpAQCAtMTY4LDMxICsxNTksNiBAQCBzdGF0aWMg
dm9pZCBzZXR1cEZvbnRjb25maWcoKQogICAgIH0KIH0KIAotdm9pZCBUZXN0U2hlbGw6OndhaXRU
ZXN0RmluaXNoZWQoKQotewotICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKLSAgICBtX3Rl
c3RJc1BlbmRpbmcgPSB0cnVlOwotCi0gICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFu
ZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAgICBzdHJ1Y3Qgc2lnYWN0
aW9uIGFsYXJtQWN0aW9uOwotICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRs
ZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOwotICAgIGFsYXJtQWN0
aW9uLnNhX2ZsYWdzID0gMDsKLQotICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOwotICAg
IHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOwotICAgIGFsYXJt
KGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwotCi0gICAgLy8gVGVzdEZp
bmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVu
IHRoZSBwYWdlCi0gICAgLy8gZmluaXNoZXMgbG9hZGluZy4KLSAgICB3aGlsZSAobV90ZXN0SXNQ
ZW5kaW5nKQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKLQotICAg
IC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0gICAgYWxhcm0oMCk7Ci0gICAgc2lnYWN0aW9uKFNJR0FM
Uk0sICZvbGRBY3Rpb24sIDApOwotfQotCiB2b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNo
YXIqKiogYXJndikKIHsKICAgICAvLyBGSVhNRTogSXQncyBiZXR0ZXIgY2FsbCBndGtfaW5pdCgp
IG9ubHkgd2hlbiB3ZSBydW4gcGx1Z2luIHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTGludXguY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZmVkNjExZjc5MDYy
ZTNmNmUxNjM4MTdjMWMyYjFhYjIzZWUyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKworI2luY2x1ZGUgIlNr
VHlwZWZhY2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaCIKKworI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorCitzdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQoreworICAgIC8vIElmIHRo
ZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkg
YmFkIGhhbmcuCisgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1dHMoIiNF
T0ZcbiIpOworICAgIGZmbHVzaChzdGRvdXQpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVz
dFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGlu
Zyk7CisgICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxh
cm0gc2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAg
c3RydWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKKyAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVy
ID0gQWxhcm1IYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsK
KyAgICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7CisKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9s
ZEFjdGlvbjsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9u
KTsKKyAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKKwor
ICAgIC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0
aGlzIGxvb3Agd2hlbiB0aGUgcGFnZQorICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCisgICAgd2hp
bGUgKG1fdGVzdElzUGVuZGluZykKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VM
b29wKCk7CisKKyAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgorICAgIGFsYXJtKDApOworICAgIHNp
Z2FjdGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwYmM0OGQyZmVh
NjdiZTNmYTY2MTAxODYwMWZlZmIyNGU5ZTYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCit2b2lkIHBs
YXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKK3sKK30KKworYm9vbCBjaGVja0xh
eW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LgorfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116238</attachid>
            <date>2011-11-22 10:03:44 -0800</date>
            <delta_ts>2011-11-23 20:48:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111122130341.patch</filename>
            <type>text/plain</type>
            <size>14679</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhhNjc5OTAwOGI5MTM3YWJkODFiMjM2Y2NmMzNlMDQ4NTQ0YTNkNjMuLjE0MDdlYmRiYmFkMzVh
NTdlNWJkNmRjYzNmN2E0MmFlZjhjMDlhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMjIgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b24ndCB1c2UgVGVzdFNoZWxsU3R1YiBpZiBub3QgYnVpbGRpbmcgQXVyYS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29n
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0gZml4IGludGVybmFj
dGl2ZSB1aSB0ZXN0IGZvciBzY3JpcHRzIHBhbmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDEyMTA4OTQ2NmY1Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcwNjMzMzY1MjYuLjg3NTg5NzU2
OTUxNjk1YjNkYTkyYzQxNzRkNzNkZTQ3MjI3NWI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTEwOTIsNiArMTA5MiwxMSBAQAogICAgICAgICAgICAgICAgICc8QChkcnRfZmls
ZXMpJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAg
ICAgICAgICAgICBbJ3VzZV9hdXJhPT0wJywgeworICAgICAgICAgICAgICAgICAgICAnc291cmNl
cy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnVGVzdFNoZWxsU3R1
YlxcLmNwcCQnXSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9XSwK
ICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdMYXlvdXRUZXN0SGVscGVy
JywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBk
YjlhMmEyNDgwZjY1MmE1NzQ4NGJhY2RlMzhjYzcyODRlNTZkNGNmLi45YjdiNmQ5MzAyNDBhNmEx
OGY2ZjlkMDIwNWIzMTZkZjgzMjRiYjQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMjIgIEZhZHkgU2Ft
dWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJv
a2VuIERSVCBidWlsZCBmb3IgQXVyYSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBEUlQgbm93IGJ1aWxkcyBmb3IgQXVyYSBMaW51eC4gVGhpcywg
bW9yZSBvciBsZXNzLCBzaGFyZXMgdGhlIHNhbWUgY29kZSBhcyBBbmRyb2lkLgorCisgICAgICAg
IFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZToKKworICAgICAgICAxLiBSZW5h
bWVkIFRlc3RTaGVsbEFuZHJvaWQgdG8gVGVzdFNoZWxsTGludXguCisgICAgICAgIDIuIFN0dWIg
Y29kZSBtb3ZlZCBhZGRlZCBpbiBUZXN0U2hlbGxTdHViIHRoYXQgd2lsbCBvbmx5IGNvbXBpbGUg
b24gbm9uLUdUSyBMaW51eCBidWlsZHMuCisgICAgICAgIDMuIENvZGUgY29tbW9uIHRvIEd0aywg
QXVyYSwgYW5kIEFuZHJvaWQgbW92ZWQgdG8gVGVzdFNoZWxsTGludXguCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjprZXlE
b3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcDog
UmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJv
aWQuY3BwLgorICAgICAgICAoQWxhcm1IYW5kbGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6d2Fp
dFRlc3RGaW5pc2hlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsU3R1Yi5jcHA6IEFkZGVkLgorICAgICAgICAocGxhdGZvcm1Jbml0KToKKyAgICAgICAgKGNo
ZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcyk6CisgICAgICAgIChvcGVuU3RhcnR1cERp
YWxvZyk6CisKIDIwMTEtMTEtMjIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFRlYWNoIHByZXBhcmUtQ2hhbmdlTG9nIGhvdyB0byBmaW5kIGNoYW5nZWQgY2xhc3Nl
cy9tZXRob2RzL2Z1bmN0aW9ucyBpbiBQeXRob24gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDIzNWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMz
OTlhZjI3NjMuLjE4ZTM2NWE0OWQ2NzQwZWM1ZjBlODVjMjA2MmI2NGJmOTdhMTUzZWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzIsNyArMzIsNyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0U2hlbGwuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsTWFjLm1tJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywK
QEAgLTcxLDYgKzcxLDExIEBACiAgICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1Z0luL21haW4u
Y3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICBb
JyhPUz09ImxpbnV4IiBhbmQgdG9vbGtpdF91c2VzX2d0ayE9IjEiKSBvciBPUz09ImFuZHJvaWQi
JywgeworICAgICAgICAgICAgICAgICdkcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgIH1dLAogICAgICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgICAgICAg
J2RydF9maWxlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29u
dHJvbERSVFdpbi5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDIwZDc3YTc1YTM1YTkyZmQ3ODVkYjliODZlYmU4NjAxNGU3MDcxM2Mu
LjhkNTQ2ZjE2NjhhNmZjZDhiMjM1YTM3NWM3YTc4ZDE4YmUzNWE3MjkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTU3Niw3ICs1NzYsNyBA
QCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgZXZlbnREb3duLnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpSYXdLZXlEb3duOwogICAgIGV2ZW50RG93bi5tb2RpZmllcnMgPSAwOwogICAgIGV2ZW50
RG93bi53aW5kb3dzS2V5Q29kZSA9IGNvZGU7Ci0jaWYgT1MoTElOVVgpCisjaWYgT1MoTElOVVgp
ICYmIFVTRShHVEspCiAgICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSB3ZWJraXRfc3VwcG9y
dDo6TmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2RlKGNvZGUsIG5lZWRzU2hpZnRLZXlNb2Rp
Zmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxBbmRyb2lkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVhMmQy
NDdlMzUzNWM3ZjNiN2Y4MjZmN2MxMWFmMWI5MDA1ODlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxBbmRyb2lkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdFNoZWxsLmgiCi0KLSNpbmNsdWRlICJTa1R5cGVm
YWNlLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dl
YmtpdF9zdXBwb3J0LmgiCi0KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLQotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCkKLXsKLSAgICAvLyBJZiB0aGUgYWxh
cm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBo
YW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VUXG4iKTsKLSAgICBwdXRzKCIjRU9GXG4i
KTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0
RW52aXJvbm1lbnQoKTsKLSAgICBleGl0KDApOwotfQotCi12b2lkIFRlc3RTaGVsbDo6d2FpdFRl
c3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOwotICAgIG1fdGVz
dElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5k
bGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHN0cnVjdCBzaWdhY3Rp
b24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxl
cjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rp
b24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0gICAg
c2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7Ci0gICAgYWxhcm0o
bGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0Rmlu
aXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4g
dGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgotICAgIHdoaWxlIChtX3Rlc3RJc1Bl
bmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0gICAg
Ly8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgwKTsKLSAgICBzaWdhY3Rpb24oU0lHQUxS
TSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KLXZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hh
cioqKiBhcmd2KQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBvcGVu
U3RhcnR1cERpYWxvZygpCi17Ci0gICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLX0KLQot
Ym9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQotewotICAgIC8vIE5vdGhp
bmcgdG8gZG8gaGVyZS4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCmluZGV4IDMzYmRlOWEwZTUzNjExOGFmZmYz
N2IyMmJhNGMwNTYzOGRhNTk2MWYuLmIzMmE3Y2Y1OWVlYThhN2Q4NmQwYzRlZGJkMTdmMmI0NTg1
MTg5MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3Rr
LmNwcApAQCAtMzYsMTUgKzM2LDYgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8
c2lnbmFsLmg+CiAKLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYg
dGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxs
eSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygi
I0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgZXhpdCgwKTsKLX0KLQogc3RhdGlj
IHZvaWQgc2V0dXBGb250Y29uZmlnKCkKIHsKICAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxh
eW91dCB0ZXN0cyByZXByb2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCkBAIC0x
NjgsMzEgKzE1OSw2IEBAIHN0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygpCiAgICAgfQogfQog
Ci12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rl
c3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0
YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUg
b3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24u
c2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24u
c2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNp
Z2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwg
Jm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8g
MTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2Ug
dG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5n
LgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgw
KTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KIHZvaWQgcGxh
dGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQogewogICAgIC8vIEZJWE1FOiBJdCdz
IGJldHRlciBjYWxsIGd0a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTNmZWQ2MTFmNzkwNjJlM2Y2ZTE2MzgxN2MxYzJiMWFiMjNlZTI3NwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4
LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RT
aGVsbC5oIgorCisjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIK
KyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorCisjaW5jbHVkZSA8
c2lnbmFsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxl
cihpbnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mg
c2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNURVNUX1RJTUVE
X09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAg
ZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQoreworICAg
IEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwor
CisgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1
cyBpZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAg
IGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQo
JmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKKwor
ICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAm
YWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9y
V2F0Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEg
cXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmlu
aXNoZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0u
CisgICAgYWxhcm0oMCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOwor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1
Yi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MTEzNGU4MTFlNmVkYjBkNDdmN2NmMjE2OTM1ODY2MWQwNTczNjg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1
Yi5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
VGVzdFNoZWxsLmgiCisKK3ZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2
KQoreworfQorCitib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116478</attachid>
            <date>2011-11-23 20:48:13 -0800</date>
            <delta_ts>2011-11-28 11:53:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111123234812.patch</filename>
            <type>text/plain</type>
            <size>15063</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhhNjc5OTAwOGI5MTM3YWJkODFiMjM2Y2NmMzNlMDQ4NTQ0YTNkNjMuLjIwNGY0YjEzMTU0ZDQ2
MmEwNzZmYThjYmZiYTI3ZDFiOTIxOThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMjMgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b24ndCB1c2UgVGVzdFNoZWxsU3R1YiBpZiBub3QgYnVpbGRpbmcgZm9yIEF1cmEgb3IgQW5kcm9p
ZC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjIgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1
bV0gZml4IGludGVybmFjdGl2ZSB1aSB0ZXN0IGZvciBzY3JpcHRzIHBhbmVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMTA4OTQ2NmY1Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcwNjMz
MzY1MjYuLjQ0MDg2MTJkNDc1ZWNjOWJhMzU3ZTk2ZWRkNDZkYzBjMzQ1ZmIzYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTc1Miw2ICs3NTIsOSBAQAogICAgICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9vbGtpdF91
c2VzX2d0ayA9PSAxJywgeworICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdXVEZfVVNFX0dUSycKKyAgICAgICAgICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL2xpbnV4L3N5c3RlbS5neXA6Z3RrJywK
ICAgICAgICAgICAgICAgICAgICAgXSwKQEAgLTEwOTIsNiArMTA5NSwxMSBAQAogICAgICAgICAg
ICAgICAgICc8QChkcnRfZmlsZXMpJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29u
ZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICBbJ3VzZV9hdXJhPT0wIGFuZCBPUyE9ImFuZHJv
aWQiJywgeworICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAg
ICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnVGVzdFNoZWxsU3R1YlxcLmNwcCQnXSwKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ09T
PT0id2luIicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAg
ICAgICAgICAgICAgICAgICAgICdMYXlvdXRUZXN0SGVscGVyJywKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYjlhMmEyNDgwZjY1MmE1NzQ4NGJh
Y2RlMzhjYzcyODRlNTZkNGNmLi4zZGNmZjY1Njk4N2I5OWMyNTVlY2Y1YmE2Y2QyODUzMTcyNmIz
Y2E4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMjMgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
UlQgbm93IGJ1aWxkcyBmb3IgQXVyYSBMaW51eC4gVGhpcywgbW9yZSBvciBsZXNzLCBzaGFyZXMg
dGhlIHNhbWUgY29kZSBhcyBBbmRyb2lkLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdl
cyBoYXZlIGJlZW4gbWFkZToKKworICAgICAgICAgIDEuIFJlbmFtZWQgVGVzdFNoZWxsQW5kcm9p
ZCB0byBUZXN0U2hlbGxMaW51eC4KKyAgICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQg
aW4gVGVzdFNoZWxsU3R1YiB0aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXgg
YnVpbGRzLgorICAgICAgICAgIDMuIENvZGUgY29tbW9uIHRvIEd0aywgQXVyYSwgYW5kIEFuZHJv
aWQgbW92ZWQgdG8gVGVzdFNoZWxsTGludXguCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcDogUmVuYW1lZCBmcm9tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwLgorICAgICAg
ICAoQWxhcm1IYW5kbGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHA6IEFk
ZGVkLgorICAgICAgICAocGxhdGZvcm1Jbml0KToKKyAgICAgICAgKGNoZWNrTGF5b3V0VGVzdFN5
c3RlbURlcGVuZGVuY2llcyk6CisgICAgICAgIChvcGVuU3RhcnR1cERpYWxvZyk6CisKIDIwMTEt
MTEtMjIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIHBy
ZXBhcmUtQ2hhbmdlTG9nIGhvdyB0byBmaW5kIGNoYW5nZWQgY2xhc3Nlcy9tZXRob2RzL2Z1bmN0
aW9ucyBpbiBQeXRob24gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpCmluZGV4IDIzNWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLjE4ZTM2
NWE0OWQ2NzQwZWM1ZjBlODVjMjA2MmI2NGJmOTdhMTUzZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAnLAorICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKQEAgLTcxLDYgKzcxLDEx
IEBACiAgICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1Z0luL21haW4uY3BwJywKICAgICAgICAg
XSwKICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICBbJyhPUz09ImxpbnV4IiBh
bmQgdG9vbGtpdF91c2VzX2d0ayE9IjEiKSBvciBPUz09ImFuZHJvaWQiJywgeworICAgICAgICAg
ICAgICAgICdkcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
U2hlbGxTdHViLmNwcCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH1dLAogICAg
ICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgICAgICAgJ2RydF9maWxlcyc6IFsK
ICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAn
LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCmluZGV4
IDIwZDc3YTc1YTM1YTkyZmQ3ODVkYjliODZlYmU4NjAxNGU3MDcxM2MuLjhkNTQ2ZjE2NjhhNmZj
ZDhiMjM1YTM3NWM3YTc4ZDE4YmUzNWE3MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyOjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCiAgICAgZXZlbnREb3duLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3du
OwogICAgIGV2ZW50RG93bi5tb2RpZmllcnMgPSAwOwogICAgIGV2ZW50RG93bi53aW5kb3dzS2V5
Q29kZSA9IGNvZGU7Ci0jaWYgT1MoTElOVVgpCisjaWYgT1MoTElOVVgpICYmIFVTRShHVEspCiAg
ICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSB3ZWJraXRfc3VwcG9ydDo6TmF0aXZlS2V5Q29k
ZUZvcldpbmRvd3NLZXlDb2RlKGNvZGUsIG5lZWRzU2hpZnRLZXlNb2RpZmllcik7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5k
cm9pZC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lk
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVhMmQyNDdlMzUzNWM3ZjNiN2Y4
MjZmN2MxMWFmMWI5MDA1ODlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lk
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiVGVzdFNoZWxsLmgiCi0KLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCi0jaW5jbHVk
ZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmgi
Ci0KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotc3RhdGljIHZv
aWQgQWxhcm1IYW5kbGVyKGludCkKLXsKLSAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2ls
bCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMo
IlxuI1RFU1RfVElNRURfT1VUXG4iKTsKLSAgICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2go
c3Rkb3V0KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsK
LSAgICBleGl0KDApOwotfQotCi12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17
Ci0gICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRy
dWU7Ci0KLSAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBr
aWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247
Ci0gICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0
eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAw
OwotCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FM
Uk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVv
dXRGb3JXYXRjaERvZygpIC8gMTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBv
c3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAv
LyBmaW5pc2hlcyBsb2FkaW5nLgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBh
bGFybS4KLSAgICBhbGFybSgwKTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwg
MCk7Ci19Ci0KLXZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQotewot
ICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBvcGVuU3RhcnR1cERpYWxvZygp
Ci17Ci0gICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLX0KLQotYm9vbCBjaGVja0xheW91
dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwCmluZGV4IDMzYmRlOWEwZTUzNjExOGFmZmYzN2IyMmJhNGMwNTYzOGRh
NTk2MWYuLmIzMmE3Y2Y1OWVlYThhN2Q4NmQwYzRlZGJkMTdmMmI0NTg1MTg5MGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcApAQCAtMzYsMTUg
KzM2LDYgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKLXN0
YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJt
ZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KLSAg
ICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygiI0VPRlxuIik7Ci0gICAg
ZmZsdXNoKHN0ZG91dCk7Ci0gICAgZXhpdCgwKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0dXBGb250
Y29uZmlnKCkKIHsKICAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxheW91dCB0ZXN0cyByZXBy
b2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCkBAIC0xNjgsMzEgKzE1OSw2IEBA
IHN0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygpCiAgICAgfQogfQogCi12b2lkIFRlc3RTaGVs
bDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOwot
ICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNp
Z25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0LgotICAgIHN0cnVj
dCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFs
YXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7Ci0gICAg
YWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rp
b247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7Ci0g
ICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAwMCk7Ci0KLSAgICAv
LyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBs
b29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgotICAgIHdoaWxlICht
X3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgp
OwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgwKTsKLSAgICBzaWdhY3Rp
b24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KIHZvaWQgcGxhdGZvcm1Jbml0KGludCog
YXJnYywgY2hhcioqKiBhcmd2KQogewogICAgIC8vIEZJWE1FOiBJdCdzIGJldHRlciBjYWxsIGd0
a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNmZWQ2
MTFmNzkwNjJlM2Y2ZTE2MzgxN2MxYzJiMWFiMjNlZTI3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCisjaW5j
bHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCit7CisgICAg
Ly8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBh
IHJlYWxseSBiYWQgaGFuZy4KKyAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7CisgICAg
cHV0cygiI0VPRlxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhpdCgwKTsKK30KKwor
dm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQoreworICAgIEFTU0VSVCghbV90ZXN0
SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOworCisgICAgLy8gSW5zdGFs
bCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91
dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNh
X2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNh
X21hc2spOworICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKKworICAgIHN0cnVjdCBzaWdh
Y3Rpb24gb2xkQWN0aW9uOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZv
bGRBY3Rpb24pOworICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEw
MDApOworCisgICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRv
IGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCisgICAgLy8gZmluaXNoZXMgbG9hZGluZy4K
KyAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQorICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVu
TWVzc2FnZUxvb3AoKTsKKworICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCisgICAgYWxhcm0oMCk7
CisgICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTEz
NGU4MTFlNmVkYjBkNDdmN2NmMjE2OTM1ODY2MWQwNTczNjg1Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisK
K3ZvaWQgcGxhdGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQoreworfQorCitib29s
IGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116795</attachid>
            <date>2011-11-28 11:54:02 -0800</date>
            <delta_ts>2011-11-28 12:11:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111128145401.patch</filename>
            <type>text/plain</type>
            <size>27601</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDBkYjcyYjQ0ZmUyMDg5MjUzMjU5Y2Y2ZjZiMmYxZjZkYzJkYmJjNjIuLjJlMDRjZWE3ZDYxMWM4
MmQ3MWY2ZDEzNDE4ZTcwYzhjNjE4NmFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
b24ndCB1c2UgVGVzdFNoZWxsU3R1YiBpZiBub3QgYnVpbGRpbmcgZm9yIEF1cmEgb3IgQW5kcm9p
ZC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVj
dG9yOiBkZWxldGUgV2ViRGV2VG9vbHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAppbmRleCA4YjAzZTRhMGNjMTI0ODhiMjFhY2YxNzAyZWUzOThmMjdhZDBj
MzY1Li4zMDczODhhODJhMGU0YTlkM2U1YzE4NDM0YjgxYTJiY2JhODgwYmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03NTcsNiArNzU3LDkgQEAKICAgICAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNl
c19ndGsgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAnV1RGX1VTRV9HVEs9MScKKyAgICAgICAgICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL2xpbnV4L3N5c3RlbS5neXA6Z3RrJywK
ICAgICAgICAgICAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0ZjUxNTIxYzBhMDM4NGZiMzE5ZmQxMjQ0OWE3NDA1YzE2Mjll
NWQwLi4zNDYyYjc5OTlhYTRkZjAwNzkxZmNiZTA1MmFjNTkyNGRhM2ZmNjZjIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVyYSBMaW51eAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEUlQgbm93IGJ1aWxkcyBm
b3IgQXVyYSBMaW51eC4gVGhpcywgbW9yZSBvciBsZXNzLCBzaGFyZXMgdGhlIHNhbWUgY29kZSBh
cyBBbmRyb2lkLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFk
ZToKKworICAgICAgICAgIDEuIFJlbmFtZWQgVGVzdFNoZWxsQW5kcm9pZCB0byBUZXN0U2hlbGxM
aW51eC4KKyAgICAgICAgICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1
YiB0aGF0IHdpbGwgb25seSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAg
ICAgIDMuIENvZGUgY29tbW9uIHRvIEd0aywgQXVyYSwgYW5kIEFuZHJvaWQgbW92ZWQgdG8gVGVz
dFNoZWxsTGludXguCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcC4KKyAgICAgICAgKEFsYXJtSGFu
ZGxlcik6CisgICAgICAgIChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAo
c2V0dXBGb250Y29uZmlnKToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHA6IEFkZGVkLgorICAgICAgICAo
Y2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKG9wZW5TdGFydHVw
RGlhbG9nKToKKwogMjAxMS0xMS0yOCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBCdWlsZCBzeXN0ZW0gZml4ZXMgYWdhaW5zdCBWOC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGIxOWJlMjI3MmM1
NTVjNzlkMjk5NzE2MDUyNGFhZjcwY2YyZThmNjguLjQ3NDQyYmYyYTU3YTI3MDZmOTBiYzllMWVk
Mjc0MDg0ZDg0YmI5ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aQpAQCAtMzQsNyArMzQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9u
Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFNoZWxsQW5kcm9pZC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbExp
bnV4LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0U2hlbGxXaW4uY3BwJywKQEAgLTczLDYgKzczLDExIEBACiAgICAgICAgICAgICAnVGVz
dE5ldHNjYXBlUGx1Z0luL21haW4uY3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ2NvbmRpdGlv
bnMnOiBbCisgICAgICAgICAgICBbJyhPUz09ImxpbnV4IiBhbmQgdG9vbGtpdF91c2VzX2d0ayE9
MSkgb3IgT1M9PSJhbmRyb2lkIicsIHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWwor
ICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAnLAorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywg
ewogICAgICAgICAgICAgICAgICdkcnRfZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAppbmRleCAyMGQ3N2E3NWEzNWE5MmZkNzg1ZGI5
Yjg2ZWJlODYwMTRlNzA3MTNjLi44ZDU0NmYxNjY4YTZmY2Q4YjIzNWEzNzVjN2E3OGQxOGJlMzVh
NzI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3Bw
CkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50RG93
bi50eXBlID0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9kaWZp
ZXJzID0gMDsKICAgICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9TKExJ
TlVYKQorI2lmIE9TKExJTlVYKSAmJiBVU0UoR1RLKQogICAgIGV2ZW50RG93bi5uYXRpdmVLZXlD
b2RlID0gd2Via2l0X3N1cHBvcnQ6Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2Rl
LCBuZWVkc1NoaWZ0S2V5TW9kaWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJlYTJkMjQ3ZTM1MzVjN2YzYjdmODI2ZjdjMTFhZjFiOTAwNTg5ZjguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgot
Ci0jaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgotCi0jaW5jbHVkZSA8c2lnbmFsLmg+
Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17
Ci0gICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2Ug
aGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7
Ci0gICAgcHV0cygiI0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgd2Via2l0X3N1
cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7Ci0gICAgZXhpdCgwKTsKLX0KLQotdm9p
ZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQotewotICAgIEFTU0VSVCghbV90ZXN0SXNQ
ZW5kaW5nKTsKLSAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwotCi0gICAgLy8gSW5zdGFsbCBh
biBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4K
LSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOwotICAgIGFsYXJtQWN0aW9uLnNhX2hh
bmRsZXIgPSBBbGFybUhhbmRsZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21h
c2spOwotICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKLQotICAgIHN0cnVjdCBzaWdhY3Rp
b24gb2xkQWN0aW9uOwotICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRB
Y3Rpb24pOwotICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDAp
OwotCi0gICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJy
ZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCi0gICAgLy8gZmluaXNoZXMgbG9hZGluZy4KLSAg
ICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVz
c2FnZUxvb3AoKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0gICAgYWxhcm0oMCk7Ci0g
ICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOwotfQotCi12b2lkIHBsYXRmb3Jt
SW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvIGhl
cmUuCi19Ci0KLXZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQotewotICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCi19Ci0KLWJvb2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVz
KCkKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgcmV0dXJuIHRydWU7Ci19CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcAppbmRleCAz
M2JkZTlhMGU1MzYxMThhZmZmMzdiMjJiYTRjMDU2MzhkYTU5NjFmLi40MjI4ZjJhZmQzYjc5YmE5
YWQ0ZjM2YmZiZDg4ZjBkYmJhY2YwY2M5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKQEAgLTM2LDE3MSArMzYsNiBAQAogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KIAotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVy
KGludCkKLXsKLSAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBz
aW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURf
T1VUXG4iKTsKLSAgICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBl
eGl0KDApOwotfQotCi1zdGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQotewotICAgIC8vIFdl
IHdpc2ggdG8gbWFrZSB0aGUgbGF5b3V0IHRlc3RzIHJlcHJvZHVjYWJsZSB3aXRoIHJlc3BlY3Qg
dG8gZm9udHMuIFNraWEKLSAgICAvLyB1c2VzIGZvbnRjb25maWcgdG8gcmVzb2x2ZSBmb250IGZh
bWlseSBuYW1lcyBmcm9tIFdlYktpdCBpbnRvIGFjdHVhbCBmb250Ci0gICAgLy8gZmlsZXMgZm91
bmQgb24gdGhlIGN1cnJlbnQgc3lzdGVtLiBUaGlzIG1lYW5zIHRoYXQgZm9udHMgdmFyeSBiYXNl
ZCBvbiB0aGUKLSAgICAvLyBzeXN0ZW0gYW5kIGFsc28gb24gdGhlIGZvbnRjb25maWcgY29uZmln
dXJhdGlvbi4KLSAgICAvLwotICAgIC8vIFRvIGF2b2lkIHRoaXMgd2UgaW5pdGlhbGlzZSBmb250
Y29uZmlnIGhlcmUgYW5kIGluc3RhbGwgYSBjb25maWd1cmF0aW9uCi0gICAgLy8gd2hpY2ggb25s
eSBrbm93cyBhYm91dCBhIGZldywgc2VsZWN0LCBmb250cy4KLQotICAgIC8vIFdlIGhhdmUgZm9u
dGNvbmZpZyBwYXJzZSBhIGNvbmZpZyBmaWxlIGZyb20gb3VyIHJlc291cmNlcyBmaWxlLiBUaGlz
Ci0gICAgLy8gc2V0cyBhIG51bWJlciBvZiBhbGlhc2VzICgic2FucyItPiJBcmlhbCIgZXRjKSwg
YnV0IGRvZXNuJ3QgaW5jbHVkZSBhbnkKLSAgICAvLyBmb250IGRpcmVjdG9yaWVzLgotICAgIEZj
SW5pdCgpOwotCi0gICAgY2hhciBkcnRQYXRoW1BBVEhfTUFYICsgMV07Ci0gICAgaW50IGRydFBh
dGhTaXplID0gcmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIiwgZHJ0UGF0aCwgUEFUSF9NQVgpOwot
ICAgIGlmIChkcnRQYXRoU2l6ZSA8IDAgfHwgZHJ0UGF0aFNpemUgPiBQQVRIX01BWCkgewotICAg
ICAgICBmcHV0cygiVW5hYmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUuIiwgc3RkZXJyKTsK
LSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci0gICAgZHJ0UGF0aFtkcnRQYXRoU2l6ZV0gPSAwOwot
ICAgIHN0ZDo6c3RyaW5nIGRydERpclBhdGgoZHJ0UGF0aCk7Ci0gICAgc2l6ZV90IGxhc3RQYXRo
UG9zID0gZHJ0RGlyUGF0aC5yZmluZCgiLyIpOwotICAgIEFTU0VSVChsYXN0UGF0aFBvcyAhPSBz
dGQ6OnN0cmluZzo6bnBvcyk7Ci0gICAgZHJ0RGlyUGF0aC5lcmFzZShsYXN0UGF0aFBvcyArIDEp
OwotCi0gICAgRmNDb25maWcqIGZvbnRjZmcgPSBGY0NvbmZpZ0NyZWF0ZSgpOwotICAgIHN0ZDo6
c3RyaW5nIGZvbnRjb25maWdQYXRoID0gZHJ0RGlyUGF0aCArICJmb250cy5jb25mIjsKLSAgICBp
ZiAoIUZjQ29uZmlnUGFyc2VBbmRMb2FkKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RmNDaGFyOCo+KGZvbnRjb25maWdQYXRoLmNfc3RyKCkpLCB0cnVlKSkgewotICAgICAgICBmcHV0
cygiRmFpbGVkIHRvIHBhcnNlIGZvbnRjb25maWcgY29uZmlnIGZpbGVcbiIsIHN0ZGVycik7Ci0g
ICAgICAgIGV4aXQoMSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBmb250
cyB0aGF0IGZvbnRjb25maWcgd2lsbCBrbm93IGFib3V0LiBJdAotICAgIC8vIHdpbGwgdHJ5IGl0
cyBiZXN0IHRvIG1hdGNoIGJhc2VkIG9ubHkgb24gdGhlIGZvbnRzIGhlcmUgaW4uIFRoZQotICAg
IC8vIHBhdGhzIGFyZSB3aGVyZSB0aGVzZSBmb250cyBhcmUgZm91bmQgb24gb3VyIFVidW50dSBi
b3hlcy4KLSAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZm9udHNbXSA9IHsKLSAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUva29jaGkva29jaGktZ290aGljLnR0ZiIsCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2tvY2hpL2tvY2hpLW1pbmNoby50dGYiLAot
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsLnR0
ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJp
YWxfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL0FyaWFsX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ29taWNfU2Fuc19NUy50dGYiLAot
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvbWljX1Nh
bnNfTVNfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0
Y29yZWZvbnRzL0NvdXJpZXJfTmV3LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9OZXdfQm9sZC50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0JvbGRfSXRh
bGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9u
dHMvQ291cmllcl9OZXdfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9m
b250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZC50dGYiLAotICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZF9JdGFs
aWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9HZW9yZ2lhX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL0ltcGFjdC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NUy50dGYiLAotICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkLnR0ZiIs
Ci0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVj
aGV0X01TX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0
eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbi50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVz
X05ld19Sb21hbl9Cb2xkLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFuX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFu
X0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL1ZlcmRhbmEudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9WZXJkYW5hX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5hX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9JdGFs
aWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdGhhaS9HYXJ1ZGEu
dHRmIiwKLSAgICAgICAgLy8gVGhlIERlamFWdVNhbnMgZm9udCBpcyB1c2VkIGJ5IHRoZSBjc3My
LjEgdGVzdHMuCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1kZWphdnUv
RGVqYVZ1U2Fucy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYt
aW5kaWMtZm9udHMtY29yZS9sb2hpdF9oaS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF90YS50dGYiLAotICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9NdWt0aU5hcnJv
dy50dGYiLAotICAgIH07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUoZm9u
dHMpOyArK2kpIHsKLSAgICAgICAgaWYgKGFjY2Vzcyhmb250c1tpXSwgUl9PSykpIHsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IGFyZSBtaXNzaW5nICVzLiBUcnkgcmUtcnVubmlu
ZyBidWlsZC9pbnN0YWxsLWJ1aWxkLWRlcHMuc2guIEFsc28gc2VlICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5
b3V0VGVzdHNMaW51eCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHNbaV0pOwot
ICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIUZjQ29uZmlnQXBw
Rm9udEFkZEZpbGUoZm9udGNmZywgKEZjQ2hhcjggKikgZm9udHNbaV0pKSB7Ci0gICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnRzW2ldKTsK
LSAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXZSBzcGVj
aWFsIGNhc2UgdGhlc2UgZm9udHMgYmVjYXVzZSB0aGV5J3JlIG9ubHkgbmVlZGVkIGluIGEKLSAg
ICAvLyBmZXcgbGF5b3V0IHRlc3RzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvcHRp
b25hbEZvbnRzW10gPSB7Ci0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1p
bmRpYy1mb250cy1jb3JlL2xvaGl0X3BhLnR0ZiIsCi0gICAgfTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5c2l6ZShvcHRpb25hbEZvbnRzKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGZvbnQgPSBvcHRpb25hbEZvbnRzW2ldOwotCi0gICAgICAgIC8vIFRoaXMgZm9udCBj
aGFuZ2VkIHBhdGhzIGFjcm9zcyBVYnVudHUgcmVsZWFzZXMsIHNvIHRyeSBjaGVja2luZyBpbiBi
b3RoIGxvY2F0aW9ucy4KLSAgICAgICAgaWYgKCFzdHJjbXAoZm9udCwgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfcGEudHRmIikKLSAgICAgICAg
ICAgICYmIGFjY2Vzcyhmb250LCBSX09LKSA8IDApCi0gICAgICAgICAgICBmb250ID0gIi91c3Iv
c2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLXB1bmphYmktZm9udHMvbG9oaXRfcGEudHRmIjsKLQot
ICAgICAgICBpZiAoYWNjZXNzKGZvbnQsIFJfT0spIDwgMCkgewotICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJZb3UgYXJlIG1pc3NpbmcgJXMuIFdpdGhvdXQgdGhpcywgc29tZSBsYXlvdXQg
dGVzdHMgbWF5IGZhaWwuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXggIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgbW9yZS5cbiIsIGZvbnQpOwotICAgICAgICB9
IGVsc2UgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZv
bnQpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQg
JXNcbiIsIGZvbnQpOwotICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIC8vIEFsc28gbG9hZCB0aGUgbGF5b3V0LXRlc3Qtc3BlY2lmaWMgIkFoZW0iIGZvbnQuCi0g
ICAgc3RkOjpzdHJpbmcgYWhlbVBhdGggPSBkcnREaXJQYXRoICsgIkFIRU1fX19fLlRURiI7Ci0g
ICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRmNDaGFyOCo+KGFoZW1QYXRoLmNfc3RyKCkpKSkgewotICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGFoZW1QYXRoLmNfc3RyKCkpOwotICAg
ICAgICBleGl0KDEpOwotICAgIH0KLQotICAgIGlmICghRmNDb25maWdTZXRDdXJyZW50KGZvbnRj
ZmcpKSB7Ci0gICAgICAgIGZwdXRzKCJGYWlsZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGZvbnQgY29u
ZmlndXJhdGlvblxuIiwgc3RkZXJyKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci19Ci0KLXZv
aWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoIW1fdGVzdElz
UGVuZGluZyk7Ci0gICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQotICAgIC8vIEluc3RhbGwg
YW4gYWxhcm0gc2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQu
Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBhbGFybUFjdGlvbi5zYV9o
YW5kbGVyID0gQWxhcm1IYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9t
YXNrKTsKLSAgICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAgICBzdHJ1Y3Qgc2lnYWN0
aW9uIG9sZEFjdGlvbjsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xk
QWN0aW9uKTsKLSAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAw
KTsKLQotICAgIC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBi
cmVhayB0aGlzIGxvb3Agd2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCi0g
ICAgd2hpbGUgKG1fdGVzdElzUGVuZGluZykKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1l
c3NhZ2VMb29wKCk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgotICAgIGFsYXJtKDApOwot
ICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0KLQotdm9pZCBwbGF0Zm9y
bUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCi17Ci0gICAgLy8gRklYTUU6IEl0J3MgYmV0
dGVyIGNhbGwgZ3RrX2luaXQoKSBvbmx5IHdoZW4gd2UgcnVuIHBsdWdpbiB0ZXN0cy4KLSAgICAv
LyBTZWUgaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2dyb3VwL2Nocm9t
aXVtLWRldi9icm93c2VfdGhyZWFkL3RocmVhZC82MzNlYTE2N2NkZTE5NmNhIwotICAgIGd0a19p
bml0KGFyZ2MsIGFyZ3YpOwotCi0gICAgc2V0dXBGb250Y29uZmlnKCk7Ci19CiAKIHZvaWQgb3Bl
blN0YXJ0dXBEaWFsb2coKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsTGludXguY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MzQ5YTU1YTQ2MzA2OGNiOWY5ZDhhYmEx
OWIyNjMwNmZmMTQ0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgi
CisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9z
dXBwb3J0LmgiCisKKyNpZiAhT1MoQU5EUk9JRCkKKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj
b25maWcuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorCitzdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQoreworICAgIC8vIElmIHRoZSBhbGFy
bSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhh
bmcuCisgICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1dHMoIiNFT0ZcbiIp
OworICAgIGZmbHVzaChzdGRvdXQpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNoZWxs
Ojp3YWl0VGVzdEZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7Cisg
ICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2ln
bmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3RydWN0
IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKKyAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxh
cm1IYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKKyAgICBh
bGFybUFjdGlvbi5zYV9mbGFncyA9IDA7CisKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlv
bjsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKKyAg
ICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKKworICAgIC8v
IFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxv
b3Agd2hlbiB0aGUgcGFnZQorICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCisgICAgd2hpbGUgKG1f
dGVzdElzUGVuZGluZykKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7
CisKKyAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgorICAgIGFsYXJtKDApOworICAgIHNpZ2FjdGlv
bihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKK30KKworI2lmICFPUyhBTkRST0lEKQorc3RhdGlj
IHZvaWQgc2V0dXBGb250Y29uZmlnKCkKK3sKKyAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxh
eW91dCB0ZXN0cyByZXByb2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCisgICAg
Ly8gdXNlcyBmb250Y29uZmlnIHRvIHJlc29sdmUgZm9udCBmYW1pbHkgbmFtZXMgZnJvbSBXZWJL
aXQgaW50byBhY3R1YWwgZm9udAorICAgIC8vIGZpbGVzIGZvdW5kIG9uIHRoZSBjdXJyZW50IHN5
c3RlbS4gVGhpcyBtZWFucyB0aGF0IGZvbnRzIHZhcnkgYmFzZWQgb24gdGhlCisgICAgLy8gc3lz
dGVtIGFuZCBhbHNvIG9uIHRoZSBmb250Y29uZmlnIGNvbmZpZ3VyYXRpb24uCisgICAgLy8KKyAg
ICAvLyBUbyBhdm9pZCB0aGlzIHdlIGluaXRpYWxpc2UgZm9udGNvbmZpZyBoZXJlIGFuZCBpbnN0
YWxsIGEgY29uZmlndXJhdGlvbgorICAgIC8vIHdoaWNoIG9ubHkga25vd3MgYWJvdXQgYSBmZXcs
IHNlbGVjdCwgZm9udHMuCisKKyAgICAvLyBXZSBoYXZlIGZvbnRjb25maWcgcGFyc2UgYSBjb25m
aWcgZmlsZSBmcm9tIG91ciByZXNvdXJjZXMgZmlsZS4gVGhpcworICAgIC8vIHNldHMgYSBudW1i
ZXIgb2YgYWxpYXNlcyAoInNhbnMiLT4iQXJpYWwiIGV0YyksIGJ1dCBkb2Vzbid0IGluY2x1ZGUg
YW55CisgICAgLy8gZm9udCBkaXJlY3Rvcmllcy4KKyAgICBGY0luaXQoKTsKKworICAgIGNoYXIg
ZHJ0UGF0aFtQQVRIX01BWCArIDFdOworICAgIGludCBkcnRQYXRoU2l6ZSA9IHJlYWRsaW5rKCIv
cHJvYy9zZWxmL2V4ZSIsIGRydFBhdGgsIFBBVEhfTUFYKTsKKyAgICBpZiAoZHJ0UGF0aFNpemUg
PCAwIHx8IGRydFBhdGhTaXplID4gUEFUSF9NQVgpIHsKKyAgICAgICAgZnB1dHMoIlVuYWJsZSB0
byByZXNvbHZlIC9wcm9jL3NlbGYvZXhlLiIsIHN0ZGVycik7CisgICAgICAgIGV4aXQoMSk7Cisg
ICAgfQorICAgIGRydFBhdGhbZHJ0UGF0aFNpemVdID0gMDsKKyAgICBzdGQ6OnN0cmluZyBkcnRE
aXJQYXRoKGRydFBhdGgpOworICAgIHNpemVfdCBsYXN0UGF0aFBvcyA9IGRydERpclBhdGgucmZp
bmQoIi8iKTsKKyAgICBBU1NFUlQobGFzdFBhdGhQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOwor
ICAgIGRydERpclBhdGguZXJhc2UobGFzdFBhdGhQb3MgKyAxKTsKKworICAgIEZjQ29uZmlnKiBm
b250Y2ZnID0gRmNDb25maWdDcmVhdGUoKTsKKyAgICBzdGQ6OnN0cmluZyBmb250Y29uZmlnUGF0
aCA9IGRydERpclBhdGggKyAiZm9udHMuY29uZiI7CisgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5k
TG9hZChmb250Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihmb250Y29uZmln
UGF0aC5jX3N0cigpKSwgdHJ1ZSkpIHsKKyAgICAgICAgZnB1dHMoIkZhaWxlZCB0byBwYXJzZSBm
b250Y29uZmlnIGNvbmZpZyBmaWxlXG4iLCBzdGRlcnIpOworICAgICAgICBleGl0KDEpOworICAg
IH0KKworICAgIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZm9udHMgdGhhdCBmb250Y29uZmlnIHdp
bGwga25vdyBhYm91dC4gSXQKKyAgICAvLyB3aWxsIHRyeSBpdHMgYmVzdCB0byBtYXRjaCBiYXNl
ZCBvbmx5IG9uIHRoZSBmb250cyBoZXJlIGluLiBUaGUKKyAgICAvLyBwYXRocyBhcmUgd2hlcmUg
dGhlc2UgZm9udHMgYXJlIGZvdW5kIG9uIG91ciBVYnVudHUgYm94ZXMuCisgICAgc3RhdGljIGNv
bnN0IGNoYXIgKmNvbnN0IGZvbnRzW10gPSB7CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL2tvY2hpL2tvY2hpLWdvdGhpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9rb2NoaS9rb2NoaS1taW5jaG8udHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbC50dGYiLAorICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0JvbGQudHRmIiwKKyAgICAg
ICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbF9Cb2xkX0l0
YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZv
bnRzL0FyaWFsX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL0NvbWljX1NhbnNfTVMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db21pY19TYW5zX01TX0JvbGQudHRmIiwKKyAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05l
dy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRz
L0NvdXJpZXJfTmV3X0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ld19Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0l0YWxp
Yy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRz
L0dlb3JnaWEudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9HZW9yZ2lhX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1
ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9JdGFsaWMudHRm
IiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9JbXBh
Y3QudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9UcmVidWNoZXRfTVMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVNfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9zaGFy
ZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkX0l0YWxpYy50
dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1Ry
ZWJ1Y2hldF9NU19JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW4udHRmIiwKKyAgICAgICAgIi91c3Ivc2hh
cmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW5fQm9sZC50dGYi
LAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVz
X05ld19Sb21hbl9Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9JdGFsaWMudHRmIiwKKyAgICAg
ICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5hLnR0ZiIs
CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFu
YV9Cb2xkLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvVmVyZGFuYV9Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfSXRhbGljLnR0ZiIsCisgICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3RoYWkvR2FydWRhLnR0ZiIsCisgICAgICAgIC8vIFRo
ZSBEZWphVnVTYW5zIGZvbnQgaXMgdXNlZCBieSB0aGUgY3NzMi4xIHRlc3RzLgorICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtZGVqYXZ1L0RlamFWdVNhbnMudHRmIiwKKyAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9o
aXRfaGkudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGlj
LWZvbnRzLWNvcmUvbG9oaXRfdGEudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1
ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvTXVrdGlOYXJyb3cudHRmIiwKKyAgICB9OworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKGZvbnRzKTsgKytpKSB7CisgICAgICAg
IGlmIChhY2Nlc3MoZm9udHNbaV0sIFJfT0spKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIllvdSBhcmUgbWlzc2luZyAlcy4gVHJ5IHJlLXJ1bm5pbmcgYnVpbGQvaW5zdGFsbC1idWls
ZC1kZXBzLnNoLiBBbHNvIHNlZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXgiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzW2ldKTsKKyAgICAgICAgICAgIGV4aXQoMSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcs
IChGY0NoYXI4ICopIGZvbnRzW2ldKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJG
YWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBmb250c1tpXSk7CisgICAgICAgICAgICBleGl0KDEp
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gV2Ugc3BlY2lhbCBjYXNlIHRoZXNlIGZvbnRz
IGJlY2F1c2UgdGhleSdyZSBvbmx5IG5lZWRlZCBpbiBhCisgICAgLy8gZmV3IGxheW91dCB0ZXN0
cy4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3B0aW9uYWxGb250c1tdID0geworICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hp
dF9wYS50dGYiLAorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUo
b3B0aW9uYWxGb250cyk7ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBmb250ID0gb3B0aW9u
YWxGb250c1tpXTsKKworICAgICAgICAvLyBUaGlzIGZvbnQgY2hhbmdlZCBwYXRocyBhY3Jvc3Mg
VWJ1bnR1IHJlbGVhc2VzLCBzbyB0cnkgY2hlY2tpbmcgaW4gYm90aCBsb2NhdGlvbnMuCisgICAg
ICAgIGlmICghc3RyY21wKGZvbnQsICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRp
Yy1mb250cy1jb3JlL2xvaGl0X3BhLnR0ZiIpCisgICAgICAgICAgICAmJiBhY2Nlc3MoZm9udCwg
Ul9PSykgPCAwKQorICAgICAgICAgICAgZm9udCA9ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L3R0Zi1wdW5qYWJpLWZvbnRzL2xvaGl0X3BhLnR0ZiI7CisKKyAgICAgICAgaWYgKGFjY2Vzcyhm
b250LCBSX09LKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IGFyZSBt
aXNzaW5nICVzLiBXaXRob3V0IHRoaXMsIHNvbWUgbGF5b3V0IHRlc3RzIG1heSBmYWlsLiAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Y2hyb21pdW0vd2lraS9MYXlvdXRUZXN0c0xpbnV4ICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZm9yIG1vcmUuXG4iLCBmb250KTsKKyAgICAgICAgfSBlbHNlIGlmICghRmNDb25maWdB
cHBGb250QWRkRmlsZShmb250Y2ZnLCAoRmNDaGFyOCAqKSBmb250KSkgeworICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBmb250KTsKKyAgICAg
ICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbHNvIGxvYWQgdGhl
IGxheW91dC10ZXN0LXNwZWNpZmljICJBaGVtIiBmb250LgorICAgIHN0ZDo6c3RyaW5nIGFoZW1Q
YXRoID0gZHJ0RGlyUGF0aCArICJBSEVNX19fXy5UVEYiOworICAgIGlmICghRmNDb25maWdBcHBG
b250QWRkRmlsZShmb250Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihhaGVt
UGF0aC5jX3N0cigpKSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9h
ZCBmb250ICVzXG4iLCBhaGVtUGF0aC5jX3N0cigpKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9
CisKKyAgICBpZiAoIUZjQ29uZmlnU2V0Q3VycmVudChmb250Y2ZnKSkgeworICAgICAgICBmcHV0
cygiRmFpbGVkIHRvIHNldCB0aGUgZGVmYXVsdCBmb250IGNvbmZpZ3VyYXRpb25cbiIsIHN0ZGVy
cik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgcGxhdGZvcm1J
bml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQoreworICAgIC8vIEZJWE1FOiBJdCdzIGJldHRl
ciBjYWxsIGd0a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCisgICAgLy8g
U2VlIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9ncm91cC9jaHJvbWl1
bS1kZXYvYnJvd3NlX3RocmVhZC90aHJlYWQvNjMzZWExNjdjZGUxOTZjYSMKKyNpZiBVU0UoR1RL
KQorICAgIGd0a19pbml0KGFyZ2MsIGFyZ3YpOworI2VuZGlmCisKKyNpZiAhT1MoQU5EUk9JRCkK
KyAgICBzZXR1cEZvbnRjb25maWcoKTsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMzRmODRiMzk1
YTdlMWZlMjgxZGRmNzQyOWQxZWM3NDQ3NGVhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKworYm9vbCBj
aGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQoreworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxl
bWVudGVkLgorfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116798</attachid>
            <date>2011-11-28 12:11:40 -0800</date>
            <delta_ts>2011-11-28 17:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111128151139.patch</filename>
            <type>text/plain</type>
            <size>27545</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDBkYjcyYjQ0ZmUyMDg5MjUzMjU5Y2Y2ZjZiMmYxZjZkYzJkYmJjNjIuLjdkMTFiNjZkMzc1ZTA3
Njc3YTQxZGNlZjBlM2I4MTFkODdjNmJlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2Vi
RGV2VG9vbHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCA4YjAzZTRhMGNjMTI0ODhiMjFhY2YxNzAyZWUzOThmMjdhZDBjMzY1Li4zMDczODhhODJh
MGU0YTlkM2U1YzE4NDM0YjgxYTJiY2JhODgwYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC03NTcsNiArNzU3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNlc19ndGsgPT0gMScsIHsK
KyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAnV1RGX1VTRV9HVEs9MScKKyAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL2J1aWxkL2xpbnV4L3N5c3RlbS5neXA6Z3RrJywKICAgICAgICAgICAgICAg
ICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA0ZjUxNTIxYzBhMDM4NGZiMzE5ZmQxMjQ0OWE3NDA1YzE2MjllNWQwLi4zNDYyYjc5OTlh
YTRkZjAwNzkxZmNiZTA1MmFjNTkyNGRhM2ZmNjZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTEtMjggIEZh
ZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBG
aXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVyYSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEUlQgbm93IGJ1aWxkcyBmb3IgQXVyYSBMaW51eC4g
VGhpcywgbW9yZSBvciBsZXNzLCBzaGFyZXMgdGhlIHNhbWUgY29kZSBhcyBBbmRyb2lkLgorCisg
ICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZToKKworICAgICAgICAg
IDEuIFJlbmFtZWQgVGVzdFNoZWxsQW5kcm9pZCB0byBUZXN0U2hlbGxMaW51eC4KKyAgICAgICAg
ICAyLiBTdHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1YiB0aGF0IHdpbGwgb25s
eSBjb21waWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAgICAgIDMuIENvZGUgY29t
bW9uIHRvIEd0aywgQXVyYSwgYW5kIEFuZHJvaWQgbW92ZWQgdG8gVGVzdFNoZWxsTGludXguCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50
U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGxBbmRyb2lkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbExpbnV4LmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsR3RrLmNwcC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6CisgICAgICAg
IChUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAoc2V0dXBGb250Y29uZmln
KToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsU3R1Yi5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tMYXlvdXRUZXN0
U3lzdGVtRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKG9wZW5TdGFydHVwRGlhbG9nKToKKwogMjAx
MS0xMS0yOCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBCdWlsZCBzeXN0ZW0gZml4ZXMgYWdhaW5zdCBWOC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGIxOWJlMjI3MmM1NTVjNzlkMjk5NzE2MDUy
NGFhZjcwY2YyZThmNjguLjQ3NDQyYmYyYTU3YTI3MDZmOTBiYzllMWVkMjc0MDg0ZDg0YmI5ZWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzQsNyArMzQs
NyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0U2hlbGwuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9p
ZC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFNoZWxsTWFjLm1tJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4u
Y3BwJywKQEAgLTczLDYgKzczLDExIEBACiAgICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1Z0lu
L21haW4uY3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAg
ICAgICBbJyhPUz09ImxpbnV4IiBhbmQgdG9vbGtpdF91c2VzX2d0ayE9MSkgb3IgT1M9PSJhbmRy
b2lkIicsIHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAnLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICB9XSwKICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewogICAgICAgICAgICAg
ICAgICdkcnRfZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVt
ZUNvbnRyb2xEUlRXaW4uY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcAppbmRleCAyMGQ3N2E3NWEzNWE5MmZkNzg1ZGI5Yjg2ZWJlODYwMTRlNzA3
MTNjLi44ZDU0NmYxNjY4YTZmY2Q4YjIzNWEzNzVjN2E3OGQxOGJlMzVhNzI5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC01NzYsNyArNTc2
LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50RG93bi50eXBlID0gV2ViSW5w
dXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9kaWZpZXJzID0gMDsKICAgICBl
dmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9TKExJTlVYKQorI2lmIE9TKExJ
TlVYKSAmJiBVU0UoR1RLKQogICAgIGV2ZW50RG93bi5uYXRpdmVLZXlDb2RlID0gd2Via2l0X3N1
cHBvcnQ6Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2RlLCBuZWVkc1NoaWZ0S2V5
TW9kaWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJl
YTJkMjQ3ZTM1MzVjN2YzYjdmODI2ZjdjMTFhZjFiOTAwNTg5ZjguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgotCi0jaW5jbHVkZSAiU2tU
eXBlZmFjZS5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3VwcG9y
dC93ZWJraXRfc3VwcG9ydC5oIgotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8dW5p
c3RkLmg+Ci0KLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYgdGhl
IGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBi
YWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygiI0VP
RlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3du
VGVzdEVudmlyb25tZW50KCk7Ci0gICAgZXhpdCgwKTsKLX0KLQotdm9pZCBUZXN0U2hlbGw6Ondh
aXRUZXN0RmluaXNoZWQoKQotewotICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKLSAgICBt
X3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwotCi0gICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwg
aGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAgICBzdHJ1Y3Qgc2ln
YWN0aW9uIGFsYXJtQWN0aW9uOwotICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhh
bmRsZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOwotICAgIGFsYXJt
QWN0aW9uLnNhX2ZsYWdzID0gMDsKLQotICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOwot
ICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOwotICAgIGFs
YXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwotCi0gICAgLy8gVGVz
dEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3
aGVuIHRoZSBwYWdlCi0gICAgLy8gZmluaXNoZXMgbG9hZGluZy4KLSAgICB3aGlsZSAobV90ZXN0
SXNQZW5kaW5nKQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKLQot
ICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0gICAgYWxhcm0oMCk7Ci0gICAgc2lnYWN0aW9uKFNJ
R0FMUk0sICZvbGRBY3Rpb24sIDApOwotfQotCi12b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFyZ2Ms
IGNoYXIqKiogYXJndikKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCi19Ci0KLXZvaWQg
b3BlblN0YXJ0dXBEaWFsb2coKQotewotICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi19
Ci0KLWJvb2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKLXsKLSAgICAvLyBO
b3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgcmV0dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcAppbmRleCAzM2JkZTlhMGU1MzYxMThh
ZmZmMzdiMjJiYTRjMDU2MzhkYTU5NjFmLi40MjI4ZjJhZmQzYjc5YmE5YWQ0ZjM2YmZiZDg4ZjBk
YmJhY2YwY2M5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGxHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bEd0ay5jcHAKQEAgLTM2LDE3MSArMzYsNiBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNs
dWRlIDxzaWduYWwuaD4KIAotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCkKLXsKLSAgICAv
LyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZlIGEg
cmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VUXG4iKTsKLSAgICBw
dXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KDApOwotfQotCi1z
dGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQotewotICAgIC8vIFdlIHdpc2ggdG8gbWFrZSB0
aGUgbGF5b3V0IHRlc3RzIHJlcHJvZHVjYWJsZSB3aXRoIHJlc3BlY3QgdG8gZm9udHMuIFNraWEK
LSAgICAvLyB1c2VzIGZvbnRjb25maWcgdG8gcmVzb2x2ZSBmb250IGZhbWlseSBuYW1lcyBmcm9t
IFdlYktpdCBpbnRvIGFjdHVhbCBmb250Ci0gICAgLy8gZmlsZXMgZm91bmQgb24gdGhlIGN1cnJl
bnQgc3lzdGVtLiBUaGlzIG1lYW5zIHRoYXQgZm9udHMgdmFyeSBiYXNlZCBvbiB0aGUKLSAgICAv
LyBzeXN0ZW0gYW5kIGFsc28gb24gdGhlIGZvbnRjb25maWcgY29uZmlndXJhdGlvbi4KLSAgICAv
LwotICAgIC8vIFRvIGF2b2lkIHRoaXMgd2UgaW5pdGlhbGlzZSBmb250Y29uZmlnIGhlcmUgYW5k
IGluc3RhbGwgYSBjb25maWd1cmF0aW9uCi0gICAgLy8gd2hpY2ggb25seSBrbm93cyBhYm91dCBh
IGZldywgc2VsZWN0LCBmb250cy4KLQotICAgIC8vIFdlIGhhdmUgZm9udGNvbmZpZyBwYXJzZSBh
IGNvbmZpZyBmaWxlIGZyb20gb3VyIHJlc291cmNlcyBmaWxlLiBUaGlzCi0gICAgLy8gc2V0cyBh
IG51bWJlciBvZiBhbGlhc2VzICgic2FucyItPiJBcmlhbCIgZXRjKSwgYnV0IGRvZXNuJ3QgaW5j
bHVkZSBhbnkKLSAgICAvLyBmb250IGRpcmVjdG9yaWVzLgotICAgIEZjSW5pdCgpOwotCi0gICAg
Y2hhciBkcnRQYXRoW1BBVEhfTUFYICsgMV07Ci0gICAgaW50IGRydFBhdGhTaXplID0gcmVhZGxp
bmsoIi9wcm9jL3NlbGYvZXhlIiwgZHJ0UGF0aCwgUEFUSF9NQVgpOwotICAgIGlmIChkcnRQYXRo
U2l6ZSA8IDAgfHwgZHJ0UGF0aFNpemUgPiBQQVRIX01BWCkgewotICAgICAgICBmcHV0cygiVW5h
YmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUuIiwgc3RkZXJyKTsKLSAgICAgICAgZXhpdCgx
KTsKLSAgICB9Ci0gICAgZHJ0UGF0aFtkcnRQYXRoU2l6ZV0gPSAwOwotICAgIHN0ZDo6c3RyaW5n
IGRydERpclBhdGgoZHJ0UGF0aCk7Ci0gICAgc2l6ZV90IGxhc3RQYXRoUG9zID0gZHJ0RGlyUGF0
aC5yZmluZCgiLyIpOwotICAgIEFTU0VSVChsYXN0UGF0aFBvcyAhPSBzdGQ6OnN0cmluZzo6bnBv
cyk7Ci0gICAgZHJ0RGlyUGF0aC5lcmFzZShsYXN0UGF0aFBvcyArIDEpOwotCi0gICAgRmNDb25m
aWcqIGZvbnRjZmcgPSBGY0NvbmZpZ0NyZWF0ZSgpOwotICAgIHN0ZDo6c3RyaW5nIGZvbnRjb25m
aWdQYXRoID0gZHJ0RGlyUGF0aCArICJmb250cy5jb25mIjsKLSAgICBpZiAoIUZjQ29uZmlnUGFy
c2VBbmRMb2FkKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRj
b25maWdQYXRoLmNfc3RyKCkpLCB0cnVlKSkgewotICAgICAgICBmcHV0cygiRmFpbGVkIHRvIHBh
cnNlIGZvbnRjb25maWcgY29uZmlnIGZpbGVcbiIsIHN0ZGVycik7Ci0gICAgICAgIGV4aXQoMSk7
Ci0gICAgfQotCi0gICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBmb250cyB0aGF0IGZvbnRjb25m
aWcgd2lsbCBrbm93IGFib3V0LiBJdAotICAgIC8vIHdpbGwgdHJ5IGl0cyBiZXN0IHRvIG1hdGNo
IGJhc2VkIG9ubHkgb24gdGhlIGZvbnRzIGhlcmUgaW4uIFRoZQotICAgIC8vIHBhdGhzIGFyZSB3
aGVyZSB0aGVzZSBmb250cyBhcmUgZm91bmQgb24gb3VyIFVidW50dSBib3hlcy4KLSAgICBzdGF0
aWMgY29uc3QgY2hhciAqY29uc3QgZm9udHNbXSA9IHsKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUva29jaGkva29jaGktZ290aGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL2tvY2hpL2tvY2hpLW1pbmNoby50dGYiLAotICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsLnR0ZiIsCi0gICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxfQm9sZC50dGYiLAot
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0Jv
bGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRj
b3JlZm9udHMvQXJpYWxfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvQ29taWNfU2Fuc19NUy50dGYiLAotICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvbWljX1NhbnNfTVNfQm9sZC50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJp
ZXJfTmV3LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvQ291cmllcl9OZXdfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0JvbGRfSXRhbGljLnR0ZiIsCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9OZXdf
SXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvR2VvcmdpYS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9t
c3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZF9JdGFsaWMudHRmIiwKLSAgICAg
ICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0l0YWxp
Yy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRz
L0ltcGFjdC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL1RyZWJ1Y2hldF9NUy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkLnR0ZiIsCi0gICAgICAgICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TX0JvbGRfSXRh
bGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9u
dHMvVHJlYnVjaGV0X01TX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbi50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9Cb2xk
LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMv
VGltZXNfTmV3X1JvbWFuX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2Zv
bnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFuX0l0YWxpYy50dGYiLAot
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmEu
dHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9W
ZXJkYW5hX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0
dGNvcmVmb250cy9WZXJkYW5hX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9JdGFsaWMudHRmIiwKLSAgICAg
ICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdGhhaS9HYXJ1ZGEudHRmIiwKLSAgICAgICAg
Ly8gVGhlIERlamFWdVNhbnMgZm9udCBpcyB1c2VkIGJ5IHRoZSBjc3MyLjEgdGVzdHMuCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1kZWphdnUvRGVqYVZ1U2Fucy50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29y
ZS9sb2hpdF9oaS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYt
aW5kaWMtZm9udHMtY29yZS9sb2hpdF90YS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9NdWt0aU5hcnJvdy50dGYiLAotICAgIH07
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUoZm9udHMpOyArK2kpIHsKLSAg
ICAgICAgaWYgKGFjY2Vzcyhmb250c1tpXSwgUl9PSykpIHsKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiWW91IGFyZSBtaXNzaW5nICVzLiBUcnkgcmUtcnVubmluZyBidWlsZC9pbnN0YWxs
LWJ1aWxkLWRlcHMuc2guIEFsc28gc2VlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5b3V0VGVzdHNMaW51eCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHNbaV0pOwotICAgICAgICAgICAgZXhp
dCgxKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9u
dGNmZywgKEZjQ2hhcjggKikgZm9udHNbaV0pKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnRzW2ldKTsKLSAgICAgICAgICAgIGV4
aXQoMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXZSBzcGVjaWFsIGNhc2UgdGhlc2Ug
Zm9udHMgYmVjYXVzZSB0aGV5J3JlIG9ubHkgbmVlZGVkIGluIGEKLSAgICAvLyBmZXcgbGF5b3V0
IHRlc3RzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvcHRpb25hbEZvbnRzW10gPSB7
Ci0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3Jl
L2xvaGl0X3BhLnR0ZiIsCi0gICAgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5
c2l6ZShvcHRpb25hbEZvbnRzKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZvbnQgPSBv
cHRpb25hbEZvbnRzW2ldOwotCi0gICAgICAgIC8vIFRoaXMgZm9udCBjaGFuZ2VkIHBhdGhzIGFj
cm9zcyBVYnVudHUgcmVsZWFzZXMsIHNvIHRyeSBjaGVja2luZyBpbiBib3RoIGxvY2F0aW9ucy4K
LSAgICAgICAgaWYgKCFzdHJjbXAoZm9udCwgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRm
LWluZGljLWZvbnRzLWNvcmUvbG9oaXRfcGEudHRmIikKLSAgICAgICAgICAgICYmIGFjY2Vzcyhm
b250LCBSX09LKSA8IDApCi0gICAgICAgICAgICBmb250ID0gIi91c3Ivc2hhcmUvZm9udHMvdHJ1
ZXR5cGUvdHRmLXB1bmphYmktZm9udHMvbG9oaXRfcGEudHRmIjsKLQotICAgICAgICBpZiAoYWNj
ZXNzKGZvbnQsIFJfT0spIDwgMCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJZb3Ug
YXJlIG1pc3NpbmcgJXMuIFdpdGhvdXQgdGhpcywgc29tZSBsYXlvdXQgdGVzdHMgbWF5IGZhaWwu
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXggIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmb3IgbW9yZS5cbiIsIGZvbnQpOwotICAgICAgICB9IGVsc2UgaWYgKCFGY0Nv
bmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZvbnQpKSB7Ci0gICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnQpOwot
ICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFsc28gbG9h
ZCB0aGUgbGF5b3V0LXRlc3Qtc3BlY2lmaWMgIkFoZW0iIGZvbnQuCi0gICAgc3RkOjpzdHJpbmcg
YWhlbVBhdGggPSBkcnREaXJQYXRoICsgIkFIRU1fX19fLlRURiI7Ci0gICAgaWYgKCFGY0NvbmZp
Z0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+
KGFoZW1QYXRoLmNfc3RyKCkpKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0
byBsb2FkIGZvbnQgJXNcbiIsIGFoZW1QYXRoLmNfc3RyKCkpOwotICAgICAgICBleGl0KDEpOwot
ICAgIH0KLQotICAgIGlmICghRmNDb25maWdTZXRDdXJyZW50KGZvbnRjZmcpKSB7Ci0gICAgICAg
IGZwdXRzKCJGYWlsZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGZvbnQgY29uZmlndXJhdGlvblxuIiwg
c3RkZXJyKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci19Ci0KLXZvaWQgVGVzdFNoZWxsOjp3
YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7Ci0gICAg
bV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQotICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2lnbmFs
IGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCi0gICAgc3RydWN0IHNp
Z2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1I
YW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKLSAgICBhbGFy
bUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsK
LSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKLSAgICBh
bGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKLQotICAgIC8vIFRl
c3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxvb3Ag
d2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCi0gICAgd2hpbGUgKG1fdGVz
dElzUGVuZGluZykKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7Ci0K
LSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgotICAgIGFsYXJtKDApOwotICAgIHNpZ2FjdGlvbihT
SUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0KLQotdm9pZCBwbGF0Zm9ybUluaXQoaW50KiBhcmdj
LCBjaGFyKioqIGFyZ3YpCi17Ci0gICAgLy8gRklYTUU6IEl0J3MgYmV0dGVyIGNhbGwgZ3RrX2lu
aXQoKSBvbmx5IHdoZW4gd2UgcnVuIHBsdWdpbiB0ZXN0cy4KLSAgICAvLyBTZWUgaHR0cDovL2dy
b3Vwcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2dyb3VwL2Nocm9taXVtLWRldi9icm93c2Vf
dGhyZWFkL3RocmVhZC82MzNlYTE2N2NkZTE5NmNhIwotICAgIGd0a19pbml0KGFyZ2MsIGFyZ3Yp
OwotCi0gICAgc2V0dXBGb250Y29uZmlnKCk7Ci19CiAKIHZvaWQgb3BlblN0YXJ0dXBEaWFsb2co
KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
TGludXguY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTGludXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4ZDBiYmZmZWIwMWE1OGY0NTkzZDgxOTRmYTY3YjYyZDEzNjhhODYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGxMaW51eC5jcHAKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCisjaW5jbHVkZSAiV2Vi
Vmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisKKyNp
ZiAhT1MoQU5EUk9JRCkKKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KKyNlbmRp
ZgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgdm9p
ZCBBbGFybUhhbmRsZXIoaW50KQoreworICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxs
IHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCisgICAgcHV0cygi
XG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1dHMoIiNFT0ZcbiIpOworICAgIGZmbHVzaChz
dGRvdXQpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlz
aGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7CisgICAgbV90ZXN0SXNQZW5k
aW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2lnbmFsIGhhbmRsZXIgdGhh
dCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhbGFy
bUFjdGlvbjsKKyAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1IYW5kbGVyOworICAg
IHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKKyAgICBhbGFybUFjdGlvbi5zYV9m
bGFncyA9IDA7CisKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsKKyAgICBzaWdhY3Rp
b24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKKyAgICBhbGFybShsYXlvdXRU
ZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKKworICAgIC8vIFRlc3RGaW5pc2hlZCgp
IHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxvb3Agd2hlbiB0aGUgcGFn
ZQorICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCisgICAgd2hpbGUgKG1fdGVzdElzUGVuZGluZykK
KyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7CisKKyAgICAvLyBSZW1v
dmUgdGhlIGFsYXJtLgorICAgIGFsYXJtKDApOworICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmb2xk
QWN0aW9uLCAwKTsKK30KKworI2lmICFPUyhBTkRST0lEKQorc3RhdGljIHZvaWQgc2V0dXBGb250
Y29uZmlnKCkKK3sKKyAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxheW91dCB0ZXN0cyByZXBy
b2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCisgICAgLy8gdXNlcyBmb250Y29u
ZmlnIHRvIHJlc29sdmUgZm9udCBmYW1pbHkgbmFtZXMgZnJvbSBXZWJLaXQgaW50byBhY3R1YWwg
Zm9udAorICAgIC8vIGZpbGVzIGZvdW5kIG9uIHRoZSBjdXJyZW50IHN5c3RlbS4gVGhpcyBtZWFu
cyB0aGF0IGZvbnRzIHZhcnkgYmFzZWQgb24gdGhlCisgICAgLy8gc3lzdGVtIGFuZCBhbHNvIG9u
IHRoZSBmb250Y29uZmlnIGNvbmZpZ3VyYXRpb24uCisgICAgLy8KKyAgICAvLyBUbyBhdm9pZCB0
aGlzIHdlIGluaXRpYWxpc2UgZm9udGNvbmZpZyBoZXJlIGFuZCBpbnN0YWxsIGEgY29uZmlndXJh
dGlvbgorICAgIC8vIHdoaWNoIG9ubHkga25vd3MgYWJvdXQgYSBmZXcsIHNlbGVjdCwgZm9udHMu
CisKKyAgICAvLyBXZSBoYXZlIGZvbnRjb25maWcgcGFyc2UgYSBjb25maWcgZmlsZSBmcm9tIG91
ciByZXNvdXJjZXMgZmlsZS4gVGhpcworICAgIC8vIHNldHMgYSBudW1iZXIgb2YgYWxpYXNlcyAo
InNhbnMiLT4iQXJpYWwiIGV0YyksIGJ1dCBkb2Vzbid0IGluY2x1ZGUgYW55CisgICAgLy8gZm9u
dCBkaXJlY3Rvcmllcy4KKyAgICBGY0luaXQoKTsKKworICAgIGNoYXIgZHJ0UGF0aFtQQVRIX01B
WCArIDFdOworICAgIGludCBkcnRQYXRoU2l6ZSA9IHJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIs
IGRydFBhdGgsIFBBVEhfTUFYKTsKKyAgICBpZiAoZHJ0UGF0aFNpemUgPCAwIHx8IGRydFBhdGhT
aXplID4gUEFUSF9NQVgpIHsKKyAgICAgICAgZnB1dHMoIlVuYWJsZSB0byByZXNvbHZlIC9wcm9j
L3NlbGYvZXhlLiIsIHN0ZGVycik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIGRydFBh
dGhbZHJ0UGF0aFNpemVdID0gMDsKKyAgICBzdGQ6OnN0cmluZyBkcnREaXJQYXRoKGRydFBhdGgp
OworICAgIHNpemVfdCBsYXN0UGF0aFBvcyA9IGRydERpclBhdGgucmZpbmQoIi8iKTsKKyAgICBB
U1NFUlQobGFzdFBhdGhQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgIGRydERpclBhdGgu
ZXJhc2UobGFzdFBhdGhQb3MgKyAxKTsKKworICAgIEZjQ29uZmlnKiBmb250Y2ZnID0gRmNDb25m
aWdDcmVhdGUoKTsKKyAgICBzdGQ6OnN0cmluZyBmb250Y29uZmlnUGF0aCA9IGRydERpclBhdGgg
KyAiZm9udHMuY29uZiI7CisgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5kTG9hZChmb250Y2ZnLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihmb250Y29uZmlnUGF0aC5jX3N0cigpKSwg
dHJ1ZSkpIHsKKyAgICAgICAgZnB1dHMoIkZhaWxlZCB0byBwYXJzZSBmb250Y29uZmlnIGNvbmZp
ZyBmaWxlXG4iLCBzdGRlcnIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIC8vIFRo
aXMgaXMgdGhlIGxpc3Qgb2YgZm9udHMgdGhhdCBmb250Y29uZmlnIHdpbGwga25vdyBhYm91dC4g
SXQKKyAgICAvLyB3aWxsIHRyeSBpdHMgYmVzdCB0byBtYXRjaCBiYXNlZCBvbmx5IG9uIHRoZSBm
b250cyBoZXJlIGluLiBUaGUKKyAgICAvLyBwYXRocyBhcmUgd2hlcmUgdGhlc2UgZm9udHMgYXJl
IGZvdW5kIG9uIG91ciBVYnVudHUgYm94ZXMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0
IGZvbnRzW10gPSB7CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2tvY2hpL2tv
Y2hpLWdvdGhpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9rb2No
aS9rb2NoaS1taW5jaG8udHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9BcmlhbC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbF9Cb2xkX0l0YWxpYy50dGYiLAorICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0l0YWxp
Yy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRz
L0NvbWljX1NhbnNfTVMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9Db21pY19TYW5zX01TX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hh
cmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ldy50dGYiLAorICAgICAg
ICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0Jv
bGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9Db3VyaWVyX05ld19Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0l0YWxpYy50dGYiLAorICAgICAg
ICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWEudHRmIiwK
KyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lh
X0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVm
b250cy9HZW9yZ2lhX0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9JbXBhY3QudHRmIiwKKyAgICAg
ICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVMu
dHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9U
cmVidWNoZXRfTVNfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19JdGFs
aWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9UaW1lc19OZXdfUm9tYW4udHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW5fQm9sZC50dGYiLAorICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9Cb2xk
X0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL1RpbWVzX05ld19Sb21hbl9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5hLnR0ZiIsCisgICAgICAgICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9Cb2xkLnR0ZiIsCisg
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9C
b2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0
Y29yZWZvbnRzL1ZlcmRhbmFfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL3RoYWkvR2FydWRhLnR0ZiIsCisgICAgICAgIC8vIFRoZSBEZWphVnVTYW5zIGZv
bnQgaXMgdXNlZCBieSB0aGUgY3NzMi4xIHRlc3RzLgorICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS90dGYtZGVqYXZ1L0RlamFWdVNhbnMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hh
cmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfaGkudHRmIiwKKyAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9o
aXRfdGEudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGlj
LWZvbnRzLWNvcmUvTXVrdGlOYXJyb3cudHRmIiwKKyAgICB9OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXlzaXplKGZvbnRzKTsgKytpKSB7CisgICAgICAgIGlmIChhY2Nlc3MoZm9u
dHNbaV0sIFJfT0spKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIllvdSBhcmUgbWlz
c2luZyAlcy4gVHJ5IHJlLXJ1bm5pbmcgYnVpbGQvaW5zdGFsbC1idWlsZC1kZXBzLnNoLiBBbHNv
IHNlZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXgiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnRzW2ldKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZv
bnRzW2ldKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBm
b250ICVzXG4iLCBmb250c1tpXSk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gV2Ugc3BlY2lhbCBjYXNlIHRoZXNlIGZvbnRzIGJlY2F1c2UgdGhleSdy
ZSBvbmx5IG5lZWRlZCBpbiBhCisgICAgLy8gZmV3IGxheW91dCB0ZXN0cy4KKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qgb3B0aW9uYWxGb250c1tdID0geworICAgICAgICAiL3Vzci9zaGFy
ZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF9wYS50dGYiLAorICAg
IH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUob3B0aW9uYWxGb250cyk7
ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBmb250ID0gb3B0aW9uYWxGb250c1tpXTsKKwor
ICAgICAgICAvLyBUaGlzIGZvbnQgY2hhbmdlZCBwYXRocyBhY3Jvc3MgVWJ1bnR1IHJlbGVhc2Vz
LCBzbyB0cnkgY2hlY2tpbmcgaW4gYm90aCBsb2NhdGlvbnMuCisgICAgICAgIGlmICghc3RyY21w
KGZvbnQsICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xv
aGl0X3BhLnR0ZiIpCisgICAgICAgICAgICAmJiBhY2Nlc3MoZm9udCwgUl9PSykgPCAwKQorICAg
ICAgICAgICAgZm9udCA9ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1wdW5qYWJpLWZv
bnRzL2xvaGl0X3BhLnR0ZiI7CisKKyAgICAgICAgaWYgKGFjY2Vzcyhmb250LCBSX09LKSA8IDAp
IHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IGFyZSBtaXNzaW5nICVzLiBXaXRo
b3V0IHRoaXMsIHNvbWUgbGF5b3V0IHRlc3RzIG1heSBmYWlsLiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vd2lraS9M
YXlvdXRUZXN0c0xpbnV4ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIG1vcmUu
XG4iLCBmb250KTsKKyAgICAgICAgfSBlbHNlIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShm
b250Y2ZnLCAoRmNDaGFyOCAqKSBmb250KSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBmb250KTsKKyAgICAgICAgICAgIGV4aXQoMSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbHNvIGxvYWQgdGhlIGxheW91dC10ZXN0LXNw
ZWNpZmljICJBaGVtIiBmb250LgorICAgIHN0ZDo6c3RyaW5nIGFoZW1QYXRoID0gZHJ0RGlyUGF0
aCArICJBSEVNX19fXy5UVEYiOworICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShmb250
Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihhaGVtUGF0aC5jX3N0cigpKSkp
IHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBh
aGVtUGF0aC5jX3N0cigpKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBpZiAoIUZj
Q29uZmlnU2V0Q3VycmVudChmb250Y2ZnKSkgeworICAgICAgICBmcHV0cygiRmFpbGVkIHRvIHNl
dCB0aGUgZGVmYXVsdCBmb250IGNvbmZpZ3VyYXRpb25cbiIsIHN0ZGVycik7CisgICAgICAgIGV4
aXQoMSk7CisgICAgfQorfQorI2VuZGlmIC8vICFPUyhBTkRST0lEKQorCit2b2lkIHBsYXRmb3Jt
SW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKK3sKKyAgICAvLyBGSVhNRTogSXQncyBiZXR0
ZXIgY2FsbCBndGtfaW5pdCgpIG9ubHkgd2hlbiB3ZSBydW4gcGx1Z2luIHRlc3RzLgorICAgIC8v
IFNlZSBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZ3JvdXAvY2hyb21p
dW0tZGV2L2Jyb3dzZV90aHJlYWQvdGhyZWFkLzYzM2VhMTY3Y2RlMTk2Y2EjCisjaWYgVVNFKEdU
SykKKyAgICBndGtfaW5pdChhcmdjLCBhcmd2KTsKKyNlbmRpZgorCisjaWYgIU9TKEFORFJPSUQp
CisgICAgc2V0dXBGb250Y29uZmlnKCk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzM0Zjg0YjM5
NWE3ZTFmZTI4MWRkZjc0MjlkMWVjNzQ0NzRlYTBkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCisKK2Jvb2wg
Y2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116858</attachid>
            <date>2011-11-28 17:43:41 -0800</date>
            <delta_ts>2011-11-29 09:13:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111128204339.patch</filename>
            <type>text/plain</type>
            <size>27594</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM0ZmM2ZDU4ZmM4M2M0Mzg4MWQ1NzFhNDk5YWNkMzRmZGM2MjczN2IuLjhkYmVjOTQ5OGQ4NDVk
ZjE0OGU3MDMzNmYxNzhjZDJiZDZmMWQ4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgog
CiAgICAgICAgIENyZWF0ZSBza2VsZXRvbiBmcmFtZXdvcmsgZm9yIG5vdGlmaWNhdGlvbnMgc3Vw
cG9ydCBpbiBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA4YjAzZTRhMGNjMTI0
ODhiMjFhY2YxNzAyZWUzOThmMjdhZDBjMzY1Li44ZTU0ZDAzN2NlYzAyZDdjMzI2ZjlmZGExOTgx
YWEwYzgxN2E2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMjA5LDYgKzEy
MDksOSBAQAogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgfV0sCiAgICAg
ICAgICAgICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7CisgICAgICAgICAgICAgICAg
ICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgJ1dURl9VU0VfR1RLPTEn
LAorICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5j
aWVzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVp
bGQvbGludXgvc3lzdGVtLmd5cDpndGsnLAogICAgICAgICAgICAgICAgICAgICBdLApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0OTBmY2MzMGRk
ZjVkOThjM2I4NThlNjg2ZDcwZDkyMmNhOGFmMTcuLjU5OWE3ZDE1OGFjY2YwZDI0MjdjOWYyMDgz
MDI2MTJlMjY2NTE2MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0xMS0yOCAgRmFkeSBTYW11ZWwgIDxmc2Ft
dWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBicm9rZW4gRFJUIGJ1
aWxkIGZvciBBdXJhIExpbnV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERSVCBub3cgYnVpbGRzIGZvciBBdXJhIExpbnV4LiBUaGlzLCBtb3JlIG9yIGxl
c3MsIHNoYXJlcyB0aGUgc2FtZSBjb2RlIGFzIEFuZHJvaWQuCisKKyAgICAgICAgVGhlIGZvbGxv
d2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlOgorCisgICAgICAgICAgMS4gUmVuYW1lZCBUZXN0
U2hlbGxBbmRyb2lkIHRvIFRlc3RTaGVsbExpbnV4LgorICAgICAgICAgIDIuIFN0dWIgY29kZSBt
b3ZlZCBhZGRlZCBpbiBUZXN0U2hlbGxTdHViIHRoYXQgd2lsbCBvbmx5IGNvbXBpbGUgb24gbm9u
LUdUSyBMaW51eCBidWlsZHMuCisgICAgICAgICAgMy4gQ29kZSBjb21tb24gdG8gR3RrLCBBdXJh
LCBhbmQgQW5kcm9pZCBtb3ZlZCB0byBUZXN0U2hlbGxMaW51eC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmtleURvd24p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0
ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTGludXgu
Y3BwOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxH
dGsuY3BwLgorICAgICAgICAoQWxhcm1IYW5kbGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6d2Fp
dFRlc3RGaW5pc2hlZCk6CisgICAgICAgIChzZXR1cEZvbnRjb25maWcpOgorICAgICAgICAocGxh
dGZvcm1Jbml0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxT
dHViLmNwcDogQWRkZWQuCisgICAgICAgIChjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNp
ZXMpOgorICAgICAgICAob3BlblN0YXJ0dXBEaWFsb2cpOgorCiAyMDExLTExLTI4ICBPamFuIFZh
ZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZ3Rlc3Qgbm9ybWFsaXphdGlvbiBp
biB0aGUgdGVzdCByZXN1bHRzIHNlcnZlciBpcyBzb21ldGltZXMgd3JvbmcKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGIxOWJlMjI3MmM1NTVjNzlkMjk5NzE2
MDUyNGFhZjcwY2YyZThmNjguLjQ3NDQyYmYyYTU3YTI3MDZmOTBiYzllMWVkMjc0MDg0ZDg0YmI5
ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMzQsNyAr
MzQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGwuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0U2hlbGwuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsQW5k
cm9pZC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFNoZWxsTWFjLm1tJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxX
aW4uY3BwJywKQEAgLTczLDYgKzczLDExIEBACiAgICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1
Z0luL21haW4uY3BwJywKICAgICAgICAgXSwKICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAg
ICAgICAgICBbJyhPUz09ImxpbnV4IiBhbmQgdG9vbGtpdF91c2VzX2d0ayE9MSkgb3IgT1M9PSJh
bmRyb2lkIicsIHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAnLAorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewogICAgICAgICAg
ICAgICAgICdkcnRfZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJU
aGVtZUNvbnRyb2xEUlRXaW4uY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0V2ZW50U2VuZGVyLmNwcAppbmRleCAyMGQ3N2E3NWEzNWE5MmZkNzg1ZGI5Yjg2ZWJlODYwMTRl
NzA3MTNjLi44ZDU0NmYxNjY4YTZmY2Q4YjIzNWEzNzVjN2E3OGQxOGJlMzVhNzI5IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC01NzYsNyAr
NTc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50RG93bi50eXBlID0gV2Vi
SW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9kaWZpZXJzID0gMDsKICAg
ICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9TKExJTlVYKQorI2lmIE9T
KExJTlVYKSAmJiBVU0UoR1RLKQogICAgIGV2ZW50RG93bi5uYXRpdmVLZXlDb2RlID0gd2Via2l0
X3N1cHBvcnQ6Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2RlLCBuZWVkc1NoaWZ0
S2V5TW9kaWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlYTJkMjQ3ZTM1MzVjN2YzYjdmODI2ZjdjMTFhZjFiOTAwNTg5ZjguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgotCi0jaW5jbHVkZSAi
U2tUeXBlZmFjZS5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oIgotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8
dW5pc3RkLmg+Ci0KLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCi17Ci0gICAgLy8gSWYg
dGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxs
eSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7Ci0gICAgcHV0cygi
I0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJE
b3duVGVzdEVudmlyb25tZW50KCk7Ci0gICAgZXhpdCgwKTsKLX0KLQotdm9pZCBUZXN0U2hlbGw6
OndhaXRUZXN0RmluaXNoZWQoKQotewotICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKLSAg
ICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwotCi0gICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWdu
YWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KLSAgICBzdHJ1Y3Qg
c2lnYWN0aW9uIGFsYXJtQWN0aW9uOwotICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFy
bUhhbmRsZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOwotICAgIGFs
YXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKLQotICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9u
OwotICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOwotICAg
IGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOwotCi0gICAgLy8g
VGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9v
cCB3aGVuIHRoZSBwYWdlCi0gICAgLy8gZmluaXNoZXMgbG9hZGluZy4KLSAgICB3aGlsZSAobV90
ZXN0SXNQZW5kaW5nKQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsK
LQotICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0gICAgYWxhcm0oMCk7Ci0gICAgc2lnYWN0aW9u
KFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOwotfQotCi12b2lkIHBsYXRmb3JtSW5pdChpbnQqIGFy
Z2MsIGNoYXIqKiogYXJndikKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCi19Ci0KLXZv
aWQgb3BlblN0YXJ0dXBEaWFsb2coKQotewotICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
Ci19Ci0KLWJvb2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKLXsKLSAgICAv
LyBOb3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgcmV0dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcAppbmRleCAzM2JkZTlhMGU1MzYx
MThhZmZmMzdiMjJiYTRjMDU2MzhkYTU5NjFmLi40MjI4ZjJhZmQzYjc5YmE5YWQ0ZjM2YmZiZDg4
ZjBkYmJhY2YwY2M5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbEd0ay5jcHAKQEAgLTM2LDE3MSArMzYsNiBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNp
bmNsdWRlIDxzaWduYWwuaD4KIAotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGludCkKLXsKLSAg
ICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5jZSB3ZSBoYXZl
IGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VUXG4iKTsKLSAg
ICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KDApOwotfQot
Ci1zdGF0aWMgdm9pZCBzZXR1cEZvbnRjb25maWcoKQotewotICAgIC8vIFdlIHdpc2ggdG8gbWFr
ZSB0aGUgbGF5b3V0IHRlc3RzIHJlcHJvZHVjYWJsZSB3aXRoIHJlc3BlY3QgdG8gZm9udHMuIFNr
aWEKLSAgICAvLyB1c2VzIGZvbnRjb25maWcgdG8gcmVzb2x2ZSBmb250IGZhbWlseSBuYW1lcyBm
cm9tIFdlYktpdCBpbnRvIGFjdHVhbCBmb250Ci0gICAgLy8gZmlsZXMgZm91bmQgb24gdGhlIGN1
cnJlbnQgc3lzdGVtLiBUaGlzIG1lYW5zIHRoYXQgZm9udHMgdmFyeSBiYXNlZCBvbiB0aGUKLSAg
ICAvLyBzeXN0ZW0gYW5kIGFsc28gb24gdGhlIGZvbnRjb25maWcgY29uZmlndXJhdGlvbi4KLSAg
ICAvLwotICAgIC8vIFRvIGF2b2lkIHRoaXMgd2UgaW5pdGlhbGlzZSBmb250Y29uZmlnIGhlcmUg
YW5kIGluc3RhbGwgYSBjb25maWd1cmF0aW9uCi0gICAgLy8gd2hpY2ggb25seSBrbm93cyBhYm91
dCBhIGZldywgc2VsZWN0LCBmb250cy4KLQotICAgIC8vIFdlIGhhdmUgZm9udGNvbmZpZyBwYXJz
ZSBhIGNvbmZpZyBmaWxlIGZyb20gb3VyIHJlc291cmNlcyBmaWxlLiBUaGlzCi0gICAgLy8gc2V0
cyBhIG51bWJlciBvZiBhbGlhc2VzICgic2FucyItPiJBcmlhbCIgZXRjKSwgYnV0IGRvZXNuJ3Qg
aW5jbHVkZSBhbnkKLSAgICAvLyBmb250IGRpcmVjdG9yaWVzLgotICAgIEZjSW5pdCgpOwotCi0g
ICAgY2hhciBkcnRQYXRoW1BBVEhfTUFYICsgMV07Ci0gICAgaW50IGRydFBhdGhTaXplID0gcmVh
ZGxpbmsoIi9wcm9jL3NlbGYvZXhlIiwgZHJ0UGF0aCwgUEFUSF9NQVgpOwotICAgIGlmIChkcnRQ
YXRoU2l6ZSA8IDAgfHwgZHJ0UGF0aFNpemUgPiBQQVRIX01BWCkgewotICAgICAgICBmcHV0cygi
VW5hYmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUuIiwgc3RkZXJyKTsKLSAgICAgICAgZXhp
dCgxKTsKLSAgICB9Ci0gICAgZHJ0UGF0aFtkcnRQYXRoU2l6ZV0gPSAwOwotICAgIHN0ZDo6c3Ry
aW5nIGRydERpclBhdGgoZHJ0UGF0aCk7Ci0gICAgc2l6ZV90IGxhc3RQYXRoUG9zID0gZHJ0RGly
UGF0aC5yZmluZCgiLyIpOwotICAgIEFTU0VSVChsYXN0UGF0aFBvcyAhPSBzdGQ6OnN0cmluZzo6
bnBvcyk7Ci0gICAgZHJ0RGlyUGF0aC5lcmFzZShsYXN0UGF0aFBvcyArIDEpOwotCi0gICAgRmND
b25maWcqIGZvbnRjZmcgPSBGY0NvbmZpZ0NyZWF0ZSgpOwotICAgIHN0ZDo6c3RyaW5nIGZvbnRj
b25maWdQYXRoID0gZHJ0RGlyUGF0aCArICJmb250cy5jb25mIjsKLSAgICBpZiAoIUZjQ29uZmln
UGFyc2VBbmRMb2FkKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZv
bnRjb25maWdQYXRoLmNfc3RyKCkpLCB0cnVlKSkgewotICAgICAgICBmcHV0cygiRmFpbGVkIHRv
IHBhcnNlIGZvbnRjb25maWcgY29uZmlnIGZpbGVcbiIsIHN0ZGVycik7Ci0gICAgICAgIGV4aXQo
MSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBmb250cyB0aGF0IGZvbnRj
b25maWcgd2lsbCBrbm93IGFib3V0LiBJdAotICAgIC8vIHdpbGwgdHJ5IGl0cyBiZXN0IHRvIG1h
dGNoIGJhc2VkIG9ubHkgb24gdGhlIGZvbnRzIGhlcmUgaW4uIFRoZQotICAgIC8vIHBhdGhzIGFy
ZSB3aGVyZSB0aGVzZSBmb250cyBhcmUgZm91bmQgb24gb3VyIFVidW50dSBib3hlcy4KLSAgICBz
dGF0aWMgY29uc3QgY2hhciAqY29uc3QgZm9udHNbXSA9IHsKLSAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUva29jaGkva29jaGktZ290aGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3No
YXJlL2ZvbnRzL3RydWV0eXBlL2tvY2hpL2tvY2hpLW1pbmNoby50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsLnR0ZiIsCi0gICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxfQm9sZC50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFs
X0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21z
dHRjb3JlZm9udHMvQXJpYWxfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ29taWNfU2Fuc19NUy50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvbWljX1NhbnNfTVNfQm9sZC50
dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0Nv
dXJpZXJfTmV3LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRj
b3JlZm9udHMvQ291cmllcl9OZXdfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0JvbGRfSXRhbGljLnR0ZiIsCi0g
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9O
ZXdfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRj
b3JlZm9udHMvR2VvcmdpYS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9m
b250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfQm9sZF9JdGFsaWMudHRmIiwKLSAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0l0
YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZv
bnRzL0ltcGFjdC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0
Y29yZWZvbnRzL1RyZWJ1Y2hldF9NUy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkLnR0ZiIsCi0gICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TX0JvbGRf
SXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvVHJlYnVjaGV0X01TX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbi50dGYiLAotICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9C
b2xkLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9u
dHMvVGltZXNfTmV3X1JvbWFuX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFuX0l0YWxpYy50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRh
bmEudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9WZXJkYW5hX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9WZXJkYW5hX0JvbGRfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3No
YXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9JdGFsaWMudHRmIiwKLSAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdGhhaS9HYXJ1ZGEudHRmIiwKLSAgICAg
ICAgLy8gVGhlIERlamFWdVNhbnMgZm9udCBpcyB1c2VkIGJ5IHRoZSBjc3MyLjEgdGVzdHMuCi0g
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1kZWphdnUvRGVqYVZ1U2Fucy50
dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMt
Y29yZS9sb2hpdF9oaS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90
dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF90YS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9m
b250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9NdWt0aU5hcnJvdy50dGYiLAotICAg
IH07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUoZm9udHMpOyArK2kpIHsK
LSAgICAgICAgaWYgKGFjY2Vzcyhmb250c1tpXSwgUl9PSykpIHsKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiWW91IGFyZSBtaXNzaW5nICVzLiBUcnkgcmUtcnVubmluZyBidWlsZC9pbnN0
YWxsLWJ1aWxkLWRlcHMuc2guIEFsc28gc2VlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5b3V0VGVzdHNMaW51
eCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHNbaV0pOwotICAgICAgICAgICAg
ZXhpdCgxKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUo
Zm9udGNmZywgKEZjQ2hhcjggKikgZm9udHNbaV0pKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnRzW2ldKTsKLSAgICAgICAgICAg
IGV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXZSBzcGVjaWFsIGNhc2UgdGhl
c2UgZm9udHMgYmVjYXVzZSB0aGV5J3JlIG9ubHkgbmVlZGVkIGluIGEKLSAgICAvLyBmZXcgbGF5
b3V0IHRlc3RzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvcHRpb25hbEZvbnRzW10g
PSB7Ci0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1j
b3JlL2xvaGl0X3BhLnR0ZiIsCi0gICAgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5c2l6ZShvcHRpb25hbEZvbnRzKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZvbnQg
PSBvcHRpb25hbEZvbnRzW2ldOwotCi0gICAgICAgIC8vIFRoaXMgZm9udCBjaGFuZ2VkIHBhdGhz
IGFjcm9zcyBVYnVudHUgcmVsZWFzZXMsIHNvIHRyeSBjaGVja2luZyBpbiBib3RoIGxvY2F0aW9u
cy4KLSAgICAgICAgaWYgKCFzdHJjbXAoZm9udCwgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
dHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfcGEudHRmIikKLSAgICAgICAgICAgICYmIGFjY2Vz
cyhmb250LCBSX09LKSA8IDApCi0gICAgICAgICAgICBmb250ID0gIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvdHRmLXB1bmphYmktZm9udHMvbG9oaXRfcGEudHRmIjsKLQotICAgICAgICBpZiAo
YWNjZXNzKGZvbnQsIFJfT0spIDwgMCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJZ
b3UgYXJlIG1pc3NpbmcgJXMuIFdpdGhvdXQgdGhpcywgc29tZSBsYXlvdXQgdGVzdHMgbWF5IGZh
aWwuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXggIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmb3IgbW9yZS5cbiIsIGZvbnQpOwotICAgICAgICB9IGVsc2UgaWYgKCFG
Y0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZvbnQpKSB7Ci0gICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnQp
OwotICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFsc28g
bG9hZCB0aGUgbGF5b3V0LXRlc3Qtc3BlY2lmaWMgIkFoZW0iIGZvbnQuCi0gICAgc3RkOjpzdHJp
bmcgYWhlbVBhdGggPSBkcnREaXJQYXRoICsgIkFIRU1fX19fLlRURiI7Ci0gICAgaWYgKCFGY0Nv
bmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFy
OCo+KGFoZW1QYXRoLmNfc3RyKCkpKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBsb2FkIGZvbnQgJXNcbiIsIGFoZW1QYXRoLmNfc3RyKCkpOwotICAgICAgICBleGl0KDEp
OwotICAgIH0KLQotICAgIGlmICghRmNDb25maWdTZXRDdXJyZW50KGZvbnRjZmcpKSB7Ci0gICAg
ICAgIGZwdXRzKCJGYWlsZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGZvbnQgY29uZmlndXJhdGlvblxu
Iiwgc3RkZXJyKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci19Ci0KLXZvaWQgVGVzdFNoZWxs
Ojp3YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7Ci0g
ICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQotICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2ln
bmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCi0gICAgc3RydWN0
IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxh
cm1IYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKLSAgICBh
bGFybUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlv
bjsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKLSAg
ICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKLQotICAgIC8v
IFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxv
b3Agd2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCi0gICAgd2hpbGUgKG1f
dGVzdElzUGVuZGluZykKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7
Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgotICAgIGFsYXJtKDApOwotICAgIHNpZ2FjdGlv
bihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0KLQotdm9pZCBwbGF0Zm9ybUluaXQoaW50KiBh
cmdjLCBjaGFyKioqIGFyZ3YpCi17Ci0gICAgLy8gRklYTUU6IEl0J3MgYmV0dGVyIGNhbGwgZ3Rr
X2luaXQoKSBvbmx5IHdoZW4gd2UgcnVuIHBsdWdpbiB0ZXN0cy4KLSAgICAvLyBTZWUgaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2dyb3VwL2Nocm9taXVtLWRldi9icm93
c2VfdGhyZWFkL3RocmVhZC82MzNlYTE2N2NkZTE5NmNhIwotICAgIGd0a19pbml0KGFyZ2MsIGFy
Z3YpOwotCi0gICAgc2V0dXBGb250Y29uZmlnKCk7Ci19CiAKIHZvaWQgb3BlblN0YXJ0dXBEaWFs
b2coKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsTGludXguY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTGlu
dXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgyZGI2OWEyZmY5YWQ4ZGMzMTQxZDc3ZTBlMDA2Y2FmZDEwYzZj
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGxMaW51eC5jcHAKQEAgLTAsMCArMSwyMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGVzdFNoZWxsLmgiCisKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCisjaW5jbHVkZSAi
V2ViVmlldy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisK
KyNpZiAhT1MoQU5EUk9JRCkKKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KKyNl
bmRpZgorCisjaWYgVVNFKEdUSykKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjZW5kaWYKKyNpbmNs
dWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworc3RhdGljIHZvaWQgQWxhcm1I
YW5kbGVyKGludCkKK3sKKyAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJv
Y2VzcyBzaW5jZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgorICAgIHB1dHMoIlxuI1RFU1Rf
VElNRURfT1VUXG4iKTsKKyAgICBwdXRzKCIjRU9GXG4iKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsK
KyAgICBleGl0KDApOworfQorCit2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCit7
CisgICAgQVNTRVJUKCFtX3Rlc3RJc1BlbmRpbmcpOworICAgIG1fdGVzdElzUGVuZGluZyA9IHRy
dWU7CisKKyAgICAvLyBJbnN0YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBr
aWxsIHVzIGlmIHdlIHRpbWUgb3V0LgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247
CisgICAgYWxhcm1BY3Rpb24uc2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKKyAgICBzaWdlbXB0
eXNldCgmYWxhcm1BY3Rpb24uc2FfbWFzayk7CisgICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAw
OworCisgICAgc3RydWN0IHNpZ2FjdGlvbiBvbGRBY3Rpb247CisgICAgc2lnYWN0aW9uKFNJR0FM
Uk0sICZhbGFybUFjdGlvbiwgJm9sZEFjdGlvbik7CisgICAgYWxhcm0obGF5b3V0VGVzdFRpbWVv
dXRGb3JXYXRjaERvZygpIC8gMTAwMCk7CisKKyAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBv
c3QgYSBxdWl0IG1lc3NhZ2UgdG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKKyAgICAv
LyBmaW5pc2hlcyBsb2FkaW5nLgorICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCisgICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworCisgICAgLy8gUmVtb3ZlIHRoZSBh
bGFybS4KKyAgICBhbGFybSgwKTsKKyAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwg
MCk7Cit9CisKKyNpZiAhT1MoQU5EUk9JRCkKK3N0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygp
Cit7CisgICAgLy8gV2Ugd2lzaCB0byBtYWtlIHRoZSBsYXlvdXQgdGVzdHMgcmVwcm9kdWNhYmxl
IHdpdGggcmVzcGVjdCB0byBmb250cy4gU2tpYQorICAgIC8vIHVzZXMgZm9udGNvbmZpZyB0byBy
ZXNvbHZlIGZvbnQgZmFtaWx5IG5hbWVzIGZyb20gV2ViS2l0IGludG8gYWN0dWFsIGZvbnQKKyAg
ICAvLyBmaWxlcyBmb3VuZCBvbiB0aGUgY3VycmVudCBzeXN0ZW0uIFRoaXMgbWVhbnMgdGhhdCBm
b250cyB2YXJ5IGJhc2VkIG9uIHRoZQorICAgIC8vIHN5c3RlbSBhbmQgYWxzbyBvbiB0aGUgZm9u
dGNvbmZpZyBjb25maWd1cmF0aW9uLgorICAgIC8vCisgICAgLy8gVG8gYXZvaWQgdGhpcyB3ZSBp
bml0aWFsaXNlIGZvbnRjb25maWcgaGVyZSBhbmQgaW5zdGFsbCBhIGNvbmZpZ3VyYXRpb24KKyAg
ICAvLyB3aGljaCBvbmx5IGtub3dzIGFib3V0IGEgZmV3LCBzZWxlY3QsIGZvbnRzLgorCisgICAg
Ly8gV2UgaGF2ZSBmb250Y29uZmlnIHBhcnNlIGEgY29uZmlnIGZpbGUgZnJvbSBvdXIgcmVzb3Vy
Y2VzIGZpbGUuIFRoaXMKKyAgICAvLyBzZXRzIGEgbnVtYmVyIG9mIGFsaWFzZXMgKCJzYW5zIi0+
IkFyaWFsIiBldGMpLCBidXQgZG9lc24ndCBpbmNsdWRlIGFueQorICAgIC8vIGZvbnQgZGlyZWN0
b3JpZXMuCisgICAgRmNJbml0KCk7CisKKyAgICBjaGFyIGRydFBhdGhbUEFUSF9NQVggKyAxXTsK
KyAgICBpbnQgZHJ0UGF0aFNpemUgPSByZWFkbGluaygiL3Byb2Mvc2VsZi9leGUiLCBkcnRQYXRo
LCBQQVRIX01BWCk7CisgICAgaWYgKGRydFBhdGhTaXplIDwgMCB8fCBkcnRQYXRoU2l6ZSA+IFBB
VEhfTUFYKSB7CisgICAgICAgIGZwdXRzKCJVbmFibGUgdG8gcmVzb2x2ZSAvcHJvYy9zZWxmL2V4
ZS4iLCBzdGRlcnIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICBkcnRQYXRoW2RydFBh
dGhTaXplXSA9IDA7CisgICAgc3RkOjpzdHJpbmcgZHJ0RGlyUGF0aChkcnRQYXRoKTsKKyAgICBz
aXplX3QgbGFzdFBhdGhQb3MgPSBkcnREaXJQYXRoLnJmaW5kKCIvIik7CisgICAgQVNTRVJUKGxh
c3RQYXRoUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKKyAgICBkcnREaXJQYXRoLmVyYXNlKGxh
c3RQYXRoUG9zICsgMSk7CisKKyAgICBGY0NvbmZpZyogZm9udGNmZyA9IEZjQ29uZmlnQ3JlYXRl
KCk7CisgICAgc3RkOjpzdHJpbmcgZm9udGNvbmZpZ1BhdGggPSBkcnREaXJQYXRoICsgImZvbnRz
LmNvbmYiOworICAgIGlmICghRmNDb25maWdQYXJzZUFuZExvYWQoZm9udGNmZywgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4oZm9udGNvbmZpZ1BhdGguY19zdHIoKSksIHRydWUpKSB7
CisgICAgICAgIGZwdXRzKCJGYWlsZWQgdG8gcGFyc2UgZm9udGNvbmZpZyBjb25maWcgZmlsZVxu
Iiwgc3RkZXJyKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIHRo
ZSBsaXN0IG9mIGZvbnRzIHRoYXQgZm9udGNvbmZpZyB3aWxsIGtub3cgYWJvdXQuIEl0CisgICAg
Ly8gd2lsbCB0cnkgaXRzIGJlc3QgdG8gbWF0Y2ggYmFzZWQgb25seSBvbiB0aGUgZm9udHMgaGVy
ZSBpbi4gVGhlCisgICAgLy8gcGF0aHMgYXJlIHdoZXJlIHRoZXNlIGZvbnRzIGFyZSBmb3VuZCBv
biBvdXIgVWJ1bnR1IGJveGVzLgorICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBmb250c1td
ID0geworICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9rb2NoaS9rb2NoaS1nb3Ro
aWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUva29jaGkva29jaGkt
bWluY2hvLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvQXJpYWwudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0
dGNvcmVmb250cy9BcmlhbF9Cb2xkLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxfQm9sZF9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbF9JdGFsaWMudHRmIiwK
KyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db21pY19T
YW5zX01TLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvQ29taWNfU2Fuc19NU19Cb2xkLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9OZXcudHRmIiwKKyAgICAgICAgIi91c3Iv
c2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ld19Cb2xkLnR0ZiIs
CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmll
cl9OZXdfQm9sZF9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ld19JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Iv
c2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhLnR0ZiIsCisgICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9Cb2xkLnR0
ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2Vv
cmdpYV9Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWFfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvSW1wYWN0LnR0ZiIsCisgICAgICAgICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TLnR0ZiIsCisg
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0
X01TX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9UcmVidWNoZXRfTVNfQm9sZF9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hh
cmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVNfSXRhbGljLnR0ZiIs
CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNf
TmV3X1JvbWFuLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRj
b3JlZm9udHMvVGltZXNfTmV3X1JvbWFuX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW5fQm9sZF9JdGFsaWMu
dHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9U
aW1lc19OZXdfUm9tYW5fSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYS50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9m
b250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfQm9sZC50dGYiLAorICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfQm9sZF9JdGFs
aWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9WZXJkYW5hX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS90aGFpL0dhcnVkYS50dGYiLAorICAgICAgICAvLyBUaGUgRGVqYVZ1U2FucyBmb250IGlzIHVz
ZWQgYnkgdGhlIGNzczIuMSB0ZXN0cy4KKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvdHRmLWRlamF2dS9EZWphVnVTYW5zLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X2hpLnR0ZiIsCisgICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X3RhLnR0
ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1j
b3JlL011a3RpTmFycm93LnR0ZiIsCisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFycmF5c2l6ZShmb250cyk7ICsraSkgeworICAgICAgICBpZiAoYWNjZXNzKGZvbnRzW2ldLCBS
X09LKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJZb3UgYXJlIG1pc3NpbmcgJXMu
IFRyeSByZS1ydW5uaW5nIGJ1aWxkL2luc3RhbGwtYnVpbGQtZGVwcy5zaC4gQWxzbyBzZWUgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hy
b21pdW0vd2lraS9MYXlvdXRUZXN0c0xpbnV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb250c1tpXSk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgICAgIGlm
ICghRmNDb25maWdBcHBGb250QWRkRmlsZShmb250Y2ZnLCAoRmNDaGFyOCAqKSBmb250c1tpXSkp
IHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgZm9udCAlc1xu
IiwgZm9udHNbaV0pOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFdlIHNwZWNpYWwgY2FzZSB0aGVzZSBmb250cyBiZWNhdXNlIHRoZXkncmUgb25seSBu
ZWVkZWQgaW4gYQorICAgIC8vIGZldyBsYXlvdXQgdGVzdHMuCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IG9wdGlvbmFsRm9udHNbXSA9IHsKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfcGEudHRmIiwKKyAgICB9OworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG9wdGlvbmFsRm9udHMpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgY2hhciogZm9udCA9IG9wdGlvbmFsRm9udHNbaV07CisKKyAgICAgICAg
Ly8gVGhpcyBmb250IGNoYW5nZWQgcGF0aHMgYWNyb3NzIFVidW50dSByZWxlYXNlcywgc28gdHJ5
IGNoZWNraW5nIGluIGJvdGggbG9jYXRpb25zLgorICAgICAgICBpZiAoIXN0cmNtcChmb250LCAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF9wYS50
dGYiKQorICAgICAgICAgICAgJiYgYWNjZXNzKGZvbnQsIFJfT0spIDwgMCkKKyAgICAgICAgICAg
IGZvbnQgPSAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtcHVuamFiaS1mb250cy9sb2hp
dF9wYS50dGYiOworCisgICAgICAgIGlmIChhY2Nlc3MoZm9udCwgUl9PSykgPCAwKSB7CisgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIllvdSBhcmUgbWlzc2luZyAlcy4gV2l0aG91dCB0aGlz
LCBzb21lIGxheW91dCB0ZXN0cyBtYXkgZmFpbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJTZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5b3V0VGVz
dHNMaW51eCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBtb3JlLlxuIiwgZm9u
dCk7CisgICAgICAgIH0gZWxzZSBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9udGNmZywg
KEZjQ2hhcjggKikgZm9udCkpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk
IHRvIGxvYWQgZm9udCAlc1xuIiwgZm9udCk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gQWxzbyBsb2FkIHRoZSBsYXlvdXQtdGVzdC1zcGVjaWZpYyAi
QWhlbSIgZm9udC4KKyAgICBzdGQ6OnN0cmluZyBhaGVtUGF0aCA9IGRydERpclBhdGggKyAiQUhF
TV9fX18uVFRGIjsKKyAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9udGNmZywgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4oYWhlbVBhdGguY19zdHIoKSkpKSB7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgZm9udCAlc1xuIiwgYWhlbVBhdGgu
Y19zdHIoKSk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorCisgICAgaWYgKCFGY0NvbmZpZ1Nl
dEN1cnJlbnQoZm9udGNmZykpIHsKKyAgICAgICAgZnB1dHMoIkZhaWxlZCB0byBzZXQgdGhlIGRl
ZmF1bHQgZm9udCBjb25maWd1cmF0aW9uXG4iLCBzdGRlcnIpOworICAgICAgICBleGl0KDEpOwor
ICAgIH0KK30KKyNlbmRpZiAvLyAhT1MoQU5EUk9JRCkKKwordm9pZCBwbGF0Zm9ybUluaXQoaW50
KiBhcmdjLCBjaGFyKioqIGFyZ3YpCit7CisgICAgLy8gRklYTUU6IEl0J3MgYmV0dGVyIGNhbGwg
Z3RrX2luaXQoKSBvbmx5IHdoZW4gd2UgcnVuIHBsdWdpbiB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cDovL2dyb3Vwcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2dyb3VwL2Nocm9taXVtLWRldi9i
cm93c2VfdGhyZWFkL3RocmVhZC82MzNlYTE2N2NkZTE5NmNhIworI2lmIFVTRShHVEspCisgICAg
Z3RrX2luaXQoYXJnYywgYXJndik7CisjZW5kaWYKKworI2lmICFPUyhBTkRST0lEKQorICAgIHNl
dHVwRm9udGNvbmZpZygpOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMzNGY4NGIzOTVhN2UxZmUy
ODFkZGY3NDI5ZDFlYzc0NDc0ZWEwZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCitib29sIGNoZWNrTGF5
b3V0VGVzdFN5c3RlbURlcGVuZGVuY2llcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgb3BlblN0YXJ0dXBEaWFsb2coKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116981</attachid>
            <date>2011-11-29 09:13:33 -0800</date>
            <delta_ts>2011-11-29 09:21:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72667-20111129121330.patch</filename>
            <type>text/plain</type>
            <size>2077</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFmOWQ4NjU2ZDI2ZmJiNzY5MDIyN2IyYzUzMmRjNjVk
NGY1ZDU1MC4uYjQxZDc3ZDgwYWMzMTIwNzM2OTZkOTAzMjA3ZDRlNDkyMmI5MzFmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDExLTExLTI5ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gU2V0IFJlc3VsdCBCZWZvcmUgRWFybHkgRXhpdCBmb3IgRml4ZWQg
TGF5b3V0IE1ldGhvZHMgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVG9ueSBDaGFuZy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjplbmFi
bGVGaXhlZExheW91dE1vZGUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZp
eGVkTGF5b3V0U2l6ZSk6CisKIDIwMTEtMTEtMjkgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1
c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGRlYnVnLXNobGliIGJ1aWxkIHdp
dGhvdXQgd2Via2l0MgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDMxODFhNTJlMWVlNDg3YWY5YjZlYjRkN2Vk
YWRmNDUyOWIyZmJlNDguLmFiNTYyNjI1ZDE1MTc4ZGE3NWUzN2QwNDg5NzEyZDdkZGVmZWY4MzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKQEAgLTIwMjIsMjEgKzIwMjIsMjEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoY29u
c3QgQ3AKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZW5hYmxlRml4ZWRMYXlvdXRNb2Rl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAgMSB8
fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBlbmFi
bGVGaXhlZExheW91dCA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsKICAgICBtX3NoZWxsLT53
ZWJWaWV3KCktPmVuYWJsZUZpeGVkTGF5b3V0TW9kZShlbmFibGVGaXhlZExheW91dCk7Ci0gICAg
cmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZp
eGVkTGF5b3V0U2l6ZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQogeworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpIDwgIDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0u
aXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGludCB3aWR0aCA9IGFyZ3VtZW50c1sw
XS50b0ludDMyKCk7CiAgICAgaW50IGhlaWdodCA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CiAg
ICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXRGaXhlZExheW91dFNpemUoV2ViU2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116984</attachid>
            <date>2011-11-29 09:21:36 -0800</date>
            <delta_ts>2011-11-29 09:22:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72667-20111129122135.patch</filename>
            <type>text/plain</type>
            <size>27611</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA4OTI5YzQwZjcxYTZkNDViOTI3NTE4NTUxMmMxODZjZmMyNTBiYmEuLjc1YWE0NWU3Y2UzOTNk
OWE3NWJkYzBiNGYxZjc5ZTNlZmRhNmIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMjkgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisKIDIwMTEtMTEtMjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29n
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IFByZWZlcmVuY2VzIGludG8g
UHJlZmVyZW5jZXMgYW5kIENhcGFiaWxpdGllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCBmZGYwNDJhYTA4ZTY0OTM4ZTEzMTQyZWZjOTVhMzk5Y2IwNzllY2RjLi5mNGI0MmI4OTk5
MTA5NGJjZGNmZWVlNTg2NjUzMWYzOGQ3NzQ1ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0xMjExLDYgKzEyMTEsOSBAQAogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAg
ICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7
CisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAgICAgICAgICAg
ICAgJ1dURl9VU0VfR1RLPTEnLAorICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvYnVpbGQvbGludXgvc3lzdGVtLmd5cDpndGsnLAogICAgICAgICAgICAg
ICAgICAgICBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDZiMTcwOTI4ZjZhZjFhMThkYTM2ZTAyMzRmNWZkOWZlNDA3ZDFmMmMuLmQ4ODBhNzAy
MmEzM2EwZjA4MmNmOWI1YmQ1MjUwMzJiMGUzMDY0NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0xMS0yOSAg
RmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IEZpeCBicm9rZW4gRFJUIGJ1aWxkIGZvciBBdXJhIExpbnV4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY2NworCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgRFJUIG5vdyBidWlsZHMgZm9yIEF1cmEgTGludXguIFRo
aXMsIG1vcmUgb3IgbGVzcywgc2hhcmVzIHRoZSBzYW1lIGNvZGUgYXMgQW5kcm9pZC4KKworICAg
ICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGU6CisKKyAgICAgICAgICAx
LiBSZW5hbWVkIFRlc3RTaGVsbEFuZHJvaWQgdG8gVGVzdFNoZWxsTGludXguCisgICAgICAgICAg
Mi4gU3R1YiBjb2RlIG1vdmVkIGFkZGVkIGluIFRlc3RTaGVsbFN0dWIgdGhhdCB3aWxsIG9ubHkg
Y29tcGlsZSBvbiBub24tR1RLIExpbnV4IGJ1aWxkcy4KKyAgICAgICAgICAzLiBDb2RlIGNvbW1v
biB0byBHdGssIEF1cmEsIGFuZCBBbmRyb2lkIG1vdmVkIHRvIFRlc3RTaGVsbExpbnV4LgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVudFNl
bmRlcjo6a2V5RG93bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsQW5kcm9pZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxMaW51eC5jcHA6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbEd0ay5jcHAuCisgICAgICAgIChBbGFybUhhbmRsZXIpOgorICAgICAgICAo
VGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKToKKyAgICAgICAgKHNldHVwRm9udGNvbmZpZyk6
CisgICAgICAgIChwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbFN0dWIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNoZWNrTGF5b3V0VGVzdFN5
c3RlbURlcGVuZGVuY2llcyk6CisgICAgICAgIChvcGVuU3RhcnR1cERpYWxvZyk6CisKIDIwMTEt
MTEtMjkgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAg
ICAgICAgIFtRdF0gUmVtb3ZlIHVzZSBvZiBpbnRlcm5hbCBoZWFkZXJzIGluIHRoZSBNaW5pQnJv
d3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggYjE5YmUy
MjcyYzU1NWM3OWQyOTk3MTYwNTI0YWFmNzBjZjJlOGY2OC4uNDc0NDJiZjJhNTdhMjcwNmY5MGJj
OWUxZWQyNzQwODRkODRiYjllYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdE5hdmln
YXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbC5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNo
ZWxsTGludXguY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0nLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAnLApAQCAtNzMsNiArNzMsMTEgQEAKICAgICAgICAgICAg
ICdUZXN0TmV0c2NhcGVQbHVnSW4vbWFpbi5jcHAnLAogICAgICAgICBdLAogICAgICAgICAnY29u
ZGl0aW9ucyc6IFsKKyAgICAgICAgICAgIFsnKE9TPT0ibGludXgiIGFuZCB0b29sa2l0X3VzZXNf
Z3RrIT0xKSBvciBPUz09ImFuZHJvaWQiJywgeworICAgICAgICAgICAgICAgICdkcnRfZmlsZXMn
OiBbCisgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCcsCisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgWydPUz09Indp
biInLCB7CiAgICAgICAgICAgICAgICAgJ2RydF9maWxlcyc6IFsKICAgICAgICAgICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAnLApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCmluZGV4IDIwZDc3YTc1YTM1YTkyZmQ3
ODVkYjliODZlYmU4NjAxNGU3MDcxM2MuLjhkNTQ2ZjE2NjhhNmZjZDhiMjM1YTM3NWM3YTc4ZDE4
YmUzNWE3MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgZXZl
bnREb3duLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOwogICAgIGV2ZW50RG93bi5t
b2RpZmllcnMgPSAwOwogICAgIGV2ZW50RG93bi53aW5kb3dzS2V5Q29kZSA9IGNvZGU7Ci0jaWYg
T1MoTElOVVgpCisjaWYgT1MoTElOVVgpICYmIFVTRShHVEspCiAgICAgZXZlbnREb3duLm5hdGl2
ZUtleUNvZGUgPSB3ZWJraXRfc3VwcG9ydDo6TmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2Rl
KGNvZGUsIG5lZWRzU2hpZnRLZXlNb2RpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsQW5kcm9pZC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmVhMmQyNDdlMzUzNWM3ZjNiN2Y4MjZmN2MxMWFmMWI5MDA1ODlm
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdFNoZWxs
LmgiCi0KLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0KLSNpbmNsdWRlIDxzaWdu
YWwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotc3RhdGljIHZvaWQgQWxhcm1IYW5kbGVyKGlu
dCkKLXsKLSAgICAvLyBJZiB0aGUgYWxhcm0gYWxhcm1lZCwga2lsbCB0aGUgcHJvY2VzcyBzaW5j
ZSB3ZSBoYXZlIGEgcmVhbGx5IGJhZCBoYW5nLgotICAgIHB1dHMoIlxuI1RFU1RfVElNRURfT1VU
XG4iKTsKLSAgICBwdXRzKCIjRU9GXG4iKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICB3ZWJr
aXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsKLSAgICBleGl0KDApOwotfQot
Ci12b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rl
c3RJc1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0
YWxsIGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUg
b3V0LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24u
c2FfaGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24u
c2FfbWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNp
Z2FjdGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwg
Jm9sZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8g
MTAwMCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2Ug
dG8gYnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5n
LgotICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5NZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgw
KTsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KLXZvaWQgcGxh
dGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQotewotICAgIC8vIE5vdGhpbmcgdG8g
ZG8gaGVyZS4KLX0KLQotdm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCi17Ci0gICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KLX0KLQotYm9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRl
bmNpZXMoKQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0
ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCmlu
ZGV4IDMzYmRlOWEwZTUzNjExOGFmZmYzN2IyMmJhNGMwNTYzOGRhNTk2MWYuLjQyMjhmMmFmZDNi
NzliYTlhZDRmMzZiZmJkODhmMGRiYmFjZjBjYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcApAQCAtMzYsMTcxICszNiw2IEBACiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogCi1zdGF0aWMgdm9pZCBBbGFybUhh
bmRsZXIoaW50KQotewotICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9j
ZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCi0gICAgcHV0cygiXG4jVEVTVF9U
SU1FRF9PVVRcbiIpOwotICAgIHB1dHMoIiNFT0ZcbiIpOwotICAgIGZmbHVzaChzdGRvdXQpOwot
ICAgIGV4aXQoMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldHVwRm9udGNvbmZpZygpCi17Ci0gICAg
Ly8gV2Ugd2lzaCB0byBtYWtlIHRoZSBsYXlvdXQgdGVzdHMgcmVwcm9kdWNhYmxlIHdpdGggcmVz
cGVjdCB0byBmb250cy4gU2tpYQotICAgIC8vIHVzZXMgZm9udGNvbmZpZyB0byByZXNvbHZlIGZv
bnQgZmFtaWx5IG5hbWVzIGZyb20gV2ViS2l0IGludG8gYWN0dWFsIGZvbnQKLSAgICAvLyBmaWxl
cyBmb3VuZCBvbiB0aGUgY3VycmVudCBzeXN0ZW0uIFRoaXMgbWVhbnMgdGhhdCBmb250cyB2YXJ5
IGJhc2VkIG9uIHRoZQotICAgIC8vIHN5c3RlbSBhbmQgYWxzbyBvbiB0aGUgZm9udGNvbmZpZyBj
b25maWd1cmF0aW9uLgotICAgIC8vCi0gICAgLy8gVG8gYXZvaWQgdGhpcyB3ZSBpbml0aWFsaXNl
IGZvbnRjb25maWcgaGVyZSBhbmQgaW5zdGFsbCBhIGNvbmZpZ3VyYXRpb24KLSAgICAvLyB3aGlj
aCBvbmx5IGtub3dzIGFib3V0IGEgZmV3LCBzZWxlY3QsIGZvbnRzLgotCi0gICAgLy8gV2UgaGF2
ZSBmb250Y29uZmlnIHBhcnNlIGEgY29uZmlnIGZpbGUgZnJvbSBvdXIgcmVzb3VyY2VzIGZpbGUu
IFRoaXMKLSAgICAvLyBzZXRzIGEgbnVtYmVyIG9mIGFsaWFzZXMgKCJzYW5zIi0+IkFyaWFsIiBl
dGMpLCBidXQgZG9lc24ndCBpbmNsdWRlIGFueQotICAgIC8vIGZvbnQgZGlyZWN0b3JpZXMuCi0g
ICAgRmNJbml0KCk7Ci0KLSAgICBjaGFyIGRydFBhdGhbUEFUSF9NQVggKyAxXTsKLSAgICBpbnQg
ZHJ0UGF0aFNpemUgPSByZWFkbGluaygiL3Byb2Mvc2VsZi9leGUiLCBkcnRQYXRoLCBQQVRIX01B
WCk7Ci0gICAgaWYgKGRydFBhdGhTaXplIDwgMCB8fCBkcnRQYXRoU2l6ZSA+IFBBVEhfTUFYKSB7
Ci0gICAgICAgIGZwdXRzKCJVbmFibGUgdG8gcmVzb2x2ZSAvcHJvYy9zZWxmL2V4ZS4iLCBzdGRl
cnIpOwotICAgICAgICBleGl0KDEpOwotICAgIH0KLSAgICBkcnRQYXRoW2RydFBhdGhTaXplXSA9
IDA7Ci0gICAgc3RkOjpzdHJpbmcgZHJ0RGlyUGF0aChkcnRQYXRoKTsKLSAgICBzaXplX3QgbGFz
dFBhdGhQb3MgPSBkcnREaXJQYXRoLnJmaW5kKCIvIik7Ci0gICAgQVNTRVJUKGxhc3RQYXRoUG9z
ICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKLSAgICBkcnREaXJQYXRoLmVyYXNlKGxhc3RQYXRoUG9z
ICsgMSk7Ci0KLSAgICBGY0NvbmZpZyogZm9udGNmZyA9IEZjQ29uZmlnQ3JlYXRlKCk7Ci0gICAg
c3RkOjpzdHJpbmcgZm9udGNvbmZpZ1BhdGggPSBkcnREaXJQYXRoICsgImZvbnRzLmNvbmYiOwot
ICAgIGlmICghRmNDb25maWdQYXJzZUFuZExvYWQoZm9udGNmZywgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBGY0NoYXI4Kj4oZm9udGNvbmZpZ1BhdGguY19zdHIoKSksIHRydWUpKSB7Ci0gICAgICAg
IGZwdXRzKCJGYWlsZWQgdG8gcGFyc2UgZm9udGNvbmZpZyBjb25maWcgZmlsZVxuIiwgc3RkZXJy
KTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGlzIHRoZSBsaXN0IG9m
IGZvbnRzIHRoYXQgZm9udGNvbmZpZyB3aWxsIGtub3cgYWJvdXQuIEl0Ci0gICAgLy8gd2lsbCB0
cnkgaXRzIGJlc3QgdG8gbWF0Y2ggYmFzZWQgb25seSBvbiB0aGUgZm9udHMgaGVyZSBpbi4gVGhl
Ci0gICAgLy8gcGF0aHMgYXJlIHdoZXJlIHRoZXNlIGZvbnRzIGFyZSBmb3VuZCBvbiBvdXIgVWJ1
bnR1IGJveGVzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBmb250c1tdID0gewotICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9rb2NoaS9rb2NoaS1nb3RoaWMudHRmIiwK
LSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUva29jaGkva29jaGktbWluY2hvLnR0
ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJp
YWwudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9BcmlhbF9Cb2xkLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21z
dHRjb3JlZm9udHMvQXJpYWxfQm9sZF9JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbF9JdGFsaWMudHRmIiwKLSAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db21pY19TYW5zX01TLnR0
ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ29t
aWNfU2Fuc19NU19Cb2xkLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L21zdHRjb3JlZm9udHMvQ291cmllcl9OZXcudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ld19Cb2xkLnR0ZiIsCi0gICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9OZXdfQm9s
ZF9JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9Db3VyaWVyX05ld19JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhLnR0ZiIsCi0gICAgICAgICIvdXNyL3No
YXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9Cb2xkLnR0ZiIsCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9Cb2xk
X0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL0dlb3JnaWFfSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvSW1wYWN0LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2Zv
bnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TLnR0ZiIsCi0gICAgICAgICIv
dXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TX0JvbGQu
dHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9U
cmVidWNoZXRfTVNfQm9sZF9JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVNfSXRhbGljLnR0ZiIsCi0gICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFu
LnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMv
VGltZXNfTmV3X1JvbWFuX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1
ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW5fQm9sZF9JdGFsaWMudHRmIiwKLSAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdf
Um9tYW5fSXRhbGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21z
dHRjb3JlZm9udHMvVmVyZGFuYS50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFy
ZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfQm9sZF9JdGFsaWMudHRmIiwK
LSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5h
X0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90aGFpL0dh
cnVkYS50dGYiLAotICAgICAgICAvLyBUaGUgRGVqYVZ1U2FucyBmb250IGlzIHVzZWQgYnkgdGhl
IGNzczIuMSB0ZXN0cy4KLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWRl
amF2dS9EZWphVnVTYW5zLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X2hpLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X3RhLnR0ZiIsCi0gICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL011a3Rp
TmFycm93LnR0ZiIsCi0gICAgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6
ZShmb250cyk7ICsraSkgewotICAgICAgICBpZiAoYWNjZXNzKGZvbnRzW2ldLCBSX09LKSkgewot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJZb3UgYXJlIG1pc3NpbmcgJXMuIFRyeSByZS1y
dW5uaW5nIGJ1aWxkL2luc3RhbGwtYnVpbGQtZGVwcy5zaC4gQWxzbyBzZWUgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vd2lr
aS9MYXlvdXRUZXN0c0xpbnV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250c1tp
XSk7Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghRmNDb25m
aWdBcHBGb250QWRkRmlsZShmb250Y2ZnLCAoRmNDaGFyOCAqKSBmb250c1tpXSkpIHsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgZm9udCAlc1xuIiwgZm9udHNb
aV0pOwotICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFdl
IHNwZWNpYWwgY2FzZSB0aGVzZSBmb250cyBiZWNhdXNlIHRoZXkncmUgb25seSBuZWVkZWQgaW4g
YQotICAgIC8vIGZldyBsYXlvdXQgdGVzdHMuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IG9wdGlvbmFsRm9udHNbXSA9IHsKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
dHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfcGEudHRmIiwKLSAgICB9OwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG9wdGlvbmFsRm9udHMpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgY2hhciogZm9udCA9IG9wdGlvbmFsRm9udHNbaV07Ci0KLSAgICAgICAgLy8gVGhpcyBm
b250IGNoYW5nZWQgcGF0aHMgYWNyb3NzIFVidW50dSByZWxlYXNlcywgc28gdHJ5IGNoZWNraW5n
IGluIGJvdGggbG9jYXRpb25zLgotICAgICAgICBpZiAoIXN0cmNtcChmb250LCAiL3Vzci9zaGFy
ZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF9wYS50dGYiKQotICAg
ICAgICAgICAgJiYgYWNjZXNzKGZvbnQsIFJfT0spIDwgMCkKLSAgICAgICAgICAgIGZvbnQgPSAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtcHVuamFiaS1mb250cy9sb2hpdF9wYS50dGYi
OwotCi0gICAgICAgIGlmIChhY2Nlc3MoZm9udCwgUl9PSykgPCAwKSB7Ci0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIllvdSBhcmUgbWlzc2luZyAlcy4gV2l0aG91dCB0aGlzLCBzb21lIGxh
eW91dCB0ZXN0cyBtYXkgZmFpbC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWUg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5b3V0VGVzdHNMaW51eCAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBtb3JlLlxuIiwgZm9udCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9udGNmZywgKEZjQ2hhcjgg
KikgZm9udCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQg
Zm9udCAlc1xuIiwgZm9udCk7Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gQWxzbyBsb2FkIHRoZSBsYXlvdXQtdGVzdC1zcGVjaWZpYyAiQWhlbSIgZm9u
dC4KLSAgICBzdGQ6OnN0cmluZyBhaGVtUGF0aCA9IGRydERpclBhdGggKyAiQUhFTV9fX18uVFRG
IjsKLSAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9udGNmZywgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBGY0NoYXI4Kj4oYWhlbVBhdGguY19zdHIoKSkpKSB7Ci0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgZm9udCAlc1xuIiwgYWhlbVBhdGguY19zdHIoKSk7
Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotCi0gICAgaWYgKCFGY0NvbmZpZ1NldEN1cnJlbnQo
Zm9udGNmZykpIHsKLSAgICAgICAgZnB1dHMoIkZhaWxlZCB0byBzZXQgdGhlIGRlZmF1bHQgZm9u
dCBjb25maWd1cmF0aW9uXG4iLCBzdGRlcnIpOwotICAgICAgICBleGl0KDEpOwotICAgIH0KLX0K
LQotdm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0RmluaXNoZWQoKQotewotICAgIEFTU0VSVCghbV90
ZXN0SXNQZW5kaW5nKTsKLSAgICBtX3Rlc3RJc1BlbmRpbmcgPSB0cnVlOwotCi0gICAgLy8gSW5z
dGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxlciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1l
IG91dC4KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFsYXJtQWN0aW9uOwotICAgIGFsYXJtQWN0aW9u
LnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7Ci0gICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9u
LnNhX21hc2spOwotICAgIGFsYXJtQWN0aW9uLnNhX2ZsYWdzID0gMDsKLQotICAgIHN0cnVjdCBz
aWdhY3Rpb24gb2xkQWN0aW9uOwotICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24s
ICZvbGRBY3Rpb24pOwotICAgIGFsYXJtKGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAv
IDEwMDApOwotCi0gICAgLy8gVGVzdEZpbmlzaGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdl
IHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRoZSBwYWdlCi0gICAgLy8gZmluaXNoZXMgbG9hZGlu
Zy4KLSAgICB3aGlsZSAobV90ZXN0SXNQZW5kaW5nKQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuTWVzc2FnZUxvb3AoKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgYWxhcm0uCi0gICAgYWxhcm0o
MCk7Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZvbGRBY3Rpb24sIDApOwotfQotCi12b2lkIHBs
YXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKLXsKLSAgICAvLyBGSVhNRTogSXQn
cyBiZXR0ZXIgY2FsbCBndGtfaW5pdCgpIG9ubHkgd2hlbiB3ZSBydW4gcGx1Z2luIHRlc3RzLgot
ICAgIC8vIFNlZSBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZ3JvdXAv
Y2hyb21pdW0tZGV2L2Jyb3dzZV90aHJlYWQvdGhyZWFkLzYzM2VhMTY3Y2RlMTk2Y2EjCi0gICAg
Z3RrX2luaXQoYXJnYywgYXJndik7Ci0KLSAgICBzZXR1cEZvbnRjb25maWcoKTsKLX0KIAogdm9p
ZCBvcGVuU3RhcnR1cERpYWxvZygpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGxMaW51eC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJkYjY5YTJmZjlhZDhkYzMxNDFk
NzdlMGUwMDZjYWZkMTBjNmNmYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcApAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKworI2luY2x1ZGUgIlNrVHlwZWZh
Y2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuaCIKKworI2lmICFPUyhBTkRST0lEKQorI2luY2x1ZGUgPGZvbnRjb25maWcv
Zm9udGNvbmZpZy5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsu
aD4KKyNlbmRpZgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitz
dGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQoreworICAgIC8vIElmIHRoZSBhbGFybSBhbGFy
bWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdlIGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCisg
ICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIpOworICAgIHB1dHMoIiNFT0ZcbiIpOworICAg
IGZmbHVzaChzdGRvdXQpOworICAgIGV4aXQoMCk7Cit9CisKK3ZvaWQgVGVzdFNoZWxsOjp3YWl0
VGVzdEZpbmlzaGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fdGVzdElzUGVuZGluZyk7CisgICAgbV90
ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEluc3RhbGwgYW4gYWxhcm0gc2lnbmFsIGhh
bmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQuCisgICAgc3RydWN0IHNpZ2Fj
dGlvbiBhbGFybUFjdGlvbjsKKyAgICBhbGFybUFjdGlvbi5zYV9oYW5kbGVyID0gQWxhcm1IYW5k
bGVyOworICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9tYXNrKTsKKyAgICBhbGFybUFj
dGlvbi5zYV9mbGFncyA9IDA7CisKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbjsKKyAg
ICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xkQWN0aW9uKTsKKyAgICBhbGFy
bShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAwKTsKKworICAgIC8vIFRlc3RG
aW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBicmVhayB0aGlzIGxvb3Agd2hl
biB0aGUgcGFnZQorICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCisgICAgd2hpbGUgKG1fdGVzdElz
UGVuZGluZykKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29wKCk7CisKKyAg
ICAvLyBSZW1vdmUgdGhlIGFsYXJtLgorICAgIGFsYXJtKDApOworICAgIHNpZ2FjdGlvbihTSUdB
TFJNLCAmb2xkQWN0aW9uLCAwKTsKK30KKworI2lmICFPUyhBTkRST0lEKQorc3RhdGljIHZvaWQg
c2V0dXBGb250Y29uZmlnKCkKK3sKKyAgICAvLyBXZSB3aXNoIHRvIG1ha2UgdGhlIGxheW91dCB0
ZXN0cyByZXByb2R1Y2FibGUgd2l0aCByZXNwZWN0IHRvIGZvbnRzLiBTa2lhCisgICAgLy8gdXNl
cyBmb250Y29uZmlnIHRvIHJlc29sdmUgZm9udCBmYW1pbHkgbmFtZXMgZnJvbSBXZWJLaXQgaW50
byBhY3R1YWwgZm9udAorICAgIC8vIGZpbGVzIGZvdW5kIG9uIHRoZSBjdXJyZW50IHN5c3RlbS4g
VGhpcyBtZWFucyB0aGF0IGZvbnRzIHZhcnkgYmFzZWQgb24gdGhlCisgICAgLy8gc3lzdGVtIGFu
ZCBhbHNvIG9uIHRoZSBmb250Y29uZmlnIGNvbmZpZ3VyYXRpb24uCisgICAgLy8KKyAgICAvLyBU
byBhdm9pZCB0aGlzIHdlIGluaXRpYWxpc2UgZm9udGNvbmZpZyBoZXJlIGFuZCBpbnN0YWxsIGEg
Y29uZmlndXJhdGlvbgorICAgIC8vIHdoaWNoIG9ubHkga25vd3MgYWJvdXQgYSBmZXcsIHNlbGVj
dCwgZm9udHMuCisKKyAgICAvLyBXZSBoYXZlIGZvbnRjb25maWcgcGFyc2UgYSBjb25maWcgZmls
ZSBmcm9tIG91ciByZXNvdXJjZXMgZmlsZS4gVGhpcworICAgIC8vIHNldHMgYSBudW1iZXIgb2Yg
YWxpYXNlcyAoInNhbnMiLT4iQXJpYWwiIGV0YyksIGJ1dCBkb2Vzbid0IGluY2x1ZGUgYW55Cisg
ICAgLy8gZm9udCBkaXJlY3Rvcmllcy4KKyAgICBGY0luaXQoKTsKKworICAgIGNoYXIgZHJ0UGF0
aFtQQVRIX01BWCArIDFdOworICAgIGludCBkcnRQYXRoU2l6ZSA9IHJlYWRsaW5rKCIvcHJvYy9z
ZWxmL2V4ZSIsIGRydFBhdGgsIFBBVEhfTUFYKTsKKyAgICBpZiAoZHJ0UGF0aFNpemUgPCAwIHx8
IGRydFBhdGhTaXplID4gUEFUSF9NQVgpIHsKKyAgICAgICAgZnB1dHMoIlVuYWJsZSB0byByZXNv
bHZlIC9wcm9jL3NlbGYvZXhlLiIsIHN0ZGVycik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQor
ICAgIGRydFBhdGhbZHJ0UGF0aFNpemVdID0gMDsKKyAgICBzdGQ6OnN0cmluZyBkcnREaXJQYXRo
KGRydFBhdGgpOworICAgIHNpemVfdCBsYXN0UGF0aFBvcyA9IGRydERpclBhdGgucmZpbmQoIi8i
KTsKKyAgICBBU1NFUlQobGFzdFBhdGhQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgIGRy
dERpclBhdGguZXJhc2UobGFzdFBhdGhQb3MgKyAxKTsKKworICAgIEZjQ29uZmlnKiBmb250Y2Zn
ID0gRmNDb25maWdDcmVhdGUoKTsKKyAgICBzdGQ6OnN0cmluZyBmb250Y29uZmlnUGF0aCA9IGRy
dERpclBhdGggKyAiZm9udHMuY29uZiI7CisgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5kTG9hZChm
b250Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihmb250Y29uZmlnUGF0aC5j
X3N0cigpKSwgdHJ1ZSkpIHsKKyAgICAgICAgZnB1dHMoIkZhaWxlZCB0byBwYXJzZSBmb250Y29u
ZmlnIGNvbmZpZyBmaWxlXG4iLCBzdGRlcnIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKwor
ICAgIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZm9udHMgdGhhdCBmb250Y29uZmlnIHdpbGwga25v
dyBhYm91dC4gSXQKKyAgICAvLyB3aWxsIHRyeSBpdHMgYmVzdCB0byBtYXRjaCBiYXNlZCBvbmx5
IG9uIHRoZSBmb250cyBoZXJlIGluLiBUaGUKKyAgICAvLyBwYXRocyBhcmUgd2hlcmUgdGhlc2Ug
Zm9udHMgYXJlIGZvdW5kIG9uIG91ciBVYnVudHUgYm94ZXMuCisgICAgc3RhdGljIGNvbnN0IGNo
YXIgKmNvbnN0IGZvbnRzW10gPSB7CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L2tvY2hpL2tvY2hpLWdvdGhpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9rb2NoaS9rb2NoaS1taW5jaG8udHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9m
b250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0JvbGQudHRmIiwKKyAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbF9Cb2xkX0l0YWxpYy50
dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0Fy
aWFsX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0
Y29yZWZvbnRzL0NvbWljX1NhbnNfTVMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db21pY19TYW5zX01TX0JvbGQudHRmIiwKKyAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ldy50dGYi
LAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJp
ZXJfTmV3X0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0
dGNvcmVmb250cy9Db3VyaWVyX05ld19Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0l0YWxpYy50dGYi
LAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3Jn
aWEudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy9HZW9yZ2lhX0JvbGQudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
bXN0dGNvcmVmb250cy9HZW9yZ2lhX0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3No
YXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYV9JdGFsaWMudHRmIiwKKyAg
ICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9JbXBhY3QudHRm
IiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVi
dWNoZXRfTVMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9UcmVidWNoZXRfTVNfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19Cb2xkX0l0YWxpYy50dGYiLAor
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hl
dF9NU19JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0
dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW4udHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW5fQm9sZC50dGYiLAorICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19S
b21hbl9Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5hLnR0ZiIsCisgICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9Cb2xk
LnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMv
VmVyZGFuYV9Cb2xkX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3No
YXJlL2ZvbnRzL3RydWV0eXBlL3RoYWkvR2FydWRhLnR0ZiIsCisgICAgICAgIC8vIFRoZSBEZWph
VnVTYW5zIGZvbnQgaXMgdXNlZCBieSB0aGUgY3NzMi4xIHRlc3RzLgorICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS90dGYtZGVqYXZ1L0RlamFWdVNhbnMudHRmIiwKKyAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfaGku
dHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRz
LWNvcmUvbG9oaXRfdGEudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUv
dHRmLWluZGljLWZvbnRzLWNvcmUvTXVrdGlOYXJyb3cudHRmIiwKKyAgICB9OworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKGZvbnRzKTsgKytpKSB7CisgICAgICAgIGlmIChh
Y2Nlc3MoZm9udHNbaV0sIFJfT0spKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIllv
dSBhcmUgbWlzc2luZyAlcy4gVHJ5IHJlLXJ1bm5pbmcgYnVpbGQvaW5zdGFsbC1idWlsZC1kZXBz
LnNoLiBBbHNvIHNlZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtpL0xheW91dFRlc3RzTGludXgiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvbnRzW2ldKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0No
YXI4ICopIGZvbnRzW2ldKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg
dG8gbG9hZCBmb250ICVzXG4iLCBmb250c1tpXSk7CisgICAgICAgICAgICBleGl0KDEpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gV2Ugc3BlY2lhbCBjYXNlIHRoZXNlIGZvbnRzIGJlY2F1
c2UgdGhleSdyZSBvbmx5IG5lZWRlZCBpbiBhCisgICAgLy8gZmV3IGxheW91dCB0ZXN0cy4KKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3B0aW9uYWxGb250c1tdID0geworICAgICAgICAi
L3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF9wYS50
dGYiLAorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUob3B0aW9u
YWxGb250cyk7ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBmb250ID0gb3B0aW9uYWxGb250
c1tpXTsKKworICAgICAgICAvLyBUaGlzIGZvbnQgY2hhbmdlZCBwYXRocyBhY3Jvc3MgVWJ1bnR1
IHJlbGVhc2VzLCBzbyB0cnkgY2hlY2tpbmcgaW4gYm90aCBsb2NhdGlvbnMuCisgICAgICAgIGlm
ICghc3RyY21wKGZvbnQsICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250
cy1jb3JlL2xvaGl0X3BhLnR0ZiIpCisgICAgICAgICAgICAmJiBhY2Nlc3MoZm9udCwgUl9PSykg
PCAwKQorICAgICAgICAgICAgZm9udCA9ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1w
dW5qYWJpLWZvbnRzL2xvaGl0X3BhLnR0ZiI7CisKKyAgICAgICAgaWYgKGFjY2Vzcyhmb250LCBS
X09LKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IGFyZSBtaXNzaW5n
ICVzLiBXaXRob3V0IHRoaXMsIHNvbWUgbGF5b3V0IHRlc3RzIG1heSBmYWlsLiAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21p
dW0vd2lraS9MYXlvdXRUZXN0c0xpbnV4ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Zm9yIG1vcmUuXG4iLCBmb250KTsKKyAgICAgICAgfSBlbHNlIGlmICghRmNDb25maWdBcHBGb250
QWRkRmlsZShmb250Y2ZnLCAoRmNDaGFyOCAqKSBmb250KSkgeworICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBmb250KTsKKyAgICAgICAgICAg
IGV4aXQoMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbHNvIGxvYWQgdGhlIGxheW91
dC10ZXN0LXNwZWNpZmljICJBaGVtIiBmb250LgorICAgIHN0ZDo6c3RyaW5nIGFoZW1QYXRoID0g
ZHJ0RGlyUGF0aCArICJBSEVNX19fXy5UVEYiOworICAgIGlmICghRmNDb25maWdBcHBGb250QWRk
RmlsZShmb250Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihhaGVtUGF0aC5j
X3N0cigpKSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250
ICVzXG4iLCBhaGVtUGF0aC5jX3N0cigpKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAg
ICBpZiAoIUZjQ29uZmlnU2V0Q3VycmVudChmb250Y2ZnKSkgeworICAgICAgICBmcHV0cygiRmFp
bGVkIHRvIHNldCB0aGUgZGVmYXVsdCBmb250IGNvbmZpZ3VyYXRpb25cbiIsIHN0ZGVycik7Cisg
ICAgICAgIGV4aXQoMSk7CisgICAgfQorfQorI2VuZGlmIC8vICFPUyhBTkRST0lEKQorCit2b2lk
IHBsYXRmb3JtSW5pdChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndikKK3sKKyAgICAvLyBGSVhNRTog
SXQncyBiZXR0ZXIgY2FsbCBndGtfaW5pdCgpIG9ubHkgd2hlbiB3ZSBydW4gcGx1Z2luIHRlc3Rz
LgorICAgIC8vIFNlZSBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZ3Jv
dXAvY2hyb21pdW0tZGV2L2Jyb3dzZV90aHJlYWQvdGhyZWFkLzYzM2VhMTY3Y2RlMTk2Y2EjCisj
aWYgVVNFKEdUSykKKyAgICBndGtfaW5pdChhcmdjLCBhcmd2KTsKKyNlbmRpZgorCisjaWYgIU9T
KEFORFJPSUQpCisgICAgc2V0dXBGb250Y29uZmlnKCk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzM0Zjg0YjM5NWE3ZTFmZTI4MWRkZjc0MjlkMWVjNzQ0NzRlYTBkCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdFNoZWxsLmgi
CisKK2Jvb2wgY2hlY2tMYXlvdXRUZXN0U3lzdGVtRGVwZW5kZW5jaWVzKCkKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCit7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116985</attachid>
            <date>2011-11-29 09:22:52 -0800</date>
            <delta_ts>2011-11-30 01:38:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72667-20111129122250.patch</filename>
            <type>text/plain</type>
            <size>27607</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA4OTI5YzQwZjcxYTZkNDViOTI3NTE4NTUxMmMxODZjZmMyNTBiYmEuLjdjNDE3NThlNzBiOTQ4
NzhlOThhMzdhZjc1ZjgzNmQyZTlhM2I4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMjkgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGaXggYnJva2VuIERSVCBidWlsZCBmb3IgQXVy
YSBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKwogMjAxMS0xMS0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgUHJlZmVyZW5jZXMgaW50byBQcmVm
ZXJlbmNlcyBhbmQgQ2FwYWJpbGl0aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IGZkZjA0MmFhMDhlNjQ5MzhlMTMxNDJlZmM5NWEzOTljYjA3OWVjZGMuLmY0YjQyYjg5OTkxMDk0
YmNkY2ZlZWU1ODY2NTMxZjM4ZDc3NDVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
QEAgLTEyMTEsNiArMTIxMSw5IEBACiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
ICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNlc19ndGsgPT0gMScsIHsKKyAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAn
V1RGX1VTRV9HVEs9MScsCisgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKS9idWlsZC9saW51eC9zeXN0ZW0uZ3lwOmd0aycsCiAgICAgICAgICAgICAgICAg
ICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNmIxNzA5MjhmNmFmMWExOGRhMzZlMDIzNGY1ZmQ5ZmU0MDdkMWYyYy4uZDg4MGE3MDIyYTMz
YTBmMDgyY2Y5YjViZDUyNTAzMmIwZTMwNjQ0MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTI5ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4
IGJyb2tlbiBEUlQgYnVpbGQgZm9yIEF1cmEgTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4KKworICAgICAgICBEUlQgbm93IGJ1aWxkcyBmb3IgQXVyYSBMaW51eC4gVGhpcywg
bW9yZSBvciBsZXNzLCBzaGFyZXMgdGhlIHNhbWUgY29kZSBhcyBBbmRyb2lkLgorCisgICAgICAg
IFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZToKKworICAgICAgICAgIDEuIFJl
bmFtZWQgVGVzdFNoZWxsQW5kcm9pZCB0byBUZXN0U2hlbGxMaW51eC4KKyAgICAgICAgICAyLiBT
dHViIGNvZGUgbW92ZWQgYWRkZWQgaW4gVGVzdFNoZWxsU3R1YiB0aGF0IHdpbGwgb25seSBjb21w
aWxlIG9uIG5vbi1HVEsgTGludXggYnVpbGRzLgorICAgICAgICAgIDMuIENvZGUgY29tbW9uIHRv
IEd0aywgQXVyYSwgYW5kIEFuZHJvaWQgbW92ZWQgdG8gVGVzdFNoZWxsTGludXguCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVy
OjprZXlEb3duKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxB
bmRyb2lkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxHdGsuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbExpbnV4LmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsR3RrLmNwcC4KKyAgICAgICAgKEFsYXJtSGFuZGxlcik6CisgICAgICAgIChUZXN0
U2hlbGw6OndhaXRUZXN0RmluaXNoZWQpOgorICAgICAgICAoc2V0dXBGb250Y29uZmlnKToKKyAg
ICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsU3R1Yi5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tMYXlvdXRUZXN0U3lzdGVt
RGVwZW5kZW5jaWVzKToKKyAgICAgICAgKG9wZW5TdGFydHVwRGlhbG9nKToKKwogMjAxMS0xMS0y
OSAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBSZW1vdmUgdXNlIG9mIGludGVybmFsIGhlYWRlcnMgaW4gdGhlIE1pbmlCcm93c2Vy
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCBiMTliZTIyNzJj
NTU1Yzc5ZDI5OTcxNjA1MjRhYWY3MGNmMmU4ZjY4Li40NzQ0MmJmMmE1N2EyNzA2ZjkwYmM5ZTFl
ZDI3NDA4NGQ4NGJiOWViIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0TmF2aWdhdGlv
bkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RTaGVsbEFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxM
aW51eC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbScsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFNoZWxsV2luLmNwcCcsCkBAIC03Myw2ICs3MywxMSBAQAogICAgICAgICAgICAgJ1Rl
c3ROZXRzY2FwZVBsdWdJbi9tYWluLmNwcCcsCiAgICAgICAgIF0sCiAgICAgICAgICdjb25kaXRp
b25zJzogWworICAgICAgICAgICAgWycoT1M9PSJsaW51eCIgYW5kIHRvb2xraXRfdXNlc19ndGsh
PTEpIG9yIE9TPT0iYW5kcm9pZCInLCB7CisgICAgICAgICAgICAgICAgJ2RydF9maWxlcyc6IFsK
KyAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwJywKKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBbJ09TPT0id2luIics
IHsKICAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWwogICAgICAgICAgICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMjBkNzdhNzVhMzVhOTJmZDc4NWRi
OWI4NmViZTg2MDE0ZTcwNzEzYy4uOGQ1NDZmMTY2OGE2ZmNkOGIyMzVhMzc1YzdhNzhkMThiZTM1
YTcyOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5k
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNw
cApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVudERv
d24udHlwZSA9IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1vZGlm
aWVycyA9IDA7CiAgICAgZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBPUyhM
SU5VWCkKKyNpZiBPUyhMSU5VWCkgJiYgVVNFKEdUSykKICAgICBldmVudERvd24ubmF0aXZlS2V5
Q29kZSA9IHdlYmtpdF9zdXBwb3J0OjpOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUoY29k
ZSwgbmVlZHNTaGlmdEtleU1vZGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxBbmRyb2lkLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZWEyZDI0N2UzNTM1YzdmM2I3ZjgyNmY3YzExYWYxYjkwMDU4OWY4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEFuZHJvaWQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXN0U2hlbGwuaCIK
LQotI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVk
ZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKLQotI2luY2x1ZGUgPHNpZ25hbC5o
PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi1zdGF0aWMgdm9pZCBBbGFybUhhbmRsZXIoaW50KQot
ewotICAgIC8vIElmIHRoZSBhbGFybSBhbGFybWVkLCBraWxsIHRoZSBwcm9jZXNzIHNpbmNlIHdl
IGhhdmUgYSByZWFsbHkgYmFkIGhhbmcuCi0gICAgcHV0cygiXG4jVEVTVF9USU1FRF9PVVRcbiIp
OwotICAgIHB1dHMoIiNFT0ZcbiIpOwotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIHdlYmtpdF9z
dXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOwotICAgIGV4aXQoMCk7Ci19Ci0KLXZv
aWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKLXsKLSAgICBBU1NFUlQoIW1fdGVzdElz
UGVuZGluZyk7Ci0gICAgbV90ZXN0SXNQZW5kaW5nID0gdHJ1ZTsKLQotICAgIC8vIEluc3RhbGwg
YW4gYWxhcm0gc2lnbmFsIGhhbmRsZXIgdGhhdCB3aWxsIGtpbGwgdXMgaWYgd2UgdGltZSBvdXQu
Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiBhbGFybUFjdGlvbjsKLSAgICBhbGFybUFjdGlvbi5zYV9o
YW5kbGVyID0gQWxhcm1IYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZhbGFybUFjdGlvbi5zYV9t
YXNrKTsKLSAgICBhbGFybUFjdGlvbi5zYV9mbGFncyA9IDA7Ci0KLSAgICBzdHJ1Y3Qgc2lnYWN0
aW9uIG9sZEFjdGlvbjsKLSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJmFsYXJtQWN0aW9uLCAmb2xk
QWN0aW9uKTsKLSAgICBhbGFybShsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKCkgLyAxMDAw
KTsKLQotICAgIC8vIFRlc3RGaW5pc2hlZCgpIHdpbGwgcG9zdCBhIHF1aXQgbWVzc2FnZSB0byBi
cmVhayB0aGlzIGxvb3Agd2hlbiB0aGUgcGFnZQotICAgIC8vIGZpbmlzaGVzIGxvYWRpbmcuCi0g
ICAgd2hpbGUgKG1fdGVzdElzUGVuZGluZykKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1l
c3NhZ2VMb29wKCk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGFsYXJtLgotICAgIGFsYXJtKDApOwot
ICAgIHNpZ2FjdGlvbihTSUdBTFJNLCAmb2xkQWN0aW9uLCAwKTsKLX0KLQotdm9pZCBwbGF0Zm9y
bUluaXQoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpCi17Ci0gICAgLy8gTm90aGluZyB0byBkbyBo
ZXJlLgotfQotCi12b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKLXsKLSAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgotfQotCi1ib29sIGNoZWNrTGF5b3V0VGVzdFN5c3RlbURlcGVuZGVuY2ll
cygpCi17Ci0gICAgLy8gTm90aGluZyB0byBkbyBoZXJlLgotICAgIHJldHVybiB0cnVlOwotfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbEd0ay5jcHAKaW5kZXgg
MzNiZGU5YTBlNTM2MTE4YWZmZjM3YjIyYmE0YzA1NjM4ZGE1OTYxZi4uNDIyOGYyYWZkM2I3OWJh
OWFkNGYzNmJmYmQ4OGYwZGJiYWNmMGNjOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxHdGsuY3BwCkBAIC0zNiwxNzEgKzM2LDYgQEAKICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKLXN0YXRpYyB2b2lkIEFsYXJtSGFuZGxl
cihpbnQpCi17Ci0gICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQsIGtpbGwgdGhlIHByb2Nlc3Mg
c2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KLSAgICBwdXRzKCJcbiNURVNUX1RJTUVE
X09VVFxuIik7Ci0gICAgcHV0cygiI0VPRlxuIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAg
ZXhpdCgwKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0dXBGb250Y29uZmlnKCkKLXsKLSAgICAvLyBX
ZSB3aXNoIHRvIG1ha2UgdGhlIGxheW91dCB0ZXN0cyByZXByb2R1Y2FibGUgd2l0aCByZXNwZWN0
IHRvIGZvbnRzLiBTa2lhCi0gICAgLy8gdXNlcyBmb250Y29uZmlnIHRvIHJlc29sdmUgZm9udCBm
YW1pbHkgbmFtZXMgZnJvbSBXZWJLaXQgaW50byBhY3R1YWwgZm9udAotICAgIC8vIGZpbGVzIGZv
dW5kIG9uIHRoZSBjdXJyZW50IHN5c3RlbS4gVGhpcyBtZWFucyB0aGF0IGZvbnRzIHZhcnkgYmFz
ZWQgb24gdGhlCi0gICAgLy8gc3lzdGVtIGFuZCBhbHNvIG9uIHRoZSBmb250Y29uZmlnIGNvbmZp
Z3VyYXRpb24uCi0gICAgLy8KLSAgICAvLyBUbyBhdm9pZCB0aGlzIHdlIGluaXRpYWxpc2UgZm9u
dGNvbmZpZyBoZXJlIGFuZCBpbnN0YWxsIGEgY29uZmlndXJhdGlvbgotICAgIC8vIHdoaWNoIG9u
bHkga25vd3MgYWJvdXQgYSBmZXcsIHNlbGVjdCwgZm9udHMuCi0KLSAgICAvLyBXZSBoYXZlIGZv
bnRjb25maWcgcGFyc2UgYSBjb25maWcgZmlsZSBmcm9tIG91ciByZXNvdXJjZXMgZmlsZS4gVGhp
cwotICAgIC8vIHNldHMgYSBudW1iZXIgb2YgYWxpYXNlcyAoInNhbnMiLT4iQXJpYWwiIGV0Yyks
IGJ1dCBkb2Vzbid0IGluY2x1ZGUgYW55Ci0gICAgLy8gZm9udCBkaXJlY3Rvcmllcy4KLSAgICBG
Y0luaXQoKTsKLQotICAgIGNoYXIgZHJ0UGF0aFtQQVRIX01BWCArIDFdOwotICAgIGludCBkcnRQ
YXRoU2l6ZSA9IHJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIGRydFBhdGgsIFBBVEhfTUFYKTsK
LSAgICBpZiAoZHJ0UGF0aFNpemUgPCAwIHx8IGRydFBhdGhTaXplID4gUEFUSF9NQVgpIHsKLSAg
ICAgICAgZnB1dHMoIlVuYWJsZSB0byByZXNvbHZlIC9wcm9jL3NlbGYvZXhlLiIsIHN0ZGVycik7
Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotICAgIGRydFBhdGhbZHJ0UGF0aFNpemVdID0gMDsK
LSAgICBzdGQ6OnN0cmluZyBkcnREaXJQYXRoKGRydFBhdGgpOwotICAgIHNpemVfdCBsYXN0UGF0
aFBvcyA9IGRydERpclBhdGgucmZpbmQoIi8iKTsKLSAgICBBU1NFUlQobGFzdFBhdGhQb3MgIT0g
c3RkOjpzdHJpbmc6Om5wb3MpOwotICAgIGRydERpclBhdGguZXJhc2UobGFzdFBhdGhQb3MgKyAx
KTsKLQotICAgIEZjQ29uZmlnKiBmb250Y2ZnID0gRmNDb25maWdDcmVhdGUoKTsKLSAgICBzdGQ6
OnN0cmluZyBmb250Y29uZmlnUGF0aCA9IGRydERpclBhdGggKyAiZm9udHMuY29uZiI7Ci0gICAg
aWYgKCFGY0NvbmZpZ1BhcnNlQW5kTG9hZChmb250Y2ZnLCByZWludGVycHJldF9jYXN0PGNvbnN0
IEZjQ2hhcjgqPihmb250Y29uZmlnUGF0aC5jX3N0cigpKSwgdHJ1ZSkpIHsKLSAgICAgICAgZnB1
dHMoIkZhaWxlZCB0byBwYXJzZSBmb250Y29uZmlnIGNvbmZpZyBmaWxlXG4iLCBzdGRlcnIpOwot
ICAgICAgICBleGl0KDEpOwotICAgIH0KLQotICAgIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZm9u
dHMgdGhhdCBmb250Y29uZmlnIHdpbGwga25vdyBhYm91dC4gSXQKLSAgICAvLyB3aWxsIHRyeSBp
dHMgYmVzdCB0byBtYXRjaCBiYXNlZCBvbmx5IG9uIHRoZSBmb250cyBoZXJlIGluLiBUaGUKLSAg
ICAvLyBwYXRocyBhcmUgd2hlcmUgdGhlc2UgZm9udHMgYXJlIGZvdW5kIG9uIG91ciBVYnVudHUg
Ym94ZXMuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGZvbnRzW10gPSB7Ci0gICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2tvY2hpL2tvY2hpLWdvdGhpYy50dGYiLAotICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9rb2NoaS9rb2NoaS1taW5jaG8udHRmIiwK
LSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9BcmlhbC50
dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0Fy
aWFsX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9BcmlhbF9Cb2xkX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250
cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvbWljX1NhbnNfTVMudHRmIiwK
LSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db21pY19T
YW5zX01TX0JvbGQudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0
dGNvcmVmb250cy9Db3VyaWVyX05ldy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3X0JvbGQudHRmIiwKLSAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9Db3VyaWVyX05ld19Cb2xkX0l0
YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZv
bnRzL0NvdXJpZXJfTmV3X0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dlb3JnaWEudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0JvbGQudHRmIiwKLSAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0JvbGRfSXRh
bGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9u
dHMvR2VvcmdpYV9JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5
cGUvbXN0dGNvcmVmb250cy9JbXBhY3QudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMv
dHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVMudHRmIiwKLSAgICAgICAgIi91c3Iv
c2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UcmVidWNoZXRfTVNfQm9sZC50dGYi
LAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1
Y2hldF9NU19Cb2xkX0l0YWxpYy50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hldF9NU19JdGFsaWMudHRmIiwKLSAgICAgICAgIi91
c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1lc19OZXdfUm9tYW4udHRm
IiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9UaW1l
c19OZXdfUm9tYW5fQm9sZC50dGYiLAotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlw
ZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9Cb2xkX0l0YWxpYy50dGYiLAotICAgICAg
ICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21h
bl9JdGFsaWMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNv
cmVmb250cy9WZXJkYW5hLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L21zdHRjb3JlZm9udHMvVmVyZGFuYV9Cb2xkLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2Zv
bnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVmVyZGFuYV9Cb2xkX0l0YWxpYy50dGYiLAotICAg
ICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmFfSXRh
bGljLnR0ZiIsCi0gICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3RoYWkvR2FydWRh
LnR0ZiIsCi0gICAgICAgIC8vIFRoZSBEZWphVnVTYW5zIGZvbnQgaXMgdXNlZCBieSB0aGUgY3Nz
Mi4xIHRlc3RzLgotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtZGVqYXZ1
L0RlamFWdVNhbnMudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRm
LWluZGljLWZvbnRzLWNvcmUvbG9oaXRfaGkudHRmIiwKLSAgICAgICAgIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvbG9oaXRfdGEudHRmIiwKLSAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNvcmUvTXVrdGlOYXJy
b3cudHRmIiwKLSAgICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKGZv
bnRzKTsgKytpKSB7Ci0gICAgICAgIGlmIChhY2Nlc3MoZm9udHNbaV0sIFJfT0spKSB7Ci0gICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIllvdSBhcmUgbWlzc2luZyAlcy4gVHJ5IHJlLXJ1bm5p
bmcgYnVpbGQvaW5zdGFsbC1idWlsZC1kZXBzLnNoLiBBbHNvIHNlZSAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtpL0xh
eW91dFRlc3RzTGludXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzW2ldKTsK
LSAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFGY0NvbmZpZ0Fw
cEZvbnRBZGRGaWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZvbnRzW2ldKSkgewotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBmb250c1tpXSk7
Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gV2Ugc3Bl
Y2lhbCBjYXNlIHRoZXNlIGZvbnRzIGJlY2F1c2UgdGhleSdyZSBvbmx5IG5lZWRlZCBpbiBhCi0g
ICAgLy8gZmV3IGxheW91dCB0ZXN0cy4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3B0
aW9uYWxGb250c1tdID0gewotICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYt
aW5kaWMtZm9udHMtY29yZS9sb2hpdF9wYS50dGYiLAotICAgIH07Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheXNpemUob3B0aW9uYWxGb250cyk7ICsraSkgewotICAgICAgICBjb25z
dCBjaGFyKiBmb250ID0gb3B0aW9uYWxGb250c1tpXTsKLQotICAgICAgICAvLyBUaGlzIGZvbnQg
Y2hhbmdlZCBwYXRocyBhY3Jvc3MgVWJ1bnR1IHJlbGVhc2VzLCBzbyB0cnkgY2hlY2tpbmcgaW4g
Ym90aCBsb2NhdGlvbnMuCi0gICAgICAgIGlmICghc3RyY21wKGZvbnQsICIvdXNyL3NoYXJlL2Zv
bnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X3BhLnR0ZiIpCi0gICAgICAg
ICAgICAmJiBhY2Nlc3MoZm9udCwgUl9PSykgPCAwKQotICAgICAgICAgICAgZm9udCA9ICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1wdW5qYWJpLWZvbnRzL2xvaGl0X3BhLnR0ZiI7Ci0K
LSAgICAgICAgaWYgKGFjY2Vzcyhmb250LCBSX09LKSA8IDApIHsKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiWW91IGFyZSBtaXNzaW5nICVzLiBXaXRob3V0IHRoaXMsIHNvbWUgbGF5b3V0
IHRlc3RzIG1heSBmYWlsLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vd2lraS9MYXlvdXRUZXN0c0xpbnV4ICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIG1vcmUuXG4iLCBmb250KTsKLSAgICAgICAg
fSBlbHNlIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShmb250Y2ZnLCAoRmNDaGFyOCAqKSBm
b250KSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250
ICVzXG4iLCBmb250KTsKLSAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBBbHNvIGxvYWQgdGhlIGxheW91dC10ZXN0LXNwZWNpZmljICJBaGVtIiBmb250Lgot
ICAgIHN0ZDo6c3RyaW5nIGFoZW1QYXRoID0gZHJ0RGlyUGF0aCArICJBSEVNX19fXy5UVEYiOwot
ICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShmb250Y2ZnLCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZjQ2hhcjgqPihhaGVtUGF0aC5jX3N0cigpKSkpIHsKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICJGYWlsZWQgdG8gbG9hZCBmb250ICVzXG4iLCBhaGVtUGF0aC5jX3N0cigpKTsKLSAg
ICAgICAgZXhpdCgxKTsKLSAgICB9Ci0KLSAgICBpZiAoIUZjQ29uZmlnU2V0Q3VycmVudChmb250
Y2ZnKSkgewotICAgICAgICBmcHV0cygiRmFpbGVkIHRvIHNldCB0aGUgZGVmYXVsdCBmb250IGNv
bmZpZ3VyYXRpb25cbiIsIHN0ZGVycik7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotfQotCi12
b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3Rlc3RJ
c1BlbmRpbmcpOwotICAgIG1fdGVzdElzUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyBJbnN0YWxs
IGFuIGFsYXJtIHNpZ25hbCBoYW5kbGVyIHRoYXQgd2lsbCBraWxsIHVzIGlmIHdlIHRpbWUgb3V0
LgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWxhcm1BY3Rpb247Ci0gICAgYWxhcm1BY3Rpb24uc2Ff
aGFuZGxlciA9IEFsYXJtSGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmYWxhcm1BY3Rpb24uc2Ff
bWFzayk7Ci0gICAgYWxhcm1BY3Rpb24uc2FfZmxhZ3MgPSAwOwotCi0gICAgc3RydWN0IHNpZ2Fj
dGlvbiBvbGRBY3Rpb247Ci0gICAgc2lnYWN0aW9uKFNJR0FMUk0sICZhbGFybUFjdGlvbiwgJm9s
ZEFjdGlvbik7Ci0gICAgYWxhcm0obGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIC8gMTAw
MCk7Ci0KLSAgICAvLyBUZXN0RmluaXNoZWQoKSB3aWxsIHBvc3QgYSBxdWl0IG1lc3NhZ2UgdG8g
YnJlYWsgdGhpcyBsb29wIHdoZW4gdGhlIHBhZ2UKLSAgICAvLyBmaW5pc2hlcyBsb2FkaW5nLgot
ICAgIHdoaWxlIChtX3Rlc3RJc1BlbmRpbmcpCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5N
ZXNzYWdlTG9vcCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBhbGFybS4KLSAgICBhbGFybSgwKTsK
LSAgICBzaWdhY3Rpb24oU0lHQUxSTSwgJm9sZEFjdGlvbiwgMCk7Ci19Ci0KLXZvaWQgcGxhdGZv
cm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQotewotICAgIC8vIEZJWE1FOiBJdCdzIGJl
dHRlciBjYWxsIGd0a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCi0gICAg
Ly8gU2VlIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9ncm91cC9jaHJv
bWl1bS1kZXYvYnJvd3NlX3RocmVhZC90aHJlYWQvNjMzZWExNjdjZGUxOTZjYSMKLSAgICBndGtf
aW5pdChhcmdjLCBhcmd2KTsKLQotICAgIHNldHVwRm9udGNvbmZpZygpOwotfQogCiB2b2lkIG9w
ZW5TdGFydHVwRGlhbG9nKCkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbExpbnV4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbExpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmRiNjlhMmZmOWFkOGRjMzE0MWQ3N2Uw
ZTAwNmNhZmQxMGM2Y2ZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsTGludXguY3BwCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCisjaW5jbHVkZSAiU2tUeXBlZmFjZS5o
IgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRf
c3VwcG9ydC5oIgorCisjaWYgIU9TKEFORFJPSUQpCisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250
Y29uZmlnLmg+CisjZW5kaWYKKworI2lmIFVTRShHVEspCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgor
I2VuZGlmCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRp
YyB2b2lkIEFsYXJtSGFuZGxlcihpbnQpCit7CisgICAgLy8gSWYgdGhlIGFsYXJtIGFsYXJtZWQs
IGtpbGwgdGhlIHByb2Nlc3Mgc2luY2Ugd2UgaGF2ZSBhIHJlYWxseSBiYWQgaGFuZy4KKyAgICBw
dXRzKCJcbiNURVNUX1RJTUVEX09VVFxuIik7CisgICAgcHV0cygiI0VPRlxuIik7CisgICAgZmZs
dXNoKHN0ZG91dCk7CisgICAgZXhpdCgwKTsKK30KKwordm9pZCBUZXN0U2hlbGw6OndhaXRUZXN0
RmluaXNoZWQoKQoreworICAgIEFTU0VSVCghbV90ZXN0SXNQZW5kaW5nKTsKKyAgICBtX3Rlc3RJ
c1BlbmRpbmcgPSB0cnVlOworCisgICAgLy8gSW5zdGFsbCBhbiBhbGFybSBzaWduYWwgaGFuZGxl
ciB0aGF0IHdpbGwga2lsbCB1cyBpZiB3ZSB0aW1lIG91dC4KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9u
IGFsYXJtQWN0aW9uOworICAgIGFsYXJtQWN0aW9uLnNhX2hhbmRsZXIgPSBBbGFybUhhbmRsZXI7
CisgICAgc2lnZW1wdHlzZXQoJmFsYXJtQWN0aW9uLnNhX21hc2spOworICAgIGFsYXJtQWN0aW9u
LnNhX2ZsYWdzID0gMDsKKworICAgIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uOworICAgIHNp
Z2FjdGlvbihTSUdBTFJNLCAmYWxhcm1BY3Rpb24sICZvbGRBY3Rpb24pOworICAgIGFsYXJtKGxh
eW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSAvIDEwMDApOworCisgICAgLy8gVGVzdEZpbmlz
aGVkKCkgd2lsbCBwb3N0IGEgcXVpdCBtZXNzYWdlIHRvIGJyZWFrIHRoaXMgbG9vcCB3aGVuIHRo
ZSBwYWdlCisgICAgLy8gZmluaXNoZXMgbG9hZGluZy4KKyAgICB3aGlsZSAobV90ZXN0SXNQZW5k
aW5nKQorICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKworICAgIC8v
IFJlbW92ZSB0aGUgYWxhcm0uCisgICAgYWxhcm0oMCk7CisgICAgc2lnYWN0aW9uKFNJR0FMUk0s
ICZvbGRBY3Rpb24sIDApOworfQorCisjaWYgIU9TKEFORFJPSUQpCitzdGF0aWMgdm9pZCBzZXR1
cEZvbnRjb25maWcoKQoreworICAgIC8vIFdlIHdpc2ggdG8gbWFrZSB0aGUgbGF5b3V0IHRlc3Rz
IHJlcHJvZHVjYWJsZSB3aXRoIHJlc3BlY3QgdG8gZm9udHMuIFNraWEKKyAgICAvLyB1c2VzIGZv
bnRjb25maWcgdG8gcmVzb2x2ZSBmb250IGZhbWlseSBuYW1lcyBmcm9tIFdlYktpdCBpbnRvIGFj
dHVhbCBmb250CisgICAgLy8gZmlsZXMgZm91bmQgb24gdGhlIGN1cnJlbnQgc3lzdGVtLiBUaGlz
IG1lYW5zIHRoYXQgZm9udHMgdmFyeSBiYXNlZCBvbiB0aGUKKyAgICAvLyBzeXN0ZW0gYW5kIGFs
c28gb24gdGhlIGZvbnRjb25maWcgY29uZmlndXJhdGlvbi4KKyAgICAvLworICAgIC8vIFRvIGF2
b2lkIHRoaXMgd2UgaW5pdGlhbGlzZSBmb250Y29uZmlnIGhlcmUgYW5kIGluc3RhbGwgYSBjb25m
aWd1cmF0aW9uCisgICAgLy8gd2hpY2ggb25seSBrbm93cyBhYm91dCBhIGZldywgc2VsZWN0LCBm
b250cy4KKworICAgIC8vIFdlIGhhdmUgZm9udGNvbmZpZyBwYXJzZSBhIGNvbmZpZyBmaWxlIGZy
b20gb3VyIHJlc291cmNlcyBmaWxlLiBUaGlzCisgICAgLy8gc2V0cyBhIG51bWJlciBvZiBhbGlh
c2VzICgic2FucyItPiJBcmlhbCIgZXRjKSwgYnV0IGRvZXNuJ3QgaW5jbHVkZSBhbnkKKyAgICAv
LyBmb250IGRpcmVjdG9yaWVzLgorICAgIEZjSW5pdCgpOworCisgICAgY2hhciBkcnRQYXRoW1BB
VEhfTUFYICsgMV07CisgICAgaW50IGRydFBhdGhTaXplID0gcmVhZGxpbmsoIi9wcm9jL3NlbGYv
ZXhlIiwgZHJ0UGF0aCwgUEFUSF9NQVgpOworICAgIGlmIChkcnRQYXRoU2l6ZSA8IDAgfHwgZHJ0
UGF0aFNpemUgPiBQQVRIX01BWCkgeworICAgICAgICBmcHV0cygiVW5hYmxlIHRvIHJlc29sdmUg
L3Byb2Mvc2VsZi9leGUuIiwgc3RkZXJyKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAg
ZHJ0UGF0aFtkcnRQYXRoU2l6ZV0gPSAwOworICAgIHN0ZDo6c3RyaW5nIGRydERpclBhdGgoZHJ0
UGF0aCk7CisgICAgc2l6ZV90IGxhc3RQYXRoUG9zID0gZHJ0RGlyUGF0aC5yZmluZCgiLyIpOwor
ICAgIEFTU0VSVChsYXN0UGF0aFBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7CisgICAgZHJ0RGly
UGF0aC5lcmFzZShsYXN0UGF0aFBvcyArIDEpOworCisgICAgRmNDb25maWcqIGZvbnRjZmcgPSBG
Y0NvbmZpZ0NyZWF0ZSgpOworICAgIHN0ZDo6c3RyaW5nIGZvbnRjb25maWdQYXRoID0gZHJ0RGly
UGF0aCArICJmb250cy5jb25mIjsKKyAgICBpZiAoIUZjQ29uZmlnUGFyc2VBbmRMb2FkKGZvbnRj
ZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRjb25maWdQYXRoLmNfc3Ry
KCkpLCB0cnVlKSkgeworICAgICAgICBmcHV0cygiRmFpbGVkIHRvIHBhcnNlIGZvbnRjb25maWcg
Y29uZmlnIGZpbGVcbiIsIHN0ZGVycik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorCisgICAg
Ly8gVGhpcyBpcyB0aGUgbGlzdCBvZiBmb250cyB0aGF0IGZvbnRjb25maWcgd2lsbCBrbm93IGFi
b3V0LiBJdAorICAgIC8vIHdpbGwgdHJ5IGl0cyBiZXN0IHRvIG1hdGNoIGJhc2VkIG9ubHkgb24g
dGhlIGZvbnRzIGhlcmUgaW4uIFRoZQorICAgIC8vIHBhdGhzIGFyZSB3aGVyZSB0aGVzZSBmb250
cyBhcmUgZm91bmQgb24gb3VyIFVidW50dSBib3hlcy4KKyAgICBzdGF0aWMgY29uc3QgY2hhciAq
Y29uc3QgZm9udHNbXSA9IHsKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUva29j
aGkva29jaGktZ290aGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L2tvY2hpL2tvY2hpLW1pbmNoby50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRz
L3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0FyaWFsX0JvbGRfSXRhbGljLnR0ZiIs
CisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQXJpYWxf
SXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3Jl
Zm9udHMvQ29taWNfU2Fuc19NUy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVl
dHlwZS9tc3R0Y29yZWZvbnRzL0NvbWljX1NhbnNfTVNfQm9sZC50dGYiLAorICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0NvdXJpZXJfTmV3LnR0ZiIsCisg
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9O
ZXdfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL0NvdXJpZXJfTmV3X0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvQ291cmllcl9OZXdfSXRhbGljLnR0ZiIsCisg
ICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvR2VvcmdpYS50
dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0dl
b3JnaWFfQm9sZC50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0
Y29yZWZvbnRzL0dlb3JnaWFfQm9sZF9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9HZW9yZ2lhX0l0YWxpYy50dGYiLAorICAgICAg
ICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL0ltcGFjdC50dGYiLAor
ICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RyZWJ1Y2hl
dF9NUy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZv
bnRzL1RyZWJ1Y2hldF9NU19Cb2xkLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3Ry
dWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01TX0JvbGRfSXRhbGljLnR0ZiIsCisgICAg
ICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVHJlYnVjaGV0X01T
X0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29y
ZWZvbnRzL1RpbWVzX05ld19Sb21hbi50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90
cnVldHlwZS9tc3R0Y29yZWZvbnRzL1RpbWVzX05ld19Sb21hbl9Cb2xkLnR0ZiIsCisgICAgICAg
ICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21zdHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFu
X0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL21z
dHRjb3JlZm9udHMvVGltZXNfTmV3X1JvbWFuX0l0YWxpYy50dGYiLAorICAgICAgICAiL3Vzci9z
aGFyZS9mb250cy90cnVldHlwZS9tc3R0Y29yZWZvbnRzL1ZlcmRhbmEudHRmIiwKKyAgICAgICAg
Ii91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJkYW5hX0JvbGQudHRm
IiwKKyAgICAgICAgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy9WZXJk
YW5hX0JvbGRfSXRhbGljLnR0ZiIsCisgICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBl
L21zdHRjb3JlZm9udHMvVmVyZGFuYV9JdGFsaWMudHRmIiwKKyAgICAgICAgIi91c3Ivc2hhcmUv
Zm9udHMvdHJ1ZXR5cGUvdGhhaS9HYXJ1ZGEudHRmIiwKKyAgICAgICAgLy8gVGhlIERlamFWdVNh
bnMgZm9udCBpcyB1c2VkIGJ5IHRoZSBjc3MyLjEgdGVzdHMuCisgICAgICAgICIvdXNyL3NoYXJl
L2ZvbnRzL3RydWV0eXBlL3R0Zi1kZWphdnUvRGVqYVZ1U2Fucy50dGYiLAorICAgICAgICAiL3Vz
ci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29yZS9sb2hpdF9oaS50dGYi
LAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYtaW5kaWMtZm9udHMtY29y
ZS9sb2hpdF90YS50dGYiLAorICAgICAgICAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90dGYt
aW5kaWMtZm9udHMtY29yZS9NdWt0aU5hcnJvdy50dGYiLAorICAgIH07CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcnJheXNpemUoZm9udHMpOyArK2kpIHsKKyAgICAgICAgaWYgKGFjY2Vz
cyhmb250c1tpXSwgUl9PSykpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IGFy
ZSBtaXNzaW5nICVzLiBUcnkgcmUtcnVubmluZyBidWlsZC9pbnN0YWxsLWJ1aWxkLWRlcHMuc2gu
IEFsc28gc2VlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2Nocm9taXVtL3dpa2kvTGF5b3V0VGVzdHNMaW51eCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udHNbaV0pOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoZm9udGNmZywgKEZjQ2hhcjgg
KikgZm9udHNbaV0pKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBs
b2FkIGZvbnQgJXNcbiIsIGZvbnRzW2ldKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBXZSBzcGVjaWFsIGNhc2UgdGhlc2UgZm9udHMgYmVjYXVzZSB0
aGV5J3JlIG9ubHkgbmVlZGVkIGluIGEKKyAgICAvLyBmZXcgbGF5b3V0IHRlc3RzLgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvcHRpb25hbEZvbnRzW10gPSB7CisgICAgICAgICIvdXNy
L3NoYXJlL2ZvbnRzL3RydWV0eXBlL3R0Zi1pbmRpYy1mb250cy1jb3JlL2xvaGl0X3BhLnR0ZiIs
CisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShvcHRpb25hbEZv
bnRzKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGZvbnQgPSBvcHRpb25hbEZvbnRzW2ld
OworCisgICAgICAgIC8vIFRoaXMgZm9udCBjaGFuZ2VkIHBhdGhzIGFjcm9zcyBVYnVudHUgcmVs
ZWFzZXMsIHNvIHRyeSBjaGVja2luZyBpbiBib3RoIGxvY2F0aW9ucy4KKyAgICAgICAgaWYgKCFz
dHJjbXAoZm9udCwgIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLWluZGljLWZvbnRzLWNv
cmUvbG9oaXRfcGEudHRmIikKKyAgICAgICAgICAgICYmIGFjY2Vzcyhmb250LCBSX09LKSA8IDAp
CisgICAgICAgICAgICBmb250ID0gIi91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvdHRmLXB1bmph
YmktZm9udHMvbG9oaXRfcGEudHRmIjsKKworICAgICAgICBpZiAoYWNjZXNzKGZvbnQsIFJfT0sp
IDwgMCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJZb3UgYXJlIG1pc3NpbmcgJXMu
IFdpdGhvdXQgdGhpcywgc29tZSBsYXlvdXQgdGVzdHMgbWF5IGZhaWwuICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93
aWtpL0xheW91dFRlc3RzTGludXggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Ig
bW9yZS5cbiIsIGZvbnQpOworICAgICAgICB9IGVsc2UgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRG
aWxlKGZvbnRjZmcsIChGY0NoYXI4ICopIGZvbnQpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNcbiIsIGZvbnQpOworICAgICAgICAgICAgZXhp
dCgxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFsc28gbG9hZCB0aGUgbGF5b3V0LXRl
c3Qtc3BlY2lmaWMgIkFoZW0iIGZvbnQuCisgICAgc3RkOjpzdHJpbmcgYWhlbVBhdGggPSBkcnRE
aXJQYXRoICsgIkFIRU1fX19fLlRURiI7CisgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxl
KGZvbnRjZmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGFoZW1QYXRoLmNfc3Ry
KCkpKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIGZvbnQgJXNc
biIsIGFoZW1QYXRoLmNfc3RyKCkpOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIGlm
ICghRmNDb25maWdTZXRDdXJyZW50KGZvbnRjZmcpKSB7CisgICAgICAgIGZwdXRzKCJGYWlsZWQg
dG8gc2V0IHRoZSBkZWZhdWx0IGZvbnQgY29uZmlndXJhdGlvblxuIiwgc3RkZXJyKTsKKyAgICAg
ICAgZXhpdCgxKTsKKyAgICB9Cit9CisjZW5kaWYgLy8gIU9TKEFORFJPSUQpCisKK3ZvaWQgcGxh
dGZvcm1Jbml0KGludCogYXJnYywgY2hhcioqKiBhcmd2KQoreworICAgIC8vIEZJWE1FOiBJdCdz
IGJldHRlciBjYWxsIGd0a19pbml0KCkgb25seSB3aGVuIHdlIHJ1biBwbHVnaW4gdGVzdHMuCisg
ICAgLy8gU2VlIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9ncm91cC9j
aHJvbWl1bS1kZXYvYnJvd3NlX3RocmVhZC90aHJlYWQvNjMzZWExNjdjZGUxOTZjYSMKKyNpZiBV
U0UoR1RLKQorICAgIGd0a19pbml0KGFyZ2MsIGFyZ3YpOworI2VuZGlmCisKKyNpZiAhT1MoQU5E
Uk9JRCkKKyAgICBzZXR1cEZvbnRjb25maWcoKTsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMzRm
ODRiMzk1YTdlMWZlMjgxZGRmNzQyOWQxZWM3NDQ3NGVhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKwor
Ym9vbCBjaGVja0xheW91dFRlc3RTeXN0ZW1EZXBlbmRlbmNpZXMoKQoreworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIG9wZW5TdGFydHVwRGlhbG9nKCkKK3sKKyAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgorfQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>