<?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>103343</bug_id>
          
          <creation_ts>2012-11-26 18:36:41 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] track sizing functions should have their own type</short_desc>
          <delta_ts>2012-11-29 15:03:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>103311</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dcheng</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</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>776191</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-26 18:36:41 -0800</bug_when>
    <thetext>Currently we re-use Length to store the track sizing functions. This works as we only support a single &lt;length&gt; | &lt;percentage&gt; as our sizing function but to implement minmax we will need to hold 2 values.

One solution is to change Length to an std::pair&lt;Length, Length&gt;. This would make the code less readable IMHO so it makes sense to have a dedicated structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776217</commentid>
    <comment_count>1</comment_count>
      <attachid>176148</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-26 19:09:36 -0800</bug_when>
    <thetext>Created attachment 176148
Proposed change: Added TrackSizingFunction.h, cleaned up how we handle &apos;none&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776270</commentid>
    <comment_count>2</comment_count>
      <attachid>176148</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 20:54:43 -0800</bug_when>
    <thetext>Comment on attachment 176148
Proposed change: Added TrackSizingFunction.h, cleaned up how we handle &apos;none&apos;

Attachment 176148 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15000564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776271</commentid>
    <comment_count>3</comment_count>
      <attachid>176148</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 20:55:21 -0800</bug_when>
    <thetext>Comment on attachment 176148
Proposed change: Added TrackSizingFunction.h, cleaned up how we handle &apos;none&apos;

Attachment 176148 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14985962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776279</commentid>
    <comment_count>4</comment_count>
      <attachid>176148</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-26 21:01:08 -0800</bug_when>
    <thetext>Comment on attachment 176148
Proposed change: Added TrackSizingFunction.h, cleaned up how we handle &apos;none&apos;

Attachment 176148 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14988886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776871</commentid>
    <comment_count>5</comment_count>
      <attachid>176289</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-27 09:39:41 -0800</bug_when>
    <thetext>Created attachment 176289
Proposed change 2: updated Qt / EFL to build properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777244</commentid>
    <comment_count>6</comment_count>
      <attachid>176289</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-27 14:49:33 -0800</bug_when>
    <thetext>Comment on attachment 176289
Proposed change 2: updated Qt / EFL to build properly.

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

&gt; Source/WebCore/rendering/style/TrackSizingFunction.h:42
&gt; +class TrackSizingFunction {

How about just calling this TrackSize? I know the spec calls these functions, but I find that confusing and bulky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777288</commentid>
    <comment_count>7</comment_count>
      <attachid>176289</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-27 15:56:17 -0800</bug_when>
    <thetext>Comment on attachment 176289
Proposed change 2: updated Qt / EFL to build properly.

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

&gt;&gt; Source/WebCore/rendering/style/TrackSizingFunction.h:42
&gt;&gt; +class TrackSizingFunction {
&gt; 
&gt; How about just calling this TrackSize? I know the spec calls these functions, but I find that confusing and bulky.

I am fine with TrackSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778100</commentid>
    <comment_count>8</comment_count>
      <attachid>176530</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 11:22:48 -0800</bug_when>
    <thetext>Created attachment 176530
Change 2: Renamed the new structure to TrackSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778146</commentid>
    <comment_count>9</comment_count>
      <attachid>176530</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-28 12:00:43 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

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

I think GridTrackSize would be a bit better than TrackSize, but I guess it&apos;s not a big deal.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:996
&gt; +static PassRefPtr&lt;CSSValue&gt; valueForGridTrackList(const Vector&lt;TrackSize&gt;&amp; trackFunctions, const RenderStyle* style)

Nit: trackFunctions -&gt; trackSizes

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1000
&gt; -    if (trackLengths.size() == 1 &amp;&amp; trackLengths[0].isUndefined())
&gt; +    if (!trackFunctions.size())
&gt;          return cssValuePool().createIdentifierValue(CSSValueNone);

Can we add a test case for 0 tracks?

&gt; Source/WebCore/css/StyleResolver.cpp:2662
&gt; +static bool createGridTrackBreadth(CSSPrimitiveValue* primitiveValue, StyleResolver* selector, TrackSize&amp; function)

Nit: function -&gt; trackSize

&gt; Source/WebCore/css/StyleResolver.cpp:2675
&gt; +static bool createGridTrackList(CSSValue* value, Vector&lt;TrackSize&gt;&amp; functions, StyleResolver* selector)

Nit: functions -&gt; sizes or trackSizes

&gt; Source/WebCore/css/StyleResolver.cpp:2690
&gt; +            TrackSize function;
&gt; +            if (!createGridTrackBreadth(static_cast&lt;CSSPrimitiveValue*&gt;(currValue), selector, function))

Nit: function -&gt; trackSize

&gt; Source/WebCore/rendering/style/StyleGridData.h:54
&gt; +    Vector&lt;TrackSize&gt; m_gridColumns;
&gt; +    Vector&lt;TrackSize&gt; m_gridRows;

Maybe we should rename this to m_gridColumnTracks or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778253</commentid>
    <comment_count>10</comment_count>
      <attachid>176530</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-28 13:08:55 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

Attachment 176530 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15027532

New failing tests:
fast/css-grid-layout/containing-block-grids.html
fast/css-grid-layout/should-not-collapse-anonymous-blocks.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778372</commentid>
    <comment_count>11</comment_count>
      <attachid>176530</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 14:49:03 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

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

&gt; I think GridTrackSize would be a bit better than TrackSize, but I guess it&apos;s not a big deal.

Either are fine by me. As we have prefixed everything with Grid, we may as well continue.

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1000
&gt;&gt;          return cssValuePool().createIdentifierValue(CSSValueNone);
&gt; 
&gt; Can we add a test case for 0 tracks?

This code path is already covered unless I am mistaking as we are trying to set and get the value (&apos;none&apos;) in LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set.html.

On top of that, the failing EWS test cases are exercising the empty grid case (though on the layout side).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778398</commentid>
    <comment_count>12</comment_count>
      <attachid>176530</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 15:10:16 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

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

New failing tests:
fast/css-grid-layout/should-not-collapse-anonymous-blocks.html
fast/css-grid-layout/containing-block-grids.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778412</commentid>
    <comment_count>13</comment_count>
      <attachid>176530</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 15:33:01 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

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

&gt;&gt; Source/WebCore/rendering/style/StyleGridData.h:54
&gt;&gt; +    Vector&lt;TrackSize&gt; m_gridRows;
&gt; 
&gt; Maybe we should rename this to m_gridColumnTracks or something?

The spec renamed those to grid-definition-columns and grid-definition-rows so if we wanted to follow the spec, it would be m_gridDefinitionColumns. I don&apos;t mind changing the names but we are still in the early development phase so we will probably find better naming as add more of the grammar and the spec matures.

If there is no objection, I would prefer to put a FIXME on those 2 and punt until we have more visibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778434</commentid>
    <comment_count>14</comment_count>
      <attachid>176530</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 15:50:16 -0800</bug_when>
    <thetext>Comment on attachment 176530
Change 2: Renamed the new structure to TrackSize.

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

New failing tests:
fast/css-grid-layout/should-not-collapse-anonymous-blocks.html
fast/css-grid-layout/containing-block-grids.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778487</commentid>
    <comment_count>15</comment_count>
      <attachid>176603</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 16:39:55 -0800</bug_when>
    <thetext>Created attachment 176603
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778497</commentid>
    <comment_count>16</comment_count>
      <attachid>176603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 16:55:50 -0800</bug_when>
    <thetext>Comment on attachment 176603
Patch for landing

Rejecting attachment 176603 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
pe
Source/WebCore/rendering/style/RenderStyle.h:1632: error: template argument 1 is invalid
make: *** [out/Release/obj.target/webcore_dom/Source/WebCore/dom/DocumentMarkerController.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/Release/obj.target/webcore_dom/Source/WebCore/dom/CharacterData.o] Error 1
make: *** [out/Release/obj.target/webcore_dom/Source/WebCore/dom/ContainerNode.o] Error 1
make: *** [out/Release/obj.target/webcore_dom/Source/WebCore/dom/Document.o] Error 1

Full output: http://queues.webkit.org/results/15044065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778598</commentid>
    <comment_count>17</comment_count>
      <attachid>176625</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 18:42:55 -0800</bug_when>
    <thetext>Created attachment 176625
Patch for landing 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779316</commentid>
    <comment_count>18</comment_count>
      <attachid>176625</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 12:27:19 -0800</bug_when>
    <thetext>Comment on attachment 176625
Patch for landing 2.

Clearing flags on attachment: 176625

Committed r136150: &lt;http://trac.webkit.org/changeset/136150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779317</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 12:27:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779432</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-11-29 14:19:25 -0800</bug_when>
    <thetext>Is it intentional that the .gypi references GridTrackSizes.h but GridTrackSize.h was added instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779476</commentid>
    <comment_count>21</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-29 15:03:58 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Is it intentional that the .gypi references GridTrackSizes.h but GridTrackSize.h was added instead?

It wasn&apos;t and it has been fixed in http://trac.webkit.org/changeset/136166 as it was making Chromium buildbots unhappy. I don&apos;t know why it didn&apos;t complain locally or on the EWS though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176148</attachid>
            <date>2012-11-26 19:09:36 -0800</date>
            <delta_ts>2012-11-27 09:39:38 -0800</delta_ts>
            <desc>Proposed change: Added TrackSizingFunction.h, cleaned up how we handle &apos;none&apos;</desc>
            <filename>bug-103343-20121126190714.patch</filename>
            <type>text/plain</type>
            <size>23340</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjUyY2UxYWNlZWQ0OTYw
YmQ1NTNkODhmMGJkMzgxYTNlYWU3MDY0MC4uM2M0MmI3ZTAwMDc0ZGFmMjA4ZDg2NGZkOGU5NWE3
NWFjMWQ1NGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTI2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBj
dXJyZW50IGNvZGUgdXNlcyBhIExlbmd0aCB0byByZXByZXNlbnQgdGhlIHRyYWNrIHNpemluZyBm
dW5jdGlvbi4gVGhpcyBpcworICAgICAgICBmaW5lIGFzIHdlIG9ubHkgcGFyc2UgPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gYnV0IGluIG9yZGVyIHRvIHN1cHBvcnQgbWlubWF4CisgICAgICAgIHNp
emluZywgd2UgaGF2ZSB0byBzdG9yZSAyIExlbmd0aHMuIFdlIGNvdWxkIGdvIHdpdGggYSBwYWly
IGJ1dCB0aGF0IHdvdWxkIG1ha2UKKyAgICAgICAgdGhlIGNvZGUgbm90IHZlcnkgcmVhZGFibGUg
c28gdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBUcmFja1NpemluZ0Z1bmN0aW9uLgorCisgICAgICAg
IFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZGVkIFRyYWNrU2l6aW5nRnVuY3Rpb24uaCB0byBhbGwgb3Vy
IGJ1aWxkIHN5c3RlbXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpj
b21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5oOgorICAgICAgICBVcGRhdGVkIHRoZSBhYm92ZSBjYWxsIHNpdGVzIHRvIHVzZSBUcmFja1Np
emluZ0Z1bmN0aW9uLiBXaGlsZQorICAgICAgICB0b3VjaGluZyB0aGVtLCBjaGFuZ2VkIHRoZSBj
b2RlIHRvIHVzZSBhbiBlbXB0eSBWZWN0b3IgdG8gcmVwcmVzZW50CisgICAgICAgICdub25lJyBp
bnN0ZWFkIG9mIExlbmd0aChVbmRlZmluZWQpLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1RyYWNrU2l6aW5nRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1Np
emluZ0Z1bmN0aW9uOjpUcmFja1NpemluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU2l6aW5nRnVuY3Rpb246Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1Npemlu
Z0Z1bmN0aW9uOjpzZXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tTaXppbmdGdW5j
dGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NpemluZ0Z1bmN0aW9uOjpvcGVy
YXRvcj09KToKKyAgICAgICAgTmV3IGNsYXNzLCBpdCBub3cgb25seSB3cmFwcyBhIHNpbmdsZSBM
ZW5ndGguCisKIDIwMTItMTEtMjYgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmVmYWN0b3IgVjggYmluZGluZ3MgdG8gYWxsb3cgY29udGVudCBzY3JpcHRzIHRv
IGFjY2VzcyBzdWJmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY3Y2FjYjc5NzM1YTg2
Y2M5YTRlZjQ5YjNhODVkMDY3ZTUyMzk1ZS4uYTI0NjZkMWU2MzEzOTJhYTQ5MDczNjExMDcwMGNl
YTBhMDU4ZDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDcsNiArMjIwNyw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
Y3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKICAgICByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAorICAgIHJlbmRlcmluZy9zdHlsZS9UcmFj
a1NpemluZ0Z1bmN0aW9uLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHAKICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhZDg0YTI0ZjlkYzRkZmYxMmFiZjZmMzIzNzNmMzdi
ZGNiMGIyZGIwLi44YTUxZTlkNWNkYjUzYjNiMTAxZmFkZmY5NTlkOWEyZjAzMGU2YjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2NTgsNiArNDY1OCw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmFyaWFi
bGVEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERh
dGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRh
LmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UcmFja1NpemluZ0Z1bmN0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UYWJsZUxheW91dC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGRlOWUz
ZTdiMDAyMmNmZDdmYmFmMWZiMGFjNmRlNmZkMzAwYTE0OTYuLmMzNzFmMGJiMGM2NmJjNDA3ZmQ5
Zjk0MWJlMWFhNjg3N2YzNjIxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTI0NSw2ICsxMjQ1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcCBc
CiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAgXAogICAgIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvVHJh
Y2tTaXppbmdGdW5jdGlvbi5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAg
ICBzdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKICAgICBzdG9yYWdlL1N0b3JhZ2UuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBmNDZjNWZiNjY0MWRmNWYwMjUzNmQ5MTYzNGFjMGVlNGQyYWZj
ODhlLi4yMjczMDFmOThmYTFhNGE1NWJjMzY4MjkwMWYwZjg0YzhhMmNhZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC02MjgsNiArNjI4LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUv
U3R5bGVUcmFuc2Zvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHls
ZVZhcmlhYmxlRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9UcmFja1NpemluZ0Z1bmN0
aW9ucy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgn
LAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwMmI5NTczOWIxZmYyMjMwMzc1YzY3YmYzNzZk
YzFjNzAyYmYzYmY3Li41MmM2NmNlMTVjNDA4NjQwZDdjNGRiZjMzODMyOTllYzkwMTZjMjY4IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDY4
NDcsNiArNDY4NDcsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxUcmFja1NpemluZ0Z1bmN0aW9uLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5k
ZXJpbmdcc3R5bGVcU1ZHUmVuZGVyU3R5bGUuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDNiNjNiM2Q5MjhiY2M3MWRlNzM3N2UyMWYwNmRhNmY3ODdiNzc1MzQuLjg5
MGQ1YWE4MmFiZWYwNjEyN2U2MWUyYTNkMjk4YzAwN2VjOGMzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MjAsNiArMzgy
MCw3IEBACiAJCUExMjBBQ0E0MTNGOTk4Q0EwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyMEFDQTEx
M0Y5OTg0NjAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgKi87IH07CiAJCUExMjUzOEQ0
MTNGOUI2MEEwMDAyNDc1NCAvKiBMYXlvdXRSZXBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAvKiBM
YXlvdXRSZXBhaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMTI3MDVDMzE2NTZCRDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI3MDVDMjE2NTZC
RDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTEyQTEwNTAxNjY0NDRGRDAwOEZBMzExIC8qIFRyYWNr
U2l6aW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMkExMDRFMTY2NDQ0REMwMDhGQTMxMSAvKiBUcmFja1NpemluZ0Z1bmN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEzNkEw
MEMxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMzZB
MDBBMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRs
ZS5jcHAgKi87IH07CiAJCUExMzZBMDBEMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEzNkEwMEIxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudFRocm90dGxlLmggKi87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFF
QiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi87IH07CkBAIC0xMTEzMCw2ICsxMTEzMSw3IEBACiAJCUExMjBBQ0EwMTNG
OTk4MzcwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF5b3V0UmVwYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMjBBQ0ExMTNGOTk4NDYwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0UmVwYWludGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyNzA1QzIxNjU2QkQ2NTAwQzJFMjdDIC8qIEdy
aWRQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkUG9zaXRp
b24uaDsgcGF0aCA9IHN0eWxlL0dyaWRQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMTJBMTA0RTE2NjQ0NERDMDA4RkEzMTEgLyogVHJhY2tTaXppbmdGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUcmFja1NpemluZ0Z1bmN0aW9uLmg7
IHBhdGggPSBzdHlsZS9UcmFja1NpemluZ0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExMzZBMDBBMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnRUaHJvdHRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExMzZBMDBCMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0
b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50
RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDcyOCw2ICsyMDcz
MCw3IEBACiAJCQkJQkMyMjc0NzUwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmgg
Ki8sCiAJCQkJQkMyMjc0NzYwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5j
cHAgKi8sCiAJCQkJQkMyMjc0NzcwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVm
cy5oICovLAorCQkJCUExMkExMDRFMTY2NDQ0REMwMDhGQTMxMSAvKiBUcmFja1NpemluZ0Z1bmN0
aW9uLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHN0eWxlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTI1NTg5LDYgKzI1NTkyLDcgQEAKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURB
NzUgLyogVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUUwRUZBQzkwNjAw
OUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzMzRENzE0
NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTJBMTA1
MDE2NjQ0NEZEMDA4RkEzMTEgLyogVHJhY2tTaXppbmdGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3Jt
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGIxMjdhYTk2
YTVmZWM2OTIyZjI1NWZhNGUzZjk2YzYzZDhhMWNlMjUuLjgwNDk3MDIzMDE4OTk0OGUxYzBmYjhl
MTc4MWRlOWFkYWQ5ZmEwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05ODQsMjcgKzk4NCwyNCBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKGNv
bnN0IFJlbmRlck9iagogfQogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9y
R3JpZFRyYWNrQnJlYWR0aChjb25zdCBUcmFja1NpemluZ0Z1bmN0aW9uJiB0cmFja0Z1bmN0aW9u
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKHRyYWNrTGVuZ3RoLmlzUGVy
Y2VudCgpKQotICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodHJhY2tM
ZW5ndGgpOwotICAgIGlmICh0cmFja0xlbmd0aC5pc0F1dG8oKSkKKyAgICBpZiAodHJhY2tGdW5j
dGlvbi5sZW5ndGgoKS5pc1BlcmNlbnQoKSkKKyAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKHRyYWNrRnVuY3Rpb24ubGVuZ3RoKCkpOworICAgIGlmICh0cmFja0Z1bmN0
aW9uLmxlbmd0aCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodHJhY2tMZW5ndGgudmFsdWUoKSwgc3R5bGUpOworICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHRyYWNrRnVuY3Rpb24ubGVuZ3RoKCkudmFsdWUoKSwgc3R5bGUp
OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0
KGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja0xlbmd0aHMsIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qo
Y29uc3QgVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+JiB0cmFja0Z1bmN0aW9ucywgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIC8vIFdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IGFu
IGVsZW1lbnQhCi0gICAgQVNTRVJUKHRyYWNrTGVuZ3Rocy5zaXplKCkpOwotCiAgICAgLy8gSGFu
ZGxlIHRoZSAnbm9uZScgY2FzZSBoZXJlLgotICAgIGlmICh0cmFja0xlbmd0aHMuc2l6ZSgpID09
IDEgJiYgdHJhY2tMZW5ndGhzWzBdLmlzVW5kZWZpbmVkKCkpCisgICAgaWYgKCF0cmFja0Z1bmN0
aW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0cmFja0xlbmd0aHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGxpc3QtPmFwcGVu
ZCh2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tMZW5ndGhzW2ldLCBzdHlsZSkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tGdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tGdW5jdGlvbnNb
aV0sIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2JmNmM4YTc1MWFkZGJkNDZjYzEwYjJiYjBlOGZl
ZmM3MjRlOTJkNy4uOGY2NTA1YmRmN2ExZTEyM2VlZWU3OGFmYTNmMzE2NzlhODY3ZTU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjY1OSw3ICsyNjU5LDcgQEAgYm9v
bCBTdHlsZVJlc29sdmVyOjp1c2VTVkdab29tUnVsZXMoKQogICAgIHJldHVybiBtX2VsZW1lbnQg
JiYgbV9lbGVtZW50LT5pc1NWR0VsZW1lbnQoKTsKIH0KIAotc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBMZW5ndGgmIGxlbmd0aCkKK3N0YXRpYyBib29sIGNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgVHJhY2tTaXppbmdGdW5jdGlvbiYgZnVuY3Rpb24pCiB7CiAgICAgTGVu
Z3RoIHdvcmtpbmdMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVk
SW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFn
ZUNvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9y
LT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkp
OwogICAgIGlmICh3b3JraW5nTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCkBAIC0yNjY4LDIwICsyNjY4
LDE2IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlLCBTdHlsZVJlc29sCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c0xlbmd0aCgpKQogICAgICAgICB3b3JraW5nTGVuZ3RoLnNldFF1aXJrKHByaW1pdGl2ZVZhbHVl
LT5pc1F1aXJrVmFsdWUoKSk7CiAKLSAgICBsZW5ndGggPSB3b3JraW5nTGVuZ3RoOworICAgIGZ1
bmN0aW9uLnNldExlbmd0aCh3b3JraW5nTGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxM
ZW5ndGg+JiBsZW5ndGhzLCBTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKK3N0YXRpYyBib29sIGNy
ZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8VHJhY2tTaXppbmdGdW5j
dGlvbj4mIGZ1bmN0aW9ucywgU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiB7CiAgICAgLy8gSGFu
ZGxlICdub25lJy4KICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbGVuZ3Rocy5hcHBlbmQoTGVuZ3Ro
KFVuZGVmaW5lZCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lOwogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkgewpAQCAtMjY5MCwxMSArMjY4NiwxMSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tM
aXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMsIFN0eWxlUgogICAg
ICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgICAg
ICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihjdXJyVmFsdWUpLCBzZWxlY3RvciwgbGVuZ3RoKSkKKyAgICAgICAgICAgIFRyYWNr
U2l6aW5nRnVuY3Rpb24gZnVuY3Rpb247CisgICAgICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFj
a0JyZWFkdGgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFsdWUpLCBzZWxl
Y3RvciwgZnVuY3Rpb24pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICAgICAgbGVuZ3Rocy5hcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucy5hcHBl
bmQoZnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTM1NDQsMTcgKzM1NDAsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB9CiAjZW5kaWYKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0R3JpZENvbHVtbnM6IHsKLSAgICAgICAgVmVjdG9yPExlbmd0aD4g
bGVuZ3RoczsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCBsZW5ndGhz
LCB0aGlzKSkKKyAgICAgICAgVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+IGZ1bmN0aW9uczsK
KyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCBmdW5jdGlvbnMsIHRoaXMp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRHcmlkQ29sdW1ucyhs
ZW5ndGhzKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0R3JpZENvbHVtbnMoZnVuY3Rpb25zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd3M6
IHsKLSAgICAgICAgVmVjdG9yPExlbmd0aD4gbGVuZ3RoczsKLSAgICAgICAgaWYgKCFjcmVhdGVH
cmlkVHJhY2tMaXN0KHZhbHVlLCBsZW5ndGhzLCB0aGlzKSkKKyAgICAgICAgVmVjdG9yPFRyYWNr
U2l6aW5nRnVuY3Rpb24+IGZ1bmN0aW9uczsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tM
aXN0KHZhbHVlLCBmdW5jdGlvbnMsIHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3N0eWxlLT5zZXRHcmlkUm93cyhsZW5ndGhzKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0R3Jp
ZFJvd3MoZnVuY3Rpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGU1MjA1ODFiOWE2ZDg5YjExZWJlMDNkMjFk
MTE0OGVhZjE2YTA5ZTEuLjZlOGQwZWUxYzJiMWM5ZjY4NWQzYzI1YmRhOTkzNWExN2YxYjBmYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTExNiwxMCArMTE2
LDEwIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IHRha2Ugb3VyIG93biBsb2dpY2FsIHdpZHRoIGludG8g
YWNjb3VudC4KIAotICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja1N0eWxlcyA9IHN0eWxl
KCktPmdyaWRDb2x1bW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+
JiB0cmFja1N0eWxlcyA9IHN0eWxlKCktPmdyaWRDb2x1bW5zKCk7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYWNrU3R5bGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIExlbmd0aCB0
cmFja0xlbmd0aCA9IHRyYWNrU3R5bGVzW2ldOworICAgICAgICBMZW5ndGggdHJhY2tMZW5ndGgg
PSB0cmFja1N0eWxlc1tpXS5sZW5ndGgoKTsKICAgICAgICAgaWYgKCF0cmFja0xlbmd0aC5pc0Zp
eGVkKCkpIHsKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTEzOCwxMSArMTM4LDExIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKQogCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFk
dGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgdHJhY2tzKQogewotICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja1N0eWxl
cyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygpIDog
c3R5bGUoKS0+Z3JpZFJvd3MoKTsKKyAgICBjb25zdCBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlv
bj4mIHRyYWNrU3R5bGVzID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN0eWxlKCktPmdy
aWRDb2x1bW5zKCkgOiBzdHlsZSgpLT5ncmlkUm93cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNrIHRyYWNr
OwotICAgICAgICBpZiAodHJhY2tTdHlsZXNbaV0uaXNGaXhlZCgpKQotICAgICAgICAgICAgdHJh
Y2subV91c2VkQnJlYWR0aCA9IHRyYWNrU3R5bGVzW2ldLmdldEZsb2F0VmFsdWUoKTsKKyAgICAg
ICAgaWYgKHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpLmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHRy
YWNrLm1fdXNlZEJyZWFkdGggPSB0cmFja1N0eWxlc1tpXS5sZW5ndGgoKS5nZXRGbG9hdFZhbHVl
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMzE5OTZmYTA1
YWJiNWNkMDU4OTQxMWE1NmZhY2YzYzcwNzNjNWVjMC4uMmVkODU0MGE3ODhlNzU1OGJlZjQ2ODNk
MjhkYWZkYWI2MDYzYzcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKQEAgLTgxNSw4ICs4MTUsOCBAQCBwdWJsaWM6CiAgICAgRUZsZXhXcmFwIGZs
ZXhXcmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhXcmFwPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4V3JhcCk7IH0KICAgICBFSnVzdGlmeUNv
bnRlbnQganVzdGlmeUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSnVzdGlm
eUNvbnRlbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50KTsgfQogCi0g
ICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uczsgfQotICAgIGNvbnN0IFZl
Y3RvcjxMZW5ndGg+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KKyAgICBjb25zdCBWZWN0b3I8VHJhY2tTaXppbmdG
dW5jdGlvbj4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxUcmFja1Npemlu
Z0Z1bmN0aW9uPiYgZ3JpZFJvd3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2dyaWRSb3dzOyB9CiAKICAgICBjb25zdCBHcmlkUG9zaXRpb24mIGdyaWRJ
dGVtQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0
ZW0tPm1fZ3JpZENvbHVtbjsgfQogICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Sb3co
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlk
Um93OyB9CkBAIC0xMjk1LDggKzEyOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGbGV4RGly
ZWN0aW9uKEVGbGV4RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhEaXJlY3Rpb24sIGRpcmVjdGlv
bik7IH0KICAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3JhcCB3KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleFdyYXAsIHcpOyB9
CiAgICAgdm9pZCBzZXRKdXN0aWZ5Q29udGVudChFSnVzdGlmeUNvbnRlbnQgcCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlDb250ZW50LCBwKTsgfQotICAgIHZvaWQg
c2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX2dyaWRDb2x1bW5zLCBsZW5n
dGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVjdG9yPExlbmd0aD4mIGxlbmd0
aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX2dy
aWRSb3dzLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9y
PFRyYWNrU2l6aW5nRnVuY3Rpb24+JiBsZW5ndGhzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9ncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KKyAgICB2
b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPiYgbGVuZ3Ro
cykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3Jp
ZFJvd3MsIGxlbmd0aHMpOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtbihjb25zdCBHcmlk
UG9zaXRpb24mIGNvbHVtblBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtbiwgY29sdW1uUG9zaXRpb24pOyB9CiAg
ICAgdm9pZCBzZXRHcmlkSXRlbVJvdyhjb25zdCBHcmlkUG9zaXRpb24mIHJvd1Bvc2l0aW9uKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0sIG1fZ3Jp
ZFJvdywgcm93UG9zaXRpb24pOyB9CiAKQEAgLTE3MDIsMTYgKzE3MDIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFByaW50Q29sb3JBZGp1c3QgaW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKSB7IHJl
dHVybiBQcmludENvbG9yQWRqdXN0RWNvbm9teTsgfQogCiAgICAgLy8gVGhlIGluaXRpYWwgdmFs
dWUgaXMgJ25vbmUnIGZvciBncmlkIHRyYWNrcy4KLSAgICBzdGF0aWMgVmVjdG9yPExlbmd0aD4g
aW5pdGlhbEdyaWRUcmFja1ZhbHVlKCkKLSAgICB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVmVjdG9yPExlbmd0aD4sIGRlZmF1bHRMZW5ndGgsICgpKTsKLSAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYW51YWxseSBhZGQgdGhlIExlbmd0aCBoZXJlIGFzIHRoZSBMZW5ndGgoMCkgaXMgJ2F1
dG8nLgotICAgICAgICBpZiAoIWRlZmF1bHRMZW5ndGguc2l6ZSgpKQotICAgICAgICAgICAgZGVm
YXVsdExlbmd0aC5hcHBlbmQoTGVuZ3RoKFVuZGVmaW5lZCkpOwotICAgICAgICByZXR1cm4gZGVm
YXVsdExlbmd0aDsKLSAgICB9Ci0gICAgc3RhdGljIFZlY3RvcjxMZW5ndGg+IGluaXRpYWxHcmlk
Q29sdW1ucygpIHsgcmV0dXJuIGluaXRpYWxHcmlkVHJhY2tWYWx1ZSgpOyB9Ci0gICAgc3RhdGlj
IFZlY3RvcjxMZW5ndGg+IGluaXRpYWxHcmlkUm93cygpIHsgcmV0dXJuIGluaXRpYWxHcmlkVHJh
Y2tWYWx1ZSgpOyB9CisgICAgc3RhdGljIFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPiBpbml0
aWFsR3JpZENvbHVtbnMoKSB7IHJldHVybiBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4oKTsg
fQorICAgIHN0YXRpYyBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4gaW5pdGlhbEdyaWRSb3dz
KCkgeyByZXR1cm4gVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+KCk7IH0KIAogICAgIC8vICdh
dXRvJyBpcyB0aGUgZGVmYXVsdC4KICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlk
SXRlbUNvbHVtbigpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCBkZGNlYWRiYmM4ZTU0N2U1
YWYxYmJlNGM5M2E3MmJmNWFlYjVjNDgyLi4zZTgxZDU2Y2Q2ZTc4ODliNjgxYzNjZWEwZDc4MDdi
YWJkZWEwZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdy
aWREYXRhLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU3R5bGVHcmlkRGF0YV9oCiAjZGVm
aW5lIFN0eWxlR3JpZERhdGFfaAogCi0jaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiVHJh
Y2tTaXppbmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCwgd2Ugb25seSBz
dXBwb3J0IGEgc3Vic2V0IG9mIHRoZSBncmFtbWFyIHdoaWNoIGNvcnJlc3BvbmQgdG86CiAgICAg
Ly8gJ2F1dG8nIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCAnbm9uZScKLSAgICBWZWN0b3I8
TGVuZ3RoPiBtX2dyaWRDb2x1bW5zOwotICAgIFZlY3RvcjxMZW5ndGg+IG1fZ3JpZFJvd3M7Cisg
ICAgVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+IG1fZ3JpZENvbHVtbnM7CisgICAgVmVjdG9y
PFRyYWNrU2l6aW5nRnVuY3Rpb24+IG1fZ3JpZFJvd3M7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVH
cmlkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Ry
YWNrU2l6aW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UcmFj
a1NpemluZ0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ2MGQxODZkZTUxZmMxM2QyZjE3ZjhiNGJm
ZGVjNmZmODM0MjkzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UcmFja1NpemluZ0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHJh
Y2tTaXppbmdGdW5jdGlvbl9oCisjZGVmaW5lIFRyYWNrU2l6aW5nRnVuY3Rpb25faAorCisjaW5j
bHVkZSAiTGVuZ3RoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBUcmFja1Npemlu
Z0Z1bmN0aW9uVHlwZSB7CisgICAgTGVuZ3RoVHJhY2tTaXppbmcKK307CisKK2NsYXNzIFRyYWNr
U2l6aW5nRnVuY3Rpb24geworcHVibGljOgorICAgIFRyYWNrU2l6aW5nRnVuY3Rpb24oKQorICAg
ICAgICA6IG1fdHlwZShMZW5ndGhUcmFja1NpemluZykKKyAgICAgICAgLCBtX2xlbmd0aChVbmRl
ZmluZWQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IExlbmd0aCYgbGVuZ3RoKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTGVuZ3RoVHJhY2tTaXppbmcpOworICAg
ICAgICBBU1NFUlQoIW1fbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbV9s
ZW5ndGg7CisgICAgfQorCisgICAgdm9pZCBzZXRMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgp
CisgICAgeworICAgICAgICBtX3R5cGUgPSBMZW5ndGhUcmFja1NpemluZzsKKyAgICAgICAgbV9s
ZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgVHJhY2tTaXppbmdGdW5jdGlvblR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRyYWNrU2l6aW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFRyYWNrU2l6aW5nRnVuY3Rpb25UeXBlIG1fdHlwZTsKKyAg
ICBMZW5ndGggbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBUcmFja1NpemluZ0Z1bmN0aW9uX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176289</attachid>
            <date>2012-11-27 09:39:41 -0800</date>
            <delta_ts>2012-11-28 11:22:45 -0800</delta_ts>
            <desc>Proposed change 2: updated Qt / EFL to build properly.</desc>
            <filename>bug-103343-20121127093718.patch</filename>
            <type>text/plain</type>
            <size>22802</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZmQ1ZTdmZGYxNjMw
OTJjOGFjOTM1ZDE5ZGU5ZTgyZmNhOWY3Ny4uODM5YzM1NjcwOTFmNzliMzY5MDc1M2ZmODcxOTM2
NDI0NGIxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTI3ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBj
dXJyZW50IGNvZGUgdXNlcyBhIExlbmd0aCB0byByZXByZXNlbnQgdGhlIHRyYWNrIHNpemluZyBm
dW5jdGlvbi4gVGhpcyBpcworICAgICAgICBmaW5lIGFzIHdlIG9ubHkgcGFyc2UgPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gYnV0IGluIG9yZGVyIHRvIHN1cHBvcnQgbWlubWF4CisgICAgICAgIHNp
emluZywgd2UgaGF2ZSB0byBzdG9yZSAyIExlbmd0aHMuIFdlIGNvdWxkIGdvIHdpdGggYSBwYWly
IGJ1dCB0aGF0IHdvdWxkIG1ha2UKKyAgICAgICAgdGhlIGNvZGUgbm90IHZlcnkgcmVhZGFibGUg
c28gdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBUcmFja1NpemluZ0Z1bmN0aW9uLgorCisgICAgICAg
IFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIFRy
YWNrU2l6aW5nRnVuY3Rpb24uaCB0byBhbGwgb3VyIGJ1aWxkIHN5c3RlbXMuCisKKyAgICAgICAg
KiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdy
aWRUcmFja0xpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJh
Y2tzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oOgorICAgICAgICBVcGRhdGVkIHRoZSBh
Ym92ZSBjYWxsIHNpdGVzIHRvIHVzZSBUcmFja1NpemluZ0Z1bmN0aW9uLiBXaGlsZQorICAgICAg
ICB0b3VjaGluZyB0aGVtLCBjaGFuZ2VkIHRoZSBjb2RlIHRvIHVzZSBhbiBlbXB0eSBWZWN0b3Ig
dG8gcmVwcmVzZW50CisgICAgICAgICdub25lJyBpbnN0ZWFkIG9mIExlbmd0aChVbmRlZmluZWQp
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1RyYWNrU2l6aW5nRnVuY3Rpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1NpemluZ0Z1bmN0aW9uOjpUcmFja1NpemluZ0Z1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU2l6aW5nRnVuY3Rpb246Omxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NpemluZ0Z1bmN0aW9uOjpzZXRMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2tTaXppbmdGdW5jdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFja1NpemluZ0Z1bmN0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgTmV3IGNsYXNz
LCBpdCBub3cgb25seSB3cmFwcyBhIHNpbmdsZSBMZW5ndGguCisKIDIwMTItMTEtMjcgIFbDrWN0
b3IgTWFudWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBWZXJpZnkgaWYgR1N0cmVhbWVyIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5NjYxM2QyZmM1ZmViZTgzM2MzY2Rk
NDRmZWU1YzJmM2YxMzQ3N2JkLi4xMDkwMzIyNjYyMTI3MTRjY2FiYzFiODEzZGZkZjViZjA3MmUy
NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ1MDMsNiArNDUwMyw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVmFyaWFibGVEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVZpc3VhbERhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UcmFja1Npemlu
Z0Z1bmN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UYWJsZUxheW91dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IGRlOWUzZTdiMDAyMmNmZDdmYmFmMWZiMGFjNmRlNmZkMzAwYTE0OTYuLmNmMzgyZTI3ZTc5
YTI4MTQwODEwYTg5ZmZkNTZjN2I2OTg0ZTZlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjQ3NSw2ICsy
NDc1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3Jt
RGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVWYXJpYWJsZURhdGEuaCBcCiAgICAg
cmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUv
VHJhY2tTaXppbmdGdW5jdGlvbi5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGVEZWZzLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIFwKICAgICBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk1OWNl
NWQ3NjUwNzI4NmI5YzljNjAwYjYyMDhkZjczYzVjOGI1NTUuLjMyYzRkNDBiOWFlOTQ0Y2JlOGMz
MGI3YzBhMDcyYzc1Y2JiZTA4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYyOCw2ICs2MjgsNyBA
QAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlVmFyaWFibGVEYXRhLmgnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCcsCisgICAgICAgICAgICAn
cmVuZGVyaW5nL3N0eWxlL1RyYWNrU2l6aW5nRnVuY3Rpb25zLmgnLAogICAgICAgICAgICAgJ3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9T
aGFyZWRXb3JrZXJTdHJhdGVneS5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlclJ1bkxv
b3AuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDAyYjk1NzM5YjFmZjIyMzAzNzVjNjdiZjM3NmRjMWM3MDJiZjNiZjcuLjUyYzY2Y2UxNWM0
MDg2NDBkN2M0ZGJmMzM4MzI5OWVjOTAxNmMyNjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00Njg0Nyw2ICs0Njg0NywxMCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XHN0eWxlXFRyYWNrU2l6aW5nRnVuY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTVkdSZW5kZXJTdHls
ZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2I2M2IzZDkyOGJj
YzcxZGU3Mzc3ZTIxZjA2ZGE2Zjc4N2I3NzUzNC4uODkwZDVhYTgyYWJlZjA2MTI3ZTYxZTJhM2Qy
OThjMDA3ZWM4YzNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzgyMCw2ICszODIwLDcgQEAKIAkJQTEyMEFDQTQxM0Y5OThD
QTAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTIwQUNBMTEzRjk5ODQ2MDBGRTRBQzcgLyogTGF5b3V0
UmVwYWludGVyLmNwcCAqLzsgfTsKIAkJQTEyNTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91
dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMjcwNUMzMTY1NkJE
NjUwMEMyRTI3QyAvKiBHcmlkUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMjcwNUMyMTY1NkJENjUwMEMyRTI3QyAvKiBHcmlkUG9zaXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
MTJBMTA1MDE2NjQ0NEZEMDA4RkEzMTEgLyogVHJhY2tTaXppbmdGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyQTEwNEUxNjY0NDREQzAw
OEZBMzExIC8qIFRyYWNrU2l6aW5nRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTM2QTAwQzExMzREQkQyMDBDQzhENTAgLyogWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNkEwMEExMTM0REJEMjAwQ0M4RDUwIC8qIFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcCAqLzsgfTsKIAkJQTEzNkEwMEQx
MTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTM2QTAwQjEx
MzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCAq
LzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEy
MDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKQEAgLTEx
MTMwLDYgKzExMTMxLDcgQEAKIAkJQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExheW91dFJl
cGFpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRSZXBhaW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyMEFDQTExM0Y5OTg0NjAwRkU0
QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMYXlvdXRSZXBhaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTI3MDVDMjE2NTZCRDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdyaWRQb3NpdGlvbi5oOyBwYXRoID0gc3R5bGUvR3JpZFBv
c2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkExMDRFMTY2NDQ0REMw
MDhGQTMxMSAvKiBUcmFja1NpemluZ0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFRyYWNrU2l6aW5nRnVuY3Rpb24uaDsgcGF0aCA9IHN0eWxlL1RyYWNrU2l6aW5n
RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEzNkEwMEExMTM0REJE
MjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEzNkEwMEIx
MTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzI4LDYgKzIwNzMwLDcgQEAKIAkJCQlCQzIyNzQ3NTBFODM2
NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlCQzIyNzQ3NjBFODM2NkUy
MDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCAqLywKIAkJCQlCQzIyNzQ3NzBFODM2
NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmggKi8sCisJCQkJQTEyQTEwNEUxNjY0
NDREQzAwOEZBMzExIC8qIFRyYWNrU2l6aW5nRnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gc3R5bGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU1ODksNiArMjU1OTIs
NyBAQAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMkExMDUwMTY2NDQ0RkQwMDhGQTMxMSAvKiBUcmFj
a1NpemluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjEyN2FhOTZhNWZlYzY5MjJmMjU1ZmE0ZTNmOTZjNjNk
OGExY2UyNS4uODA0OTcwMjMwMTg5OTQ4ZTFjMGZiOGUxNzgxZGU5YWRhZDlmYTA2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTk4NCwyNyArOTg0LDI0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyT2JqCiB9CiAjZW5kaWYK
IAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChj
b25zdCBMZW5ndGgmIHRyYWNrTGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IFRy
YWNrU2l6aW5nRnVuY3Rpb24mIHRyYWNrRnVuY3Rpb24sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkKIHsKLSAgICBpZiAodHJhY2tMZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh0cmFja0xlbmd0aCk7Ci0gICAgaWYgKHRyYWNrTGVu
Z3RoLmlzQXV0bygpKQorICAgIGlmICh0cmFja0Z1bmN0aW9uLmxlbmd0aCgpLmlzUGVyY2VudCgp
KQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodHJhY2tGdW5jdGlv
bi5sZW5ndGgoKSk7CisgICAgaWYgKHRyYWNrRnVuY3Rpb24ubGVuZ3RoKCkuaXNBdXRvKCkpCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVBdXRvKTsKLSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0cmFja0xlbmd0aC52
YWx1ZSgpLCBzdHlsZSk7CisgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodHJhY2tG
dW5jdGlvbi5sZW5ndGgoKS52YWx1ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoY29uc3QgVmVjdG9yPExlbmd0aD4mIHRy
YWNrTGVuZ3RocywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8VHJhY2tTaXppbmdG
dW5jdGlvbj4mIHRyYWNrRnVuY3Rpb25zLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0g
ICAgLy8gV2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgYW4gZWxlbWVudCEKLSAgICBBU1NFUlQodHJh
Y2tMZW5ndGhzLnNpemUoKSk7Ci0KICAgICAvLyBIYW5kbGUgdGhlICdub25lJyBjYXNlIGhlcmUu
Ci0gICAgaWYgKHRyYWNrTGVuZ3Rocy5zaXplKCkgPT0gMSAmJiB0cmFja0xlbmd0aHNbMF0uaXNV
bmRlZmluZWQoKSkKKyAgICBpZiAoIXRyYWNrRnVuY3Rpb25zLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrTGVuZ3Rocy5z
aXplKCk7ICsraSkKLSAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0
aCh0cmFja0xlbmd0aHNbaV0sIHN0eWxlKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
cmFja0Z1bmN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9y
R3JpZFRyYWNrQnJlYWR0aCh0cmFja0Z1bmN0aW9uc1tpXSwgc3R5bGUpKTsKICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCBjYmY2YzhhNzUxYWRkYmQ0NmNjMTBiMmJiMGU4ZmVmYzcyNGU5MmQ3Li44ZjY1MDViZGY3YTFl
MTIzZWVlZTc4YWZhM2YzMTY3OWE4NjdlNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC0yNjU5LDcgKzI2NTksNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pv
b21SdWxlcygpCiAgICAgcmV0dXJuIG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVu
dCgpOwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIExlbmd0aCYg
bGVuZ3RoKQorc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBUcmFja1Npemlu
Z0Z1bmN0aW9uJiBmdW5jdGlvbikKIHsKICAgICBMZW5ndGggd29ya2luZ0xlbmd0aCA9IHByaW1p
dGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbiB8IEF1dG9Db252ZXJz
aW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2Vs
ZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKHdvcmtpbmdMZW5ndGgu
aXNVbmRlZmluZWQoKSkKQEAgLTI2NjgsMjAgKzI2NjgsMTYgQEAgc3RhdGljIGJvb2wgY3JlYXRl
R3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxl
UmVzb2wKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCiAgICAgICAgIHdvcmtp
bmdMZW5ndGguc2V0UXVpcmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKIAotICAg
IGxlbmd0aCA9IHdvcmtpbmdMZW5ndGg7CisgICAgZnVuY3Rpb24uc2V0TGVuZ3RoKHdvcmtpbmdM
ZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJh
Y2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMsIFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yKQorc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1
ZSogdmFsdWUsIFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPiYgZnVuY3Rpb25zLCBTdHlsZVJl
c29sdmVyKiBzZWxlY3RvcikKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0g
ICAgICAgICAgICBsZW5ndGhzLmFwcGVuZChMZW5ndGgoVW5kZWZpbmVkKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAgICAg
fQogCiAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CkBAIC0yNjkwLDExICsyNjg2LDEx
IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0
b3I8TGVuZ3RoPiYgbGVuZ3RocywgU3R5bGVSCiAgICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNr
QnJlYWR0aChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSksIHNlbGVj
dG9yLCBsZW5ndGgpKQorICAgICAgICAgICAgVHJhY2tTaXppbmdGdW5jdGlvbiBmdW5jdGlvbjsK
KyAgICAgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSksIHNlbGVjdG9yLCBmdW5jdGlvbikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBsZW5ndGhzLmFwcGVuZChsZW5n
dGgpOworICAgICAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzU0NCwxNyArMzU0MCwxNyBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUq
IHZhbHVlKQogICAgIH0KICNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29s
dW1uczogewotICAgICAgICBWZWN0b3I8TGVuZ3RoPiBsZW5ndGhzOwotICAgICAgICBpZiAoIWNy
ZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIGxlbmd0aHMsIHRoaXMpKQorICAgICAgICBWZWN0b3I8
VHJhY2tTaXppbmdGdW5jdGlvbj4gZnVuY3Rpb25zOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRU
cmFja0xpc3QodmFsdWUsIGZ1bmN0aW9ucywgdGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fc3R5bGUtPnNldEdyaWRDb2x1bW5zKGxlbmd0aHMpOworICAgICAgICBtX3N0eWxl
LT5zZXRHcmlkQ29sdW1ucyhmdW5jdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogewotICAgICAgICBWZWN0b3I8TGVuZ3Ro
PiBsZW5ndGhzOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIGxlbmd0
aHMsIHRoaXMpKQorICAgICAgICBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4gZnVuY3Rpb25z
OworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIGZ1bmN0aW9ucywgdGhp
cykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldEdyaWRSb3dzKGxl
bmd0aHMpOworICAgICAgICBtX3N0eWxlLT5zZXRHcmlkUm93cyhmdW5jdGlvbnMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
aW5kZXggZTUyMDU4MWI5YTZkODliMTFlYmUwM2QyMWQxMTQ4ZWFmMTZhMDllMS4uNmU4ZDBlZTFj
MmIxYzlmNjg1ZDNjMjViZGE5OTM1YTE3ZjFiMGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcApAQCAtMTE2LDEwICsxMTYsMTAgQEAgdm9pZCBSZW5kZXJHcmlkOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qg
dGFrZSBvdXIgb3duIGxvZ2ljYWwgd2lkdGggaW50byBhY2NvdW50LgogCi0gICAgY29uc3QgVmVj
dG9yPExlbmd0aD4mIHRyYWNrU3R5bGVzID0gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKTsKKyAgICBj
b25zdCBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4mIHRyYWNrU3R5bGVzID0gc3R5bGUoKS0+
Z3JpZENvbHVtbnMoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGVuZ3RoIHRyYWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNb
aV07CisgICAgICAgIExlbmd0aCB0cmFja0xlbmd0aCA9IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgp
OwogICAgICAgICBpZiAoIXRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkgewogICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTM4LDExICsxMzgsMTEg
QEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKIHZv
aWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPExlbmd0aD4mIHRyYWNrU3R5bGVzID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zKSA/IHN0eWxlKCktPmdyaWRDb2x1bW5zKCkgOiBzdHlsZSgpLT5ncmlkUm93cygpOworICAg
IGNvbnN0IFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPiYgdHJhY2tTdHlsZXMgPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxlKCktPmdy
aWRSb3dzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja1N0eWxlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBHcmlkVHJhY2sgdHJhY2s7Ci0gICAgICAgIGlmICh0cmFja1N0eWxl
c1tpXS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoID0gdHJhY2tT
dHlsZXNbaV0uZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICBpZiAodHJhY2tTdHlsZXNbaV0ubGVu
Z3RoKCkuaXNGaXhlZCgpKQorICAgICAgICAgICAgdHJhY2subV91c2VkQnJlYWR0aCA9IHRyYWNr
U3R5bGVzW2ldLmxlbmd0aCgpLmdldEZsb2F0VmFsdWUoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzMTk5NmZhMDVhYmI1Y2QwNTg5NDExYTU2ZmFjZjNjNzA3
M2M1ZWMwLi4yZWQ4NTQwYTc4OGU3NTU4YmVmNDY4M2QyOGRhZmRhYjYwNjNjNzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODE1LDggKzgx
NSw4IEBAIHB1YmxpYzoKICAgICBFRmxleFdyYXAgZmxleFdyYXAoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFRmxleFdyYXA+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94
LT5tX2ZsZXhXcmFwKTsgfQogICAgIEVKdXN0aWZ5Q29udGVudCBqdXN0aWZ5Q29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVKdXN0aWZ5Q29udGVudD4ocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fanVzdGlmeUNvbnRlbnQpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYg
Z3JpZENvbHVtbnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2dyaWRDb2x1bW5zOyB9Ci0gICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIGdyaWRSb3dzKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93czsg
fQorICAgIGNvbnN0IFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPiYgZ3JpZENvbHVtbnMoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5z
OyB9CisgICAgY29uc3QgVmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+JiBncmlkUm93cygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0K
IAogICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW4oKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uOyB9CiAgICAg
Y29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3c7IH0KQEAgLTEyOTUsOCArMTI5NSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGly
ZWN0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGli
bGVCb3gsIG1fZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsgfQogICAgIHZvaWQgc2V0RmxleFdy
YXAoRUZsZXhXcmFwIHcpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9mbGV4aWJsZUJveCwgbV9mbGV4V3JhcCwgdyk7IH0KICAgICB2b2lkIHNldEp1c3RpZnlDb250
ZW50KEVKdXN0aWZ5Q29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
anVzdGlmeUNvbnRlbnQsIHApOyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0
b3I8TGVuZ3RoPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlk
Um93cyhjb25zdCBWZWN0b3I8TGVuZ3RoPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CisgICAg
dm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4mIGxl
bmd0aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBt
X2dyaWRDb2x1bW5zLCBsZW5ndGhzKTsgfQorICAgIHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVj
dG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+JiBsZW5ndGhzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KICAgICB2
b2lkIHNldEdyaWRJdGVtQ29sdW1uKGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uUG9zaXRpb24p
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkSXRlbSwgbV9n
cmlkQ29sdW1uLCBjb2x1bW5Qb3NpdGlvbik7IH0KICAgICB2b2lkIHNldEdyaWRJdGVtUm93KGNv
bnN0IEdyaWRQb3NpdGlvbiYgcm93UG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9ncmlkSXRlbSwgbV9ncmlkUm93LCByb3dQb3NpdGlvbik7IH0KIApA
QCAtMTcwMiwxNiArMTcwMiw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJpbnRDb2xvckFkanVz
dCBpbml0aWFsUHJpbnRDb2xvckFkanVzdCgpIHsgcmV0dXJuIFByaW50Q29sb3JBZGp1c3RFY29u
b215OyB9CiAKICAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBpcyAnbm9uZScgZm9yIGdyaWQgdHJh
Y2tzLgotICAgIHN0YXRpYyBWZWN0b3I8TGVuZ3RoPiBpbml0aWFsR3JpZFRyYWNrVmFsdWUoKQot
ICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8TGVuZ3RoPiwgZGVmYXVs
dExlbmd0aCwgKCkpOwotICAgICAgICAvLyBXZSBuZWVkIHRvIG1hbnVhbGx5IGFkZCB0aGUgTGVu
Z3RoIGhlcmUgYXMgdGhlIExlbmd0aCgwKSBpcyAnYXV0bycuCi0gICAgICAgIGlmICghZGVmYXVs
dExlbmd0aC5zaXplKCkpCi0gICAgICAgICAgICBkZWZhdWx0TGVuZ3RoLmFwcGVuZChMZW5ndGgo
VW5kZWZpbmVkKSk7Ci0gICAgICAgIHJldHVybiBkZWZhdWx0TGVuZ3RoOwotICAgIH0KLSAgICBz
dGF0aWMgVmVjdG9yPExlbmd0aD4gaW5pdGlhbEdyaWRDb2x1bW5zKCkgeyByZXR1cm4gaW5pdGlh
bEdyaWRUcmFja1ZhbHVlKCk7IH0KLSAgICBzdGF0aWMgVmVjdG9yPExlbmd0aD4gaW5pdGlhbEdy
aWRSb3dzKCkgeyByZXR1cm4gaW5pdGlhbEdyaWRUcmFja1ZhbHVlKCk7IH0KKyAgICBzdGF0aWMg
VmVjdG9yPFRyYWNrU2l6aW5nRnVuY3Rpb24+IGluaXRpYWxHcmlkQ29sdW1ucygpIHsgcmV0dXJu
IFZlY3RvcjxUcmFja1NpemluZ0Z1bmN0aW9uPigpOyB9CisgICAgc3RhdGljIFZlY3RvcjxUcmFj
a1NpemluZ0Z1bmN0aW9uPiBpbml0aWFsR3JpZFJvd3MoKSB7IHJldHVybiBWZWN0b3I8VHJhY2tT
aXppbmdGdW5jdGlvbj4oKTsgfQogCiAgICAgLy8gJ2F1dG8nIGlzIHRoZSBkZWZhdWx0LgogICAg
IHN0YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29sdW1uKCkgeyByZXR1cm4gR3Jp
ZFBvc2l0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkRGF0YS5oCmluZGV4IGRkY2VhZGJiYzhlNTQ3ZTVhZjFiYmU0YzkzYTcyYmY1YWViNWM0ODIu
LjNlODFkNTZjZDZlNzg4OWI2ODFjM2NlYTBkNzgwN2JhYmRlYTBmNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBTdHlsZUdyaWREYXRhX2gKICNkZWZpbmUgU3R5bGVHcmlkRGF0YV9oCiAKLSNp
bmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJUcmFja1NpemluZ0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogCiAgICAgLy8g
RklYTUU6IEZvciB0aGUgbW9tZW50LCB3ZSBvbmx5IHN1cHBvcnQgYSBzdWJzZXQgb2YgdGhlIGdy
YW1tYXIgd2hpY2ggY29ycmVzcG9uZCB0bzoKICAgICAvLyAnYXV0bycgfCA8bGVuZ3RoPiB8IDxw
ZXJjZW50YWdlPiB8ICdub25lJwotICAgIFZlY3RvcjxMZW5ndGg+IG1fZ3JpZENvbHVtbnM7Ci0g
ICAgVmVjdG9yPExlbmd0aD4gbV9ncmlkUm93czsKKyAgICBWZWN0b3I8VHJhY2tTaXppbmdGdW5j
dGlvbj4gbV9ncmlkQ29sdW1uczsKKyAgICBWZWN0b3I8VHJhY2tTaXppbmdGdW5jdGlvbj4gbV9n
cmlkUm93czsKIAogcHJpdmF0ZToKICAgICBTdHlsZUdyaWREYXRhKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXppbmdGdW5jdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RyYWNrU2l6aW5nRnVuY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZDYwZDE4NmRlNTFmYzEzZDJmMTdmOGI0YmZkZWM2ZmY4MzQyOTMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RyYWNrU2l6aW5nRnVuY3Rp
b24uaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUcmFja1NpemluZ0Z1bmN0aW9uX2gKKyNkZWZp
bmUgVHJhY2tTaXppbmdGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJMZW5ndGguaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitlbnVtIFRyYWNrU2l6aW5nRnVuY3Rpb25UeXBlIHsKKyAgICBMZW5n
dGhUcmFja1NpemluZworfTsKKworY2xhc3MgVHJhY2tTaXppbmdGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgVHJhY2tTaXppbmdGdW5jdGlvbigpCisgICAgICAgIDogbV90eXBlKExlbmd0aFRyYWNr
U2l6aW5nKQorICAgICAgICAsIG1fbGVuZ3RoKFVuZGVmaW5lZCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgTGVuZ3RoJiBsZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBMZW5ndGhUcmFja1NpemluZyk7CisgICAgICAgIEFTU0VSVCghbV9sZW5ndGguaXNV
bmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKKyAgICB2b2lk
IHNldExlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9
IExlbmd0aFRyYWNrU2l6aW5nOworICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKKyAgICB9CisK
KyAgICBUcmFja1NpemluZ0Z1bmN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhY2tTaXppbmdGdW5jdGlvbiYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAm
JiBtX2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVHJh
Y2tTaXppbmdGdW5jdGlvblR5cGUgbV90eXBlOworICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYWNrU2l6aW5nRnVuY3Rpb25f
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176530</attachid>
            <date>2012-11-28 11:22:48 -0800</date>
            <delta_ts>2012-11-28 16:39:50 -0800</delta_ts>
            <desc>Change 2: Renamed the new structure to TrackSize.</desc>
            <filename>bug-103343-20121128112023.patch</filename>
            <type>text/plain</type>
            <size>22244</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM4MDNlNDVkZTJkZWJj
OWRmNjY3ZWU5MTkyZDYxMDlkYWJlMzdiZS4uMDc1OWViMjExYTYxNjU2NzEzZjU2Y2JjZDMzYTMx
NTYwNTViNWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTI4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBj
dXJyZW50IGNvZGUgdXNlcyBhIExlbmd0aCB0byByZXByZXNlbnQgdGhlIHRyYWNrIHNpemluZyBm
dW5jdGlvbi4gVGhpcyBpcworICAgICAgICBmaW5lIGFzIHdlIG9ubHkgcGFyc2UgPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gYnV0IGluIG9yZGVyIHRvIHN1cHBvcnQgbWlubWF4CisgICAgICAgIHNp
emluZywgd2UgaGF2ZSB0byBzdG9yZSAyIExlbmd0aHMuIFdlIGNvdWxkIGdvIHdpdGggYSBwYWly
IGJ1dCB0aGF0IHdvdWxkIG1ha2UKKyAgICAgICAgdGhlIGNvZGUgbm90IHZlcnkgcmVhZGFibGUg
c28gdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBUcmFja1NpemUuCisKKyAgICAgICAgUmVmYWN0b3Jp
bmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgVHJhY2tTaXplLmgg
dG8gYWxsIG91ciBidWlsZCBzeXN0ZW1zLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJhY2tMaXN0KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlk
VHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZERhdGEuaDoKKyAgICAgICAgVXBkYXRlZCB0aGUgYWJvdmUgY2FsbCBzaXRlcyB0byB1
c2UgVHJhY2tTaXplLiBXaGlsZQorICAgICAgICB0b3VjaGluZyB0aGVtLCBjaGFuZ2VkIHRoZSBj
b2RlIHRvIHVzZSBhbiBlbXB0eSBWZWN0b3IgdG8gcmVwcmVzZW50CisgICAgICAgICdub25lJyBp
bnN0ZWFkIG9mIExlbmd0aChVbmRlZmluZWQpLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1RyYWNrU2l6ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU2l6ZTo6VHJhY2tT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU2l6ZTo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrU2l6ZTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU2l6
ZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NpemU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICBOZXcgY2xhc3MsIGl0IG5vdyBvbmx5IHdyYXBzIGEgc2luZ2xlIExlbmd0aC4KKwogMjAx
Mi0xMS0yOCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRd
W1dpbl0gRW5hYmxlIHVzYWdlIG9mIFFUV0VCS0lUX1BMVUdJTl9QQVRILgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggZGNjYmY3YmVkMmJjZWQxOTIwMjA3OGVhNDYxMjE0Nzk4MjRl
ZDdhYi4uODdkYjM3OTZkMWU5MjIzNzVmYjk0MzVjYWM5ZDU5NGI0Zjg4ZWMwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTA0LDYgKzQ1MDQsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZhcmlhYmxlRGF0
YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXplLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UYWJsZUxheW91dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVRhc2suY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGM1N2Q1OGIyMGNjNWY1ZTcyZWM4
OTUxYWI2MTYyYjMxNzBhZmZhNWUuLmViMzJmZGQ1MzRlMWVjMzA1MDlkMDhhZTlkZjIzOTg2ZTRm
ZDVlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjQ3Niw2ICsyNDc2LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oIFwKICAgICByZW5kZXJpbmcv
c3R5bGUvU3R5bGVWYXJpYWJsZURhdGEuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlz
dWFsRGF0YS5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXplLmggXAogICAgIHJlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlLmggXAogICAgIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMDZmOTEyMDIxZDRmYzNiZWNiODQ1YTNhMjI2MmZmMjUzZTEwYTNk
Mi4uZjg0NTA3MDVjYTM4YjUzNmZjZjE5ZWZlZmUwZjMxMTcxMGU4YmE0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNjI4LDYgKzYyOCw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0
eWxlVHJhbnNmb3JtRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVW
YXJpYWJsZURhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFs
RGF0YS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXplcy5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgnLAogICAgICAgICAg
ICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCAxMWQzYTIyMzMwZmI4MWE3YzBhYmMyYWE2MzEwMWEwMWZmOWFhYjI0
Li4yMTI5YTQ0NWQyMWE5MmE3YjI1NDljZWFmZmE3OTUyMmMzZjIwNTM2IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDY4NTEsNiArNDY4NTEs
MTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xzdHlsZVxUcmFja1NpemUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTVkdSZW5kZXJT
dHlsZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjJkNTc1NmNj
NWE2MDA1ZDRkZjljZWU3NTFmYTlkODJkNmFmZmVjYy4uMWQ0YWZjMmVlOTdlNmM2NzliYTg2YzYx
ZTdjY2FlNjZjNzI1ZTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzgyMSw2ICszODIxLDcgQEAKIAkJQTEyMEFDQTQxM0Y5
OThDQTAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTIwQUNBMTEzRjk5ODQ2MDBGRTRBQzcgLyogTGF5
b3V0UmVwYWludGVyLmNwcCAqLzsgfTsKIAkJQTEyNTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExh
eW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMjcwNUMzMTY1
NkJENjUwMEMyRTI3QyAvKiBHcmlkUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjcwNUMyMTY1NkJENjUwMEMyRTI3QyAvKiBHcmlkUG9z
aXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBMTJBMTA1MDE2NjQ0NEZEMDA4RkEzMTEgLyogVHJhY2tTaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJBMTA0RTE2NjQ0NERDMDA4RkEzMTEg
LyogVHJhY2tTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTEzNkEwMEMxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMzZBMDBBMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnRUaHJvdHRsZS5jcHAgKi87IH07CiAJCUExMzZBMDBEMTEzNERCRDIwMENDOEQ1MCAv
KiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNkEwMEIxMTM0REJEMjAwQ0M4RDUwIC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmggKi87IH07CiAJCUExN0M4MTIy
MEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CkBAIC0xMTEzNiw2ICsxMTEzNyw3IEBA
CiAJCUExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0UmVwYWludGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExMjBBQ0ExMTNGOTk4NDYwMEZFNEFDNyAvKiBMYXlvdXRSZXBh
aW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0UmVw
YWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyNzA1QzIxNjU2QkQ2
NTAwQzJFMjdDIC8qIEdyaWRQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBHcmlkUG9zaXRpb24uaDsgcGF0aCA9IHN0eWxlL0dyaWRQb3NpdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTJBMTA0RTE2NjQ0NERDMDA4RkEzMTEgLyogVHJhY2tT
aXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRyYWNrU2l6ZS5oOyBwYXRo
ID0gc3R5bGUvVHJhY2tTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMzZB
MDBBMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMzZBMDBCMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRU
aHJvdHRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc0Miw2ICsyMDc0NCw3IEBACiAJCQkJQkMy
Mjc0NzUwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmggKi8sCiAJCQkJQkMyMjc0
NzYwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5jcHAgKi8sCiAJCQkJQkMy
Mjc0NzcwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5oICovLAorCQkJCUEx
MkExMDRFMTY2NDQ0REMwMDhGQTMxMSAvKiBUcmFja1NpemUuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gc3R5bGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU2MDQsNiArMjU2MDcs
NyBAQAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMkExMDUwMTY2NDQ0RkQwMDhGQTMxMSAvKiBUcmFj
a1NpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0
NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlF
OTExRDAwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCBiMTI3YWE5NmE1ZmVjNjkyMmYyNTVmYTRlM2Y5NmM2M2Q4YTFjZTI1Li43
MGE3NTU1YzQwYWQ1ZTcwOWYzZjU4ZWQ4N2MzMDFhZmY3MjUyZjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtOTg0LDI3
ICs5ODQsMjQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJPYmoKIH0KICNlbmRpZgogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IExlbmd0
aCYgdHJhY2tMZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgVHJhY2tTaXplJiB0
cmFja0Z1bmN0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKHRyYWNr
TGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUodHJhY2tMZW5ndGgpOwotICAgIGlmICh0cmFja0xlbmd0aC5pc0F1dG8oKSkKKyAgICBp
ZiAodHJhY2tGdW5jdGlvbi5sZW5ndGgoKS5pc1BlcmNlbnQoKSkKKyAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHRyYWNrRnVuY3Rpb24ubGVuZ3RoKCkpOworICAgIGlm
ICh0cmFja0Z1bmN0aW9uLmxlbmd0aCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodHJhY2tMZW5ndGgudmFsdWUoKSwgc3R5bGUpOworICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRyYWNrRnVuY3Rpb24ubGVuZ3RoKCkudmFs
dWUoKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JH
cmlkVHJhY2tMaXN0KGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja0xlbmd0aHMsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdy
aWRUcmFja0xpc3QoY29uc3QgVmVjdG9yPFRyYWNrU2l6ZT4mIHRyYWNrRnVuY3Rpb25zLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgLy8gV2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3Qg
YW4gZWxlbWVudCEKLSAgICBBU1NFUlQodHJhY2tMZW5ndGhzLnNpemUoKSk7Ci0KICAgICAvLyBI
YW5kbGUgdGhlICdub25lJyBjYXNlIGhlcmUuCi0gICAgaWYgKHRyYWNrTGVuZ3Rocy5zaXplKCkg
PT0gMSAmJiB0cmFja0xlbmd0aHNbMF0uaXNVbmRlZmluZWQoKSkKKyAgICBpZiAoIXRyYWNrRnVu
Y3Rpb25zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYWNrTGVuZ3Rocy5zaXplKCk7ICsraSkKLSAgICAgICAgbGlzdC0+YXBw
ZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja0xlbmd0aHNbaV0sIHN0eWxlKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja0Z1bmN0aW9ucy5zaXplKCk7ICsraSkKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja0Z1bmN0aW9u
c1tpXSwgc3R5bGUpKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA0ZjVlMTA5YjdlMDJiMGVhNjhhN2YzYjFhNDUy
NjA1ZjAxMzY5ODZjLi44NmIwNTRjMTUzODcwZTg2NTBjMWI3MjA2NWRiOTEwODc2NmNmOWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yNjU5LDcgKzI2NTksNyBAQCBi
b29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlcygpCiAgICAgcmV0dXJuIG1fZWxlbWVu
dCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVH
cmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIExlbmd0aCYgbGVuZ3RoKQorc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBUcmFja1NpemUmIGZ1bmN0aW9uKQogewogICAgIExlbmd0aCB3b3Jr
aW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRhZ2VDb252ZXJz
aW9uIHwgQXV0b0NvbnZlcnNpb24+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVs
ZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICBp
ZiAod29ya2luZ0xlbmd0aC5pc1VuZGVmaW5lZCgpKQpAQCAtMjY2OCwyMCArMjY2OCwxNiBAQCBz
dGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSwgU3R5bGVSZXNvbAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgo
KSkKICAgICAgICAgd29ya2luZ0xlbmd0aC5zZXRRdWlyayhwcmltaXRpdmVWYWx1ZS0+aXNRdWly
a1ZhbHVlKCkpOwogCi0gICAgbGVuZ3RoID0gd29ya2luZ0xlbmd0aDsKKyAgICBmdW5jdGlvbi5z
ZXRMZW5ndGgod29ya2luZ0xlbmd0aCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBi
b29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8TGVuZ3RoPiYg
bGVuZ3RocywgU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCitzdGF0aWMgYm9vbCBjcmVhdGVHcmlk
VHJhY2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPFRyYWNrU2l6ZT4mIGZ1bmN0aW9ucywg
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiB7CiAgICAgLy8gSGFuZGxlICdub25lJy4KICAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9u
ZSkgewotICAgICAgICAgICAgbGVuZ3Rocy5hcHBlbmQoTGVuZ3RoKFVuZGVmaW5lZCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25l
OwogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewpAQCAtMjY5MCwxMSAr
MjY4NiwxMSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlKiB2YWx1
ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMsIFN0eWxlUgogICAgICAgICAgICAgaWYgKCFjdXJy
VmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIWNyZWF0ZUdy
aWRUcmFja0JyZWFkdGgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFsdWUp
LCBzZWxlY3RvciwgbGVuZ3RoKSkKKyAgICAgICAgICAgIFRyYWNrU2l6ZSBmdW5jdGlvbjsKKyAg
ICAgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSksIHNlbGVjdG9yLCBmdW5jdGlvbikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBsZW5ndGhzLmFwcGVuZChsZW5ndGgp
OworICAgICAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbik7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzU0NCwxNyArMzU0MCwxNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgIH0KICNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1u
czogewotICAgICAgICBWZWN0b3I8TGVuZ3RoPiBsZW5ndGhzOwotICAgICAgICBpZiAoIWNyZWF0
ZUdyaWRUcmFja0xpc3QodmFsdWUsIGxlbmd0aHMsIHRoaXMpKQorICAgICAgICBWZWN0b3I8VHJh
Y2tTaXplPiBmdW5jdGlvbnM7CisgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1
ZSwgZnVuY3Rpb25zLCB0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHls
ZS0+c2V0R3JpZENvbHVtbnMobGVuZ3Rocyk7CisgICAgICAgIG1fc3R5bGUtPnNldEdyaWRDb2x1
bW5zKGZ1bmN0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEdyaWRSb3dzOiB7Ci0gICAgICAgIFZlY3RvcjxMZW5ndGg+IGxlbmd0aHM7Ci0g
ICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgbGVuZ3RocywgdGhpcykpCisg
ICAgICAgIFZlY3RvcjxUcmFja1NpemU+IGZ1bmN0aW9uczsKKyAgICAgICAgaWYgKCFjcmVhdGVH
cmlkVHJhY2tMaXN0KHZhbHVlLCBmdW5jdGlvbnMsIHRoaXMpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX3N0eWxlLT5zZXRHcmlkUm93cyhsZW5ndGhzKTsKKyAgICAgICAgbV9zdHls
ZS0+c2V0R3JpZFJvd3MoZnVuY3Rpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDQ5MmE4M2Y4OGQ0ZDhhODc5
ZTQzN2ZhODJjYWFmMDg5MzEyMDgxZDAuLjIwYjI3NDQ4NWNmMDEyNTJkOGE1ZWIzZTZmMjQ5ZGY0
MWY1ZjAyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEx
NiwxMCArMTE2LDEwIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKQogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IHRha2Ugb3VyIG93biBsb2dpY2FsIHdp
ZHRoIGludG8gYWNjb3VudC4KIAotICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja1N0eWxl
cyA9IHN0eWxlKCktPmdyaWRDb2x1bW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFRyYWNrU2l6ZT4m
IHRyYWNrU3R5bGVzID0gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGVuZ3RoIHRy
YWNrTGVuZ3RoID0gdHJhY2tTdHlsZXNbaV07CisgICAgICAgIExlbmd0aCB0cmFja0xlbmd0aCA9
IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXRyYWNrTGVuZ3RoLmlzRml4
ZWQoKSkgewogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTM4LDExICsxMzgsMTEgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCiAKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0
aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlk
VHJhY2s+JiB0cmFja3MpCiB7Ci0gICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHRyYWNrU3R5bGVz
ID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN0eWxlKCktPmdyaWRDb2x1bW5zKCkgOiBz
dHlsZSgpLT5ncmlkUm93cygpOworICAgIGNvbnN0IFZlY3RvcjxUcmFja1NpemU+JiB0cmFja1N0
eWxlcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygp
IDogc3R5bGUoKS0+Z3JpZFJvd3MoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNr
U3R5bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdyaWRUcmFjayB0cmFjazsKLSAgICAgICAg
aWYgKHRyYWNrU3R5bGVzW2ldLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJy
ZWFkdGggPSB0cmFja1N0eWxlc1tpXS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGlmICh0cmFj
a1N0eWxlc1tpXS5sZW5ndGgoKS5pc0ZpeGVkKCkpCisgICAgICAgICAgICB0cmFjay5tX3VzZWRC
cmVhZHRoID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkuZ2V0RmxvYXRWYWx1ZSgpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDczOTQ2ODZiOWVmMDQzZWJjYjhl
MjVjYzFmNzkzNjJlMmQzNzk5ZWIuLjhmYWIzODlkMzRmMzU0NTI3N2FkODZmNTkzODFjYmQwNGIz
ZDg2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CkBAIC03NTksOCArNzU5LDggQEAgcHVibGljOgogICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmxleGlibGVCb3gtPm1fZmxleFdyYXApOyB9CiAgICAgRUp1c3RpZnlDb250ZW50IGp1c3Rp
ZnlDb250ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUp1c3RpZnlDb250ZW50Pihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudCk7IH0KIAotICAgIGNvbnN0IFZl
Y3RvcjxMZW5ndGg+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8TGVuZ3Ro
PiYgZ3JpZFJvd3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2dyaWRSb3dzOyB9CisgICAgY29uc3QgVmVjdG9yPFRyYWNrU2l6ZT4mIGdyaWRDb2x1bW5z
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29s
dW1uczsgfQorICAgIGNvbnN0IFZlY3RvcjxUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KIAogICAg
IGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW4oKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1uOyB9CiAgICAgY29uc3Qg
R3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3c7IH0KQEAgLTEyMzksOCArMTIzOSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEZsZXhEaXJlY3Rpb24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9u
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gs
IG1fZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsgfQogICAgIHZvaWQgc2V0RmxleFdyYXAoRUZs
ZXhXcmFwIHcpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4
aWJsZUJveCwgbV9mbGV4V3JhcCwgdyk7IH0KICAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50KEVK
dXN0aWZ5Q29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlm
eUNvbnRlbnQsIHApOyB9Ci0gICAgdm9pZCBzZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8TGVu
Z3RoPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkUm93cyhj
b25zdCBWZWN0b3I8TGVuZ3RoPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBz
ZXRHcmlkQ29sdW1ucyhjb25zdCBWZWN0b3I8VHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxl
bmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8VHJhY2tTaXplPiYg
bGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQs
IG1fZ3JpZFJvd3MsIGxlbmd0aHMpOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVtbihjb25z
dCBHcmlkUG9zaXRpb24mIGNvbHVtblBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtbiwgY29sdW1uUG9zaXRpb24p
OyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbVJvdyhjb25zdCBHcmlkUG9zaXRpb24mIHJvd1Bvc2l0
aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0s
IG1fZ3JpZFJvdywgcm93UG9zaXRpb24pOyB9CiAKQEAgLTE2MjgsMTYgKzE2MjgsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFByaW50Q29sb3JBZGp1c3QgaW5pdGlhbFByaW50Q29sb3JBZGp1c3Qo
KSB7IHJldHVybiBQcmludENvbG9yQWRqdXN0RWNvbm9teTsgfQogCiAgICAgLy8gVGhlIGluaXRp
YWwgdmFsdWUgaXMgJ25vbmUnIGZvciBncmlkIHRyYWNrcy4KLSAgICBzdGF0aWMgVmVjdG9yPExl
bmd0aD4gaW5pdGlhbEdyaWRUcmFja1ZhbHVlKCkKLSAgICB7Ci0gICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoVmVjdG9yPExlbmd0aD4sIGRlZmF1bHRMZW5ndGgsICgpKTsKLSAgICAgICAgLy8g
V2UgbmVlZCB0byBtYW51YWxseSBhZGQgdGhlIExlbmd0aCBoZXJlIGFzIHRoZSBMZW5ndGgoMCkg
aXMgJ2F1dG8nLgotICAgICAgICBpZiAoIWRlZmF1bHRMZW5ndGguc2l6ZSgpKQotICAgICAgICAg
ICAgZGVmYXVsdExlbmd0aC5hcHBlbmQoTGVuZ3RoKFVuZGVmaW5lZCkpOwotICAgICAgICByZXR1
cm4gZGVmYXVsdExlbmd0aDsKLSAgICB9Ci0gICAgc3RhdGljIFZlY3RvcjxMZW5ndGg+IGluaXRp
YWxHcmlkQ29sdW1ucygpIHsgcmV0dXJuIGluaXRpYWxHcmlkVHJhY2tWYWx1ZSgpOyB9Ci0gICAg
c3RhdGljIFZlY3RvcjxMZW5ndGg+IGluaXRpYWxHcmlkUm93cygpIHsgcmV0dXJuIGluaXRpYWxH
cmlkVHJhY2tWYWx1ZSgpOyB9CisgICAgc3RhdGljIFZlY3RvcjxUcmFja1NpemU+IGluaXRpYWxH
cmlkQ29sdW1ucygpIHsgcmV0dXJuIFZlY3RvcjxUcmFja1NpemU+KCk7IH0KKyAgICBzdGF0aWMg
VmVjdG9yPFRyYWNrU2l6ZT4gaW5pdGlhbEdyaWRSb3dzKCkgeyByZXR1cm4gVmVjdG9yPFRyYWNr
U2l6ZT4oKTsgfQogCiAgICAgLy8gJ2F1dG8nIGlzIHRoZSBkZWZhdWx0LgogICAgIHN0YXRpYyBH
cmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29sdW1uKCkgeyByZXR1cm4gR3JpZFBvc2l0aW9u
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdy
aWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5o
CmluZGV4IGRkY2VhZGJiYzhlNTQ3ZTVhZjFiYmU0YzkzYTcyYmY1YWViNWM0ODIuLmVlMjRlMzI1
MzdiYjdlNTgwOGFiNjIxZmI3ZTM4YTRiOGNkZmQzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRl
ZiBTdHlsZUdyaWREYXRhX2gKICNkZWZpbmUgU3R5bGVHcmlkRGF0YV9oCiAKLSNpbmNsdWRlICJM
ZW5ndGguaCIKKyNpbmNsdWRlICJUcmFja1NpemUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogRm9yIHRoZSBtb21l
bnQsIHdlIG9ubHkgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUgZ3JhbW1hciB3aGljaCBjb3JyZXNw
b25kIHRvOgogICAgIC8vICdhdXRvJyB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgJ25vbmUn
Ci0gICAgVmVjdG9yPExlbmd0aD4gbV9ncmlkQ29sdW1uczsKLSAgICBWZWN0b3I8TGVuZ3RoPiBt
X2dyaWRSb3dzOworICAgIFZlY3RvcjxUcmFja1NpemU+IG1fZ3JpZENvbHVtbnM7CisgICAgVmVj
dG9yPFRyYWNrU2l6ZT4gbV9ncmlkUm93czsKIAogcHJpdmF0ZToKICAgICBTdHlsZUdyaWREYXRh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXpl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhY2tTaXplLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmRhYjk0Y2JkZjgyNmNmYjk5MzVmYjhiZDc2N2IwNTRhYjc1ODQ4NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UcmFja1NpemUuaApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBUcmFja1NpemVfaAorI2RlZmluZSBUcmFja1NpemVfaAorCisjaW5j
bHVkZSAiTGVuZ3RoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBUcmFja1NpemVU
eXBlIHsKKyAgICBMZW5ndGhUcmFja1NpemluZworfTsKKworY2xhc3MgVHJhY2tTaXplIHsKK3B1
YmxpYzoKKyAgICBUcmFja1NpemUoKQorICAgICAgICA6IG1fdHlwZShMZW5ndGhUcmFja1Npemlu
ZykKKyAgICAgICAgLCBtX2xlbmd0aChVbmRlZmluZWQpCisgICAgeworICAgIH0KKworICAgIGNv
bnN0IExlbmd0aCYgbGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gTGVuZ3RoVHJhY2tTaXppbmcpOworICAgICAgICBBU1NFUlQoIW1fbGVuZ3RoLmlzVW5kZWZp
bmVkKCkpOworICAgICAgICByZXR1cm4gbV9sZW5ndGg7CisgICAgfQorCisgICAgdm9pZCBzZXRM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBMZW5n
dGhUcmFja1NpemluZzsKKyAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAg
VHJhY2tTaXplVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVHJhY2tTaXplJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIG1fbGVuZ3RoID09IG90aGVyLm1fbGVu
Z3RoOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUcmFja1NpemVUeXBlIG1fdHlwZTsKKyAgICBM
ZW5ndGggbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBUcmFja1NpemVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176603</attachid>
            <date>2012-11-28 16:39:55 -0800</date>
            <delta_ts>2012-11-28 18:42:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103343-20121128163729.patch</filename>
            <type>text/plain</type>
            <size>21331</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RlNDQ5MTBmNzg1MjUz
YzgxNzMzMTExZmU3MjhlYTdkNTAwMDQxNC4uY2Y3ZWE1YmJkMDE0M2I5ZTJiOTQ2NDI3N2IzNzI1
MzRlY2JiYzNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTExLTI4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgY29kZSB1c2VzIGEgTGVuZ3RoIHRvIHJlcHJlc2VudCB0aGUgdHJhY2sgc2l6aW5nIGZ1bmN0
aW9uLiBUaGlzIGlzCisgICAgICAgIGZpbmUgYXMgd2Ugb25seSBwYXJzZSA8bGVuZ3RoPiB8IDxw
ZXJjZW50YWdlPiBidXQgaW4gb3JkZXIgdG8gc3VwcG9ydCBtaW5tYXgKKyAgICAgICAgc2l6aW5n
LCB3ZSBoYXZlIHRvIHN0b3JlIDIgTGVuZ3Rocy4gV2UgY291bGQgZ28gd2l0aCBhIHBhaXIgYnV0
IHRoYXQgd291bGQgbWFrZQorICAgICAgICB0aGUgY29kZSBub3QgdmVyeSByZWFkYWJsZSBzbyB0
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIEdyaWRUcmFja1NpemUuCisKKyAgICAgICAgUmVmYWN0b3Jp
bmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgR3JpZFRyYWNrU2l6
ZS5oIHRvIGFsbCBvdXIgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJh
Y2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3JpZFRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICBVcGRhdGVkIHRoZSBhYm92
ZSBjYWxsIHNpdGVzIHRvIHVzZSBHcmlkVHJhY2tTaXplLiBXaGlsZQorICAgICAgICB0b3VjaGlu
ZyB0aGVtLCBjaGFuZ2VkIHRoZSBjb2RlIHRvIHVzZSBhbiBlbXB0eSBWZWN0b3IgdG8gcmVwcmVz
ZW50CisgICAgICAgICdub25lJyBpbnN0ZWFkIG9mIExlbmd0aChVbmRlZmluZWQpLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaDoKKyAgICAgICAgVXBkYXRlZCAj
aW5jbHVkZSwgcmVtb3ZlZCBhIGNvbW1lbnQgYXMgaXQgd291bGQgaGF2ZSBnb25lIHN0YWxlIGFm
dGVyCisgICAgICAgIGFkZGluZyBtb3JlIGdyYW1tYXIgc3VwcG9ydCBhbmQgYWRkZWQgYSBGSVhN
RSB0byByZW5hbWUgc29tZSB2YXJpYWJsZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMp
OgorICAgICAgICBJbXBsZW1lbnRlZCBhIHdvcmstYXJvdW5kIHRvIGF2b2lkIGNyYXNoaW5nIGR1
ZSB0byBpbXBsaWNpdCBjb2x1bW5zIC8gcm93cy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9HcmlkVHJhY2tTaXplLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
ZTo6R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjpsZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6ZTo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFRyYWNrU2l6ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIE5ldyBjbGFzcywgaXQgbm93IG9ubHkg
d3JhcHMgYSBzaW5nbGUgTGVuZ3RoLgorCiAyMDEyLTExLTI4ICBUb255IENoYW5nICA8dG9ueUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNj
YWxlRmFjdG9yIHRvIGludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGRjY2JmN2JlZDJiY2VkMTkyMDIwNzhlYTQ2MTIxNDc5ODI0ZWQ3
YWIuLjNmZjljNDk1YmE3MDVlMWNmZjE5ZWZmNjVmNjcxN2RlNTUyNzQ2MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDUwNCw2ICs0NTA0LDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWYXJpYWJsZURhdGEu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCBcCisJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RhYmxlTGF5b3V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCBcCiAJU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVGFzay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYzU3ZDU4YjIwY2M1ZjVlNzJl
Yzg5NTFhYjYxNjJiMzE3MGFmZmE1ZS4uMmQ0MGFkMGJkMjY1ZDg3NzVjYWY2ZmM4OGQ1NTMzZDQx
NmUzMTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNDc2LDYgKzI0NzYsNyBAQCBIRUFERVJTICs9IFwK
ICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmggXAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVZhcmlhYmxlRGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmggXAogICAg
IHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBcCiAgICAgcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmggXAogICAgIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDZmOTEyMDIxZDRmYzNiZWNiODQ1YTNhMjI2MmZmMjUz
ZTEwYTNkMi4uMmVhYjA3MjA2MjI2MjNmNDRkNTY1OGRkOWJkNmM5MGMyNTBjNzkzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNjI4LDYgKzYyOCw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0
eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUv
U3R5bGVWYXJpYWJsZURhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxl
VmlzdWFsRGF0YS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6
ZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oJywK
ICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlclN0cmF0ZWd5LmgnLAogICAgICAgICAg
ICAgJ3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTFkM2EyMjMzMGZiODFhN2MwYWJjMmFhNjMxMDFh
MDFmZjlhYWIyNC4uOTA2YmExNjExNjJhMGM4ZmNkYzc3YjVhNmQ4YzNiOGQ1ZWMyOGNlYSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ2ODUx
LDYgKzQ2ODUxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcR3JpZFRyYWNrU2l6ZS5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0
eWxlXFNWR1JlbmRlclN0eWxlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiMmQ1NzU2Y2M1YTYwMDVkNGRmOWNlZTc1MWZhOWQ4MmQ2YWZmZWNjLi45ZjA4NWFmNTI0
OTMzYTAyYWVlNWM5NTMzZDgwYzI1NDlhZjBjOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODIxLDYgKzM4MjEsNyBAQAog
CQlBMTIwQUNBNDEzRjk5OENBMDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjBBQ0ExMTNGOTk4NDYw
MEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3BwICovOyB9OwogCQlBMTI1MzhENDEzRjlCNjBB
MDAwMjQ3NTQgLyogTGF5b3V0UmVwYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTIwQUNBMDEzRjk5ODM3MDBGRTRBQzcgLyogTGF5b3V0UmVw
YWludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTEyNzA1QzMxNjU2QkQ2NTAwQzJFMjdDIC8qIEdyaWRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNzA1QzIxNjU2QkQ2NTAwQzJF
MjdDIC8qIEdyaWRQb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUExMkExMDUwMTY2NDQ0RkQwMDhGQTMxMSAvKiBHcmlkVHJhY2tTaXpl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJBMTA0
RTE2NjQ0NERDMDA4RkEzMTEgLyogR3JpZFRyYWNrU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMzZBMDBDMTEzNERCRDIwMENDOEQ1MCAv
KiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTM2QTAwQTExMzREQkQyMDBDQzhENTAg
LyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwICovOyB9OwogCQlBMTM2
QTAwRDExMzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMzZB
MDBCMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRs
ZS5oICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
N0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwpA
QCAtMTExMzYsNiArMTExMzcsNyBAQAogCQlBMTIwQUNBMDEzRjk5ODM3MDBGRTRBQzcgLyogTGF5
b3V0UmVwYWludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dFJl
cGFpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTIwQUNBMTEzRjk5ODQ2
MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExheW91dFJlcGFpbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExMjcwNUMyMTY1NkJENjUwMEMyRTI3QyAvKiBHcmlkUG9zaXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JpZFBvc2l0aW9uLmg7IHBhdGggPSBzdHlsZS9H
cmlkUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyQTEwNEUxNjY0
NDREQzAwOEZBMzExIC8qIEdyaWRUcmFja1NpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gR3JpZFRyYWNrU2l6ZS5oOyBwYXRoID0gc3R5bGUvR3JpZFRyYWNrU2l6ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTM2QTAwQTExMzREQkQyMDBDQzhENTAgLyog
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTM2QTAwQjExMzREQkQyMDBDQzhE
NTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjA3NDIsNiArMjA3NDQsNyBAQAogCQkJCUJDMjI3NDc1MEU4MzY2RTIwMEU3Rjk3NSAv
KiBTVkdSZW5kZXJTdHlsZS5oICovLAogCQkJCUJDMjI3NDc2MEU4MzY2RTIwMEU3Rjk3NSAvKiBT
VkdSZW5kZXJTdHlsZURlZnMuY3BwICovLAogCQkJCUJDMjI3NDc3MEU4MzY2RTIwMEU3Rjk3NSAv
KiBTVkdSZW5kZXJTdHlsZURlZnMuaCAqLywKKwkJCQlBMTJBMTA0RTE2NjQ0NERDMDA4RkEzMTEg
LyogR3JpZFRyYWNrU2l6ZS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBzdHlsZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTYwNCw2ICsyNTYwNyw3IEBACiAJCQkJRTQ0NjEzQjAw
Q0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTEyQTEwNTAxNjY0NDRGRDAwOEZBMzExIC8qIEdyaWRUcmFja1NpemUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA1
ZDZiYTFjODBhOTVjMDA2YzYxNjkyYTA1YTZmN2RhNzMwMWRhMGY0Li4wMTY3YWFmNmJlYjg5Yzlm
MWU1ZDc2YjQ5ZTE1MWMxZGRkMTUwZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtOTg0LDI3ICs5ODQsMjQgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp2YWx1ZUZvckZp
bHRlcihjb25zdCBSZW5kZXJPYmoKIH0KICNlbmRpZgogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKHRyYWNrTGVuZ3RoLmlzUGVyY2Vu
dCgpKQotICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodHJhY2tMZW5n
dGgpOwotICAgIGlmICh0cmFja0xlbmd0aC5pc0F1dG8oKSkKKyAgICBpZiAodHJhY2tTaXplLmxl
bmd0aCgpLmlzUGVyY2VudCgpKQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUodHJhY2tTaXplLmxlbmd0aCgpKTsKKyAgICBpZiAodHJhY2tTaXplLmxlbmd0aCgpLmlz
QXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodHJh
Y2tMZW5ndGgudmFsdWUoKSwgc3R5bGUpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHRyYWNrU2l6ZS5sZW5ndGgoKS52YWx1ZSgpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoY29uc3QgVmVjdG9yPExlbmd0
aD4mIHRyYWNrTGVuZ3RocywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICAv
LyBXZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCBhbiBlbGVtZW50IQotICAgIEFTU0VSVCh0cmFja0xl
bmd0aHMuc2l6ZSgpKTsKLQogICAgIC8vIEhhbmRsZSB0aGUgJ25vbmUnIGNhc2UgaGVyZS4KLSAg
ICBpZiAodHJhY2tMZW5ndGhzLnNpemUoKSA9PSAxICYmIHRyYWNrTGVuZ3Roc1swXS5pc1VuZGVm
aW5lZCgpKQorICAgIGlmICghdHJhY2tTaXplcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKIAogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja0xlbmd0aHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tM
ZW5ndGhzW2ldLCBzdHlsZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTaXpl
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJl
YWR0aCh0cmFja1NpemVzW2ldLCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDRmNWUxMDliN2UwMmIw
ZWE2OGE3ZjNiMWE0NTI2MDVmMDEzNjk4NmMuLjRhNDk4Nzc4NzlmNjhlNmZmMzE2OTBlYTgyM2Y2
Nzg0MDk3OTdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI2NTks
NyArMjY1OSw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6dXNlU1ZHWm9vbVJ1bGVzKCkKICAgICBy
ZXR1cm4gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7CiB9CiAKLXN0YXRp
YyBib29sIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlLCBTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgTGVuZ3RoJiBsZW5ndGgpCitzdGF0aWMg
Ym9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSwgU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSkK
IHsKICAgICBMZW5ndGggd29ya2luZ0xlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9M
ZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgVmlld3Bv
cnRQZXJjZW50YWdlQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUo
KSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSk7CiAgICAgaWYgKHdvcmtpbmdMZW5ndGguaXNVbmRlZmluZWQoKSkKQEAgLTI2
NjgsMjAgKzI2NjgsMTYgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVzb2wKICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCiAgICAgICAgIHdvcmtpbmdMZW5ndGguc2V0UXVpcmsocHJp
bWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKIAotICAgIGxlbmd0aCA9IHdvcmtpbmdMZW5n
dGg7CisgICAgdHJhY2tTaXplLnNldExlbmd0aCh3b3JraW5nTGVuZ3RoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFs
dWUsIFZlY3RvcjxMZW5ndGg+JiBsZW5ndGhzLCBTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKK3N0
YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogewogICAg
IC8vIEhhbmRsZSAnbm9uZScuCiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIGxlbmd0aHMuYXBwZW5k
KExlbmd0aChVbmRlZmluZWQpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZTsKICAgICB9CiAKICAgICBpZiAodmFsdWUtPmlzVmFs
dWVMaXN0KCkpIHsKQEAgLTI2OTAsMTEgKzI2ODYsMTEgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxMZW5ndGg+JiBsZW5ndGhzLCBTdHls
ZVIKICAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBMZW5ndGggbGVuZ3RoOwot
ICAgICAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oY3VyclZhbHVlKSwgc2VsZWN0b3IsIGxlbmd0aCkpCisgICAgICAgICAg
ICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsKKyAgICAgICAgICAgIGlmICghY3JlYXRlR3JpZFRy
YWNrQnJlYWR0aChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSksIHNl
bGVjdG9yLCB0cmFja1NpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAgICAgbGVuZ3Rocy5hcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgICAgIHRyYWNrU2l6ZXMu
YXBwZW5kKHRyYWNrU2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMzU0NCwxNyArMzU0MCwxNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIH0KICNlbmRpZgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uczogewotICAgICAgICBWZWN0b3I8TGVu
Z3RoPiBsZW5ndGhzOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIGxl
bmd0aHMsIHRoaXMpKQorICAgICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsK
KyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCB0aGlz
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0R3JpZENvbHVtbnMo
bGVuZ3Rocyk7CisgICAgICAgIG1fc3R5bGUtPnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93
czogewotICAgICAgICBWZWN0b3I8TGVuZ3RoPiBsZW5ndGhzOwotICAgICAgICBpZiAoIWNyZWF0
ZUdyaWRUcmFja0xpc3QodmFsdWUsIGxlbmd0aHMsIHRoaXMpKQorICAgICAgICBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0
KHZhbHVlLCB0cmFja1NpemVzLCB0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9zdHlsZS0+c2V0R3JpZFJvd3MobGVuZ3Rocyk7CisgICAgICAgIG1fc3R5bGUtPnNldEdyaWRS
b3dzKHRyYWNrU2l6ZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNDkyYTgzZjg4ZDRkOGE4NzllNDM3ZmE4MmNh
YWYwODkzMTIwODFkMC4uZTdhMzUxYzg2NWZmNzhlMzUxOWEyZTQ0YWM2ZTg5YmU5MDM2YTkxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTE2LDEwICsxMTYs
MTAgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAK
ICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgdGFrZSBvdXIgb3duIGxvZ2ljYWwgd2lkdGggaW50byBh
Y2NvdW50LgogCi0gICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHRyYWNrU3R5bGVzID0gc3R5bGUo
KS0+Z3JpZENvbHVtbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNr
U3R5bGVzID0gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGVuZ3RoIHRyYWNrTGVu
Z3RoID0gdHJhY2tTdHlsZXNbaV07CisgICAgICAgIExlbmd0aCB0cmFja0xlbmd0aCA9IHRyYWNr
U3R5bGVzW2ldLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXRyYWNrTGVuZ3RoLmlzRml4ZWQoKSkg
ewogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTM4LDExICsxMzgsMTEgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCiAKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3Jp
ZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+
JiB0cmFja3MpCiB7Ci0gICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHRyYWNrU3R5bGVzID0gKGRp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN0eWxlKCktPmdyaWRDb2x1bW5zKCkgOiBzdHlsZSgp
LT5ncmlkUm93cygpOworICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTdHls
ZXMgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6
IHN0eWxlKCktPmdyaWRSb3dzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja1N0
eWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2sgdHJhY2s7Ci0gICAgICAgIGlm
ICh0cmFja1N0eWxlc1tpXS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVh
ZHRoID0gdHJhY2tTdHlsZXNbaV0uZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICBpZiAodHJhY2tT
dHlsZXNbaV0ubGVuZ3RoKCkuaXNGaXhlZCgpKQorICAgICAgICAgICAgdHJhY2subV91c2VkQnJl
YWR0aCA9IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpLmdldEZsb2F0VmFsdWUoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIApAQCAtMTY1LDEwICsxNjUsMTMg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoKQogICAgICAgICBzaXplX3QgY29s
dW1uVHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNv
bHVtbigpKTsKICAgICAgICAgc2l6ZV90IHJvd1RyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihj
aGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKSk7CiAKLSAgICAgICAgLy8gQmVjYXVzZSB0aGUg
Z3JpZCBhcmVhIGNhbm5vdCBiZSBzdHlsZWQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0Ci0gICAg
ICAgIC8vIHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgotICAg
ICAgICBjaGlsZC0+c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRo
KGNvbHVtblRyYWNrc1tjb2x1bW5UcmFja10ubV91c2VkQnJlYWR0aCk7Ci0gICAgICAgIGNoaWxk
LT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHJvd1RyYWNr
c1tyb3dUcmFja10ubV91c2VkQnJlYWR0aCk7CisgICAgICAgIC8vIEZJWE1FOiBQcm9wZXJseSBz
dXBwb3J0IGltcGxpY2l0IHJvd3MgYW5kIGNvbHVtbnMgKGJ1ZyAxMDM1NzMpLgorICAgICAgICBp
ZiAoY29sdW1uVHJhY2sgPCBjb2x1bW5UcmFja3Muc2l6ZSgpICYmIHJvd1RyYWNrIDwgcm93VHJh
Y2tzLnNpemUoKSkgeworICAgICAgICAgICAgLy8gQmVjYXVzZSB0aGUgZ3JpZCBhcmVhIGNhbm5v
dCBiZSBzdHlsZWQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0CisgICAgICAgICAgICAvLyB0aGUg
Z3JpZCBicmVhZHRoIHRvIGFjY291bnQgZm9yICdib3gtc2l6aW5nJy4KKyAgICAgICAgICAgIGNo
aWxkLT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoY29sdW1u
VHJhY2tzW2NvbHVtblRyYWNrXS5tX3VzZWRCcmVhZHRoKTsKKyAgICAgICAgICAgIGNoaWxkLT5z
ZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHJvd1RyYWNrc1ty
b3dUcmFja10ubV91c2VkQnJlYWR0aCk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTog
R3JpZCBpdGVtcyBzaG91bGQgc3RyZXRjaCB0byBmaWxsIHRoZWlyIGNlbGxzLiBPbmNlIHdlCiAg
ICAgICAgIC8vIGltcGxlbWVudCBncmlkLXtjb2x1bW4scm93fS1hbGlnbiwgd2UgY2FuIGFsc28g
c2hyaW5rIHRvIGZpdC4gRm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCmluZGV4IDM3YjA3YTZiZGYxMmE5ZWJlNjJjYjNhOGQxOTIyYTIzZTZjYTIwNjgu
LmJiYmIwYjljODhlMDVhNWUwMGUxNjdkYjZjYjg0Njc2NzJmNWExZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03NTksOCArNzU5LDggQEAg
cHVibGljOgogICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxl
eFdyYXApOyB9CiAgICAgRUp1c3RpZnlDb250ZW50IGp1c3RpZnlDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUp1c3RpZnlDb250ZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9qdXN0aWZ5Q29udGVudCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiBncmlkQ29s
dW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3Jp
ZENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgZ3JpZFJvd3MoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRSb3dzOyB9CisgICAg
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KKyAgICBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93czsgfQogCiAgICAgY29uc3QgR3JpZFBv
c2l0aW9uJiBncmlkSXRlbUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW47IH0KICAgICBjb25zdCBHcmlkUG9zaXRpb24m
IGdyaWRJdGVtUm93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZEl0ZW0tPm1fZ3JpZFJvdzsgfQpAQCAtMTIzOSw4ICsxMjM5LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4RGlyZWN0
aW9uLCBkaXJlY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2Zs
ZXhXcmFwLCB3KTsgfQogICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoRUp1c3RpZnlDb250ZW50
IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5Q29udGVudCwgcCk7
IH0KLSAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNvbnN0IFZlY3RvcjxMZW5ndGg+JiBsZW5ndGhz
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9ncmlk
Q29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZlY3RvcjxM
ZW5ndGg+JiBsZW5ndGhzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fZ3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5z
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0aHMpOyB9
CisgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0
aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkLCBtX2dy
aWRSb3dzLCBsZW5ndGhzKTsgfQogICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW4oY29uc3QgR3Jp
ZFBvc2l0aW9uJiBjb2x1bW5Qb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW4sIGNvbHVtblBvc2l0aW9uKTsgfQog
ICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3coY29uc3QgR3JpZFBvc2l0aW9uJiByb3dQb3NpdGlvbikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dy
aWRSb3csIHJvd1Bvc2l0aW9uKTsgfQogCkBAIC0xNjI4LDE2ICsxNjI4LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQcmludENvbG9yQWRqdXN0IGluaXRpYWxQcmludENvbG9yQWRqdXN0KCkgeyBy
ZXR1cm4gUHJpbnRDb2xvckFkanVzdEVjb25vbXk7IH0KIAogICAgIC8vIFRoZSBpbml0aWFsIHZh
bHVlIGlzICdub25lJyBmb3IgZ3JpZCB0cmFja3MuCi0gICAgc3RhdGljIFZlY3RvcjxMZW5ndGg+
IGluaXRpYWxHcmlkVHJhY2tWYWx1ZSgpCi0gICAgewotICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFZlY3RvcjxMZW5ndGg+LCBkZWZhdWx0TGVuZ3RoLCAoKSk7Ci0gICAgICAgIC8vIFdlIG5l
ZWQgdG8gbWFudWFsbHkgYWRkIHRoZSBMZW5ndGggaGVyZSBhcyB0aGUgTGVuZ3RoKDApIGlzICdh
dXRvJy4KLSAgICAgICAgaWYgKCFkZWZhdWx0TGVuZ3RoLnNpemUoKSkKLSAgICAgICAgICAgIGRl
ZmF1bHRMZW5ndGguYXBwZW5kKExlbmd0aChVbmRlZmluZWQpKTsKLSAgICAgICAgcmV0dXJuIGRl
ZmF1bHRMZW5ndGg7Ci0gICAgfQotICAgIHN0YXRpYyBWZWN0b3I8TGVuZ3RoPiBpbml0aWFsR3Jp
ZENvbHVtbnMoKSB7IHJldHVybiBpbml0aWFsR3JpZFRyYWNrVmFsdWUoKTsgfQotICAgIHN0YXRp
YyBWZWN0b3I8TGVuZ3RoPiBpbml0aWFsR3JpZFJvd3MoKSB7IHJldHVybiBpbml0aWFsR3JpZFRy
YWNrVmFsdWUoKTsgfQorICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdy
aWRDb2x1bW5zKCkgeyByZXR1cm4gVmVjdG9yPEdyaWRUcmFja1NpemU+KCk7IH0KKyAgICBzdGF0
aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkUm93cygpIHsgcmV0dXJuIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPigpOyB9CiAKICAgICAvLyAnYXV0bycgaXMgdGhlIGRlZmF1bHQuCiAg
ICAgc3RhdGljIEdyaWRQb3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Db2x1bW4oKSB7IHJldHVybiBH
cmlkUG9zaXRpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmgKaW5kZXggZGRjZWFkYmJjOGU1NDdlNWFmMWJiZTRjOTNhNzJiZjVhZWI1YzQ4
Mi4uMThmZmNhYmE2MWJkZmZhOWI5MTMzOWQwOTNjYTVjYzJkNTUxM2ZiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIFN0eWxlR3JpZERhdGFfaAogI2RlZmluZSBTdHlsZUdyaWREYXRhX2gKIAot
I2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkdyaWRUcmFja1NpemUuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDgsMTAgKzQ4LDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogRm9yIHRoZSBtb21lbnQs
IHdlIG9ubHkgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUgZ3JhbW1hciB3aGljaCBjb3JyZXNwb25k
IHRvOgotICAgIC8vICdhdXRvJyB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgJ25vbmUnCi0g
ICAgVmVjdG9yPExlbmd0aD4gbV9ncmlkQ29sdW1uczsKLSAgICBWZWN0b3I8TGVuZ3RoPiBtX2dy
aWRSb3dzOworICAgIC8vIEZJWE1FOiBVcGRhdGUgdGhlIG5hbWluZyBvZiB0aGUgZm9sbG93aW5n
IHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQ29sdW1uczsKKyAg
ICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkUm93czsKIAogcHJpdmF0ZToKICAgICBTdHls
ZUdyaWREYXRhKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176625</attachid>
            <date>2012-11-28 18:42:55 -0800</date>
            <delta_ts>2012-11-29 12:27:19 -0800</delta_ts>
            <desc>Patch for landing 2.</desc>
            <filename>bug-103343-20121128184029.patch</filename>
            <type>text/plain</type>
            <size>24130</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyYjhjMDBiZjYyN2Y5
ZjEyMjgyMDU1YTYxNjUyNDQ1MzJjNTQ1OC4uODBlMmY5ZGZjNmFlZmYwNWJjNThhMDY1YTMxZjc4
N2JkMGZiODA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTExLTI4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlaXIgb3duIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM0
MworCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgY29kZSB1c2VzIGEgTGVuZ3RoIHRvIHJlcHJlc2VudCB0aGUgdHJhY2sgc2l6aW5nIGZ1bmN0
aW9uLiBUaGlzIGlzCisgICAgICAgIGZpbmUgYXMgd2Ugb25seSBwYXJzZSA8bGVuZ3RoPiB8IDxw
ZXJjZW50YWdlPiBidXQgaW4gb3JkZXIgdG8gc3VwcG9ydCBtaW5tYXgKKyAgICAgICAgc2l6aW5n
LCB3ZSBoYXZlIHRvIHN0b3JlIDIgTGVuZ3Rocy4gV2UgY291bGQgZ28gd2l0aCBhIHBhaXIgYnV0
IHRoYXQgd291bGQgbWFrZQorICAgICAgICB0aGUgY29kZSBub3QgdmVyeSByZWFkYWJsZSBzbyB0
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIEdyaWRUcmFja1NpemUuCisKKyAgICAgICAgUmVmYWN0b3Jp
bmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgR3JpZFRyYWNrU2l6
ZS5oIHRvIGFsbCBvdXIgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJh
Y2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3JpZFRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICBVcGRhdGVkIHRoZSBhYm92
ZSBjYWxsIHNpdGVzIHRvIHVzZSBHcmlkVHJhY2tTaXplLiBXaGlsZQorICAgICAgICB0b3VjaGlu
ZyB0aGVtLCBjaGFuZ2VkIHRoZSBjb2RlIHRvIHVzZSBhbiBlbXB0eSBWZWN0b3IgdG8gcmVwcmVz
ZW50CisgICAgICAgICdub25lJyBpbnN0ZWFkIG9mIExlbmd0aChVbmRlZmluZWQpLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaDoKKyAgICAgICAgVXBkYXRlZCAj
aW5jbHVkZSwgcmVtb3ZlZCBhIGNvbW1lbnQgYXMgaXQgd291bGQgaGF2ZSBnb25lIHN0YWxlIGFm
dGVyCisgICAgICAgIGFkZGluZyBtb3JlIGdyYW1tYXIgc3VwcG9ydCBhbmQgYWRkZWQgYSBGSVhN
RSB0byByZW5hbWUgc29tZSB2YXJpYWJsZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMp
OgorICAgICAgICBJbXBsZW1lbnRlZCBhIHdvcmstYXJvdW5kIHRvIGF2b2lkIGNyYXNoaW5nIGR1
ZSB0byBpbXBsaWNpdCBjb2x1bW5zIC8gcm93cy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9HcmlkVHJhY2tTaXplLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
ZTo6R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjpsZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6ZTo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFRyYWNrU2l6ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIE5ldyBjbGFzcywgaXQgbm93IG9ubHkg
d3JhcHMgYSBzaW5nbGUgTGVuZ3RoLgorCiAyMDEyLTExLTI4ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IEFzc2VydC9j
cmFzaCBpbiBpbmRleGluZyBsYXlvdXQgdGVzdHMgaW4gY29udGVudF9zaGVsbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOGZiNjM3ODcwM2U2NGNjYmIwZTZjZGFmMjc1ZWVhM2Y4
NzkyODc1ZC4uMDY3YzcxYzVkMDgzNDFiZmZkMTU5ODdiMDI2YzA4MjRlZWEyMjRiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTA0LDYgKzQ1MDQsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZhcmlhYmxl
RGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRh
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGFibGVMYXlvdXQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VUYXNrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNTdkNThiMjBjYzVm
NWU3MmVjODk1MWFiNjE2MmIzMTcwYWZmYTVlLi4yZDQwYWQwYmQyNjVkODc3NWNhZjZmYzg4ZDU1
MzNkNDE2ZTMxNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI0NzYsNiArMjQ3Niw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCBcCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmFyaWFibGVEYXRhLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVZpc3VhbERhdGEuaCBcCisgICAgcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaCBc
CiAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oIFwKICAgICByZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBcCiAgICAgcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdC
bG9jay5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkOTVhMTdkOGRkYjA0YjhmNmEyYzA1MjViYzk3
M2QzZmU5ODYwZjQzLi43M2E3YWI2ZWRkM2YzZTg0OTdlNTNmNmQ2OGYyZjMxNmVjNjYzODA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC02MjgsNiArNjI4LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJp
bmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9z
dHlsZS9TdHlsZVZhcmlhYmxlRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9HcmlkVHJh
Y2tTaXplcy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hl
LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCcsCiAgICAg
ICAgICAgICAnd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMWQzYTIyMzMwZmI4MWE3YzBhYmMyYWE2
MzEwMWEwMWZmOWFhYjI0Li45MDZiYTE2MTE2MmEwYzhmY2RjNzdiNWE2ZDhjM2I4ZDVlYzI4Y2Vh
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NDY4NTEsNiArNDY4NTEsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxHcmlkVHJhY2tTaXplLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJp
bmdcc3R5bGVcU1ZHUmVuZGVyU3R5bGUuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGIyZDU3NTZjYzVhNjAwNWQ0ZGY5Y2VlNzUxZmE5ZDgyZDZhZmZlY2MuLjlmMDg1
YWY1MjQ5MzNhMDJhZWU1Yzk1MzNkODBjMjU0OWFmMGM5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MjEsNiArMzgyMSw3
IEBACiAJCUExMjBBQ0E0MTNGOTk4Q0EwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyMEFDQTExM0Y5
OTg0NjAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgKi87IH07CiAJCUExMjUzOEQ0MTNG
OUI2MEEwMDAyNDc1NCAvKiBMYXlvdXRSZXBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAvKiBMYXlv
dXRSZXBhaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBMTI3MDVDMzE2NTZCRDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI3MDVDMjE2NTZCRDY1
MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTEyQTEwNTAxNjY0NDRGRDAwOEZBMzExIC8qIEdyaWRUcmFj
a1NpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MkExMDRFMTY2NDQ0REMwMDhGQTMxMSAvKiBHcmlkVHJhY2tTaXplLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEzNkEwMEMxMTM0REJEMjAwQ0M4
RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMzZBMDBBMTEzNERCRDIwMEND
OEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgKi87IH07CiAJ
CUExMzZBMDBEMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRU
aHJvdHRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTEzNkEwMEIxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmggKi87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87
IH07CkBAIC0xMTEzNiw2ICsxMTEzNyw3IEBACiAJCUExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAv
KiBMYXlvdXRSZXBhaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0UmVwYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMjBBQ0ExMTNG
OTk4NDYwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0UmVwYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTEyNzA1QzIxNjU2QkQ2NTAwQzJFMjdDIC8qIEdyaWRQb3NpdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkUG9zaXRpb24uaDsgcGF0aCA9IHN0
eWxlL0dyaWRQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTJBMTA0
RTE2NjQ0NERDMDA4RkEzMTEgLyogR3JpZFRyYWNrU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBHcmlkVHJhY2tTaXplLmg7IHBhdGggPSBzdHlsZS9HcmlkVHJhY2tTaXpl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMzZBMDBBMTEzNERCRDIwMENDOEQ1
MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMzZBMDBCMTEzNERCRDIw
MENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1
REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDc0Miw2ICsyMDc0NCw3IEBACiAJCQkJQkMyMjc0NzUwRTgzNjZFMjAwRTdG
OTc1IC8qIFNWR1JlbmRlclN0eWxlLmggKi8sCiAJCQkJQkMyMjc0NzYwRTgzNjZFMjAwRTdGOTc1
IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5jcHAgKi8sCiAJCQkJQkMyMjc0NzcwRTgzNjZFMjAwRTdG
OTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5oICovLAorCQkJCUExMkExMDRFMTY2NDQ0REMwMDhG
QTMxMSAvKiBHcmlkVHJhY2tTaXplLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHN0eWxlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1NjA0LDYgKzI1NjA3LDcgQEAKIAkJCQlFNDQ2
MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTEyQUUwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzAzMzRENzE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBMTJBMTA1MDE2NjQ0NEZEMDA4RkEzMTEgLyogR3JpZFRyYWNrU2l6ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDRTBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2
RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDRiYzdiMDg0ZjQ2Nzg0NjVhMmJmMDM4OTVjMTI2ZjU5M2NiMTMyNmMuLjZiNzZjOTkwZWZi
NjRhZTM0ODFkNGMzOGRhYzZmMTc1OTBhMDEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05ODMsMjcgKzk4MywyNCBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVl
Rm9yRmlsdGVyKGNvbnN0IFJlbmRlck9iagogfQogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgTGVuZ3RoJiB0cmFja0xl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1Np
emUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBpZiAodHJhY2tMZW5ndGguaXNQ
ZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh0cmFj
a0xlbmd0aCk7Ci0gICAgaWYgKHRyYWNrTGVuZ3RoLmlzQXV0bygpKQorICAgIGlmICh0cmFja1Np
emUubGVuZ3RoKCkuaXNQZXJjZW50KCkpCisgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZSh0cmFja1NpemUubGVuZ3RoKCkpOworICAgIGlmICh0cmFja1NpemUubGVuZ3Ro
KCkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKLSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh0cmFja0xlbmd0aC52YWx1ZSgpLCBzdHlsZSk7CisgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUodHJhY2tTaXplLmxlbmd0aCgpLnZhbHVlKCksIHN0eWxlKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8
TGVuZ3RoPiYgdHJhY2tMZW5ndGhzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZlY3RvcjxH
cmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewot
ICAgIC8vIFdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IGFuIGVsZW1lbnQhCi0gICAgQVNTRVJUKHRy
YWNrTGVuZ3Rocy5zaXplKCkpOwotCiAgICAgLy8gSGFuZGxlIHRoZSAnbm9uZScgY2FzZSBoZXJl
LgotICAgIGlmICh0cmFja0xlbmd0aHMuc2l6ZSgpID09IDEgJiYgdHJhY2tMZW5ndGhzWzBdLmlz
VW5kZWZpbmVkKCkpCisgICAgaWYgKCF0cmFja1NpemVzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCiAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VT
ZXBhcmF0ZWQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrTGVuZ3Rocy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0
cmFja0xlbmd0aHNbaV0sIHN0eWxlKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFj
a1NpemVzLnNpemUoKTsgKytpKQorICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JHcmlkVHJh
Y2tCcmVhZHRoKHRyYWNrU2l6ZXNbaV0sIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNmM4NDFlNDk4
ZDg3NWEzOWEzN2Y4YWU1Yzk4Y2Y0YmZiMWFmNzBmYy4uMjcwNzU0Y2UxYmVlYzhmNzhhYTFhZTQx
YWU2MzljYjZmMDZiMTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MjY1OSw3ICsyNjU5LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjp1c2VTVkdab29tUnVsZXMoKQog
ICAgIHJldHVybiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5pc1NWR0VsZW1lbnQoKTsKIH0KIAot
c3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUsIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBMZW5ndGgmIGxlbmd0aCkKK3N0
YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlLCBTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tT
aXplKQogewogICAgIExlbmd0aCB3b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZl
cnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBW
aWV3cG9ydFBlcmNlbnRhZ2VDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHNlbGVjdG9yLT5z
dHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKTsKICAgICBpZiAod29ya2luZ0xlbmd0aC5pc1VuZGVmaW5lZCgpKQpA
QCAtMjY2OCwyMCArMjY2OCwxNiBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRo
KENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVSZXNvbAogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKICAgICAgICAgd29ya2luZ0xlbmd0aC5zZXRRdWly
ayhwcmltaXRpdmVWYWx1ZS0+aXNRdWlya1ZhbHVlKCkpOwogCi0gICAgbGVuZ3RoID0gd29ya2lu
Z0xlbmd0aDsKKyAgICB0cmFja1NpemUuc2V0TGVuZ3RoKHdvcmtpbmdMZW5ndGgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVl
KiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMsIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
KQorc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiB7
CiAgICAgLy8gSGFuZGxlICdub25lJy4KICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbGVuZ3Rocy5h
cHBlbmQoTGVuZ3RoKFVuZGVmaW5lZCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lOwogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+
aXNWYWx1ZUxpc3QoKSkgewpAQCAtMjY5MCwxMSArMjY4NiwxMSBAQCBzdGF0aWMgYm9vbCBjcmVh
dGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMs
IFN0eWxlUgogICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIExlbmd0aCBsZW5n
dGg7Ci0gICAgICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFsdWUpLCBzZWxlY3RvciwgbGVuZ3RoKSkKKyAgICAg
ICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplOworICAgICAgICAgICAgaWYgKCFjcmVhdGVH
cmlkVHJhY2tCcmVhZHRoKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3VyclZhbHVl
KSwgc2VsZWN0b3IsIHRyYWNrU2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICBsZW5ndGhzLmFwcGVuZChsZW5ndGgpOworICAgICAgICAgICAgdHJhY2tT
aXplcy5hcHBlbmQodHJhY2tTaXplKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0zNTQ0LDE3ICszNTQwLDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgfQogI2VuZGlm
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5zOiB7Ci0gICAgICAgIFZlY3Rv
cjxMZW5ndGg+IGxlbmd0aHM7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1
ZSwgbGVuZ3RocywgdGhpcykpCisgICAgICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1Np
emVzOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMs
IHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRHcmlkQ29s
dW1ucyhsZW5ndGhzKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0R3JpZENvbHVtbnModHJhY2tTaXpl
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdy
aWRSb3dzOiB7Ci0gICAgICAgIFZlY3RvcjxMZW5ndGg+IGxlbmd0aHM7Ci0gICAgICAgIGlmICgh
Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgbGVuZ3RocywgdGhpcykpCisgICAgICAgIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFj
a0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX3N0eWxlLT5zZXRHcmlkUm93cyhsZW5ndGhzKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0
R3JpZFJvd3ModHJhY2tTaXplcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA0OTJhODNmODhkNGQ4YTg3OWU0Mzdm
YTgyY2FhZjA4OTMxMjA4MWQwLi5lN2EzNTFjODY1ZmY3OGUzNTE5YTJlNDRhYzZlODliZTkwMzZh
OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xMTYsMTAg
KzExNiwxMCBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkKIAogICAgIC8vIEZJWE1FOiBXZSBkb24ndCB0YWtlIG91ciBvd24gbG9naWNhbCB3aWR0aCBp
bnRvIGFjY291bnQuCiAKLSAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdHJhY2tTdHlsZXMgPSBz
dHlsZSgpLT5ncmlkQ29sdW1ucygpOworICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTdHlsZXMgPSBzdHlsZSgpLT5ncmlkQ29sdW1ucygpOwogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0cmFja1N0eWxlcy5zaXplKCk7ICsraSkgewotICAgICAgICBMZW5ndGggdHJh
Y2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXTsKKyAgICAgICAgTGVuZ3RoIHRyYWNrTGVuZ3RoID0g
dHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCk7CiAgICAgICAgIGlmICghdHJhY2tMZW5ndGguaXNGaXhl
ZCgpKSB7CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xMzgsMTEgKzEzOCwxMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkKIAogdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgVmVjdG9yPEdyaWRU
cmFjaz4mIHRyYWNrcykKIHsKLSAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdHJhY2tTdHlsZXMg
PSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6IHN0
eWxlKCktPmdyaWRSb3dzKCk7CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFj
a1N0eWxlcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1u
cygpIDogc3R5bGUoKS0+Z3JpZFJvd3MoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YWNrU3R5bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdyaWRUcmFjayB0cmFjazsKLSAgICAg
ICAgaWYgKHRyYWNrU3R5bGVzW2ldLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHRyYWNrLm1fdXNl
ZEJyZWFkdGggPSB0cmFja1N0eWxlc1tpXS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGlmICh0
cmFja1N0eWxlc1tpXS5sZW5ndGgoKS5pc0ZpeGVkKCkpCisgICAgICAgICAgICB0cmFjay5tX3Vz
ZWRCcmVhZHRoID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkuZ2V0RmxvYXRWYWx1ZSgpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCkBAIC0xNjUsMTAgKzE2
NSwxMyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCiAgICAgICAgIHNpemVf
dCBjb2x1bW5UcmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJ
dGVtQ29sdW1uKCkpOwogICAgICAgICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0
aW9uKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbVJvdygpKTsKIAotICAgICAgICAvLyBCZWNhdXNl
IHRoZSBncmlkIGFyZWEgY2Fubm90IGJlIHN0eWxlZCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QK
LSAgICAgICAgLy8gdGhlIGdyaWQgYnJlYWR0aCB0byBhY2NvdW50IGZvciAnYm94LXNpemluZycu
Ci0gICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoY29sdW1uVHJhY2tzW2NvbHVtblRyYWNrXS5tX3VzZWRCcmVhZHRoKTsKLSAgICAgICAg
Y2hpbGQtPnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQocm93
VHJhY2tzW3Jvd1RyYWNrXS5tX3VzZWRCcmVhZHRoKTsKKyAgICAgICAgLy8gRklYTUU6IFByb3Bl
cmx5IHN1cHBvcnQgaW1wbGljaXQgcm93cyBhbmQgY29sdW1ucyAoYnVnIDEwMzU3MykuCisgICAg
ICAgIGlmIChjb2x1bW5UcmFjayA8IGNvbHVtblRyYWNrcy5zaXplKCkgJiYgcm93VHJhY2sgPCBy
b3dUcmFja3Muc2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBncmlkIGFyZWEg
Y2Fubm90IGJlIHN0eWxlZCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QKKyAgICAgICAgICAgIC8v
IHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgorICAgICAgICAg
ICAgY2hpbGQtPnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChj
b2x1bW5UcmFja3NbY29sdW1uVHJhY2tdLm1fdXNlZEJyZWFkdGgpOworICAgICAgICAgICAgY2hp
bGQtPnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQocm93VHJh
Y2tzW3Jvd1RyYWNrXS5tX3VzZWRCcmVhZHRoKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEZJ
WE1FOiBHcmlkIGl0ZW1zIHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlaXIgY2VsbHMuIE9uY2Ug
d2UKICAgICAgICAgLy8gaW1wbGVtZW50IGdyaWQte2NvbHVtbixyb3d9LWFsaWduLCB3ZSBjYW4g
YWxzbyBzaHJpbmsgdG8gZml0LiBGb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkVHJhY2tTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZFRyYWNrU2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYzFkMDZhNWNlNWIwMzE5MmVhNDA2Yjc0
OTlhOGE4NjQ5ODBlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdyaWRUcmFj
a1NpemVfaAorI2RlZmluZSBHcmlkVHJhY2tTaXplX2gKKworI2luY2x1ZGUgIkxlbmd0aC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gR3JpZFRyYWNrU2l6ZVR5cGUgeworICAgIExl
bmd0aFRyYWNrU2l6aW5nCit9OworCitjbGFzcyBHcmlkVHJhY2tTaXplIHsKK3B1YmxpYzoKKyAg
ICBHcmlkVHJhY2tTaXplKCkKKyAgICAgICAgOiBtX3R5cGUoTGVuZ3RoVHJhY2tTaXppbmcpCisg
ICAgICAgICwgbV9sZW5ndGgoVW5kZWZpbmVkKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBM
ZW5ndGgmIGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IExl
bmd0aFRyYWNrU2l6aW5nKTsKKyAgICAgICAgQVNTRVJUKCFtX2xlbmd0aC5pc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOworICAgIH0KKworICAgIHZvaWQgc2V0TGVuZ3Ro
KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gTGVuZ3RoVHJh
Y2tTaXppbmc7CisgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOworICAgIH0KKworICAgIEdyaWRU
cmFja1NpemVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBHcmlkVHJhY2tTaXplJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIG1fbGVuZ3RoID09IG90aGVyLm1f
bGVuZ3RoOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmlkVHJhY2tTaXplVHlwZSBtX3R5cGU7
CisgICAgTGVuZ3RoIG1fbGVuZ3RoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gR3JpZFRyYWNrU2l6ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IDc0MDQ0ZjgyZmFiNGI3YmI1MzYwYzBmM2Y2NGZjMDM2NDAy
ZjRhMjYuLjRiYzI4MDg5MjgyMzBjNjczN2E1YTE0YmU5YjgyZWI1NjUxMzc4MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03NTgsOCArNzU4
LDggQEAgcHVibGljOgogICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gt
Pm1fZmxleFdyYXApOyB9CiAgICAgRUp1c3RpZnlDb250ZW50IGp1c3RpZnlDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUp1c3RpZnlDb250ZW50PihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9qdXN0aWZ5Q29udGVudCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiBn
cmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQt
Pm1fZ3JpZENvbHVtbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgZ3JpZFJvd3MoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRSb3dzOyB9
CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KKyAg
ICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkUm93czsgfQogCiAgICAgY29uc3Qg
R3JpZFBvc2l0aW9uJiBncmlkSXRlbUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW47IH0KICAgICBjb25zdCBHcmlkUG9z
aXRpb24mIGdyaWRJdGVtUm93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZEl0ZW0tPm1fZ3JpZFJvdzsgfQpAQCAtMTIzOCw4ICsxMjM4LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4
RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGbGV4V3JhcChFRmxleFdyYXAg
dykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94
LCBtX2ZsZXhXcmFwLCB3KTsgfQogICAgIHZvaWQgc2V0SnVzdGlmeUNvbnRlbnQoRUp1c3RpZnlD
b250ZW50IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5Q29udGVu
dCwgcCk7IH0KLSAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNvbnN0IFZlY3RvcjxMZW5ndGg+JiBs
ZW5ndGhzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZCwg
bV9ncmlkQ29sdW1ucywgbGVuZ3Rocyk7IH0KLSAgICB2b2lkIHNldEdyaWRSb3dzKGNvbnN0IFZl
Y3RvcjxMZW5ndGg+JiBsZW5ndGhzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fZ3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRD
b2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0
aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGxlbmd0aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlk
LCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQogICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW4oY29u
c3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5Qb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW4sIGNvbHVtblBvc2l0aW9u
KTsgfQogICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3coY29uc3QgR3JpZFBvc2l0aW9uJiByb3dQb3Np
dGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVt
LCBtX2dyaWRSb3csIHJvd1Bvc2l0aW9uKTsgfQogCkBAIC0xNjI3LDE2ICsxNjI3LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQcmludENvbG9yQWRqdXN0IGluaXRpYWxQcmludENvbG9yQWRqdXN0
KCkgeyByZXR1cm4gUHJpbnRDb2xvckFkanVzdEVjb25vbXk7IH0KIAogICAgIC8vIFRoZSBpbml0
aWFsIHZhbHVlIGlzICdub25lJyBmb3IgZ3JpZCB0cmFja3MuCi0gICAgc3RhdGljIFZlY3RvcjxM
ZW5ndGg+IGluaXRpYWxHcmlkVHJhY2tWYWx1ZSgpCi0gICAgewotICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFZlY3RvcjxMZW5ndGg+LCBkZWZhdWx0TGVuZ3RoLCAoKSk7Ci0gICAgICAgIC8v
IFdlIG5lZWQgdG8gbWFudWFsbHkgYWRkIHRoZSBMZW5ndGggaGVyZSBhcyB0aGUgTGVuZ3RoKDAp
IGlzICdhdXRvJy4KLSAgICAgICAgaWYgKCFkZWZhdWx0TGVuZ3RoLnNpemUoKSkKLSAgICAgICAg
ICAgIGRlZmF1bHRMZW5ndGguYXBwZW5kKExlbmd0aChVbmRlZmluZWQpKTsKLSAgICAgICAgcmV0
dXJuIGRlZmF1bHRMZW5ndGg7Ci0gICAgfQotICAgIHN0YXRpYyBWZWN0b3I8TGVuZ3RoPiBpbml0
aWFsR3JpZENvbHVtbnMoKSB7IHJldHVybiBpbml0aWFsR3JpZFRyYWNrVmFsdWUoKTsgfQotICAg
IHN0YXRpYyBWZWN0b3I8TGVuZ3RoPiBpbml0aWFsR3JpZFJvd3MoKSB7IHJldHVybiBpbml0aWFs
R3JpZFRyYWNrVmFsdWUoKTsgfQorICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5p
dGlhbEdyaWRDb2x1bW5zKCkgeyByZXR1cm4gVmVjdG9yPEdyaWRUcmFja1NpemU+KCk7IH0KKyAg
ICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkUm93cygpIHsgcmV0dXJu
IFZlY3RvcjxHcmlkVHJhY2tTaXplPigpOyB9CiAKICAgICAvLyAnYXV0bycgaXMgdGhlIGRlZmF1
bHQuCiAgICAgc3RhdGljIEdyaWRQb3NpdGlvbiBpbml0aWFsR3JpZEl0ZW1Db2x1bW4oKSB7IHJl
dHVybiBHcmlkUG9zaXRpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggZGRjZWFkYmJjOGU1NDdlNWFmMWJiZTRjOTNhNzJiZjVh
ZWI1YzQ4Mi4uMThmZmNhYmE2MWJkZmZhOWI5MTMzOWQwOTNjYTVjYzJkNTUxM2ZiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIFN0eWxlR3JpZERhdGFfaAogI2RlZmluZSBTdHlsZUdyaWREYXRh
X2gKIAotI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkdyaWRUcmFja1NpemUuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDgsMTAgKzQ4LDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogRm9yIHRoZSBt
b21lbnQsIHdlIG9ubHkgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUgZ3JhbW1hciB3aGljaCBjb3Jy
ZXNwb25kIHRvOgotICAgIC8vICdhdXRvJyB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgJ25v
bmUnCi0gICAgVmVjdG9yPExlbmd0aD4gbV9ncmlkQ29sdW1uczsKLSAgICBWZWN0b3I8TGVuZ3Ro
PiBtX2dyaWRSb3dzOworICAgIC8vIEZJWE1FOiBVcGRhdGUgdGhlIG5hbWluZyBvZiB0aGUgZm9s
bG93aW5nIHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkQ29sdW1u
czsKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gbV9ncmlkUm93czsKIAogcHJpdmF0ZToKICAg
ICBTdHlsZUdyaWREYXRhKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>