<?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>104700</bug_id>
          
          <creation_ts>2012-12-11 12:25:19 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Implement grid items sizing for fixed minmax grid tracks</short_desc>
          <delta_ts>2013-04-22 09:32:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>83848</dependson>
    
    <dependson>106378</dependson>
          <blocked>103311</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788665</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-11 12:25:19 -0800</bug_when>
    <thetext>After bug 103799, we successfully parse minmax functions but don&apos;t properly size the grid items as we don&apos;t implement the specification&apos;s layout algorithm.

As a first step to support content based minmax, this bug will implement the correct sizing for fixed minmax e.g. minmax(40px, 40%) or minmax(40vh, 10em)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788769</commentid>
    <comment_count>1</comment_count>
      <attachid>178869</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-11 14:02:46 -0800</bug_when>
    <thetext>Created attachment 178869
Proposed implementation: Feedback seeked on whether testing logical width and logical height independently is sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789334</commentid>
    <comment_count>2</comment_count>
      <attachid>178869</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 01:43:59 -0800</bug_when>
    <thetext>Comment on attachment 178869
Proposed implementation: Feedback seeked on whether testing logical width and logical height independently is sufficient.

Attachment 178869 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15278498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789701</commentid>
    <comment_count>3</comment_count>
      <attachid>178869</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-12 10:55:07 -0800</bug_when>
    <thetext>Comment on attachment 178869
Proposed implementation: Feedback seeked on whether testing logical width and logical height independently is sufficient.

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

Mac failure is real:

/Volumes/Data/EWS/WebKit/Source/WebCore/rendering/RenderGrid.cpp:192:63: error: unused parameter &apos;direction&apos; [-Werror,-Wunused-parameter]
void RenderGrid::distributeSpaceToTracks(TrackSizingDirection direction, Vector&lt;GridTrack&gt;&amp; tracks, LayoutUnit availableLogicalSpace)

&gt; Source/WebCore/ChangeLog:9
&gt; +        to resolve any sizing function that doesn&apos;t size based on the content (mincontent, maxcontent).

Nit: min-content, max-content.

&gt; Source/WebCore/rendering/RenderGrid.cpp:125
&gt; +        const Length&amp; minTrackLength = trackStyles[i].minTrackBreadth();
&gt; +        const Length&amp; maxTrackLength = trackStyles[i].maxTrackBreadth();

I think most of the time we don&apos;t bother with using a const reference since Length is pretty small (actually, looks like it&apos;s trying to be small, but failing-- I&apos;ll fix that in a separate patch).

&gt; Source/WebCore/rendering/RenderGrid.cpp:155
&gt; +        const Length&amp; minTrackBreadth = trackStyles[i].minTrackBreadth();
&gt; +        const Length&amp; maxTrackBreadth = trackStyles[i].maxTrackBreadth();

Nit: Maybe drop the const &amp;.

&gt; Source/WebCore/rendering/RenderGrid.cpp:160
&gt; +        // Ignore the max track breadth if it is smaller than the min track breadth.

Remove this comment. It describe&apos;s the code and doesn&apos;t answer &apos;why&apos;.

&gt; Source/WebCore/rendering/RenderGrid.cpp:162
&gt; +        if (track.m_maxBreadth &lt; track.m_usedBreadth)
&gt; +            track.m_maxBreadth = track.m_usedBreadth;

Nit: This could be track.m_maxBreadth = std::max(track.m_maxBreadth, track.m_usedBreadth).

&gt; Source/WebCore/rendering/RenderGrid.cpp:179
&gt; +    // FIXME: We stil need to support calc() here (bug 103761).

Nit: stil -&gt; still

&gt; Source/WebCore/rendering/RenderGrid.cpp:187
&gt; +bool RenderGrid::sortByGridTrackGrowthPotential(GridTrack* track1, GridTrack* track2)

Does this function need to be part of RenderGrid?  I would declare it static to the cpp file.

&gt; Source/WebCore/rendering/RenderGrid.cpp:194
&gt; +    const unsigned tracksSize = tracks.size();

size_t and I would drop the const.  Most other uses of const are for global values.

&gt; Source/WebCore/rendering/RenderGrid.cpp:196
&gt; +    for (unsigned i = 0; i &lt; tracksSize; ++i)

size_t

&gt; Source/WebCore/rendering/RenderGrid.cpp:201
&gt; +    for (unsigned i = 0; i &lt; tracksSize; ++i) {

size_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789709</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-12 11:03:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; actually, looks like it&apos;s trying to be small, but failing-- I&apos;ll fix that in a separate patch.

Oh, I&apos;m wrong, it&apos;s already bit packed well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790036</commentid>
    <comment_count>5</comment_count>
      <attachid>178869</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-12 16:19:11 -0800</bug_when>
    <thetext>Comment on attachment 178869
Proposed implementation: Feedback seeked on whether testing logical width and logical height independently is sufficient.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:125
&gt;&gt; +        const Length&amp; maxTrackLength = trackStyles[i].maxTrackBreadth();
&gt; 
&gt; I think most of the time we don&apos;t bother with using a const reference since Length is pretty small (actually, looks like it&apos;s trying to be small, but failing-- I&apos;ll fix that in a separate patch).

True, but it&apos;s always better to avoid a copy if we can avoid it, which we can in this case.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:162
&gt;&gt; +            track.m_maxBreadth = track.m_usedBreadth;
&gt; 
&gt; Nit: This could be track.m_maxBreadth = std::max(track.m_maxBreadth, track.m_usedBreadth).

It can!

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:187
&gt;&gt; +bool RenderGrid::sortByGridTrackGrowthPotential(GridTrack* track1, GridTrack* track2)
&gt; 
&gt; Does this function need to be part of RenderGrid?  I would declare it static to the cpp file.

Unfortunately it has to be because we are accessing GridTrack which is declared as a private class inside RenderGrid. We could make GridTrack publicly declared which would remove this need though. We could also pull it out of RenderGrid to avoid having to rewrite that to RenderGrid::GridTrack. Doing those 2 would probably be better though but I don&apos;t feel strongly either way.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:201
&gt;&gt; +    for (unsigned i = 0; i &lt; tracksSize; ++i) {
&gt; 
&gt; size_t

There is an issue with using size_t here: LayoutUnit doesn&apos;t handle size_t in cross-platform manner. See the FIXME at the beginning of LayoutUnit and https://bugs.webkit.org/show_bug.cgi?id=83848#c19 for more details. It&apos;s possible to fix that by introducing the operator/() for all primitive types. Maybe it&apos;s time to nix this FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790102</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-12 17:25:47 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 178869 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178869&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:187
&gt; &gt;&gt; +bool RenderGrid::sortByGridTrackGrowthPotential(GridTrack* track1, GridTrack* track2)
&gt; &gt; 
&gt; &gt; Does this function need to be part of RenderGrid?  I would declare it static to the cpp file.
&gt; 
&gt; Unfortunately it has to be because we are accessing GridTrack which is declared as a private class inside RenderGrid. We could make GridTrack publicly declared which would remove this need though. We could also pull it out of RenderGrid to avoid having to rewrite that to RenderGrid::GridTrack. Doing those 2 would probably be better though but I don&apos;t feel strongly either way.

I think that would be a good refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790204</commentid>
    <comment_count>7</comment_count>
      <attachid>179182</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-12 19:24:40 -0800</bug_when>
    <thetext>Created attachment 179182
Updated change: made GridTrack public in WebCore namespace and switched the code to use size_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790206</commentid>
    <comment_count>8</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-12 19:26:09 -0800</bug_when>
    <thetext>CC&apos;ing Darin &amp; Emil as they may have some comment on the LayoutUnit change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790226</commentid>
    <comment_count>9</comment_count>
      <attachid>179182</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 20:14:13 -0800</bug_when>
    <thetext>Comment on attachment 179182
Updated change: made GridTrack public in WebCore namespace and switched the code to use size_t.

Attachment 179182 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15313088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790264</commentid>
    <comment_count>10</comment_count>
      <attachid>179182</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-12 21:19:26 -0800</bug_when>
    <thetext>Comment on attachment 179182
Updated change: made GridTrack public in WebCore namespace and switched the code to use size_t.

Attachment 179182 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15316107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790701</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-13 09:53:01 -0800</bug_when>
    <thetext>FWIW, I would do the LayoutUnit change in a separate bug first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790729</commentid>
    <comment_count>12</comment_count>
      <attachid>179182</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-13 10:21:38 -0800</bug_when>
    <thetext>Comment on attachment 179182
Updated change: made GridTrack public in WebCore namespace and switched the code to use size_t.

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

&gt; Source/WebCore/platform/LayoutUnit.h:73
&gt;      LayoutUnit(int value) { setValue(value); }

Please remove the FIXME comment on line 67-70 as you are in effect adding support for size_t. Yay!

&gt; Source/WebCore/platform/LayoutUnit.h:88
&gt; +        m_value = clampTo&lt;unsigned long long&gt;(value * kFixedPointDenominator, static_cast&lt;unsigned long long&gt;(INT_MIN), static_cast&lt;unsigned long long&gt;(INT_MAX));

Assigning the return value from clampTo&lt;unsigned long long&gt; to m_value  do an implicit cast from an unsigned long long to a signed int. This will likely trigger a compiler warning if SATURATED_LAYOUT_ARITHMETIC is enabled. You&apos;ll might want to add a static_cast or do clampTo&lt;int&gt;.

&gt; Source/WebCore/platform/LayoutUnit.h:305
&gt; +    static bool isInBounds(unsigned long value)

Instead of adding two new isInBounds methods how about using the unsigned version directly and do a cast the REPORT_OVERFLOW call in the subpixel disabled constructors? I.e. REPORT_OVERFLOW(isInBounds(static_cast&lt;unsigned&gt;(value)));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790746</commentid>
    <comment_count>13</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-13 10:37:24 -0800</bug_when>
    <thetext>Tony &amp; Emil, thanks for the comment, it sounds like I should just fix bug 83848 for good instead of cutting corners by implementing half of it. Marking this bug as blocked on bug 83848.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801701</commentid>
    <comment_count>14</comment_count>
      <attachid>181574</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-07 15:08:39 -0800</bug_when>
    <thetext>Created attachment 181574
Updated patch, now that the size_t operations are supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801707</commentid>
    <comment_count>15</comment_count>
      <attachid>181574</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-07 15:15:35 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801710</commentid>
    <comment_count>16</comment_count>
      <attachid>181574</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-07 15:16:30 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

Attachment 181574 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15743768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801711</commentid>
    <comment_count>17</comment_count>
      <attachid>181574</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-07 15:17:57 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

Attachment 181574 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15731906</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801724</commentid>
    <comment_count>18</comment_count>
      <attachid>181574</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 15:30:19 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

Attachment 181574 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15739902</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801740</commentid>
    <comment_count>19</comment_count>
      <attachid>181574</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-07 15:40:40 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

Attachment 181574 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15754044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801742</commentid>
    <comment_count>20</comment_count>
      <attachid>181574</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-07 15:42:18 -0800</bug_when>
    <thetext>Comment on attachment 181574
Updated patch, now that the size_t operations are supported.

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:153
&gt; +    LayoutUnit availableLogicalSpace = (direction == ForColumns) ? availableLogicalWidth() : availableLogicalHeight();

The EWS is choking on this line. I forgot to update it to availableLogicalHeight(IncludeMarginBorderPadding).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801747</commentid>
    <comment_count>21</comment_count>
      <attachid>181581</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-07 15:43:51 -0800</bug_when>
    <thetext>Created attachment 181581
Updated patch for the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801920</commentid>
    <comment_count>22</comment_count>
      <attachid>181581</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 18:42:43 -0800</bug_when>
    <thetext>Comment on attachment 181581
Updated patch for the EWS.

Clearing flags on attachment: 181581

Committed r139025: &lt;http://trac.webkit.org/changeset/139025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801921</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 18:42:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802317</commentid>
    <comment_count>24</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-08 10:03:46 -0800</bug_when>
    <thetext>The newly added test seems to be timing out:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fcss-grid-layout%2Fpercent-resolution-grid-item.html%2Cfast%2Fcss-grid-layout%2Fbreadth-size-resolution-grid.html%2Cfast%2Fcss-grid-layout%2Fplace-cell-by-index.html%2Cfast%2Fcss-grid-layout%2Fpercent-padding-margin-resolution-grid-item.html%2Cfast%2Fcss-grid-layout%2Fgrid-columns-rows-get-set-multiple.html%2Cfast%2Fcss-grid-layout%2Fcalc-resolution-grid-item.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802319</commentid>
    <comment_count>25</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-08 10:06:18 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; The newly added test seems to be timing out:

Oh, it _made_ some tests start time out. Bad stuff?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802369</commentid>
    <comment_count>26</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-08 10:51:12 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; The newly added test seems to be timing out:
&gt; 
&gt; Oh, it _made_ some tests start time out. Bad stuff?

The timeout only impacts Win7 Dbg(1), all the other platforms are just fine, including Win7 Dbg(2). The fact that another bot with a similar configuration is fine with the change makes me think the bot is acting up and the change is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802400</commentid>
    <comment_count>27</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-08 11:05:49 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; The newly added test seems to be timing out:
&gt; &gt; 
&gt; &gt; Oh, it _made_ some tests start time out. Bad stuff?
&gt; 
&gt; The timeout only impacts Win7 Dbg(1), all the other platforms are just fine, including Win7 Dbg(2). The fact that another bot with a similar configuration is fine with the change makes me think the bot is acting up and the change is fine.

Win7 Dbg(1) and (2) run two different sets of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879203</commentid>
    <comment_count>28</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-04-22 09:32:08 -0700</bug_when>
    <thetext>The tests that forced this bug re-opened are passing AFAICT. Closing back.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178869</attachid>
            <date>2012-12-11 14:02:46 -0800</date>
            <delta_ts>2012-12-12 19:24:37 -0800</delta_ts>
            <desc>Proposed implementation: Feedback seeked on whether testing logical width and logical height independently is sufficient.</desc>
            <filename>bug-104700-20121211140008.patch</filename>
            <type>text/plain</type>
            <size>19224</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3MDQyZDgwMDAzMzlj
ZTMzYjg1MjUyOTRkMjE1M2M5YWIzOGY0Ny4uYjI3MDg1N2QxYTBlMzU1ODVkYjQ4YjNmMDVkMWMy
NzA0Y2U4ZTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTExICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdy
aWQgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIHBhcnRzIG9mIHRoZSBtaW5tYXgoKSB0cmFjayBzaXpp
bmcgYWxnb3JpdGhtLiBUaGUgY2hvc2VuIHN1YnNldCBlbmFibGVzIHVzCisgICAgICAgIHRvIHJl
c29sdmUgYW55IHNpemluZyBmdW5jdGlvbiB0aGF0IGRvZXNuJ3Qgc2l6ZSBiYXNlZCBvbiB0aGUg
Y29udGVudCAobWluY29udGVudCwgbWF4Y29udGVudCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
Y3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLXdp
ZHRoLW9ubHkuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZFRyYWNrOjpHcmlkVHJhY2spOgorICAgICAg
ICBBZGRlZCBhIG5ldyBtZW1iZXIgdG8gaG9sZCB0aGUgbWF4aW11bSB0cmFjayBicmVhZHRoLgor
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKToKKyAgICAgICAgVXBkYXRlZCB0aGVzZSBmdW5jdGlvbnMgdG8gd29yayBv
biBib3RoIG1pbiBhbmQgbWF4IHRyYWNrIGJyZWFkdGguIEluIG9yZGVyIHRvIG1hdGNoCisgICAg
ICAgIHRoZSBzcGVjaWZpY2F0aW9uLCBpZiBtYXggdHJhY2sgYnJlYWR0aCA8IG1pbiB0cmFjayBi
cmVhZHRoLCB3ZSBpZ25vcmUgdGhlIG1heCB0cmFjayBicmVhZHRoLgorICAgICAgICBGb3IgY29t
cHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcywgaXQgYWxzbyBpbnZvbHZlcyBjYWxsaW5nIGRp
c3RyaWJ1dGVTcGFjZVRvVHJhY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpj
b21wdXRlVXNlZEJyZWFkdGhPZkxlbmd0aCk6CisgICAgICAgIE5ldyBoZWxwZXIgZnVuY3Rpb24g
dGhhdCBjb21wdXRlIGEgc2luZ2xlIGxlbmd0aCdzIHNpemUuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6CisgICAgICAgIE9y
ZGVyaW5nIGZ1bmN0aW9uIGZvciB0aGUgc29ydGluZyB0aGUgdHJhY2s6IGl0IG9yZGVycyB0aGUg
dHJhY2sgcGVyIGluY3JlYXNpbmcgcG90ZW50aWFsCisgICAgICAgIGdyb3d0aCAoZGVmaW5lZCBh
cyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG1heCBicmVhZHRoIGFuZCB0aGUgY3VycmVudGx5IHVz
ZWQgYnJlYWR0aCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVT
cGFjZVRvVHJhY2tzKToKKyAgICAgICAgQWRkZWQgdGhpcyBmdW5jdGlvbiB0aGF0IG1hdGNoZXMg
dGhlIHNwZWNpZmljYXRpb24ncyBhbGdvcml0aG0uIE9ubHkgdGhlIHJlbGV2YW50IGJpdHMgZnJv
bQorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiB3ZXJlIGltcGxlbWVudGVkIGZvciBub3cgKGZv
ciBleGFtcGxlLCBTdWJzZXRPZlRyYWNrc0Zvckdyb3d0aEJleW9uZFRyYWNrR3Jvd3RoQ29uc3Ry
YWludAorICAgICAgICBpcyBhbHdheXMgdGhlIGVtcHR5IHNldCBzbyBpdCB3YXMgb21pdHRlZCku
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICBBZGRlZCB0aGUg
bmV3IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXpl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjptaW5UcmFja0JyZWFkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6ZTo6bWF4VHJhY2tCcmVhZHRoKToKKyAgICAg
ICAgUmVtb3ZlZCAyIEFTU0VSVHMgYXMgdGhlIGxheW91dCBhbGdvcml0aG0gZG9lc24ndCBjYXJl
IGlmIHRoZSBtaW4gLyBtYXggd2VyZQorICAgICAgICBzZXQgZnJvbSBhIHNpbmdsZSB0cmFjayBi
cmVhZHRoIG9yIHRocm91Z2ggbWlubWF4KCkuCisKIDIwMTItMTItMTEgIE1pY2hhZWwgUHJ1ZXR0
ICA8bWljaGFlbEA2OGsub3JnPgogCiAgICAgICAgIFtKU0NdIEFkZCB0ZXN0cyBmb3IgZXhwbGlj
aXQgc2VyaWFsaXphdGlvbiB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcAppbmRleCA0YjBkODM3YWNmMTc1YmVlYjcyNjNlZGE4YmEzMmY5ODBiZDg1ZTFmLi5hZjhh
YjIwZGMzOTIzNjI2OTY0NDMxYzMzZWM0OWJjZDM5ZWM3MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zNywxMCArMzcsMTIgQEAgY2xhc3MgUmVuZGVyR3Jp
ZDo6R3JpZFRyYWNrIHsKIHB1YmxpYzoKICAgICBHcmlkVHJhY2soKQogICAgICAgICA6IG1fdXNl
ZEJyZWFkdGgoMCkKKyAgICAgICAgLCBtX21heEJyZWFkdGgoMCkKICAgICB7CiAgICAgfQogCiAg
ICAgTGF5b3V0VW5pdCBtX3VzZWRCcmVhZHRoOworICAgIExheW91dFVuaXQgbV9tYXhCcmVhZHRo
OwogfTsKIAogUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChOb2RlKiBub2RlKQpAQCAtMTE5LDE0ICsx
MjEsMjEgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1N0eWxlcyA9IHN0eWxlKCkt
PmdyaWRDb2x1bW5zKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrU3R5bGVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIExlbmd0aCB0cmFja0xlbmd0aCA9IHRyYWNrU3R5bGVz
W2ldLmxlbmd0aCgpOwotICAgICAgICBpZiAoIXRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkgeworICAg
ICAgICBjb25zdCBMZW5ndGgmIG1pblRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNbaV0ubWluVHJh
Y2tCcmVhZHRoKCk7CisgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4VHJhY2tMZW5ndGggPSB0cmFj
a1N0eWxlc1tpXS5tYXhUcmFja0JyZWFkdGgoKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBv
bmx5IG9uZSBmaXhlZCBsZW5ndGggcHJvcGVybHkgKGUuZyBtaW5tYXgoMTAwcHgsIG1heC1jb250
ZW50KSkuCisgICAgICAgIGlmICghbWluVHJhY2tMZW5ndGguaXNGaXhlZCgpIHx8ICFtYXhUcmFj
a0xlbmd0aC5pc0ZpeGVkKCkpIHsKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoICs9IHRyYWNrTGVuZ3RoLmludFZhbHVlKCk7Ci0gICAgICAgIG1fbWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoICs9IHRyYWNrTGVuZ3RoLmludFZhbHVlKCk7CisgICAgICAgIExheW91
dFVuaXQgbWluVHJhY2tCcmVhZHRoID0gbWluVHJhY2tMZW5ndGguaW50VmFsdWUoKTsKKyAgICAg
ICAgTGF5b3V0VW5pdCBtYXhUcmFja0JyZWFkdGggPSBtYXhUcmFja0xlbmd0aC5pbnRWYWx1ZSgp
OworICAgICAgICBpZiAobWF4VHJhY2tCcmVhZHRoIDwgbWluVHJhY2tCcmVhZHRoKQorICAgICAg
ICAgICAgbWF4VHJhY2tCcmVhZHRoID0gbWluVHJhY2tCcmVhZHRoOworCisgICAgICAgIG1fbWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoICs9IG1pblRyYWNrQnJlYWR0aDsKKyAgICAgICAgbV9tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWF4VHJhY2tCcmVhZHRoOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYWNjb3VudCBmb3IgbWluIC8gbWF4IGxvZ2ljYWwgd2lkdGguCkBA
IC0xMzksMjUgKzE0OCw2NSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRy
YWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiB0
cmFja3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1N0eWxlcyA9
IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygpIDogc3R5
bGUoKS0+Z3JpZFJvd3MoKTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSA9
IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSA6IGF2
YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNr
U3R5bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdyaWRUcmFjayB0cmFjazsKLSAgICAgICAg
c3dpdGNoICh0cmFja1N0eWxlc1tpXS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBMZW5ndGhUcmFj
a1NpemluZzogewotICAgICAgICAgICAgTGVuZ3RoIHRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNb
aV0ubGVuZ3RoKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc3RpbCBuZWVkIHRvIHN1cHBv
cnQgY2FsYygpIGhlcmUgKGJ1ZyAxMDM3NjEpLgotICAgICAgICAgICAgaWYgKHRyYWNrTGVuZ3Ro
LmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0cmFja0xlbmd0aC5pc1Zp
ZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJyZWFkdGgg
PSB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBs
b2dpY2FsV2lkdGgoKSA6IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJy
ZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpLCB2aWV3KCkpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTWluTWF4VHJhY2tTaXppbmc6Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIG1pbm1heCB0cmFjayBzaXppbmcg
KGJ1ZyAxMDMzMTEpLgotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgfQor
ICAgICAgICBjb25zdCBMZW5ndGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU3R5bGVzW2ldLm1p
blRyYWNrQnJlYWR0aCgpOworICAgICAgICBjb25zdCBMZW5ndGgmIG1heFRyYWNrQnJlYWR0aCA9
IHRyYWNrU3R5bGVzW2ldLm1heFRyYWNrQnJlYWR0aCgpOworCisgICAgICAgIHRyYWNrLm1fdXNl
ZEJyZWFkdGggPSBjb21wdXRlVXNlZEJyZWFkdGhPZkxlbmd0aChkaXJlY3Rpb24sIG1pblRyYWNr
QnJlYWR0aCk7CisgICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IGNvbXB1dGVVc2VkQnJlYWR0
aE9mTGVuZ3RoKGRpcmVjdGlvbiwgbWF4VHJhY2tCcmVhZHRoKTsKKworICAgICAgICAvLyBJZ25v
cmUgdGhlIG1heCB0cmFjayBicmVhZHRoIGlmIGl0IGlzIHNtYWxsZXIgdGhhbiB0aGUgbWluIHRy
YWNrIGJyZWFkdGguCisgICAgICAgIGlmICh0cmFjay5tX21heEJyZWFkdGggPCB0cmFjay5tX3Vz
ZWRCcmVhZHRoKQorICAgICAgICAgICAgdHJhY2subV9tYXhCcmVhZHRoID0gdHJhY2subV91c2Vk
QnJlYWR0aDsKKworICAgICAgICBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLT0gdHJhY2subV91c2Vk
QnJlYWR0aDsKKwogICAgICAgICB0cmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICB9CisKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGNvbnRlbnQtYmFzZWQgc2l6aW5nIChzdGVwIDIgb2YgdGhlIGFs
Z29yaXRobSkuCisKKyAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFNwYWNlIDw9IDApCisgICAgICAg
IHJldHVybjsKKworICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKGRpcmVjdGlvbiwgdHJhY2tz
LCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOworfQorCitMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmNv
bXB1dGVVc2VkQnJlYWR0aE9mTGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Y29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc3RpbCBuZWVk
IHRvIHN1cHBvcnQgY2FsYygpIGhlcmUgKGJ1ZyAxMDM3NjEpLgorICAgIGlmICh0cmFja0xlbmd0
aC5pc0ZpeGVkKCkgfHwgdHJhY2tMZW5ndGguaXNQZXJjZW50KCkgfHwgdHJhY2tMZW5ndGguaXNW
aWV3cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHRyYWNr
TGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGxvZ2ljYWxXaWR0aCgpIDogY29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxvZ2lj
YWxIZWlnaHQoKSksIHZpZXcoKSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAwOworfQorCitib29sIFJlbmRlckdyaWQ6OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlh
bChHcmlkVHJhY2sqIHRyYWNrMSwgR3JpZFRyYWNrKiB0cmFjazIpCit7CisgICAgcmV0dXJuICh0
cmFjazEtPm1fbWF4QnJlYWR0aCAtIHRyYWNrMS0+bV91c2VkQnJlYWR0aCkgPD0gKHRyYWNrMi0+
bV9tYXhCcmVhZHRoIC0gdHJhY2syLT5tX3VzZWRCcmVhZHRoKTsKK30KKwordm9pZCBSZW5kZXJH
cmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24sIFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNh
bFNwYWNlKQoreworICAgIGNvbnN0IHVuc2lnbmVkIHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgp
OworICAgIFZlY3RvcjxHcmlkVHJhY2sqPiBzb3J0ZWRUcmFja3ModHJhY2tzU2l6ZSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkKKyAgICAgICAgc29ydGVk
VHJhY2tzW2ldID0gdHJhY2tzLmRhdGEoKSArIGk7CisKKyAgICBzdGQ6OnNvcnQoc29ydGVkVHJh
Y2tzLmJlZ2luKCksIHNvcnRlZFRyYWNrcy5lbmQoKSwgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90
ZW50aWFsKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3NTaXplOyArK2kp
IHsKKyAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9ICpzb3J0ZWRUcmFja3NbaV07CisgICAgICAg
IExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFNwYWNlU2hhcmUgPSBhdmFpbGFibGVMb2dpY2Fs
U3BhY2UgLyAodHJhY2tzU2l6ZSAtIGkpOworICAgICAgICBMYXlvdXRVbml0IGdyb3d0aFNoYXJl
ID0gc3RkOjptaW4oYXZhaWxhYmxlTG9naWNhbFNwYWNlU2hhcmUsIHRyYWNrLm1fbWF4QnJlYWR0
aCAtIHRyYWNrLm1fdXNlZEJyZWFkdGgpOworICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoICs9
IGdyb3d0aFNoYXJlOworICAgICAgICBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLT0gZ3Jvd3RoU2hh
cmU7CisgICAgfQorCisgICAgLy8gRklYTUU6IFdlIGRvbid0IGltcGxlbWVudCB0aGUgbGFzdCAy
IHN0ZXBzIG9mIHRoZSBhbGdvcml0aG0gYXMgd2UgZG9uJ3QgaW1wbGVtZW50IGNvbnRlbnQgYmFz
ZWQgc2l6aW5nLgogfQogCiB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBiZTliYmFkODVhMjJjYWQ0MmE1ZDll
OTc1OTRiNTQ0ZmJmYjYzOGQ5Li45MjYyN2RlMTRkYzQ1NWMzMGNiNGNjMGI0MzM5NDA2MmQ3NTEw
NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTQ5LDYgKzQ5LDkg
QEAgcHJpdmF0ZToKICAgICBjbGFzcyBHcmlkVHJhY2s7CiAgICAgZW51bSBUcmFja1NpemluZ0Rp
cmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJvd3MgfTsKICAgICB2b2lkIGNvbXB1dGVkVXNlZEJy
ZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+
Jik7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZkxlbmd0aChUcmFja1Npemlu
Z0RpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJik7CisgICAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRy
YWNrR3Jvd3RoUG90ZW50aWFsKEdyaWRUcmFjayosIEdyaWRUcmFjayopOworICAgIHZvaWQgZGlz
dHJpYnV0ZVNwYWNlVG9UcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJh
Y2s+JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogICAgIHZvaWQgbGF5b3V0
R3JpZEl0ZW1zKCk7CiAKICAgICBMYXlvdXRQb2ludCBmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24o
UmVuZGVyQm94KiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgY29uc3Qg
VmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAppbmRleCAwYjVkOGIxNmRmZGRlMzVhZjllMjhkMTkx
ZmNlMDZmNDcwMmMzNzM4Li4xNDJiMmFkN2Y1MDAwNThiMjZkMjg0YzIwZjJlMmRlNzYxZTQyOGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgK
QEAgLTY2LDE0ICs2NiwxMiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMZW5ndGgmIG1pblRyYWNr
QnJlYWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1pbk1heFRy
YWNrU2l6aW5nKTsKICAgICAgICAgQVNTRVJUKCFtX21pblRyYWNrQnJlYWR0aC5pc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgcmV0dXJuIG1fbWluVHJhY2tCcmVhZHRoOwogICAgIH0KIAogICAgIGNv
bnN0IExlbmd0aCYgbWF4VHJhY2tCcmVhZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gTWluTWF4VHJhY2tTaXppbmcpOwogICAgICAgICBBU1NFUlQoIW1fbWF4VHJh
Y2tCcmVhZHRoLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gbV9tYXhUcmFja0JyZWFk
dGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGU3Y2ExM2MzNDJiYzlkZDAxZDFhOTY3MmVjZmU2OGFjMzNkOGUx
YzUuLjMzNTJlNWFkYWE5OTRiZTBhZDAyNThmNjVlZmMwZjExYzFmMzFkYTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMi0xMSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQgZ3JpZCBpdGVt
cyBzaXppbmcgZm9yIGZpeGVkIG1pbm1heCBncmlkIHRyYWNrcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzAwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9taW5t
YXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhl
ZC1sb2dpY2FsLXdpZHRoLW9ubHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1vbmx5Lmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTEyLTExICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlYmFzZWxpbmUgZmxvYXRzLXdyYXAtaW5zaWRlLWlubGluZS0wMDcuaHRtbCBhZnRl
ciByMTM3MzMxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
bWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTdlZDE0MDg0NzBkYmUyZGZlYzkzNzYyZDg5ZGQ0
Yjc3Y2U5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxh
eW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorQnVnIDEwNDcwMDogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IGdyaWQg
aXRlbXMgc2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3MKKworQ2hlY2tzIHRoYXQg
YSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBtaW5tYXggcHJvcGVybHkgY29tcHV0ZSB0aGUgbG9n
aWNhbCBoZWlnaHQgaW4gc2V2ZXJhbCB3cml0aW5nLW1vZGUuCisKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQt
bGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkODU3NWNhYzcwNGM4MWM5MWY2OTlkNzNlMWZmMjJjNGQ1NzFlNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5t
YXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJs
ZWQiLCAxKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJr
aXQtZ3JpZDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OworICAgIHdpZHRoOiAxMDBweDsK
KyAgICBoZWlnaHQ6IDIwMHB4OworfQorCisjZ3JpZDEgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1
bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgoMjBweCwgODBweCkgMTYw
cHg7Cit9CisKKyNncmlkMiB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7CisgICAg
LXdlYmtpdC1ncmlkLXJvd3M6IG1pbm1heCg1MCUsIDEyMHB4KSBtaW5tYXgoMjBweCwgNDAlKTsK
K30KKworI2dyaWQzIHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogMzBweDsKKyAgICAvKiBP
dmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0LWdyaWQtcm93czogbWlubWF4KDEwcHgs
IDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOworfQorCisjZ3JpZDQgeworICAgIC13ZWJraXQt
Z3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgoMjBweCwg
ODBweCkgNjBweDsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7Cit9CisK
KyNncmlkNSB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7CisgICAgLyogOTAlID4g
ODBweCwgODBweCBzaG91bGQgYmUgaWdub3JlZC4gKi8KKyAgICAtd2Via2l0LWdyaWQtcm93czog
bWlubWF4KDkwJSwgODBweCkgbWlubWF4KDEwcHgsIDYwJSk7CisgICAgLXdlYmtpdC13cml0aW5n
LW1vZGU6IHZlcnRpY2FsLWxyOworfQorCisjZ3JpZDYgeworICAgIC8qIE92ZXJsYXBwaW5nIHJh
bmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3Jp
ZC1yb3dzOiBtaW5tYXgoMTBweCwgMTgwcHgpIG1pbm1heCgzMHB4LCAxNTBweCk7CisgICAgLXdl
YmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7Cit9CisKKyNhIHsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDE7CisgICAgLXdlYmtp
dC1ncmlkLXJvdzogMTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisK
KyNiIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAtd2Via2l0LWdyaWQtY29s
dW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDI7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
aGVpZ2h0OiAxMDAlOworfQorCis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJjaGVja0xheW91dCgn
LmdyaWQnKSI+CisKKzxwPjxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9iLzEwNDcwMCI+QnVn
IDEwNDcwMDxhPjogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IGdyaWQgaXRlbXMgc2l6aW5n
IGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3M8L3A+Cis8cD5DaGVja3MgdGhhdCBhIGdyaWQg
ZWxlbWVudCB3aXRoIGZpeGVkIG1pbm1heCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dpY2FsIGhl
aWdodCBpbiBzZXZlcmFsIHdyaXRpbmctbW9kZS48L3A+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlk
PSJncmlkMSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNDAiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRp
diBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQyIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIxMjAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iODAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDMiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjkwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+
CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjExMCIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMzAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlk
NCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4K
KyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjQwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJncmlkIiBpZD0iZ3JpZDUiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMw
IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI5MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMCI+PC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIx
MDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSI5MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2PgorICAgIDxk
aXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjMwIj48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1v
bmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1h
eC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzZTRm
NmYzNDdiZjA4YWNiYzk1MTc4YjY1MDI5YTdhNmFhOGM0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0
aC1vbmx5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitCdWcgMTA0NzAwOiBbQ1NTIEdy
aWQgTGF5b3V0XSBJbXBsZW1lbnQgZ3JpZCBpdGVtcyBzaXppbmcgZm9yIGZpeGVkIG1pbm1heCBn
cmlkIHRyYWNrcworCitDaGVja3MgdGhhdCBhIGdyaWQgZWxlbWVudCB3aXRoIGZpeGVkIG1pbm1h
eCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dpY2FsIHdpZHRoIGluIHNldmVyYWwgd3JpdGluZy1t
b2RlLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0
aC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4
ZWQtbG9naWNhbC13aWR0aC1vbmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRhYjlhMTJkNWJhYzNjNjI3
NGM4ZjFhMmZjYWQwMWFhOTk3MWNkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHkuaHRtbApA
QCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgMSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5ncmlk
IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
eTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKK30KKworI2dyaWQxIHsK
KyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbWlubWF4KDIwcHgsIDgwcHgpIDYwcHg7CisgICAg
LXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7Cit9CisKKyNncmlkMiB7CisgICAgLyogRmlyc3QgbWlu
bWF4IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguICovCisg
ICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IG1pbm1heCg1MCUsIDYwcHgpIG1pbm1heCgxMHB4LCA0
MCUpOworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworfQorCisjZ3JpZDMgeworICAgIC8q
IE92ZXJsYXBwaW5nIHJhbmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5tYXgo
MTBweCwgODBweCkgbWlubWF4KDIwcHgsIDUwcHgpOworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAz
MHB4OworfQorCisjZ3JpZDQgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5tYXgoMjBw
eCwgODBweCkgMTYwcHg7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7CisgICAgLXdlYmtp
dC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOworfQorCisjZ3JpZDUgeworICAgIC8qIDUwJSA+
IDgwcHgsIDgwcHggc2hvdWxkIGJlIGlnbm9yZWQuICovCisgICAgLXdlYmtpdC1ncmlkLWNvbHVt
bnM6IG1pbm1heCg1MCUsIDgwcHgpIG1pbm1heCgxMHB4LCA2MCUpOworICAgIC13ZWJraXQtZ3Jp
ZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsKK30K
KworI2dyaWQ2IHsKKyAgICAvKiBPdmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0LWdy
aWQtY29sdW1uczogbWlubWF4KDEwcHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOworICAg
IC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jp
em9udGFsLWJ0OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAt
d2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjYiB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbjogMjsKKyAgICAtd2Via2l0LWdy
aWQtcm93OiAxOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKworPC9z
dHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJykiPgorCis8cD48YSBocmVm
PSJodHRwczovL3dlYmtpdC5vcmcvYi8xMDQ3MDAiPkJ1ZyAxMDQ3MDA8YT46IFtDU1MgR3JpZCBM
YXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdyaWQg
dHJhY2tzPC9wPgorPHA+Q2hlY2tzIHRoYXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBtaW5t
YXggcHJvcGVybHkgY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0aCBpbiBzZXZlcmFsIHdyaXRpbmct
bW9kZS48L3A+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkMSIgZGF0YS1leHBlY3RlZC13
aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwIj48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDIi
IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+Cisg
ICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSI2MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMw
IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
Z3JpZCIgaWQ9ImdyaWQzIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIg
ZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2PgorPC9kaXY+
CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkNCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAw
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVj
dGVkLWhlaWdodD0iNDAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIz
MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ1IiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYg
aWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMw
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIg
aWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0
PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iNDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNjAiPjwvZGl2PgorPC9kaXY+CisKKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179182</attachid>
            <date>2012-12-12 19:24:40 -0800</date>
            <delta_ts>2013-01-07 15:08:36 -0800</delta_ts>
            <desc>Updated change: made GridTrack public in WebCore namespace and switched the code to use size_t.</desc>
            <filename>bug-104700-20121212192138.patch</filename>
            <type>text/plain</type>
            <size>23730</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uNGYzZGZmOGRmZmVkNTdkOTczMGNjYTFkNzU0N2Ez
ZWE2YmQ5YTRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTEyLTEyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdy
aWQgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIHBhcnRzIG9mIHRoZSBtaW5tYXgoKSB0cmFjayBzaXpp
bmcgYWxnb3JpdGhtLiBUaGUgY2hvc2VuIHN1YnNldCBlbmFibGVzIHVzCisgICAgICAgIHRvIHJl
c29sdmUgYW55IHNpemluZyBmdW5jdGlvbiB0aGF0IGRvZXNuJ3Qgc2l6ZSBiYXNlZCBvbiB0aGUg
Y29udGVudCAobWluLWNvbnRlbnQsIG1heC1jb250ZW50KS4KKworICAgICAgICBUZXN0czogZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHkuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwt
d2lkdGgtb25seS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRVbml0OjpMYXlvdXRVbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dFVuaXQ6OmlzSW5Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IvKToK
KyAgICAgICAgQWRkZWQgdGhlIG1pc3NpbmcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgZGl2aXNpb24g
YmV0d2VlbiBMYXlvdXRVbml0IGFuZCBzaXplX3QsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5CisgICAg
ICAgIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzLiBUaGlzIG1hdGNoZXMgdGhl
IHJlY29tbWFuZGF0aW9uIG1hZGUgYnkgRGFyaW4gaW4gYnVnIDgzODQ4IHRob3VnaAorICAgICAg
ICBJIG9ubHkgaW1wbGVtZW50ZWQgdGhlIHVuc2lnbmVkIHR5cGVzIGFzIHNpemVfdCBpcyB1bnNp
Z25lZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRUcmFjazo6R3JpZFRyYWNrKToKKyAgICAgICAgQWRkZWQgYSBuZXcgbWVtYmVy
IHRvIGhvbGQgdGhlIG1heGltdW0gdHJhY2sgYnJlYWR0aC4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6CisgICAg
ICAgIFVwZGF0ZWQgdGhlc2UgZnVuY3Rpb25zIHRvIHdvcmsgb24gYm90aCBtaW4gYW5kIG1heCB0
cmFjayBicmVhZHRoLiBJbiBvcmRlciB0byBtYXRjaAorICAgICAgICB0aGUgc3BlY2lmaWNhdGlv
biwgaWYgbWF4IHRyYWNrIGJyZWFkdGggPCBtaW4gdHJhY2sgYnJlYWR0aCwgd2UgaWdub3JlIHRo
ZSBtYXggdHJhY2sgYnJlYWR0aC4KKyAgICAgICAgRm9yIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdy
aWRUcmFja3MsIGl0IGFsc28gaW52b2x2ZXMgY2FsbGluZyBkaXN0cmlidXRlU3BhY2VUb1RyYWNr
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZM
ZW5ndGgpOgorICAgICAgICBOZXcgaGVscGVyIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZSBhIHNpbmds
ZSBsZW5ndGgncyBzaXplLgorCisgICAgICAgIChXZWJDb3JlOjpzb3J0QnlHcmlkVHJhY2tHcm93
dGhQb3RlbnRpYWwpOgorICAgICAgICBPcmRlcmluZyBmdW5jdGlvbiBmb3IgdGhlIHNvcnRpbmcg
dGhlIHRyYWNrOiBpdCBvcmRlcnMgdGhlIHRyYWNrIHBlciBpbmNyZWFzaW5nIHBvdGVudGlhbAor
ICAgICAgICBncm93dGggKGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtYXggYnJl
YWR0aCBhbmQgdGhlIGN1cnJlbnRseSB1c2VkIGJyZWFkdGgpLgorCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyk6CisgICAgICAgIEFkZGVkIHRo
aXMgZnVuY3Rpb24gdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpY2F0aW9uJ3MgYWxnb3JpdGhtLiBP
bmx5IHRoZSByZWxldmFudCBiaXRzIGZyb20KKyAgICAgICAgdGhlIHNwZWNpZmljYXRpb24gd2Vy
ZSBpbXBsZW1lbnRlZCBmb3Igbm93IChmb3IgZXhhbXBsZSwgU3Vic2V0T2ZUcmFja3NGb3JHcm93
dGhCZXlvbmRUcmFja0dyb3d0aENvbnN0cmFpbnQKKyAgICAgICAgaXMgYWx3YXlzIHRoZSBlbXB0
eSBzZXQgc28gaXQgd2FzIG9taXR0ZWQpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdy
aWQuaDoKKyAgICAgICAgQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMgYW5kIGRlY2xhcmVkIEdyaWRU
cmFjayBhcyBwdWJsaWMgaW50byB0aGUgV2ViQ29yZSBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRy
YWNrU2l6ZTo6bWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1Np
emU6Om1heFRyYWNrQnJlYWR0aCk6CisgICAgICAgIFJlbW92ZWQgMiBBU1NFUlRzIGFzIHRoZSBs
YXlvdXQgYWxnb3JpdGhtIGRvZXNuJ3QgY2FyZSBpZiB0aGUgbWluIC8gbWF4IHdlcmUKKyAgICAg
ICAgc2V0IGZyb20gYSBzaW5nbGUgdHJhY2sgYnJlYWR0aCBvciB0aHJvdWdoIG1pbm1heCgpLgor
CiAyMDEyLTEyLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBUcnkgdG8gZml4IHRoZSBHVEsrIGRlYnVnIGJ1bGlkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYXlvdXRVbml0LmgKaW5kZXggYTgzZTk1Yzc0ZDk0MGY3MzczYjQ1YjA5ZmVlZTkzZTZjNGM3
NzlkYy4uODkxYWNiYTRhY2M3ZWViNGQ1OWIyZTg1ODVhY2M2ZTU2YTcxMDdhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xheW91dFVuaXQuaApAQCAtNzMsNiArNzMsMjQgQEAgcHVibGljOgogICAg
IExheW91dFVuaXQoaW50IHZhbHVlKSB7IHNldFZhbHVlKHZhbHVlKTsgfQogICAgIExheW91dFVu
aXQodW5zaWduZWQgc2hvcnQgdmFsdWUpIHsgc2V0VmFsdWUodmFsdWUpOyB9CiAgICAgTGF5b3V0
VW5pdCh1bnNpZ25lZCB2YWx1ZSkgeyBzZXRWYWx1ZSh2YWx1ZSk7IH0KKyAgICBMYXlvdXRVbml0
KHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgICAgeworI2lmIEVOQUJMRShTQVRVUkFURURfTEFZT1VU
X0FSSVRITUVUSUMpCisgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvPHVuc2lnbmVkIGxvbmc+KHZh
bHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
SU5UX01JTiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KElOVF9NQVgpKTsKKyNlbHNlCisg
ICAgICAgIFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7CisgICAgICAgIG1fdmFs
dWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CisjZW5kaWYKKyAgICB9CisgICAg
TGF5b3V0VW5pdCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCisgICAgeworI2lmIEVOQUJMRShT
QVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpCisgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvPHVu
c2lnbmVkIGxvbmcgbG9uZz4odmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KElOVF9NSU4pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KElOVF9NQVgpKTsKKyNlbHNlCisgICAgICAgIFJFUE9SVF9PVkVSRkxPVyhpc0lu
Qm91bmRzKHZhbHVlKSk7CisgICAgICAgIG1fdmFsdWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVu
b21pbmF0b3I7CisjZW5kaWYKKyAgICB9CiAgICAgTGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkKICAg
ICB7CiAjaWYgRU5BQkxFKFNBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQykKQEAgLTk1LDYgKzEx
Myw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0KGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZM
T1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWU7IH0KICAgICBMYXlvdXRVbml0
KHVuc2lnbmVkIHNob3J0IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVl
KSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQogICAgIExheW91dFVuaXQodW5zaWduZWQgdmFsdWUpIHsg
UkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlOyB9Cisg
ICAgTGF5b3V0VW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0lu
Qm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorICAgIExheW91dFVuaXQodW5zaWdu
ZWQgbG9uZyBsb25nIHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7
IG1fdmFsdWUgPSB2YWx1ZTsgfQogICAgIExheW91dFVuaXQoZmxvYXQgdmFsdWUpIHsgUkVQT1JU
X09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlOyB9CiAgICAgTGF5
b3V0VW5pdChkb3VibGUgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUp
KTsgbV92YWx1ZSA9IHZhbHVlOyB9CiAjZW5kaWYKQEAgLTI4MiwxMSArMzAyLDE5IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRv
cjsKICAgICB9CisgICAgc3RhdGljIGJvb2wgaXNJbkJvdW5kcyh1bnNpZ25lZCBsb25nIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIDo6ZmFicyh2YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkgLyBrRml4ZWRQb2lu
dERlbm9taW5hdG9yOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBpc0luQm91bmRzKHVuc2lnbmVk
IGxvbmcgbG9uZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiA6OmZhYnModmFsdWUpIDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKKyAgICB9CiAgICAgc3RhdGljIGJvb2wgaXNJ
bkJvdW5kcyhkb3VibGUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gOjpmYWJzKHZhbHVl
KSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8ga0ZpeGVkUG9pbnREZW5vbWlu
YXRvcjsKICAgICB9Ci0gICAgCisKICAgICBpbmxpbmUgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUp
CiAgICAgewogI2lmIEVOQUJMRShTQVRVUkFURURfTEFZT1VUX0FSSVRITUVUSUMpCkBAIC01NzUs
MTEgKzYwMywyNiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5p
dCYgYSwgaW50IGIpCiAgICAgcmV0dXJuIGEgLyBMYXlvdXRVbml0KGIpOwogfQogCitpbmxpbmUg
TGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5pdCYgYSwgdW5zaWduZWQgc2hvcnQg
YikKK3sKKyAgICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7Cit9CisKIGlubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBiKQogewogICAgIHJl
dHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3Iv
KGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGxvbmcgYikKK3sKKyAgICByZXR1cm4gYSAv
IExheW91dFVuaXQoYik7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhjb25zdCBM
YXlvdXRVbml0JiBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKK3sKKyAgICByZXR1cm4gYSAvIExh
eW91dFVuaXQoYik7Cit9CisKIGlubGluZSBmbG9hdCBvcGVyYXRvci8oY29uc3QgZmxvYXQgYSwg
Y29uc3QgTGF5b3V0VW5pdCYgYikKIHsKICAgICByZXR1cm4gYSAvIGIudG9GbG9hdCgpOwpAQCAt
NTk1LDExICs2MzgsMjYgQEAgaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IGludCBh
LCBjb25zdCBMYXlvdXRVbml0JiBiKQogICAgIHJldHVybiBMYXlvdXRVbml0KGEpIC8gYjsKIH0K
IAoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIHNob3J0IGEsIGNvbnN0IExh
eW91dFVuaXQmIGIpCit7CisgICAgcmV0dXJuIExheW91dFVuaXQoYSkgLyBiOworfQorCiBpbmxp
bmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikK
IHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKK2lubGluZSBMYXlvdXRVbml0
IG9wZXJhdG9yLyh1bnNpZ25lZCBsb25nIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCit7CisgICAg
cmV0dXJuIExheW91dFVuaXQoYSkgLyBiOworfQorCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRv
ci8odW5zaWduZWQgbG9uZyBsb25nIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCit7CisgICAgcmV0
dXJuIExheW91dFVuaXQoYSkgLyBiOworfQorCiBpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciso
Y29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKIHsKICAgICBMYXlvdXRV
bml0IHJldHVyblZhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRl
eCA0YjBkODM3YWNmMTc1YmVlYjcyNjNlZGE4YmEzMmY5ODBiZDg1ZTFmLi40YzYyYzkyYjY4ZTlk
NWM0ZDI0NmQ5OTQ1YmM4MTM2ODU2OWI1NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCkBAIC0zMywxNCArMzMsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBSZW5kZXJHcmlkOjpHcmlkVHJhY2sgeworY2xhc3MgR3JpZFRyYWNrIHsKIHB1Ymxp
YzoKICAgICBHcmlkVHJhY2soKQogICAgICAgICA6IG1fdXNlZEJyZWFkdGgoMCkKKyAgICAgICAg
LCBtX21heEJyZWFkdGgoMCkKICAgICB7CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCBtX3VzZWRC
cmVhZHRoOworICAgIExheW91dFVuaXQgbV9tYXhCcmVhZHRoOwogfTsKIAogUmVuZGVyR3JpZDo6
UmVuZGVyR3JpZChOb2RlKiBub2RlKQpAQCAtMTE5LDE0ICsxMjEsMjEgQEAgdm9pZCBSZW5kZXJH
cmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgY29uc3QgVmVjdG9yPEdy
aWRUcmFja1NpemU+JiB0cmFja1N0eWxlcyA9IHN0eWxlKCktPmdyaWRDb2x1bW5zKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrU3R5bGVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIExlbmd0aCB0cmFja0xlbmd0aCA9IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpOwotICAgICAg
ICBpZiAoIXRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkgeworICAgICAgICBjb25zdCBMZW5ndGgmIG1p
blRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNbaV0ubWluVHJhY2tCcmVhZHRoKCk7CisgICAgICAg
IGNvbnN0IExlbmd0aCYgbWF4VHJhY2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXS5tYXhUcmFja0Jy
ZWFkdGgoKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBvbmx5IG9uZSBmaXhlZCBsZW5ndGgg
cHJvcGVybHkgKGUuZyBtaW5tYXgoMTAwcHgsIG1heC1jb250ZW50KSkuCisgICAgICAgIGlmICgh
bWluVHJhY2tMZW5ndGguaXNGaXhlZCgpIHx8ICFtYXhUcmFja0xlbmd0aC5pc0ZpeGVkKCkpIHsK
ICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoICs9IHRyYWNrTGVu
Z3RoLmludFZhbHVlKCk7Ci0gICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoICs9IHRy
YWNrTGVuZ3RoLmludFZhbHVlKCk7CisgICAgICAgIExheW91dFVuaXQgbWluVHJhY2tCcmVhZHRo
ID0gbWluVHJhY2tMZW5ndGguaW50VmFsdWUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXhUcmFj
a0JyZWFkdGggPSBtYXhUcmFja0xlbmd0aC5pbnRWYWx1ZSgpOworCisgICAgICAgIG1heFRyYWNr
QnJlYWR0aCA9IHN0ZDo6bWF4KG1heFRyYWNrQnJlYWR0aCwgbWluVHJhY2tCcmVhZHRoKTsKKwor
ICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBtaW5UcmFja0JyZWFkdGg7Cisg
ICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoICs9IG1heFRyYWNrQnJlYWR0aDsKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFjY291bnQgZm9yIG1pbiAvIG1heCBsb2dp
Y2FsIHdpZHRoLgpAQCAtMTM5LDI1ICsxNDgsNjMgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJy
ZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0b3I8
R3JpZFRyYWNrPiYgdHJhY2tzKQogewogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTdHlsZXMgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENv
bHVtbnMoKSA6IHN0eWxlKCktPmdyaWRSb3dzKCk7CisgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVM
b2dpY2FsU3BhY2UgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gYXZhaWxhYmxlTG9naWNh
bFdpZHRoKCkgOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0cmFja1N0eWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2sgdHJh
Y2s7Ci0gICAgICAgIHN3aXRjaCAodHJhY2tTdHlsZXNbaV0udHlwZSgpKSB7Ci0gICAgICAgIGNh
c2UgTGVuZ3RoVHJhY2tTaXppbmc6IHsKLSAgICAgICAgICAgIExlbmd0aCB0cmFja0xlbmd0aCA9
IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpOwotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHN0aWwg
bmVlZCB0byBzdXBwb3J0IGNhbGMoKSBoZXJlIChidWcgMTAzNzYxKS4KLSAgICAgICAgICAgIGlm
ICh0cmFja0xlbmd0aC5pc0ZpeGVkKCkgfHwgdHJhY2tMZW5ndGguaXNQZXJjZW50KCkgfHwgdHJh
Y2tMZW5ndGguaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAgICAgICB0cmFjay5t
X3VzZWRCcmVhZHRoID0gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIGRpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gbG9naWNhbFdpZHRoKCkgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQo
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSwgdmlldygpKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE1pbk1heFRyYWNrU2l6
aW5nOgotICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciBtaW5tYXgg
dHJhY2sgc2l6aW5nIChidWcgMTAzMzExKS4KLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgTGVuZ3RoJiBtaW5UcmFja0JyZWFkdGggPSB0cmFj
a1N0eWxlc1tpXS5taW5UcmFja0JyZWFkdGgoKTsKKyAgICAgICAgY29uc3QgTGVuZ3RoJiBtYXhU
cmFja0JyZWFkdGggPSB0cmFja1N0eWxlc1tpXS5tYXhUcmFja0JyZWFkdGgoKTsKKworICAgICAg
ICB0cmFjay5tX3VzZWRCcmVhZHRoID0gY29tcHV0ZVVzZWRCcmVhZHRoT2ZMZW5ndGgoZGlyZWN0
aW9uLCBtaW5UcmFja0JyZWFkdGgpOworICAgICAgICB0cmFjay5tX21heEJyZWFkdGggPSBjb21w
dXRlVXNlZEJyZWFkdGhPZkxlbmd0aChkaXJlY3Rpb24sIG1heFRyYWNrQnJlYWR0aCk7CisKKyAg
ICAgICAgdHJhY2subV9tYXhCcmVhZHRoID0gc3RkOjptYXgodHJhY2subV9tYXhCcmVhZHRoLCB0
cmFjay5tX3VzZWRCcmVhZHRoKTsKKworICAgICAgICBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLT0g
dHJhY2subV91c2VkQnJlYWR0aDsKKwogICAgICAgICB0cmFja3MuYXBwZW5kKHRyYWNrKTsKICAg
ICB9CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvbnRlbnQtYmFzZWQgc2l6aW5nIChzdGVw
IDIgb2YgdGhlIGFsZ29yaXRobSkuCisKKyAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFNwYWNlIDw9
IDApCisgICAgICAgIHJldHVybjsKKworICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKGRpcmVj
dGlvbiwgdHJhY2tzLCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOworfQorCitMYXlvdXRVbml0IFJl
bmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mTGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTog
V2Ugc3RpbGwgbmVlZCB0byBzdXBwb3J0IGNhbGMoKSBoZXJlIChidWcgMTAzNzYxKS4KKyAgICBp
ZiAodHJhY2tMZW5ndGguaXNGaXhlZCgpIHx8IHRyYWNrTGVuZ3RoLmlzUGVyY2VudCgpIHx8IHRy
YWNrTGVuZ3RoLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCisgICAgICAgIHJldHVybiB2YWx1ZUZv
ckxlbmd0aCh0cmFja0xlbmd0aCwgZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBsb2dpY2FsV2lk
dGgoKSA6IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBz
dHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpLCB2aWV3KCkpOworCisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3Ro
UG90ZW50aWFsKEdyaWRUcmFjayogdHJhY2sxLCBHcmlkVHJhY2sqIHRyYWNrMikKK3sKKyAgICBy
ZXR1cm4gKHRyYWNrMS0+bV9tYXhCcmVhZHRoIC0gdHJhY2sxLT5tX3VzZWRCcmVhZHRoKSA8PSAo
dHJhY2syLT5tX21heEJyZWFkdGggLSB0cmFjazItPm1fdXNlZEJyZWFkdGgpOworfQorCit2b2lk
IFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxT
cGFjZSkKK3sKKyAgICBjb25zdCBzaXplX3QgdHJhY2tzU2l6ZSA9IHRyYWNrcy5zaXplKCk7Cisg
ICAgVmVjdG9yPEdyaWRUcmFjayo+IHNvcnRlZFRyYWNrcyh0cmFja3NTaXplKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkKKyAgICAgICAgc29ydGVkVHJhY2tz
W2ldID0gdHJhY2tzLmRhdGEoKSArIGk7CisKKyAgICBzdGQ6OnNvcnQoc29ydGVkVHJhY2tzLmJl
Z2luKCksIHNvcnRlZFRyYWNrcy5lbmQoKSwgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFs
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytpKSB7CisgICAg
ICAgIEdyaWRUcmFjayYgdHJhY2sgPSAqc29ydGVkVHJhY2tzW2ldOworICAgICAgICBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZVNoYXJlID0gYXZhaWxhYmxlTG9naWNhbFNwYWNlIC8g
KHRyYWNrc1NpemUgLSBpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBncm93dGhTaGFyZSA9IHN0ZDo6
bWluKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZVNoYXJlLCB0cmFjay5tX21heEJyZWFkdGggLSB0cmFj
ay5tX3VzZWRCcmVhZHRoKTsKKyAgICAgICAgdHJhY2subV91c2VkQnJlYWR0aCArPSBncm93dGhT
aGFyZTsKKyAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IGdyb3d0aFNoYXJlOworICAg
IH0KKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBpbXBsZW1lbnQgdGhlIGxhc3QgMiBzdGVwcyBv
ZiB0aGUgYWxnb3JpdGhtIGFzIHdlIGRvbid0IGltcGxlbWVudCBjb250ZW50IGJhc2VkIHNpemlu
Zy4KIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggYmU5YmJhZDg1YTIyY2FkNDJhNWQ5ZTk3NTk0YjU0
NGZiZmI2MzhkOS4uOGVlZGZjMjVkZDQ5ZTA1NzU4YThmMWNmOGQxN2ZkZTM4MDRiNjJjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR3JpZFRyYWNrOworCiBjbGFzcyBSZW5kZXJHcmlk
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBSZW5kZXJHcmlkKE5vZGUqKTsK
QEAgLTQ2LDkgKzQ4LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyR3JpZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGNsYXNz
IEdyaWRUcmFjazsKICAgICBlbnVtIFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsgRm9yQ29sdW1ucywg
Rm9yUm93cyB9OwogICAgIHZvaWQgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhUcmFj
a1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKKyAgICBMYXlvdXRVbml0IGNv
bXB1dGVVc2VkQnJlYWR0aE9mTGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBMZW5n
dGgmKTsKKyAgICB2b2lkIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFNwYWNl
KTsKICAgICB2b2lkIGxheW91dEdyaWRJdGVtcygpOwogCiAgICAgTGF5b3V0UG9pbnQgZmluZENo
aWxkTG9naWNhbFBvc2l0aW9uKFJlbmRlckJveCosIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiBj
b2x1bW5UcmFja3MsIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiByb3dUcmFja3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgKaW5kZXggMGI1ZDhi
MTZkZmRkZTM1YWY5ZTI4ZDE5MWZjZTA2ZjQ3MDJjMzczOC4uMTQyYjJhZDdmNTAwMDU4YjI2ZDI4
NGMyMGYyZTJkZTc2MWU0MjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRUcmFja1NpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC02NiwxNCArNjYsMTIgQEAgcHVibGljOgogCiAgICAgY29u
c3QgTGVuZ3RoJiBtaW5UcmFja0JyZWFkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBNaW5NYXhUcmFja1NpemluZyk7CiAgICAgICAgIEFTU0VSVCghbV9taW5UcmFj
a0JyZWFkdGguaXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHJldHVybiBtX21pblRyYWNrQnJlYWR0
aDsKICAgICB9CiAKICAgICBjb25zdCBMZW5ndGgmIG1heFRyYWNrQnJlYWR0aCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE1pbk1heFRyYWNrU2l6aW5nKTsKICAgICAg
ICAgQVNTRVJUKCFtX21heFRyYWNrQnJlYWR0aC5pc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0
dXJuIG1fbWF4VHJhY2tCcmVhZHRoOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTQ1M2RjNDNiY2Y4ZTlhNDky
NzgwM2FiNjMwY2FkODcxNTA5MmJjLi45YjIyMDM1NGY3OWVmY2U4YTNkOTgzNTMzMzU2YmY0YWI1
MzE3NTVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTItMTIgIEp1bGllbiBDaGFmZnJh
aXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBHcmlkIExheW91dF0g
SW1wbGVtZW50IGdyaWQgaXRlbXMgc2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQt
bG9naWNhbC1oZWlnaHQtb25seS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlk
LWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1vbmx5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwt
d2lkdGgtb25seS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMSAgRW1pbCBBIEVrbHVuZCAgPGVh
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU3VicGl4ZWwgbGF5b3V0KTog
R3JheSB2ZXJ0aWNhbCBsaW5lcyBhcHBlYXIgd2hlbiBtb3ZpbmcgaW5zZXJ0aW9uIHBvaW50IHRv
IHJpZ2h0IG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9u
bHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTdlZDE0MDg0NzBkYmUyZGZlYzkzNzYyZDg5
ZGQ0Yjc3Y2U5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlk
LWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorQnVnIDEwNDcwMDogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IGdy
aWQgaXRlbXMgc2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3MKKworQ2hlY2tzIHRo
YXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBtaW5tYXggcHJvcGVybHkgY29tcHV0ZSB0aGUg
bG9naWNhbCBoZWlnaHQgaW4gc2V2ZXJhbCB3cml0aW5nLW1vZGUuCisKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25s
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkODU3NWNhYzcwNGM4MWM5MWY2OTlkNzNlMWZmMjJjNGQ1NzFl
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9t
aW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVu
YWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13
ZWJraXQtZ3JpZDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OworICAgIHdpZHRoOiAxMDBw
eDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorCisjZ3JpZDEgeworICAgIC13ZWJraXQtZ3JpZC1j
b2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgoMjBweCwgODBweCkg
MTYwcHg7Cit9CisKKyNncmlkMiB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7Cisg
ICAgLXdlYmtpdC1ncmlkLXJvd3M6IG1pbm1heCg1MCUsIDEyMHB4KSBtaW5tYXgoMjBweCwgNDAl
KTsKK30KKworI2dyaWQzIHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogMzBweDsKKyAgICAv
KiBPdmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0LWdyaWQtcm93czogbWlubWF4KDEw
cHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOworfQorCisjZ3JpZDQgeworICAgIC13ZWJr
aXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgoMjBw
eCwgODBweCkgNjBweDsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7Cit9
CisKKyNncmlkNSB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7CisgICAgLyogOTAl
ID4gODBweCwgODBweCBzaG91bGQgYmUgaWdub3JlZC4gKi8KKyAgICAtd2Via2l0LWdyaWQtcm93
czogbWlubWF4KDkwJSwgODBweCkgbWlubWF4KDEwcHgsIDYwJSk7CisgICAgLXdlYmtpdC13cml0
aW5nLW1vZGU6IHZlcnRpY2FsLWxyOworfQorCisjZ3JpZDYgeworICAgIC8qIE92ZXJsYXBwaW5n
IHJhbmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQt
Z3JpZC1yb3dzOiBtaW5tYXgoMTBweCwgMTgwcHgpIG1pbm1heCgzMHB4LCAxNTBweCk7CisgICAg
LXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7Cit9CisKKyNhIHsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDE7CisgICAgLXdl
YmtpdC1ncmlkLXJvdzogMTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9
CisKKyNiIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAtd2Via2l0LWdyaWQt
Y29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDI7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworfQorCis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJjaGVja0xheW91
dCgnLmdyaWQnKSI+CisKKzxwPjxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9iLzEwNDcwMCI+
QnVnIDEwNDcwMDxhPjogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IGdyaWQgaXRlbXMgc2l6
aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3M8L3A+Cis8cD5DaGVja3MgdGhhdCBhIGdy
aWQgZWxlbWVudCB3aXRoIGZpeGVkIG1pbm1heCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dpY2Fs
IGhlaWdodCBpbiBzZXZlcmFsIHdyaXRpbmctbW9kZS48L3A+CisKKzxkaXYgY2xhc3M9ImdyaWQi
IGlkPSJncmlkMSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNDAiIGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKwor
PGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQyIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIxMjAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iODAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDMiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0i
YSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjkwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9k
aXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjExMCIgZGF0YS1leHBl
Y3RlZC13aWR0aD0iMzAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJn
cmlkNCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAw
Ij4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjQwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNs
YXNzPSJncmlkIiBpZD0iZ3JpZDUiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBl
Y3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI5MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMCI+PC9kaXY+Cis8
L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdpZHRo
PSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0PSI5MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2PgorICAg
IDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiIGRhdGEtZXhwZWN0ZWQtd2lk
dGg9IjMwIj48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0
aC1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L21p
bm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAz
ZTRmNmYzNDdiZjA4YWNiYzk1MTc4YjY1MDI5YTdhNmFhOGM0ZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13
aWR0aC1vbmx5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitCdWcgMTA0NzAwOiBbQ1NT
IEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQgZ3JpZCBpdGVtcyBzaXppbmcgZm9yIGZpeGVkIG1pbm1h
eCBncmlkIHRyYWNrcworCitDaGVja3MgdGhhdCBhIGdyaWQgZWxlbWVudCB3aXRoIGZpeGVkIG1p
bm1heCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dpY2FsIHdpZHRoIGluIHNldmVyYWwgd3JpdGlu
Zy1tb2RlLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13
aWR0aC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgt
Zml4ZWQtbG9naWNhbC13aWR0aC1vbmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRhYjlhMTJkNWJhYzNj
NjI3NGM4ZjFhMmZjYWQwMWFhOTk3MWNkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHkuaHRt
bApAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgMSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5n
cmlkIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JleTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKK30KKworI2dyaWQx
IHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbWlubWF4KDIwcHgsIDgwcHgpIDYwcHg7Cisg
ICAgLXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7Cit9CisKKyNncmlkMiB7CisgICAgLyogRmlyc3Qg
bWlubWF4IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguICov
CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IG1pbm1heCg1MCUsIDYwcHgpIG1pbm1heCgxMHB4
LCA0MCUpOworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworfQorCisjZ3JpZDMgeworICAg
IC8qIE92ZXJsYXBwaW5nIHJhbmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5t
YXgoMTBweCwgODBweCkgbWlubWF4KDIwcHgsIDUwcHgpOworICAgIC13ZWJraXQtZ3JpZC1yb3dz
OiAzMHB4OworfQorCisjZ3JpZDQgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5tYXgo
MjBweCwgODBweCkgMTYwcHg7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7CisgICAgLXdl
YmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOworfQorCisjZ3JpZDUgeworICAgIC8qIDUw
JSA+IDgwcHgsIDgwcHggc2hvdWxkIGJlIGlnbm9yZWQuICovCisgICAgLXdlYmtpdC1ncmlkLWNv
bHVtbnM6IG1pbm1heCg1MCUsIDgwcHgpIG1pbm1heCgxMHB4LCA2MCUpOworICAgIC13ZWJraXQt
Z3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsK
K30KKworI2dyaWQ2IHsKKyAgICAvKiBPdmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0
LWdyaWQtY29sdW1uczogbWlubWF4KDEwcHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOwor
ICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBo
b3Jpem9udGFsLWJ0OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAg
ICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjYiB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbjogMjsKKyAgICAtd2Via2l0
LWdyaWQtcm93OiAxOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKwor
PC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48
L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJykiPgorCis8cD48YSBo
cmVmPSJodHRwczovL3dlYmtpdC5vcmcvYi8xMDQ3MDAiPkJ1ZyAxMDQ3MDA8YT46IFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdy
aWQgdHJhY2tzPC9wPgorPHA+Q2hlY2tzIHRoYXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBt
aW5tYXggcHJvcGVybHkgY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0aCBpbiBzZXZlcmFsIHdyaXRp
bmctbW9kZS48L3A+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkMSIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJh
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwIj48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3Jp
ZDIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+
CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSI2MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFz
cz0iZ3JpZCIgaWQ9ImdyaWQzIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIz
MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkNCIgZGF0YS1leHBlY3RlZC13aWR0aD0i
MTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4
cGVjdGVkLWhlaWdodD0iNDAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8
ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdpZHRo
PSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ1IiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxk
aXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3Jp
ZCIgaWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0
YS1leHBlY3RlZC13aWR0aD0iNDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNjAiPjwvZGl2PgorPC9kaXY+CisK
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181574</attachid>
            <date>2013-01-07 15:08:39 -0800</date>
            <delta_ts>2013-01-07 15:43:48 -0800</delta_ts>
            <desc>Updated patch, now that the size_t operations are supported.</desc>
            <filename>bug-104700-20130107150544.patch</filename>
            <type>text/plain</type>
            <size>19287</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUyODFlNjliZWJlM2Y2
OGY1YTY2NDYwYjBhYjJlZTczYmY0YThmYS4uY2JhOTQ0NTcxZDY4Y2IwYjU4NjRmYmI1NGRhMTdk
NDBlZjllZWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTA3ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdy
aWQgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIHBhcnRzIG9mIHRoZSBtaW5tYXgoKSB0cmFjayBzaXpp
bmcgYWxnb3JpdGhtLiBUaGUgY2hvc2VuIHN1YnNldCBlbmFibGVzIHVzCisgICAgICAgIHRvIHJl
c29sdmUgYW55IHNpemluZyBmdW5jdGlvbiB0aGF0IGRvZXNuJ3Qgc2l6ZSBiYXNlZCBvbiB0aGUg
Y29udGVudCAobWluLWNvbnRlbnQsIG1heC1jb250ZW50KS4KKworICAgICAgICBUZXN0czogZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHkuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwt
d2lkdGgtb25seS5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OkdyaWRUcmFjayk6CisgICAgICAgIEFkZGVkIGEg
bmV3IG1lbWJlciB0byBob2xkIHRoZSBtYXhpbXVtIHRyYWNrIGJyZWFkdGguCisKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFj
a3MpOgorICAgICAgICBVcGRhdGVkIHRoZXNlIGZ1bmN0aW9ucyB0byB3b3JrIG9uIGJvdGggbWlu
IGFuZCBtYXggdHJhY2sgYnJlYWR0aC4gSW4gb3JkZXIgdG8gbWF0Y2gKKyAgICAgICAgdGhlIHNw
ZWNpZmljYXRpb24sIGlmIG1heCB0cmFjayBicmVhZHRoIDwgbWluIHRyYWNrIGJyZWFkdGgsIHdl
IGlnbm9yZSB0aGUgbWF4IHRyYWNrIGJyZWFkdGguCisgICAgICAgIEZvciBjb21wdXRlZFVzZWRC
cmVhZHRoT2ZHcmlkVHJhY2tzLCBpdCBhbHNvIGludm9sdmVzIGNhbGxpbmcgZGlzdHJpYnV0ZVNw
YWNlVG9UcmFja3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVVc2Vk
QnJlYWR0aE9mTGVuZ3RoKToKKyAgICAgICAgTmV3IGhlbHBlciBmdW5jdGlvbiB0aGF0IGNvbXB1
dGUgYSBzaW5nbGUgbGVuZ3RoJ3Mgc2l6ZS4KKworICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3Jp
ZFRyYWNrR3Jvd3RoUG90ZW50aWFsKToKKyAgICAgICAgT3JkZXJpbmcgZnVuY3Rpb24gZm9yIHRo
ZSBzb3J0aW5nIHRoZSB0cmFjazogaXQgb3JkZXJzIHRoZSB0cmFjayBwZXIgaW5jcmVhc2luZyBw
b3RlbnRpYWwKKyAgICAgICAgZ3Jvd3RoIChkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gbWF4IGJyZWFkdGggYW5kIHRoZSBjdXJyZW50bHkgdXNlZCBicmVhZHRoKS4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MpOgorICAgICAg
ICBBZGRlZCB0aGlzIGZ1bmN0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWNhdGlvbidzIGFs
Z29yaXRobS4gT25seSB0aGUgcmVsZXZhbnQgYml0cyBmcm9tCisgICAgICAgIHRoZSBzcGVjaWZp
Y2F0aW9uIHdlcmUgaW1wbGVtZW50ZWQgZm9yIG5vdyAoZm9yIGV4YW1wbGUsIFN1YnNldE9mVHJh
Y2tzRm9yR3Jvd3RoQmV5b25kVHJhY2tHcm93dGhDb25zdHJhaW50CisgICAgICAgIGlzIGFsd2F5
cyB0aGUgZW1wdHkgc2V0IHNvIGl0IHdhcyBvbWl0dGVkKS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJHcmlkLmg6CisgICAgICAgIEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zIGFuZCBkZWNs
YXJlZCBHcmlkVHJhY2sgYXMgcHVibGljIGludG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemU6Om1pblRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkVHJhY2tTaXplOjptYXhUcmFja0JyZWFkdGgpOgorICAgICAgICBSZW1vdmVkIDIgQVNTRVJU
cyBhcyB0aGUgbGF5b3V0IGFsZ29yaXRobSBkb2Vzbid0IGNhcmUgaWYgdGhlIG1pbiAvIG1heCB3
ZXJlCisgICAgICAgIHNldCBmcm9tIGEgc2luZ2xlIHRyYWNrIGJyZWFkdGggb3IgdGhyb3VnaCBt
aW5tYXgoKS4KKwogMjAxMy0wMS0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIERPTUV2ZW50cy5oIHNob3VsZCBpbmNsdWRlIERPTVByb2dyZXNzRXZl
bnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDMyMmQzYTg3
MTQxYzQ3OGFkZTVmMWQwNmZkMzMxNThkYjU4OWEyNGUuLmJhZWQ0M2MwMGM2MzkyNjY5Yjg0YWYy
YjEzNTEyNjNiMjBmZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTMzLDE0ICszMywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJl
bmRlckdyaWQ6OkdyaWRUcmFjayB7CitjbGFzcyBHcmlkVHJhY2sgewogcHVibGljOgogICAgIEdy
aWRUcmFjaygpCiAgICAgICAgIDogbV91c2VkQnJlYWR0aCgwKQorICAgICAgICAsIG1fbWF4QnJl
YWR0aCgwKQogICAgIHsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IG1fdXNlZEJyZWFkdGg7Cisg
ICAgTGF5b3V0VW5pdCBtX21heEJyZWFkdGg7CiB9OwogCiBSZW5kZXJHcmlkOjpSZW5kZXJHcmlk
KE5vZGUqIG5vZGUpCkBAIC0xMTksMTQgKzEyMSwyMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6
ZT4mIHRyYWNrU3R5bGVzID0gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGVuZ3Ro
IHRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghdHJh
Y2tMZW5ndGguaXNGaXhlZCgpKSB7CisgICAgICAgIGNvbnN0IExlbmd0aCYgbWluVHJhY2tMZW5n
dGggPSB0cmFja1N0eWxlc1tpXS5taW5UcmFja0JyZWFkdGgoKTsKKyAgICAgICAgY29uc3QgTGVu
Z3RoJiBtYXhUcmFja0xlbmd0aCA9IHRyYWNrU3R5bGVzW2ldLm1heFRyYWNrQnJlYWR0aCgpOwor
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIG9ubHkgb25lIGZpeGVkIGxlbmd0aCBwcm9wZXJseSAo
ZS5nIG1pbm1heCgxMDBweCwgbWF4LWNvbnRlbnQpKS4KKyAgICAgICAgaWYgKCFtaW5UcmFja0xl
bmd0aC5pc0ZpeGVkKCkgfHwgIW1heFRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkgewogICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gdHJhY2tMZW5ndGguaW50VmFs
dWUoKTsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gdHJhY2tMZW5ndGgu
aW50VmFsdWUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5UcmFja0JyZWFkdGggPSBtaW5UcmFj
a0xlbmd0aC5pbnRWYWx1ZSgpOworICAgICAgICBMYXlvdXRVbml0IG1heFRyYWNrQnJlYWR0aCA9
IG1heFRyYWNrTGVuZ3RoLmludFZhbHVlKCk7CisKKyAgICAgICAgbWF4VHJhY2tCcmVhZHRoID0g
c3RkOjptYXgobWF4VHJhY2tCcmVhZHRoLCBtaW5UcmFja0JyZWFkdGgpOworCisgICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoICs9IG1pblRyYWNrQnJlYWR0aDsKKyAgICAgICAgbV9t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWF4VHJhY2tCcmVhZHRoOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgYWNjb3VudCBmb3IgbWluIC8gbWF4IGxvZ2ljYWwgd2lkdGgu
CkBAIC0xNDEsMjUgKzE1MCw2MyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3Jp
ZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+
JiB0cmFja3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1N0eWxl
cyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygpIDog
c3R5bGUoKS0+Z3JpZFJvd3MoKTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxTcGFj
ZSA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSA6
IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YWNrU3R5bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdyaWRUcmFjayB0cmFjazsKLSAgICAg
ICAgc3dpdGNoICh0cmFja1N0eWxlc1tpXS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBMZW5ndGhU
cmFja1NpemluZzogewotICAgICAgICAgICAgTGVuZ3RoIHRyYWNrTGVuZ3RoID0gdHJhY2tTdHls
ZXNbaV0ubGVuZ3RoKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc3RpbCBuZWVkIHRvIHN1
cHBvcnQgY2FsYygpIGhlcmUgKGJ1ZyAxMDM3NjEpLgotICAgICAgICAgICAgaWYgKHRyYWNrTGVu
Z3RoLmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0cmFja0xlbmd0aC5p
c1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJyZWFk
dGggPSB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgZGlyZWN0aW9uID09IEZvckNvbHVtbnMg
PyBsb2dpY2FsV2lkdGgoKSA6IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVm
ZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpLCB2aWV3KCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTWluTWF4VHJhY2tTaXppbmc6Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIG1pbm1heCB0cmFjayBzaXpp
bmcgKGJ1ZyAxMDMzMTEpLgotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAg
fQorICAgICAgICBjb25zdCBMZW5ndGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU3R5bGVzW2ld
Lm1pblRyYWNrQnJlYWR0aCgpOworICAgICAgICBjb25zdCBMZW5ndGgmIG1heFRyYWNrQnJlYWR0
aCA9IHRyYWNrU3R5bGVzW2ldLm1heFRyYWNrQnJlYWR0aCgpOworCisgICAgICAgIHRyYWNrLm1f
dXNlZEJyZWFkdGggPSBjb21wdXRlVXNlZEJyZWFkdGhPZkxlbmd0aChkaXJlY3Rpb24sIG1pblRy
YWNrQnJlYWR0aCk7CisgICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IGNvbXB1dGVVc2VkQnJl
YWR0aE9mTGVuZ3RoKGRpcmVjdGlvbiwgbWF4VHJhY2tCcmVhZHRoKTsKKworICAgICAgICB0cmFj
ay5tX21heEJyZWFkdGggPSBzdGQ6Om1heCh0cmFjay5tX21heEJyZWFkdGgsIHRyYWNrLm1fdXNl
ZEJyZWFkdGgpOworCisgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSAtPSB0cmFjay5tX3Vz
ZWRCcmVhZHRoOworCiAgICAgICAgIHRyYWNrcy5hcHBlbmQodHJhY2spOwogICAgIH0KKworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgY29udGVudC1iYXNlZCBzaXppbmcgKHN0ZXAgMiBvZiB0aGUg
YWxnb3JpdGhtKS4KKworICAgIGlmIChhdmFpbGFibGVMb2dpY2FsU3BhY2UgPD0gMCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoZGlyZWN0aW9uLCB0cmFj
a3MsIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyR3JpZDo6
Y29tcHV0ZVVzZWRCcmVhZHRoT2ZMZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBjb25zdCBMZW5ndGgmIHRyYWNrTGVuZ3RoKQoreworICAgIC8vIEZJWE1FOiBXZSBzdGlsbCBu
ZWVkIHRvIHN1cHBvcnQgY2FsYygpIGhlcmUgKGJ1ZyAxMDM3NjEpLgorICAgIGlmICh0cmFja0xl
bmd0aC5pc0ZpeGVkKCkgfHwgdHJhY2tMZW5ndGguaXNQZXJjZW50KCkgfHwgdHJhY2tMZW5ndGgu
aXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHRy
YWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGxvZ2ljYWxXaWR0aCgpIDogY29t
cHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSksIHZpZXcoKSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgYm9vbCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwo
R3JpZFRyYWNrKiB0cmFjazEsIEdyaWRUcmFjayogdHJhY2syKQoreworICAgIHJldHVybiAodHJh
Y2sxLT5tX21heEJyZWFkdGggLSB0cmFjazEtPm1fdXNlZEJyZWFkdGgpIDw9ICh0cmFjazItPm1f
bWF4QnJlYWR0aCAtIHRyYWNrMi0+bV91c2VkQnJlYWR0aCk7Cit9CisKK3ZvaWQgUmVuZGVyR3Jp
ZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxH
cmlkVHJhY2s+JiB0cmFja3MsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFNwYWNlKQorewor
ICAgIGNvbnN0IHNpemVfdCB0cmFja3NTaXplID0gdHJhY2tzLnNpemUoKTsKKyAgICBWZWN0b3I8
R3JpZFRyYWNrKj4gc29ydGVkVHJhY2tzKHRyYWNrc1NpemUpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytpKQorICAgICAgICBzb3J0ZWRUcmFja3NbaV0gPSB0cmFj
a3MuZGF0YSgpICsgaTsKKworICAgIHN0ZDo6c29ydChzb3J0ZWRUcmFja3MuYmVnaW4oKSwgc29y
dGVkVHJhY2tzLmVuZCgpLCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3NTaXplOyArK2kpIHsKKyAgICAgICAgR3JpZFRy
YWNrJiB0cmFjayA9ICpzb3J0ZWRUcmFja3NbaV07CisgICAgICAgIExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFNwYWNlU2hhcmUgPSBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLyAodHJhY2tzU2l6
ZSAtIGkpOworICAgICAgICBMYXlvdXRVbml0IGdyb3d0aFNoYXJlID0gc3RkOjptaW4oYXZhaWxh
YmxlTG9naWNhbFNwYWNlU2hhcmUsIHRyYWNrLm1fbWF4QnJlYWR0aCAtIHRyYWNrLm1fdXNlZEJy
ZWFkdGgpOworICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoICs9IGdyb3d0aFNoYXJlOworICAg
ICAgICBhdmFpbGFibGVMb2dpY2FsU3BhY2UgLT0gZ3Jvd3RoU2hhcmU7CisgICAgfQorCisgICAg
Ly8gRklYTUU6IFdlIGRvbid0IGltcGxlbWVudCB0aGUgbGFzdCAyIHN0ZXBzIG9mIHRoZSBhbGdv
cml0aG0gYXMgd2UgZG9uJ3QgaW1wbGVtZW50IGNvbnRlbnQgYmFzZWQgc2l6aW5nLgogfQogCiB2
b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAppbmRleCBiZTliYmFkODVhMjJjYWQ0MmE1ZDllOTc1OTRiNTQ0ZmJmYjYzOGQ5
Li44ZWVkZmMyNWRkNDllMDU3NThhOGYxY2Y4ZDE3ZmRlMzgwNGI2MmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBHcmlkVHJhY2s7CisKIGNsYXNzIFJlbmRlckdyaWQgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlckdyaWQoTm9kZSopOwpAQCAtNDYsOSAr
NDgsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJHcmlk
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgY2xhc3MgR3JpZFRyYWNr
OwogICAgIGVudW0gVHJhY2tTaXppbmdEaXJlY3Rpb24geyBGb3JDb2x1bW5zLCBGb3JSb3dzIH07
CiAgICAgdm9pZCBjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKFRyYWNrU2l6aW5nRGly
ZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYpOworICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRC
cmVhZHRoT2ZMZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpOworICAg
IHZvaWQgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3Rv
cjxHcmlkVHJhY2s+JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogICAgIHZv
aWQgbGF5b3V0R3JpZEl0ZW1zKCk7CiAKICAgICBMYXlvdXRQb2ludCBmaW5kQ2hpbGRMb2dpY2Fs
UG9zaXRpb24oUmVuZGVyQm94KiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNr
cywgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAppbmRleCAwYjVkOGIxNmRmZGRlMzVh
ZjllMjhkMTkxZmNlMDZmNDcwMmMzNzM4Li4xNDJiMmFkN2Y1MDAwNThiMjZkMjg0YzIwZjJlMmRl
NzYxZTQyOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZFRyYWNrU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJh
Y2tTaXplLmgKQEAgLTY2LDE0ICs2NiwxMiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMZW5ndGgm
IG1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IE1pbk1heFRyYWNrU2l6aW5nKTsKICAgICAgICAgQVNTRVJUKCFtX21pblRyYWNrQnJlYWR0aC5p
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIG1fbWluVHJhY2tCcmVhZHRoOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgbWF4VHJhY2tCcmVhZHRoKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gTWluTWF4VHJhY2tTaXppbmcpOwogICAgICAgICBBU1NFUlQo
IW1fbWF4VHJhY2tCcmVhZHRoLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gbV9tYXhU
cmFja0JyZWFkdGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5NDkxNTUwNDdjMTgyMDA4Mjk4YWI4MDgzYzYz
MGE0OTQ0YmNiMjguLjRlMTIzYThmZmJkOWM2YTk3YWQ3MTJmNDlmM2RmYmU4ZDM3ZDRiNDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0wNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQg
Z3JpZCBpdGVtcyBzaXppbmcgZm9yIGZpeGVkIG1pbm1heCBncmlkIHRyYWNrcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxh
eW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhl
aWdodC1vbmx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L21p
bm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1vbmx5
Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA3ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSGVhcC1idWZmZXItb3ZlcmZsb3cgaW4gV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmNsb25lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0
LW9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTdlZDE0MDg0NzBkYmUyZGZlYzkzNzYy
ZDg5ZGQ0Yjc3Y2U5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorQnVnIDEwNDcwMDogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50
IGdyaWQgaXRlbXMgc2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3MKKworQ2hlY2tz
IHRoYXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBtaW5tYXggcHJvcGVybHkgY29tcHV0ZSB0
aGUgbG9naWNhbCBoZWlnaHQgaW4gc2V2ZXJhbCB3cml0aW5nLW1vZGUuCisKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQt
b25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkODU3NWNhYzcwNGM4MWM5MWY2OTlkNzNlMWZmMjJjNGQ1
NzFlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sCkBAIC0wLDAgKzEsMTA1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91
dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6
IC13ZWJraXQtZ3JpZDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OworICAgIHdpZHRoOiAx
MDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorCisjZ3JpZDEgeworICAgIC13ZWJraXQtZ3Jp
ZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgoMjBweCwgODBw
eCkgMTYwcHg7Cit9CisKKyNncmlkMiB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7
CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IG1pbm1heCg1MCUsIDEyMHB4KSBtaW5tYXgoMjBweCwg
NDAlKTsKK30KKworI2dyaWQzIHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogMzBweDsKKyAg
ICAvKiBPdmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0LWdyaWQtcm93czogbWlubWF4
KDEwcHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOworfQorCisjZ3JpZDQgeworICAgIC13
ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBtaW5tYXgo
MjBweCwgODBweCkgNjBweDsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7
Cit9CisKKyNncmlkNSB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7CisgICAgLyog
OTAlID4gODBweCwgODBweCBzaG91bGQgYmUgaWdub3JlZC4gKi8KKyAgICAtd2Via2l0LWdyaWQt
cm93czogbWlubWF4KDkwJSwgODBweCkgbWlubWF4KDEwcHgsIDYwJSk7CisgICAgLXdlYmtpdC13
cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOworfQorCisjZ3JpZDYgeworICAgIC8qIE92ZXJsYXBw
aW5nIHJhbmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJr
aXQtZ3JpZC1yb3dzOiBtaW5tYXgoMTBweCwgMTgwcHgpIG1pbm1heCgzMHB4LCAxNTBweCk7Cisg
ICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7Cit9CisKKyNhIHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDE7CisgICAg
LXdlYmtpdC1ncmlkLXJvdzogMTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7
Cit9CisKKyNiIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAtd2Via2l0LWdy
aWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDI7CisgICAgd2lkdGg6IDEwMCU7
CisgICAgaGVpZ2h0OiAxMDAlOworfQorCis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJjaGVja0xh
eW91dCgnLmdyaWQnKSI+CisKKzxwPjxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9iLzEwNDcw
MCI+QnVnIDEwNDcwMDxhPjogW0NTUyBHcmlkIExheW91dF0gSW1wbGVtZW50IGdyaWQgaXRlbXMg
c2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFja3M8L3A+Cis8cD5DaGVja3MgdGhhdCBh
IGdyaWQgZWxlbWVudCB3aXRoIGZpeGVkIG1pbm1heCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dp
Y2FsIGhlaWdodCBpbiBzZXZlcmFsIHdyaXRpbmctbW9kZS48L3A+CisKKzxkaXYgY2xhc3M9Imdy
aWQiIGlkPSJncmlkMSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNDAiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVj
dGVkLWhlaWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQyIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAi
IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIxMjAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iODAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMw
Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDMiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBp
ZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjkwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+
PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjExMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlk
PSJncmlkNCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjQwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDUiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWln
aHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI5MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMCI+PC9kaXY+
Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSI5MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjMwIj48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13
aWR0aC1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L21pbm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzZTRmNmYzNDdiZjA4YWNiYzk1MTc4YjY1MDI5YTdhNmFhOGM0ZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNh
bC13aWR0aC1vbmx5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitCdWcgMTA0NzAwOiBb
Q1NTIEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQgZ3JpZCBpdGVtcyBzaXppbmcgZm9yIGZpeGVkIG1p
bm1heCBncmlkIHRyYWNrcworCitDaGVja3MgdGhhdCBhIGdyaWQgZWxlbWVudCB3aXRoIGZpeGVk
IG1pbm1heCBwcm9wZXJseSBjb21wdXRlIHRoZSBsb2dpY2FsIHdpZHRoIGluIHNldmVyYWwgd3Jp
dGluZy1tb2RlLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNh
bC13aWR0aC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5t
YXgtZml4ZWQtbG9naWNhbC13aWR0aC1vbmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRhYjlhMTJkNWJh
YzNjNjI3NGM4ZjFhMmZjYWQwMWFhOTk3MWNkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLXdpZHRoLW9ubHku
aHRtbApAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgMSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4K
Ky5ncmlkIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogZ3JleTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKK30KKworI2dy
aWQxIHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbWlubWF4KDIwcHgsIDgwcHgpIDYwcHg7
CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7Cit9CisKKyNncmlkMiB7CisgICAgLyogRmly
c3QgbWlubWF4IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGgu
ICovCisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IG1pbm1heCg1MCUsIDYwcHgpIG1pbm1heCgx
MHB4LCA0MCUpOworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworfQorCisjZ3JpZDMgewor
ICAgIC8qIE92ZXJsYXBwaW5nIHJhbmdlLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBt
aW5tYXgoMTBweCwgODBweCkgbWlubWF4KDIwcHgsIDUwcHgpOworICAgIC13ZWJraXQtZ3JpZC1y
b3dzOiAzMHB4OworfQorCisjZ3JpZDQgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5t
YXgoMjBweCwgODBweCkgMTYwcHg7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDMwcHg7CisgICAg
LXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOworfQorCisjZ3JpZDUgeworICAgIC8q
IDUwJSA+IDgwcHgsIDgwcHggc2hvdWxkIGJlIGlnbm9yZWQuICovCisgICAgLXdlYmtpdC1ncmlk
LWNvbHVtbnM6IG1pbm1heCg1MCUsIDgwcHgpIG1pbm1heCgxMHB4LCA2MCUpOworICAgIC13ZWJr
aXQtZ3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1s
cjsKK30KKworI2dyaWQ2IHsKKyAgICAvKiBPdmVybGFwcGluZyByYW5nZS4gKi8KKyAgICAtd2Vi
a2l0LWdyaWQtY29sdW1uczogbWlubWF4KDEwcHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgp
OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGluZy1tb2Rl
OiBob3Jpem9udGFsLWJ0OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsK
KyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjYiB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbjogMjsKKyAgICAtd2Vi
a2l0LWdyaWQtcm93OiAxOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30K
KworPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0Lmpz
Ij48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJykiPgorCis8cD48
YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvYi8xMDQ3MDAiPkJ1ZyAxMDQ3MDA8YT46IFtDU1Mg
R3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4
IGdyaWQgdHJhY2tzPC9wPgorPHA+Q2hlY2tzIHRoYXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhl
ZCBtaW5tYXggcHJvcGVybHkgY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0aCBpbiBzZXZlcmFsIHdy
aXRpbmctbW9kZS48L3A+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkMSIgZGF0YS1leHBl
Y3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlk
PSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0i
Z3JpZDIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIw
MCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSI2MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWln
aHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBj
bGFzcz0iZ3JpZCIgaWQ9ImdyaWQzIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0
PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiPjwvZGl2Pgor
PC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkNCIgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRh
LWV4cGVjdGVkLWhlaWdodD0iNDAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTYwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQ1IiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAg
IDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtZXhwZWN0ZWQtd2lk
dGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAw
IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
Z3JpZCIgaWQ9ImdyaWQ2IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIg
ZGF0YS1leHBlY3RlZC13aWR0aD0iNDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNjAiPjwvZGl2PgorPC9kaXY+
CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181581</attachid>
            <date>2013-01-07 15:43:51 -0800</date>
            <delta_ts>2013-01-07 18:42:43 -0800</delta_ts>
            <desc>Updated patch for the EWS.</desc>
            <filename>bug-104700-20130107154056.patch</filename>
            <type>text/plain</type>
            <size>19330</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q3MjYxN2VmYzc0ODcw
MzIzZmJjNDkwMTQ4ZjBmMzhlMjEwNDQxNC4uNjZiNWQzZDUyYTRhOTY3YmEwMWI4ZTcyOTNkZThi
MmY1NTcyMTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTA3ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4ZWQgbWlubWF4IGdy
aWQgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGltcGxlbWVudHMgcGFydHMgb2YgdGhlIG1pbm1heCgpIHRyYWNrIHNpemluZyBh
bGdvcml0aG0uIFRoZSBjaG9zZW4gc3Vic2V0IGVuYWJsZXMgdXMKKyAgICAgICAgdG8gcmVzb2x2
ZSBhbnkgc2l6aW5nIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBzaXplIGJhc2VkIG9uIHRoZSBjb250
ZW50IChtaW4tY29udGVudCwgbWF4LWNvbnRlbnQpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nz
cy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0
aC1vbmx5Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6R3JpZFRyYWNrKToKKyAgICAgICAgQWRkZWQgYSBuZXcg
bWVtYmVyIHRvIGhvbGQgdGhlIG1heGltdW0gdHJhY2sgYnJlYWR0aC4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6
CisgICAgICAgIFVwZGF0ZWQgdGhlc2UgZnVuY3Rpb25zIHRvIHdvcmsgb24gYm90aCBtaW4gYW5k
IG1heCB0cmFjayBicmVhZHRoLiBJbiBvcmRlciB0byBtYXRjaAorICAgICAgICB0aGUgc3BlY2lm
aWNhdGlvbiwgaWYgbWF4IHRyYWNrIGJyZWFkdGggPCBtaW4gdHJhY2sgYnJlYWR0aCwgd2UgaWdu
b3JlIHRoZSBtYXggdHJhY2sgYnJlYWR0aC4KKyAgICAgICAgRm9yIGNvbXB1dGVkVXNlZEJyZWFk
dGhPZkdyaWRUcmFja3MsIGl0IGFsc28gaW52b2x2ZXMgY2FsbGluZyBkaXN0cmlidXRlU3BhY2VU
b1RyYWNrcy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVh
ZHRoT2ZMZW5ndGgpOgorICAgICAgICBOZXcgaGVscGVyIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZSBh
IHNpbmdsZSBsZW5ndGgncyBzaXplLgorCisgICAgICAgIChXZWJDb3JlOjpzb3J0QnlHcmlkVHJh
Y2tHcm93dGhQb3RlbnRpYWwpOgorICAgICAgICBPcmRlcmluZyBmdW5jdGlvbiBmb3IgdGhlIHNv
cnRpbmcgdGhlIHRyYWNrOiBpdCBvcmRlcnMgdGhlIHRyYWNrIHBlciBpbmNyZWFzaW5nIHBvdGVu
dGlhbAorICAgICAgICBncm93dGggKGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBt
YXggYnJlYWR0aCBhbmQgdGhlIGN1cnJlbnRseSB1c2VkIGJyZWFkdGgpLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyk6CisgICAgICAgIEFk
ZGVkIHRoaXMgZnVuY3Rpb24gdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpY2F0aW9uJ3MgYWxnb3Jp
dGhtLiBPbmx5IHRoZSByZWxldmFudCBiaXRzIGZyb20KKyAgICAgICAgdGhlIHNwZWNpZmljYXRp
b24gd2VyZSBpbXBsZW1lbnRlZCBmb3Igbm93IChmb3IgZXhhbXBsZSwgU3Vic2V0T2ZUcmFja3NG
b3JHcm93dGhCZXlvbmRUcmFja0dyb3d0aENvbnN0cmFpbnQKKyAgICAgICAgaXMgYWx3YXlzIHRo
ZSBlbXB0eSBzZXQgc28gaXQgd2FzIG9taXR0ZWQpLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaDoKKyAgICAgICAgQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMgYW5kIGRlY2xhcmVk
IEdyaWRUcmFjayBhcyBwdWJsaWMgaW50byB0aGUgV2ViQ29yZSBuYW1lc3BhY2UuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFRyYWNrU2l6ZTo6bWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRU
cmFja1NpemU6Om1heFRyYWNrQnJlYWR0aCk6CisgICAgICAgIFJlbW92ZWQgMiBBU1NFUlRzIGFz
IHRoZSBsYXlvdXQgYWxnb3JpdGhtIGRvZXNuJ3QgY2FyZSBpZiB0aGUgbWluIC8gbWF4IHdlcmUK
KyAgICAgICAgc2V0IGZyb20gYSBzaW5nbGUgdHJhY2sgYnJlYWR0aCBvciB0aHJvdWdoIG1pbm1h
eCgpLgorCiAyMDEzLTAxLTA3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFRpbGVkLWxheWVyIFRpbGVDYWNoZXMgc2hvdWxkbid0IHVucGFyZW50IG9m
ZnNjcmVlbiB0aWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4
IDMyMmQzYTg3MTQxYzQ3OGFkZTVmMWQwNmZkMzMxNThkYjU4OWEyNGUuLjAxNmY1MzA0NmQwM2Qz
ZGQ1MzViNGM4ZTRkYzFkMGRkNjQzN2NiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKQEAgLTMzLDE0ICszMywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFJlbmRlckdyaWQ6OkdyaWRUcmFjayB7CitjbGFzcyBHcmlkVHJhY2sgewogcHVibGlj
OgogICAgIEdyaWRUcmFjaygpCiAgICAgICAgIDogbV91c2VkQnJlYWR0aCgwKQorICAgICAgICAs
IG1fbWF4QnJlYWR0aCgwKQogICAgIHsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IG1fdXNlZEJy
ZWFkdGg7CisgICAgTGF5b3V0VW5pdCBtX21heEJyZWFkdGg7CiB9OwogCiBSZW5kZXJHcmlkOjpS
ZW5kZXJHcmlkKE5vZGUqIG5vZGUpCkBAIC0xMTksMTQgKzEyMSwyMSBAQCB2b2lkIFJlbmRlckdy
aWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIHRyYWNrU3R5bGVzID0gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKTsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgTGVuZ3RoIHRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCk7Ci0gICAgICAg
IGlmICghdHJhY2tMZW5ndGguaXNGaXhlZCgpKSB7CisgICAgICAgIGNvbnN0IExlbmd0aCYgbWlu
VHJhY2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXS5taW5UcmFja0JyZWFkdGgoKTsKKyAgICAgICAg
Y29uc3QgTGVuZ3RoJiBtYXhUcmFja0xlbmd0aCA9IHRyYWNrU3R5bGVzW2ldLm1heFRyYWNrQnJl
YWR0aCgpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIG9ubHkgb25lIGZpeGVkIGxlbmd0aCBw
cm9wZXJseSAoZS5nIG1pbm1heCgxMDBweCwgbWF4LWNvbnRlbnQpKS4KKyAgICAgICAgaWYgKCFt
aW5UcmFja0xlbmd0aC5pc0ZpeGVkKCkgfHwgIW1heFRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkgewog
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gdHJhY2tMZW5n
dGguaW50VmFsdWUoKTsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gdHJh
Y2tMZW5ndGguaW50VmFsdWUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5UcmFja0JyZWFkdGgg
PSBtaW5UcmFja0xlbmd0aC5pbnRWYWx1ZSgpOworICAgICAgICBMYXlvdXRVbml0IG1heFRyYWNr
QnJlYWR0aCA9IG1heFRyYWNrTGVuZ3RoLmludFZhbHVlKCk7CisKKyAgICAgICAgbWF4VHJhY2tC
cmVhZHRoID0gc3RkOjptYXgobWF4VHJhY2tCcmVhZHRoLCBtaW5UcmFja0JyZWFkdGgpOworCisg
ICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoICs9IG1pblRyYWNrQnJlYWR0aDsKKyAg
ICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWF4VHJhY2tCcmVhZHRoOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWNjb3VudCBmb3IgbWluIC8gbWF4IGxvZ2lj
YWwgd2lkdGguCkBAIC0xNDEsMjUgKzE1MCw2MyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJl
YWR0aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxH
cmlkVHJhY2s+JiB0cmFja3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0
cmFja1N0eWxlcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29s
dW1ucygpIDogc3R5bGUoKS0+Z3JpZFJvd3MoKTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxTcGFjZSA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgoKSA6IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoSW5jbHVkZU1hcmdpbkJvcmRlclBhZGRp
bmcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgR3JpZFRyYWNrIHRyYWNrOwotICAgICAgICBzd2l0Y2ggKHRyYWNrU3R5bGVz
W2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIExlbmd0aFRyYWNrU2l6aW5nOiB7Ci0gICAgICAg
ICAgICBMZW5ndGggdHJhY2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXS5sZW5ndGgoKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzdGlsIG5lZWQgdG8gc3VwcG9ydCBjYWxjKCkgaGVyZSAoYnVn
IDEwMzc2MSkuCi0gICAgICAgICAgICBpZiAodHJhY2tMZW5ndGguaXNGaXhlZCgpIHx8IHRyYWNr
TGVuZ3RoLmlzUGVyY2VudCgpIHx8IHRyYWNrTGVuZ3RoLmlzVmlld3BvcnRQZXJjZW50YWdlKCkp
Ci0gICAgICAgICAgICAgICAgdHJhY2subV91c2VkQnJlYWR0aCA9IHZhbHVlRm9yTGVuZ3RoKHRy
YWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGxvZ2ljYWxXaWR0aCgpIDogY29t
cHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSksIHZpZXcoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBNaW5NYXhUcmFja1NpemluZzoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgc3VwcG9ydCBmb3IgbWlubWF4IHRyYWNrIHNpemluZyAoYnVnIDEwMzMxMSkuCi0gICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IExlbmd0
aCYgbWluVHJhY2tCcmVhZHRoID0gdHJhY2tTdHlsZXNbaV0ubWluVHJhY2tCcmVhZHRoKCk7Cisg
ICAgICAgIGNvbnN0IExlbmd0aCYgbWF4VHJhY2tCcmVhZHRoID0gdHJhY2tTdHlsZXNbaV0ubWF4
VHJhY2tCcmVhZHRoKCk7CisKKyAgICAgICAgdHJhY2subV91c2VkQnJlYWR0aCA9IGNvbXB1dGVV
c2VkQnJlYWR0aE9mTGVuZ3RoKGRpcmVjdGlvbiwgbWluVHJhY2tCcmVhZHRoKTsKKyAgICAgICAg
dHJhY2subV9tYXhCcmVhZHRoID0gY29tcHV0ZVVzZWRCcmVhZHRoT2ZMZW5ndGgoZGlyZWN0aW9u
LCBtYXhUcmFja0JyZWFkdGgpOworCisgICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IHN0ZDo6
bWF4KHRyYWNrLm1fbWF4QnJlYWR0aCwgdHJhY2subV91c2VkQnJlYWR0aCk7CisKKyAgICAgICAg
YXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IHRyYWNrLm1fdXNlZEJyZWFkdGg7CisKICAgICAgICAg
dHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBj
b250ZW50LWJhc2VkIHNpemluZyAoc3RlcCAyIG9mIHRoZSBhbGdvcml0aG0pLgorCisgICAgaWYg
KGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBkaXN0
cmlidXRlU3BhY2VUb1RyYWNrcyhkaXJlY3Rpb24sIHRyYWNrcywgYXZhaWxhYmxlTG9naWNhbFNw
YWNlKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkxl
bmd0aChUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYgdHJhY2tM
ZW5ndGgpCit7CisgICAgLy8gRklYTUU6IFdlIHN0aWxsIG5lZWQgdG8gc3VwcG9ydCBjYWxjKCkg
aGVyZSAoYnVnIDEwMzc2MSkuCisgICAgaWYgKHRyYWNrTGVuZ3RoLmlzRml4ZWQoKSB8fCB0cmFj
a0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0cmFja0xlbmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgp
KQorICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zID8gbG9naWNhbFdpZHRoKCkgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSwgdmlldygp
KTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBi
b29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbChHcmlkVHJhY2sqIHRyYWNrMSwgR3Jp
ZFRyYWNrKiB0cmFjazIpCit7CisgICAgcmV0dXJuICh0cmFjazEtPm1fbWF4QnJlYWR0aCAtIHRy
YWNrMS0+bV91c2VkQnJlYWR0aCkgPD0gKHRyYWNrMi0+bV9tYXhCcmVhZHRoIC0gdHJhY2syLT5t
X3VzZWRCcmVhZHRoKTsKK30KKwordm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1Ry
YWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcywgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpCit7CisgICAgY29uc3Qgc2l6ZV90IHRyYWNr
c1NpemUgPSB0cmFja3Muc2l6ZSgpOworICAgIFZlY3RvcjxHcmlkVHJhY2sqPiBzb3J0ZWRUcmFj
a3ModHJhY2tzU2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3NTaXplOyAr
K2kpCisgICAgICAgIHNvcnRlZFRyYWNrc1tpXSA9IHRyYWNrcy5kYXRhKCkgKyBpOworCisgICAg
c3RkOjpzb3J0KHNvcnRlZFRyYWNrcy5iZWdpbigpLCBzb3J0ZWRUcmFja3MuZW5kKCksIHNvcnRC
eUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRyYWNrc1NpemU7ICsraSkgeworICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gKnNvcnRlZFRy
YWNrc1tpXTsKKyAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2VTaGFyZSA9
IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSAvICh0cmFja3NTaXplIC0gaSk7CisgICAgICAgIExheW91
dFVuaXQgZ3Jvd3RoU2hhcmUgPSBzdGQ6Om1pbihhdmFpbGFibGVMb2dpY2FsU3BhY2VTaGFyZSwg
dHJhY2subV9tYXhCcmVhZHRoIC0gdHJhY2subV91c2VkQnJlYWR0aCk7CisgICAgICAgIHRyYWNr
Lm1fdXNlZEJyZWFkdGggKz0gZ3Jvd3RoU2hhcmU7CisgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxT
cGFjZSAtPSBncm93dGhTaGFyZTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgaW1w
bGVtZW50IHRoZSBsYXN0IDIgc3RlcHMgb2YgdGhlIGFsZ29yaXRobSBhcyB3ZSBkb24ndCBpbXBs
ZW1lbnQgY29udGVudCBiYXNlZCBzaXppbmcuCiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0
R3JpZEl0ZW1zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGJlOWJi
YWQ4NWEyMmNhZDQyYTVkOWU5NzU5NGI1NDRmYmZiNjM4ZDkuLjhlZWRmYzI1ZGQ0OWUwNTc1OGE4
ZjFjZjhkMTdmZGUzODA0YjYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyaWRU
cmFjazsKKwogY2xhc3MgUmVuZGVyR3JpZCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6
CiAgICAgUmVuZGVyR3JpZChOb2RlKik7CkBAIC00Niw5ICs0OCwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckdyaWQoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBjbGFzcyBHcmlkVHJhY2s7CiAgICAgZW51bSBUcmFja1Npemlu
Z0RpcmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJvd3MgfTsKICAgICB2b2lkIGNvbXB1dGVkVXNl
ZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJh
Y2s+Jik7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZkxlbmd0aChUcmFja1Np
emluZ0RpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJik7CisgICAgdm9pZCBkaXN0cmlidXRlU3BhY2VU
b1RyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CiAgICAgdm9pZCBsYXlvdXRHcmlkSXRlbXMoKTsK
IAogICAgIExheW91dFBvaW50IGZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbihSZW5kZXJCb3gqLCBj
b25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBjb25zdCBWZWN0b3I8R3JpZFRy
YWNrPiYgcm93VHJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkVHJhY2tTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZFRyYWNrU2l6ZS5oCmluZGV4IDBiNWQ4YjE2ZGZkZGUzNWFmOWUyOGQxOTFmY2UwNmY0NzAyYzM3
MzguLjE0MmIyYWQ3ZjUwMDA1OGIyNmQyODRjMjBmMmUyZGU3NjFlNDI4ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaApAQCAtNjYsMTQgKzY2
LDEyIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExlbmd0aCYgbWluVHJhY2tCcmVhZHRoKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTWluTWF4VHJhY2tTaXppbmcpOwog
ICAgICAgICBBU1NFUlQoIW1fbWluVHJhY2tCcmVhZHRoLmlzVW5kZWZpbmVkKCkpOwogICAgICAg
ICByZXR1cm4gbV9taW5UcmFja0JyZWFkdGg7CiAgICAgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBt
YXhUcmFja0JyZWFkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBN
aW5NYXhUcmFja1NpemluZyk7CiAgICAgICAgIEFTU0VSVCghbV9tYXhUcmFja0JyZWFkdGguaXNV
bmRlZmluZWQoKSk7CiAgICAgICAgIHJldHVybiBtX21heFRyYWNrQnJlYWR0aDsKICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzNiNzk1YTczM2RmNWIxNTU1YTk2ODcxNGZjM2JiZGRlYWZlZWEwYy4uMDZiNzhjNTUy
Y2JiYjk5MWYzYTZhNDZjNjI2YTU5MDg3MWIwNGZmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEzLTAxLTA3ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3Ig
Zml4ZWQgbWlubWF4IGdyaWQgdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5n
LgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwt
aGVpZ2h0LW9ubHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlk
LWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1v
bmx5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
bWlubWF4LWZpeGVkLWxvZ2ljYWwtd2lkdGgtb25seS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0w
NyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEEgY291cGxlIG1v
cmUgcmViYXNlbGluZXMgZm9yIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODgz
OC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L21pbm1heC1m
aXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L21pbm1heC1maXhlZC1sb2dpY2FsLWhlaWdodC1vbmx5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hY2E3ZWQxNDA4NDcwZGJlMmRmZWM5Mzc2MmQ4OWRkNGI3N2NlOTdi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlu
bWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK0J1ZyAxMDQ3MDA6IFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNp
emluZyBmb3IgZml4ZWQgbWlubWF4IGdyaWQgdHJhY2tzCisKK0NoZWNrcyB0aGF0IGEgZ3JpZCBl
bGVtZW50IHdpdGggZml4ZWQgbWlubWF4IHByb3Blcmx5IGNvbXB1dGUgdGhlIGxvZ2ljYWwgaGVp
Z2h0IGluIHNldmVyYWwgd3JpdGluZy1tb2RlLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9t
aW5tYXgtZml4ZWQtbG9naWNhbC1oZWlnaHQtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtaGVpZ2h0LW9ubHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZDg1NzVjYWM3MDRjODFjOTFmNjk5ZDczZTFmZjIyYzRkNTcxZTc2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVk
LWxvZ2ljYWwtaGVpZ2h0LW9ubHkuaHRtbApAQCAtMCwwICsxLDEwNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIiwgMSk7
Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5ncmlkIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVp
Z2h0OiAyMDBweDsKK30KKworI2dyaWQxIHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogMzBw
eDsKKyAgICAtd2Via2l0LWdyaWQtcm93czogbWlubWF4KDIwcHgsIDgwcHgpIDE2MHB4OworfQor
CisjZ3JpZDIgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC13ZWJraXQt
Z3JpZC1yb3dzOiBtaW5tYXgoNTAlLCAxMjBweCkgbWlubWF4KDIwcHgsIDQwJSk7Cit9CisKKyNn
cmlkMyB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDMwcHg7CisgICAgLyogT3ZlcmxhcHBp
bmcgcmFuZ2UuICovCisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IG1pbm1heCgxMHB4LCAxODBweCkg
bWlubWF4KDMwcHgsIDE1MHB4KTsKK30KKworI2dyaWQ0IHsKKyAgICAtd2Via2l0LWdyaWQtY29s
dW1uczogMzBweDsKKyAgICAtd2Via2l0LWdyaWQtcm93czogbWlubWF4KDIwcHgsIDgwcHgpIDYw
cHg7CisgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOworfQorCisjZ3JpZDUg
eworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAzMHB4OworICAgIC8qIDkwJSA+IDgwcHgsIDgw
cHggc2hvdWxkIGJlIGlnbm9yZWQuICovCisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IG1pbm1heCg5
MCUsIDgwcHgpIG1pbm1heCgxMHB4LCA2MCUpOworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2
ZXJ0aWNhbC1scjsKK30KKworI2dyaWQ2IHsKKyAgICAvKiBPdmVybGFwcGluZyByYW5nZS4gKi8K
KyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogMzBweDsKKyAgICAtd2Via2l0LWdyaWQtcm93czog
bWlubWF4KDEwcHgsIDE4MHB4KSBtaW5tYXgoMzBweCwgMTUwcHgpOworICAgIC13ZWJraXQtd3Jp
dGluZy1tb2RlOiBob3Jpem9udGFsLWJ0OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZTsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1y
b3c6IDE7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjYiB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbjogMTsK
KyAgICAtd2Via2l0LWdyaWQtcm93OiAyOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDog
MTAwJTsKK30KKworPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2st
bGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJyki
PgorCis8cD48YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvYi8xMDQ3MDAiPkJ1ZyAxMDQ3MDA8
YT46IFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGl0ZW1zIHNpemluZyBmb3IgZml4
ZWQgbWlubWF4IGdyaWQgdHJhY2tzPC9wPgorPHA+Q2hlY2tzIHRoYXQgYSBncmlkIGVsZW1lbnQg
d2l0aCBmaXhlZCBtaW5tYXggcHJvcGVybHkgY29tcHV0ZSB0aGUgbG9naWNhbCBoZWlnaHQgaW4g
c2V2ZXJhbCB3cml0aW5nLW1vZGUuPC9wPgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDEi
IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+Cisg
ICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjQwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIzMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE2
MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9
ImdyaWQiIGlkPSJncmlkMiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTIw
IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjgwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQzIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIx
MDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSI5MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2PgorICAgIDxk
aXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMTAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjMwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDQiIGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRp
diBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0
MCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI2MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIg
aWQ9ImdyaWQ1IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0
PSIyMDAiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iOTAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAiPjwvZGl2PgorPC9kaXY+CisKKzxk
aXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkNiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRh
LWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iOTAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjMwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTEwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9k
aXY+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtd2lkdGgtb25seS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9taW5tYXgtZml4ZWQt
bG9naWNhbC13aWR0aC1vbmx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2U0ZjZmMzQ3YmYw
OGFjYmM5NTE3OGI2NTAyOWE3YTZhYThjNGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtd2lkdGgtb25seS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorQnVnIDEwNDcwMDogW0NTUyBHcmlkIExheW91
dF0gSW1wbGVtZW50IGdyaWQgaXRlbXMgc2l6aW5nIGZvciBmaXhlZCBtaW5tYXggZ3JpZCB0cmFj
a3MKKworQ2hlY2tzIHRoYXQgYSBncmlkIGVsZW1lbnQgd2l0aCBmaXhlZCBtaW5tYXggcHJvcGVy
bHkgY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0aCBpbiBzZXZlcmFsIHdyaXRpbmctbW9kZS4KKwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2ljYWwtd2lkdGgtb25seS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvbWlubWF4LWZpeGVkLWxvZ2lj
YWwtd2lkdGgtb25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YWI5YTEyZDViYWMzYzYyNzRjOGYxYTJm
Y2FkMDFhYTk5NzFjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9taW5tYXgtZml4ZWQtbG9naWNhbC13aWR0aC1vbmx5Lmh0bWwKQEAgLTAsMCAr
MSwxMDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NH
cmlkTGF5b3V0RW5hYmxlZCIsIDEpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisuZ3JpZCB7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ncmlkOworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7CisgICAg
d2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9CisKKyNncmlkMSB7CisgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IG1pbm1heCgyMHB4LCA4MHB4KSA2MHB4OworICAgIC13ZWJraXQt
Z3JpZC1yb3dzOiAzMHB4OworfQorCisjZ3JpZDIgeworICAgIC8qIEZpcnN0IG1pbm1heCBtb3Jl
IGNvbnN0cmFpbmluZyB0aGFuIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoLiAqLworICAgIC13ZWJr
aXQtZ3JpZC1jb2x1bW5zOiBtaW5tYXgoNTAlLCA2MHB4KSBtaW5tYXgoMTBweCwgNDAlKTsKKyAg
ICAtd2Via2l0LWdyaWQtcm93czogMzBweDsKK30KKworI2dyaWQzIHsKKyAgICAvKiBPdmVybGFw
cGluZyByYW5nZS4gKi8KKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbWlubWF4KDEwcHgsIDgw
cHgpIG1pbm1heCgyMHB4LCA1MHB4KTsKKyAgICAtd2Via2l0LWdyaWQtcm93czogMzBweDsKK30K
KworI2dyaWQ0IHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbWlubWF4KDIwcHgsIDgwcHgp
IDE2MHB4OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAzMHB4OworICAgIC13ZWJraXQtd3JpdGlu
Zy1tb2RlOiB2ZXJ0aWNhbC1ybDsKK30KKworI2dyaWQ1IHsKKyAgICAvKiA1MCUgPiA4MHB4LCA4
MHB4IHNob3VsZCBiZSBpZ25vcmVkLiAqLworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBtaW5t
YXgoNTAlLCA4MHB4KSBtaW5tYXgoMTBweCwgNjAlKTsKKyAgICAtd2Via2l0LWdyaWQtcm93czog
MzBweDsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7Cit9CisKKyNncmlk
NiB7CisgICAgLyogT3ZlcmxhcHBpbmcgcmFuZ2UuICovCisgICAgLXdlYmtpdC1ncmlkLWNvbHVt
bnM6IG1pbm1heCgxMHB4LCAxODBweCkgbWlubWF4KDMwcHgsIDE1MHB4KTsKKyAgICAtd2Via2l0
LWdyaWQtcm93czogMzBweDsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1i
dDsKK30KKworI2EgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgLXdlYmtpdC1n
cmlkLWNvbHVtbjogMTsKKyAgICAtd2Via2l0LWdyaWQtcm93OiAxOworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKK30KKworI2IgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7CisgICAgLXdlYmtpdC1ncmlkLXJvdzog
MTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKKzwvc3R5bGU+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8
Ym9keSBvbmxvYWQ9ImNoZWNrTGF5b3V0KCcuZ3JpZCcpIj4KKworPHA+PGEgaHJlZj0iaHR0cHM6
Ly93ZWJraXQub3JnL2IvMTA0NzAwIj5CdWcgMTA0NzAwPGE+OiBbQ1NTIEdyaWQgTGF5b3V0XSBJ
bXBsZW1lbnQgZ3JpZCBpdGVtcyBzaXppbmcgZm9yIGZpeGVkIG1pbm1heCBncmlkIHRyYWNrczwv
cD4KKzxwPkNoZWNrcyB0aGF0IGEgZ3JpZCBlbGVtZW50IHdpdGggZml4ZWQgbWlubWF4IHByb3Bl
cmx5IGNvbXB1dGUgdGhlIGxvZ2ljYWwgd2lkdGggaW4gc2V2ZXJhbCB3cml0aW5nLW1vZGUuPC9w
PgorCis8ZGl2IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEw
MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBl
Y3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MCI+PC9kaXY+CisgICAgPGRp
diBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI2
MCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQyIiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiPgorICAgIDxkaXYg
aWQ9ImEiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNjAi
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iNDAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlk
PSJncmlkMyIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjUwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJncmlkIiBpZD0iZ3JpZDQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjIwMCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC1oZWln
aHQ9IjQwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYiIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE2MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAiPjwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlkNSIgZGF0YS1leHBlY3RlZC13
aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4KKyAgICA8ZGl2IGlkPSJhIiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMCI+PC9kaXY+
CisgICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMzAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImdyaWQiIGlkPSJncmlk
NiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIj4K
KyAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjQwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MzAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjYwIj48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>